software-design
??軟考中級-軟件設計師-綜合知識:計算機系統基礎、操作系統、計算機網絡與信息安全、程序語言基礎、數據庫基礎、數據結構與算法、軟件工程基礎知識、標準與知識產權等。
—— 2025 年 3 月 5 日 甲辰年二月初六 驚蟄
目錄
- software-design
- 1、計算機基礎
- 1.1、計算機系統基礎
- 1.2、操作系統
- 1.3、計算機網絡與信息安全
- 1.4、程序語言基礎
- 1.5、數據庫基礎
- 2、數據結構與算法
- 2.1 數據結構
- 3、系統開發
- 3.1、軟件工程基礎知識
- 4、標準與知識產權
- 4.1 知識產權
1、計算機基礎
1.1、計算機系統基礎
-
海明碼計算公式 2^k >= m + k + 1。海明碼利用奇偶性來檢錯和糾錯,碼距最小為 2n + 1,至少大于 2。
-
虛擬存儲由 主存 - 輔存 構成,CPU 地址總線為 m 位,則物理地址空間大小用 2^m 表示。
-
浮點數能夠表示的數的范圍由 階碼 的位數決定,精度由 尾數 的位數決定。8 位階碼的最大值為 127。
-
浮點數相加,小階向大階對齊,尾數右移 n 位。
-
補碼最適合進行加減運算,移碼最適合表示浮點數階碼。
-
計算機系統中采用 補碼 表示有符號的數值,且可以將減法轉化為加法,從而簡化運算器的設計。
-
正負 0 的補碼和移碼相同。
-
當機器采用原碼表示時,0 有兩種編碼方式,即 +0 和 -0。
-
CISC:復雜指令系統計算機;RISC:精簡指令系統計算機;VLSI:超大規模集成電路;VLIW:超長指令字。
- RISC 精簡指令系統計算機中 CPU 的通用寄存器數量多,一般在 32 個以上,有的可達上千個。
- RISC 使用等長指令,典型長度為 4 字節。
- 尋址方式少且簡單,一般為 2 ~ 3 種,絕不出現存儲器間接尋址方式。
- 只有取數指令、存數指令訪問存儲器。
- 指令集中的指令數目一般少于 100,指令格式一般少于 4 種。
- 指令功能簡單,控制器多采用硬布線方式,以期更快的執行速度。
- 所有指令的平均執行時間為一個處理時鐘周期。
- 比 CISC 更好的支持高級語言。
-
20Hz - 20KHz,低于為次聲波,高于為超聲波。
-
若每個像素具有 8 位 的顏色深度,則可表示 2^8 = 256 種不同的顏色。
-
編譯器處理過程:詞法分析、語法分析、語義分析、中間代碼生成、代碼優化、目標代碼生成。中間代碼生成、代碼優化是非必需的。
-
解釋器解釋過程:詞法分析、語法分析、語義分析。
- 解釋器 參與運行控制,執行速度慢。編譯器執行速度快。
- 死循環屬于典型的語義錯誤,靜態語義錯誤可被編譯器發現,但動態語義錯誤只能在運行時被發現。
- 詞法分析:識別單詞,即識別源碼中的記號。
- 語法分析:識別語句形式,判斷程序邏輯結構是否正確,如表達式、循環、賦值;移進-規約:越發分析方法。(移進-歸約:自底向上)。
- 語義分析:檢查是否存在語義錯誤,如類型不匹配、除數是否為 0 等。分為靜態語義分析、動態語義分析。靜態語義分析使用語法制導翻譯。編譯階段只能發現靜態語義錯誤。
- 常見的中間代碼表達形式有:三元式、四元式、逆波蘭式(后綴式)、三地址碼、樹(抽象語法樹)、圖(有向無環圖)。
-
FM 中,改變數字載波頻率,可以改變樂音的音調;改變信號幅度,可以改變樂音的音高。
-
文法分析分為四種類型,大多采用 上下文無關文法,及 2 型文法。
-
若機器字長為 n,最高位為符號位,則其定點整數最大值為 2^(n-1) - 1。
-
感覺媒體:器官感覺到的,如音、影、圖像、文字等。
- 表現媒體:感覺媒體的輸入輸出,如鼠標、鍵盤、顯示器等。
- 表示媒體:感覺媒體的傳輸中介,如圖像編碼、文本編碼、聲音編碼等。
- 傳輸媒體:表示媒體的傳輸物理介質,如電纜、光纜、電磁波等。
- 存儲媒體:表示媒體的存儲物理介質,如硬盤、光盤等。
-
水平分辨率、垂直分辨率,像素點數目。905215 - 675840。
-
Flynn 分類法:SISD、SIMD、MISD、MIMD。其中 MISD(多指令單數據流)為理論模型。
-
嵌入式系統初始化,自底向上、從硬件到軟件:片級、板級、系統級。系統級初始化主要任務是初始化操作系統。
-
尼奎斯特取樣定理:取樣速率 大于 模擬信號最高頻率的 2 倍。
-
DPI 為 像素/英寸,300 DPI 掃描 3 * 4 英寸圖像時,可以得到 300 * 3 x 300 *4 像素的數字圖像。
-
常見的命名對象有 變量、函數、數據類型。
-
linux 中只有一個根目錄,用 / 表示。
-
移位指令操作中的 算數左移 相當于對操作數進行乘 2 操作。
-
WAV:聲音文件格式;BMP:圖像文件格式;MP3:音頻文件格式;MOV:視頻文件格式。
-
24 位真彩圖,及顏色深度為 24,掃描后的數據量是 DPI 值 * 3 *DPI 值 * 4 * 24。
-
矢量圖的基本組成單位是 圖元。
-
真彩色、偽彩色、直接色、矢量:
- 真彩色:即每個像素分成 R、G、B 三基色分量。
- 偽彩色:實際上是一個索引值或代碼,需要通過查找表 CLUT 查找其 R、G、B 值。
- 直接色:像素值為 紅、綠、藍。
- 矢量:矢量圖可無限放大永不變形。
-
腳本語言主要采用解釋方式實現。
-
當雙擊文件名時,windows 系統回自動通過建立的文件關聯來決定使用什么軟件打開該文件。
-
MPG 為 MPEG 編碼標準的視頻文件擴展名,MPEG-1、MPEG-2、MPEG-4 音視頻編碼標準,MPEG-7 多媒體內容描述接口標準,MPEG-21 多媒體應用框架標準。
- MPEG-1:音視頻編碼,VCD。
- MPEG-2:音視頻編碼,DVD。
-
AVS 是中國數字音頻壓縮編碼國家標準。
-
H.264 是視頻壓縮編碼技術的標準。
-
DVD 光盤格式:
- DVD-RAM、DVD-RW:多次擦除重寫。
-
CD 光盤格式:
- CD-R:一次性刻寫。
- CD-RW:多次擦除重寫。
-
計算機系統性能評估指標:可靠性或可用性、處理能力或效率。
- 處理能力或效率:吞吐率、響應時間、資源利用率。
-
計算機網絡系統性能評估指標:信道傳輸速率、信道吞吐量和容量、信道利用率、傳輸演出、響應時間、負載能力。
-
CPU 中的運算單元、控制單元、寄存器 通過系統總線連接起來。
-
字長是計算機進行運算和數據處理的基本信息單位。
-
主要程序語言:
- Fortran:第一個高級程序設計語言,科學計算,執行效率高。
- Pascal:結構化程序設計語言,表達能力強。
- C:通用、結構化程序設計語言,指針操作能力強,高效。
- Lisp:函數式程序設計語言,符號處理,人工智能。
- C++:高級語言,面向對象。
- Java:高級語言,面向對象,通用,跨平臺,中間代碼。
- Python:面向對象、解釋型、通用腳本語言。
- PHP:服務端腳本語言,制作動態網頁。
- Ruby:面向對象,簡單快捷,腳本語言。
- Delphi:快速應用程序開發工具,可視化編程環境。
- COBOL:高級語言,數據處理領域。
- PROLOG:邏輯式語言,建造專家系統,自然語言理解,智能知識庫。
-
BIOS(基本輸入輸出系統)保存在主板上的 ROM 中。
-
主存與 Cache 地址映射:
- 全關聯:主存的任意一塊可以映射到 Cache 中的任意一塊。映射沖突概率最低。
- 直接映射:主存中的一塊只能映射到 Cache 中特定的一塊。映射沖突概率最高。
- 組相聯:組對組,主存組與同 Cache 組內可以任意映射。
-
相聯存儲器是一種按存儲內容來存儲和訪問的存儲器,不屬于按尋址方式劃分的存儲器。
-
程序執行過程中,主存與 Cache 的地址映射由硬件自動完成。
-
累加寄存器 AC:通用寄存器,為 ALU 提供一個工作區,用來暫存數據。
-
Cache 是一種介于主存和 CPU 之間的高速存儲器,用于二者之間的緩沖存儲。其命中率一般要達到 90% ~ 95% 以上。Cache 中的數據必須與主存中數據時刻保持一致。常用淘汰法有:隨機法、先進先出法(FIFO)、近期最少使用法(LRU)。
-
指令寄存器的位數取決于 指令字長。其內容為正在執行的指令。
-
流水線的吞吐率是指計算機中的流水線在特定時間內可以處理的任務數量或輸出數據的結果數量。可進一步分為最大吞吐率可實際吞吐率。
-
后綴式(逆波蘭式),是一種表示表達式的方法,其特點是將運算符號寫在運算對象的后面。如表達式 a * (b - c) + d 的后綴式為 abc-*d+。
-
IO 五種工作方式:
- 程序控制方式:分為無條件查詢和程序查詢。
- 無條件查詢:IO 端口總是準備好接受主機的輸出數據,或總是準備好向主機輸入數據。優點是軟硬件結構簡單;缺點是對時序性要求高,只適合簡單 IO 控制。
- 程序查詢:也稱程序輪詢方式,該方式由用戶程序直接控制主機與外部設備之間的輸入輸出操作。輪詢 IO 設備端口狀態。CPU 與 IO 設備之間是串行工作的。占用 CPU 時間最多。
- 中斷方式:當 IO 設備結束時,就會向 CPU 發出中斷指令。CPU 與 IO 之間并行工作。
- DMA(直接內存存取)方式:其思想是允許主存和 IO 設備之間通過 DMAC(DMA 控制器)直接進行批量數據交換,除了啟動和結束外,整個過程無需 CPU 干預。
- 通道控制方式:在一定硬件基礎上,利用軟件手段實現對 IO 的控制和傳送,更多的免去了 CPU 的介入,提高了主機和外設的并行工作度。
- IO 處理機:專門負責 IO 輸入輸出的處理機,可以有專門的存儲器、運算部件和指令控制部件。
- 程序控制方式:分為無條件查詢和程序查詢。
-
鏈表中的節點空間需要程序員根據需要申請和釋放,因此數據空間應采用 堆存儲分配策略。
-
循環冗余校驗碼(CRC)計算:
- 將信息碼 1100 低位補 0,這里需要補 3 個 0(技巧是多項式的最高次方是幾就補幾個 0),變成 1100000。
- 1100000 與 1011(多項式結果)做模 2 除法運算(不向上借位的算術除法運算),所得余數為三位校驗位,即 010,因此 CRC 編碼為 1100010。
-
CPU:
- 強調通用性,需要處理各種數據類型,又要進行邏輯判斷和大量的分支跳轉和中斷處理,因此 CPU 內部結構異常復雜。
- 利用較高的主頻和高速緩存來提高指令的速度。
-
GPU:
- 面對的是類型高度統一、相互無依賴的大規模數據和不需要被打斷的純凈計算環境。
- SIMD,單指令多數據流。
-
計算機系統是軟硬件綜合體,可以把它按功能劃分為多級層次結構:
- 硬聯邏輯級
- 微程序級
- 傳統機器級
- 操作系統級
- 匯編語言級
- 高級語言級
- 應用語言級
-
地址線與主存容量,若地址線(主存地址的位數)為 n,主存容量(可表示的地址個數)為 m,則 2^n = m。
-
CPU 尋址:尋址單元數(地址范圍) = 存儲器容量 / 機器字長(全字尋址)。
-
固態硬盤的存儲介質是閃存芯片,比機械硬盤功耗低。
-
串聯系統可靠度:R1 * R2 * R3 … Rn。
-
并聯系統可靠度:1 - (1 - R1) * (1 - R2) * (1 - R3) … (1 - Rn)。
-
虛擬存儲管理系統的基礎程序是 局部性的,
-
尋址方式速度:立即尋址 > 寄存器尋址 > 直接尋址。
-
PCI 是并行內總線,SCSI 并行外總線。
-
DRAM 是一種需要通過周期性刷新來保持數據的存儲器件。
-
一個數的負次方等于這個數的正次方的倒數。如 10^-9 = 1 / 10^9。1ns = 10^-9s。
-
總線帶寬 = 總線數據傳輸頻率 * 總線位數 / 8。
-
地址總線寬度:決定了 CPU 可以訪問的物理地址空間。
-
數據總線寬度:決定了 CPU 與存儲器之間數據傳輸的信息量。
-
操作系統的性能指標有:可靠性、吞吐率、響應時間、資源利用率、可移植性。
-
流水線的吞吐率是指 單位時間流水線處理的任務數。
-
閃存(Flash Memory):
- 掉電后信息不會丟失,屬于非易失性存儲器。
- 以塊為單位進行刪除操作。
- 采用隨機訪問方式。
- 在嵌入式系統中可以使用 Flash Memory 來代替 ROM 存儲器。
-
并列爭球法使用迭代方法。
-
如果 2x 的補碼為 90H,那么 x 的真值為多少。
-
海明碼校驗計算。
1.2、操作系統
- 周期:一個指令周期由若干個總線周期組成,而一個總線周期由若干個時鐘周期組成,一個總線周期包含一個(取指令)或多個機器周期。
- 指令周期:取出并執行一條指令的時間。
- 機器周期:一個指令的執行被分為若個個階段,如取指令、存儲器讀、寫等。每一個階段為一個機器周期。
- 總線周期:一個訪存儲器或IO端口操作所占用的時間。
- 時鐘周期:又稱震蕩周期,是處理器操作的基本單位。
- 指令周期:取出并執行一條指令的時間。
- PV 操作:結合信號量 S 來實現進程同步與互斥。
- P:調用 P 操作測試消息釋放到達。0 為未到達,非 0 為已到達。
- V:調用 V 操作發送消息。
- 信號量 S 的物理意義:
- S = 0:表示資源的可用數。
- S < 0:其絕對值表示等待資源的進程數。
- CPU 進行算術運算或邏輯運算時,常將原操作數和結果暫存在 累加器 中。
- 并行總線適合近距離高速傳輸數據。
- 串行總線適合長距離數據傳輸。
- IO 請求過程:用戶進程 -> 設備無關軟件 -> 設備驅動程序 -> 中斷處理程序 -> 硬件。
- 進程控制塊(PCB)的組織方式:
- 線性表方式:不論進程的狀態如何,將所有 PCB 連續地存放在內存的系統區。適用于系統中進程數目不多的情況。
- 索引表方式:線性表的改進,系統按照進程的狀態分別建立就緒索引、阻塞索引等。
- 鏈接表方式:系統按照進程的狀態將 PCB 組成隊列,從而形成就緒隊列、阻塞隊列、運行隊列等。
- 物理頁大小 = 邏輯頁大小。
- IO 設備提出的中斷請求是可屏蔽中斷,電源掉電是不可屏蔽中斷。
- 總線復用:即一條總線實現多種功能。常見的有 總線分時 復用,其指在不同時段利用總線上同一個信號線傳送不同信號。可減少總線數量,提高總線利用率。
- 若對 目錄 文件修改的結果寫回磁盤時發生奔潰,則對系統的影響較大。解決方案是采用文件系統的一致性檢查,包括 塊的一致性檢查 和 文件的一致性檢查。
- Cache 的設計思想是在合理的成本下提高命中率。
- 總線:各部件只能 分時 向總線發送數據,但可同時接受總線數據,若改數據不是傳給自己的,則數據包將被丟棄。
- 嵌入式程序設計中,高速緩存(Cache)對程序員是透明的。
- 在操作系統文件管理中,通常采用 文件目錄 組織和管理外存中的信息。
- 有效地址(邏輯地址)/ 頁面大小:
- 結果取整為 頁號 n。結果取余為 頁內地址 m。
- 物理地址 = 物理塊號 * 頁面大小 + m。
- 虛擬存儲技術是指 補充內存邏輯空間 的技術。
- 虛擬存儲器有 CPU 尋址范圍決定,且只能基于非連續分配技術(目的是提高資源利用率)。
- (物理塊號 + 1)/ 字長位數:
- 取整為位示圖編號。字號。向上取整為物理塊在字中的描述。
- 取余 - 1 為字號編號。位號。
- 磁盤容量 / 物理塊大小 = 物理塊數量。
- 物理塊數量 / 系統字長 = 位示圖大小。
- 磁盤存取時間 = 尋道時間 + 旋轉起達時間 + 傳輸時間。
- 尋道時間:磁頭從當前磁道移動到目標磁道所需時間。
- 旋轉起達時間:磁頭移動到目的磁道后,待訪問的記錄塊旋轉到磁頭下方的時間。
- 傳輸時間:讀寫操作時間。
- 文件系統中,打開文件系統功能調用的操作是 把文件的控制管理信息從輔存讀到內存。
- 從減少成本和縮短研發周期考慮,要求操作系統能針對硬件變化改變進行結構與功能上的配置,以滿足不同微處理器平臺的要求。是指嵌入式操作系統的可定制性。
- 磁盤調度:
- 移臂調度:
- 單向掃描算法:即磁頭只能做單向移動。
- 電梯調度算法:磁道的移動規律頗似電梯的運行。
- 先來先服務算法:即按照請求訪問的先后順序。可能隨時改變移動臂的運動方向。
- 最短尋道時間優先算法:即尋道時間最短。可能隨時改變移動臂的運動方向。
- 旋轉調度:
- 移臂調度:
1.3、計算機網絡與信息安全
- 服務器攻擊:
- 主動攻擊:拒絕服務、分布式拒絕服務、信息篡改、資源使用、欺騙、偽裝、重放。
- 被動攻擊:系統干涉、嗅探。
- 防火墻功能:
- 訪問控制、管理控制、雙向 nat、ip 地址轉換、端口映射、記錄訪問過程、包過濾、代理。
- 基于狀態檢測技術的 ip 地址、端口、用戶和時間的管理控制。
- netstat -n:顯示所有連接的 ip 地址、端口號及連接狀態。
- LISTEN:監聽來自遠方的 TCP 端口的連接請求。
- SYN-SENT:在發送連接請求后等待匹配的連接請求。
- SYN-RECEIVED:在收到和發送一個連接請求后等待對確認。
- ESTABLISHED:連接已建立。
- FIN-WAIT-1:等待遠程 TCP 連接中斷請求,或先前連接中斷請求的確認。
- FIN-WAIT-2:從遠程 TCP 等待連接中端請求。
- CLOSE-WAIT:等待從本地用戶發來的中斷請求。
- CLOSING:等待遠程 TCP 對連接中斷的確認。
- LAST-ACK:等待原來的發向遠程 TCP 的連接中斷請求的確認。
- TIME-WAIT:等待足夠的時間,以確保遠程 TCP 收到連接中斷請求的確認。
- CLOSED:沒有任何連接狀態。
- 網絡七層模型(OSI):
- 7、應用層:實現具體的應用功能。
- 6、表示層:數據的格式與表達、加密、壓縮。
- 5、會話層:建立、管理和終止回話。POP3、FTP、HTTP、Telnet、SMTP、DHCP、TFTP、SNMP、DNS。
- 4、傳輸層:端到端的連接。TCP、UDP。
- 3、網絡層:分組傳輸和路由選擇。三層交換機、路由器;ARP、RARP、IP、ICMP、IGMP。
- 2、數據鏈路層:傳輸以幀為單位的信息。網橋、交換機、網卡;PPTP、L2TP、SLIP、PPP、HDLC。
- 1、物理層:二進制傳輸。中繼器、集線器。
- 注:自下而上第一個提供端到端服務的是傳輸層。
- 注:域隔離:
- 網絡層設備 路由器 既可以隔離沖突域,又可以隔離廣播域。
- 數據鏈路層設備 網橋、交換機 可以隔離沖突域,不能隔離廣播域。
- 物理層設備 中繼器、集線器 都不能隔離。
- VLANtag:即虛擬局域網,屬于數據鏈路層的實現。
- 包過濾處在傳輸層和網絡層。ACL 即訪問控制列表,是一種基于包過濾的訪問控制技術。
- POP3 協議:
- Post Office Protocol-Version 3,即郵局協議版本 3,是 TCP/IP 協議族的一員,由 RFC1939 定義。主要用于支持使用客戶端遠程管理在服務器上的電子郵件。提供了 SSL 加密的 POP3 協議稱為 POP3S。
- 默認端口:110。
- 默認傳輸協議 TCP。
- 適用的架構模式:C/S。
- 訪問模式:離線模式。
- SMTP:郵件傳輸協議,默認端口 25。發送郵件通常使用 SMTP。接收郵件通常使用 POP3。
- PGP 軟件可以用來實現安全電子郵件協議。
- S/MIME:可提供安全電子郵件服務。
- SNMP:屬于應用層協議,該協議的報文封裝在 UDP 協議中。即對通信線路進行管理。UDP 的 161 端口。
- ICMP:屬于網絡層協議,該協議的數據單元封裝在 IP 數據段中。用來進行組播組成員信息的交互。報告 IP 數據報傳送中的差錯。
- ping 發出的是 ICMP 請求與響應。
- TCMP:屬于網絡層協議,該協議數據單元封裝在 IP 數據報中傳送。
- DHCP:自動分配 ip 地址。UDP 的 67 端口。
- TCP、UDP 是基于 IP 協議的,SMTP 是基于 TCP 協議的。
- TCP/IP 協議族主要包括:TCP、IP、ICMP、IGMP、ARP、RARP、UDP、DNS、FTP、HTTP 等。
- UDP:開銷小、易實現、時間性能好。缺點是不可靠,所以不適合遠程登錄。
- TCP 使用的流量控制協議:可變大小的滑動窗口協議。使用 3 次握手建立連接,4 次握手終止連接。
- ARP:地址解析協議,實現 IP 地址與 MAC 地址之間的變換。RARP 是逆地址解析協議,將 MAC 解析成 IP。
- request:廣播。
- response:單播。
- FTP 使用的傳輸層協議位 TCP。
- 兩個標準端口號是 20 和 21,分別是 數據口 和 控制口。
- 利用漏洞掃描可獲取某 FTP 服務器是否存在可寫目錄的信息。
- TFTP:簡單文件傳輸協議,用來在客戶機與服務器之間進行簡單文件的傳輸,提供不復雜、開銷不大的傳輸服務。
- Telnet:端口號 23。
- DNS:端口號 UDP 53。可使用傳輸層無連接服務。
- 主機路由的子網掩碼地址:255.255.255.255。
- 層次化網絡設計:
- 接入層:用戶接入、計費管理、MAC 地址認證、收集用戶信息。
- 匯聚層:網絡訪問策略控制、數據包處理、過濾、尋址。
- 核心層:高速數據交換、常用冗余機制。
- 加密算法:
- IDEA、RC4:對稱加密算法,只能用來進行數據加密。
- MD5、SHA-l:消息摘要算法,只能用來生成消息摘要。MD5 生成結果為 128 位。SHA-l 生成160 位固定長度算法。
- RSA:非對稱加密算法,主要用于數字簽名和驗簽。但效率低,不適用大數據量。
- RC5:對稱加密算法,效率高,適用大數據量。
- DES:密鑰長度為 56 位,三重 DES 的密鑰長度為 112 位。
- AES:高級加密標準,對稱分組加密算法,替代了 DES。
- X.509 標準推薦使用的加密算法是 RSA,而國密 SM2 采用的公鑰算法是 ECC。
- 對于多種不同路由協議到一個目的地的路由信息,路由器首先根據管理距離決定相信哪一個協議。
- 防火墻工作層次越高,則工作效率越低,同時安全性越高。
- 層次越高,實現過程復雜;層次越低,實現過程簡單。所以高層次效率低,低層次效率高。
- 層次越高,對數據包的理解力越好,對非法包的判斷力越強,所以安全性高。
- IP 地址:192.168.1.1/27
- IPv4 地址由 4 部分組成,每部分 8 位,共 32 位。其中前三部分為網絡部分,第四部分為主機部分。前三部分相同則說明屬于同一個網段。
- /27:表示該機器所處的網絡的子網掩碼為 27 位。
- IPv6 為 16B 即 128bit。地址空間是 v4 的 2^96 倍。
- IP 規定每個 C 類網絡最多可以有 254 臺主機或路由器。
- 中國自主研發的 3G 通信標準是 TD-SCDMA。
- 安全需求劃分:物理線路安全、網絡安全、系統安全、應用安全。
- 域名解析:即根據域名找到其對應 ip 地址。從客戶端到 DNS 服務器屬于遞歸查詢,而 DNS 服務器之間屬于迭代查詢。
- 1、查詢本地 host 文件。
- 2、查詢本地 DNS 緩存。
- 3、遞歸查詢 DNS 服務器。
- 4、根 DNS 服務器。
- 5、頂級域名服務器。
- 注:主域名服務器先查 本地緩存。
- 本地域名服務器、根域名服務器、中介域名服務器、授權域名服務器。
- 本地和中介采用遞歸查詢。根采用迭代。授權不確定。
- 路由策略:
- 靜態路由:即手工配置路由信息。當網絡拓撲圖或鏈路狀態發生變化時需要手動修改。
- 動態路由:即自適應路由,路由器自動建立路由信息,且可根據實際變化實時調整。
- 隨機路由:路由器收集當前節點到其源節點的旅行時間,以此來更新節點的旅行時間表。
- 洪泛路由:簡單路由算法,將收到的封包往所有可能連結路徑上發送,直到封包到達為止。
- 127.0.0.1:是回送地址,指本地機,一般用來測試使用。一旦使用回送地址發送數據,協議軟件立即返回,不進行任何網絡傳輸。
- 4G 技術包括 TD-LTE 和 FDD-LTE 兩種制式,理論下載速度可達 100 Mbps。5G 試運行階段傳輸速率為 1Gbps,預計未來可達 10Gbps。
- ipconfig/renew:更新所有適配的 DHCP 配置。該命令僅在具有配置為自動獲取 ip 地址的適配器的計算機上可用。
- ipconfig/flushdns:刷新并重設 DNS 解析器緩存。
- nsetstat - r:用于顯示核心路由表。即查看路由狀態信息。控制臺命令,監控 TCP/IP 信息。
- arp -a:查看 arp(地址解析協議)高速緩存中的內容。
- 包過濾技術是一種基于網絡層、傳輸層的安全技術,優點是簡單實用,實現成本低,且對應用和用戶是透明的。
- SSH:即 secure shell。使用 SSH 可有效防止遠程管理過程中的信息泄漏問題。
- 網絡系統中通常把 Web 服務器 置于 DMZ(非軍事化區)區。
- 實現 VPN 的關鍵技術:隧道技術、加解密技術、密鑰管理技術、身份認證技術。
- 數字簽名是對 真實性 的保護。
- 防范網絡監聽最有效的方法是 數據加密。
- IEEE 802:規范定義了網卡如何訪問傳輸介質,以及如何在傳輸介質上傳輸數據。
- IEEE 802.1:協議概論。
- IEEE 802.3:局域網協議。
- IEEE 802.6:城域網協議。
- IEEE 802.11:無線局域網協議。
- 報文交換不適用于實時通信環境,如音、視頻等。
- 當描述一個物理層接口引腳在處于高電平時的含義時,該描述屬于 功能特性。
- 綁定:
- 靜態綁定:在編譯期,將函數調用與響應調用所需要的代碼結合的過程。
- 動態綁定:在運行期,判斷所引用對象的實際類型,根據其實際類型調用相應的方法。
- 生成摘要的目的是 防止篡改,對摘要進行加密的目的 防止抵賴。
- 震網(Stuxnet)是一種蠕蟲病毒,破壞工業系統。
- 網絡的可用性是指用戶可利用網絡時間的百分比。
- 安全服務:
- 認證、數據完整性、訪問控制、數據保密性、抗抵賴性。
- 安全機制:
- 認證、數據完整性、訪問控制、加密機制、數字簽名、通信業務填充、路由控制、公證。
- HTTP 加密方式是 會話密鑰 + 對稱加密。
1.4、程序語言基礎
- 常見語法分析技術:算符優先法、LR 分析法、遞歸下降法(自上而下)。
- LR 分析法主要有 SLR(1)、LR(0)、LR(1)、LALR(1),LR(1) 分析能力最強,LR(0) 分析能力最弱。
- 正規式與正規集:
- a -> {a}
- a|b -> {a, b}
- ab -> {ab}
- (a|b)(a|b) -> {aa, ab, ba, bb}。
- a* -> {a, aa, aaa, …} 即任意個 a 組成的串。
- (a|b)* -> {a, b, aa, bb, ab, ba, …} 即所有 a, b 組成的串。
- (a|b)* (aa|bb)(a|b)* -> 伊普西隆上所有含有兩個相繼的 a 或兩個相繼的 b 組成的串。
- 注:+ 表示一個或多個。
- python 中 matplotlib 是繪圖庫。
- python 不支持 char、byte 數據類型。
- 不可變類型:Number 數字、String 字符串、Tuple 元組。
- 可變類型:List 列表、Dictionary 字典、Set 集合。
- python 沒有內置的 switch case 語句。
- 中間代碼生成所依據的是 語義規則。
- McCabe:程序控制流環路復雜度。V(G) = m - n + 2,m 為邊,n 為節點。典型的程序環路復雜度為 10。
- 高級程序設計語言中用于描述程序中的運算步驟、控制結構、數據傳輸的是 語句。
- 程序設計語言中大多數操作符是 過載 多態。
1.5、數據庫基礎
-
三范式:
- 1NF:確保表中每個字段的值是原子的,不可再分。
- 不滿足:“地址” 字段值為 “陜西省西安市未央區”。
- 滿足:將 “地址” 拆分為 “省”、“市”、“區” 三個字段。
- 2NF:在滿足 1NF 的基礎上,所有非主鍵字段必須完全依賴于整個主鍵(單列注解或聯合主鍵)。
- 不滿足:訂單詳情表(訂單 id、商品 id、商品名稱),其中 “商品名稱” 僅依賴 “商品 id”。
- 滿足:應拆分為訂單詳情表(訂單 id、商品 id、商品數量)和商品表(商品 id、商品名稱)。
- 3NF:在滿足 2NF 的基礎上,消除傳遞依賴,即非主鍵字段之間不能存在依賴。
- 不滿足:學生表(學號、姓名、學院名稱、學院電話),其中 “學院電話” 依賴于 “學院名稱”。
- 滿足:應該拆分為學生表(學號、姓名、學院 id)和學院表(學院 id、學院名稱、學院電話)。
- 1NF:確保表中每個字段的值是原子的,不可再分。
-
三級結構/兩級映像:視圖-外模式、基本表-模式(概念模式)、存儲文件-內模式。兩級映像的作用是提高數據和程序的獨立性。
-
數據模型:概念數據模型、基本數據模型。
- 概念數據模型:實體-聯系模型,即 E-R。E-R 模型常用于 概念設計 階段。
- 基本數據模型:結構數據模型。
-
數據模型三要素:數據結構、數據操作、完整性約束。
-
分布式數據庫:分片透明、復制透明、位置透明、邏輯透明。
- 分片透明:最高層次透明,指用戶不必關心數據是如何分片的,它們對數據的操作在全局關系上進行,即關系如何分片對用戶是透明的。因此當分片改變時應用程序可以不變。
- 復制透明:用戶不必關心數據庫在網絡中各個節點的復制情況,被復制的數據的更新由系統自動完成。
- 位置透明:用戶不必知道所操作的數據放在何處,即數據分配到哪個或哪些站點對用戶是透明的。因此,數據分片模式的改變(如把數據從一個站點轉移到另一個站點)不會影響應用程序。
- 邏輯透明(局部映像透明):最低層次的透明,提供數據到局部數據庫的映像,即用戶不必關心局部 DBMS 支持那種數據模型、使用哪種數據操縱語言,數據模型和操縱語言的轉換是由系統完成的。因此邏輯透明對異構型和同構異質的分布式數據庫系統是非常重要的。
-
數據獨立性:物理獨立性、邏輯獨立性。
- 物理獨立性:內模式的變化,只需調整模式與內模式之間的映像,不用修改程序。指用戶的應用程序與存儲在數據庫中的數據是相互獨立的。
- 邏輯獨立性:模式的變化,只需調整外模式與模式之間的映像,不用修改程序。
-
耦合類型:數據耦合、標記耦合、控制耦合、內容耦合。
- 數據耦合:即一個模塊訪問另一個模塊時通過數據參數來交換輸入、輸出信息。
- 標記耦合:即一組模塊通過參數表傳遞記錄信息。
- 控制耦合:即一個模塊通過傳送開關、標志、名字等控制信息,明顯地控制另一個模塊的功能。
- 內容耦合:
- 一個模塊直接訪問另一個模塊的內部數據;
- 一個模塊不通過正常入口轉到另一個模塊內部;
- 兩個模塊有一部分代碼重疊(只可能出現在匯編語言中);
- 一個模塊有多個入口;
-
數據庫事務特性:原子性、一致性、隔離性、持久性。
-
完整性約束:實體完整性約束、參照完整性約束、用戶自定義完整性約束。
- 實體完整性約束:要求主鍵中的任一屬性不能為空,且不能有重復值。
- 參照完整性約束:要求外鍵的值要么為空,要么為對應關系的主鍵值。
- 用戶自定義完整性約束:針對某一具體數據庫的約束,反映某一具體應用所涉及的數據庫必須滿足的語義。一般用于限制字段值的取值范圍,此范圍不涉及其它數據表的值。
-
數據庫的安全機制中,通過提供 存儲過程 來供第三方開發人員調用進行數據更新。
-
數據依賴公理系統:律與規則
- 律:
- 自反律:若 Y ? X ? U,則 X -> Y 為 F 所蘊含。
- 增廣律:若 X -> Y 為 F 所蘊含,且 Z ? U,則 XZ -> YZ 為 F 所蘊含。
- 傳遞律:若 X -> Y 與 Y -> Z 為 F 所蘊含,則 X -> Z 為 F 所蘊含。
- 規則:
- 合并規則:由 X -> Y,X -> Z,有 X -> YZ。
- 偽傳遞規則:由 X -> Y,WY -> Z,有 XW -> Z。
- 分解規則:由 X -> Y,Z ? Y,有 X -> Z。
- 律:
-
數據庫故障:
- 事務內部故障:有的可以通過事務程序本身發現。有的是非預期的,不能由事務程序處理,如運算溢出、并發事務死鎖等。
- 系統故障:通常稱為軟故障,是指造成系統停止的任何事件,使得系統需要重新啟動。
- 介質故障:通常稱為硬故障,如磁盤損壞等。
- 計算機病毒:計算機病毒。
-
SQL 語言:
-
授權語句:grant <權限> on table 表名 [(列名)] to 用戶名 [with grant option]
#eg with grant option 意為允許向別人賦予同樣的權限 grant update (name) on table test to momo with grant option
-
創建視圖語句:create view 試圖名 as select 列名1、列名2… from 表名 where 條件
# eg with check option 意為對視圖進行增刪改查操作時要滿足定義視圖時的謂詞條件 即 age < 25 create view test_view as select id, name, age from test where age < 25 with check option
-
2、數據結構與算法
2.1 數據結構
- 逆波蘭表達式(后綴式):
- 從左至右將數字入棧,當遇到運算符時,將運算符所需要的數據出棧,然后再將結果入棧,以此類推。
- 存儲方式:
- 行式存儲:一行中的數據在存儲介質中是連續存儲的。
- 列式存儲:一列中的數據在存儲介質中是連續存儲的。
- 圖:無向圖、有向圖、網。
- 在具有 n 個頂點的簡單無向圖中,最多含有 n * (n - 1) / 2 條邊。
- 連通圖:任意兩個頂點之間都有路徑。具有 n 個頂點的無向連通圖至少有 n - 1 條邊。
- 有向完全圖:n 個頂點的有向完全圖中最多含有 n * (n - 1) 條邊。
- 圖的深度優先遍歷類似于二叉樹的前序遍歷。
- 存儲:順序存儲、鏈式存儲。鄰接矩陣表示唯一,鄰接表表示不唯一。
- 順序存儲:鄰接矩陣、邊集數組。
- 鄰接矩陣:鄰接矩陣通常采用一個一維數組存儲圖中的節點信息,采用一個二維數組存儲圖中節點間的鄰接信息。其深度優先遍歷時間復雜度為 O(n^2)。
- 無向圖的鄰接矩陣:若從節點 ni 到 nj 有邊,則鄰接矩陣 m [i] [j] = m [j] [i] = 1,否則為 0。
- 1、對稱矩陣,對角線對稱,并且是唯一的。
- 2、第 i 行或第 i 列的非零元素的個數正好是第 i 節點的度。
- 有向圖的鄰接矩陣:若從節點 ni 到 nj 有邊,則鄰接矩陣 m [i] [j] = 1,否則為 0。
- 1、不一定是對稱的。
- 2、第 i 行非零元素的個數正好是第 i 個節點的出度,第 i 列非零元素的個數正好是第 i 個節點的入度。
- 網的鄰接矩陣:若從節點 a 到節點 b 有邊,且邊的權值為 2,節點 a、b 在一維數組中的位置分別為 0、1,則 m [0] [1] = 2;若無邊則 m[0] [1] = 其它。
- 無向圖的鄰接矩陣:若從節點 ni 到 nj 有邊,則鄰接矩陣 m [i] [j] = m [j] [i] = 1,否則為 0。
- 鄰接矩陣:鄰接矩陣通常采用一個一維數組存儲圖中的節點信息,采用一個二維數組存儲圖中節點間的鄰接信息。其深度優先遍歷時間復雜度為 O(n^2)。
- 鏈式存儲:鄰接表、鏈式前向星、十字鏈表、鄰接多重表。
- 順序存儲:鄰接矩陣、邊集數組。
- 樹:
- 定義:
- 樹:樹中的每一個節點可以有 n 個字節點,但每一個節點只有一個父節點。
- 二叉樹:除了葉子結點外,每個節點最多只有兩個字節點,分別為左節點和右節點。
- 滿二叉樹:除了葉子結點外,每個節點都有左右字節點。
- 完全二叉樹:最下面兩層節點的度 <= 2,且度小于 2 的節點的字節點都為左節點。故滿二叉樹一定是完全二叉樹,但完全二叉樹不一定是滿二叉樹。
- 平衡二叉樹:數的左右子樹的高度差不超過 1。
- 哈夫曼樹:帶權路徑長度達到最小的二叉樹,也稱最優二叉樹。節點的度只能是 0 或者 2。
- 二叉排序樹:對于某個節點,其左節點小于它,右節點大于它。
- 葉子節點數 = 總節點數 - 每個度數所占有的節點數。如某個樹中有 5 個度為 1 的節點,4 個度為 2 的節點,2 個度為 3 的節點,則其葉子節點數 = (5 * 1 + 4 * 2 + 2 * 3 = 20) - 5 - 4 - 2 = 20 - 11 = 9。
n0 = 1 + 1 * n2 + 2 * n3 + 3 * n4 + … + (m - 1)nm。 - 二叉樹:
- 順序存儲:若樹的高度為 n,且采用三叉鏈表的方式存儲時,則所需數組長度為 2^n - 1,第 i 節點的左子樹、右子樹下標分別為 2i、2i + 1。三叉鏈表格式為:左子樹、節點數據、父節點、右子樹。
- 若二叉樹高度為 h,則其最多有 2^h - 1 個節點,最少有有 2^(h - 1) 個節點。
- n 個節點的二叉樹有 (n + 1) / 2 個葉子結點。
- 哈夫曼樹:基于貪心算法策略產生。
- 1、頻率從小到大排列。
- 2、頻率最小的兩個在最下層,且左節點小于右節點,左右節點頻率相加為二者父節點。
- 3、將父節點與第三個頻率比較,若存在兩個頻率都小于父節點,則重新構建一個分支,若沒有則只與父節點比較。
- 4、若第三個頻率小于父節點,則父節點為右子樹,否則為左子樹。重復該過程,直至構成一棵樹。
- 5、左子樹編碼為 0,右子樹編碼為 1。
- 定義:
- 若某算法的時間復雜度遞歸式為 T(n) = T(n - 1) + n,則其時間復雜度為 O(n^2),若問題規模增加 16 倍,則運行時間增加了 16^2 = 256 倍。
- 隊列:
- 循環隊列:
- 若頭節點位置為 head,尾節點后一個位置為 tail,隊列容量為 M,則其長度為 (tail - head + M) % M。循環隊列一定要取模。
- 雙端隊列:結合了棧與隊列的特點。
- 優先隊列:帶權值,通常采用堆實現,插入元素的時間復雜度為 O(logn),刪除元素的時間復雜度為 O(1)。
- 循環隊列:
- 排序算法:選擇、希爾、快排、堆 不穩定。
- 快速排序:
- 求第 i 小的數:最壞情況下時間復雜度為 O(nlog2n)。
- 堆排序:
- 堆排序是一種選擇排序。其時間復雜度為 O(nlog2n)。
- 快速排序:
- 貪心算法:在對問題求解時,總是做出在當前看來是最好的選擇,也就是,不從整體最優上考慮,它所做出是在某種意義上的最優解。其時間復雜度為 O(n^2)。
- 回溯:以深度優先的方法是搜索解空間,應采用 回溯算法。
- 迪杰斯特拉算法:本質上為貪心策略。按照路徑長度遞增次序產生最短路徑。
- prim 算法:本質上為貪心策略。可在加權連通圖里搜索最小生成樹。策略是每次以選取距離一生成的部分權值最小的邊作為貪心選擇的標準。
- 字符串:
- 若一個字符串 s 是由 n 各不相同的字符構成,則與其互異的非平凡子串的個數是 (n + 1)(n - 1) / 2。
- 散列表:
- 解決沖突方法:線性探測法、鏈地址法(拉鏈法)。
3、系統開發
3.1、軟件工程基礎知識
-
用戶需求不清晰且經常發生變化,最適宜采用原型化開發方法。
-
對于數據處理領域的問題,最適宜采用結構化開發方法。
-
軟件項目活動圖中的最少時間 = 關鍵路徑:耗時最長的路徑,其決定了項目的最短工期。
-
軟件過程模型:瀑布、V、增量、演化、噴泉、統一過程UP、敏捷。
- 大型軟件系統的需求往往難以在前期確定,故最不適宜采用 瀑布 模型。
- 極限編程中的結對編程:為解決代碼質量低的問題,是一種代碼審查過程。
- 螺旋模型:計劃指定、風險分析、工程實施、客戶評估。
-
敏捷模型:
- FDD 功用驅動方法:開發人員分類,分為首席程序員、類程序員。
- 開放式源碼:虛擬團隊,開發成員分布各地。
-
RAD 模型:需要用戶參與,模塊化要求高,不適用新技術。
-
軟件過程活動:軟件描述、軟件開發、軟件有效性驗證、軟件進化。
-
ISO/IEC 軟件質量模型:
- 外部和內部質量:6 個質量特性,27 個質量子特性。
- 功能性:適合性、準確性、互操作性、安全保密性、功能性的依從性。
- 可靠性:成熟性、容錯性、易恢復性、可靠性的依從性。
- 易用性:易理解性、易學性、易操作性、吸引性、易用性的依從性。
- 效率:時間特性、資源利用性、效率的依從性。
- 維護性:易分析性、易改變性、穩定性、易測試性、維護性的依從性。
- 可移植性:適應性、易安裝性、共存性、易替換性、可移植性的依從性。
- 外部和內部質量:6 個質量特性,27 個質量子特性。
-
結構化分析:
- 數據流圖:對軟件功能建模,即軟件的邏輯模型,可依據軟件的邏輯模型來考慮軟件的物理實現。
- 數據加工方式:流程圖、NS 盒圖、決策樹、決策表等。
- 決策樹、決策表:適用于表示加工中涉及多個邏輯條件的情況。
- 數據加工方式:流程圖、NS 盒圖、決策樹、決策表等。
- 結構化分析工具:數據流圖、數據字典、結構化語言、判定樹、判定表。
- 軟件結構圖:
- 傳入模塊:從下屬取數據,經過處理傳給上級。
- 傳出模塊:從上級取數據,經過處理傳給下屬。
- 變換模塊:即加工模塊,從上級取數據,加工后再傳回上級。變換數據流。
- 協調模塊:對所有下屬模塊進行協調和管理。在系統的輸入輸出部門或數據加工部分可以找到這樣的模塊。協調模塊應該在較高層出現。
- 數據流圖:對軟件功能建模,即軟件的邏輯模型,可依據軟件的邏輯模型來考慮軟件的物理實現。
-
軟件開發成本估算:
- 專家估算:即經驗估算。
- Wolverton:也叫 loc 方法,通過執行的源代碼行數來進行成本估算,準確性低。
- COCOMO:構造性成本模型,是一種參數化的成本估算方法。例如通過軟件的難度、規模作為參數進行估算。
- 基本模型:靜態單變量模型。用一個以已經估算出來的源代碼行數為自變量的函數來計算。
- 中級模型:在基本模型的基礎上,加上產品、硬件、人員等。
- 詳細模型:在終極模型的基礎上,再考慮軟件分析、設計等方面的影響。
- COCOMOⅡ:是 COCOMO 的改進版,把最新軟件開發方法考慮在內。由三個不同的計算模型組成。對象點、功能點、代碼行數。
- 應用組合模型:適用于使用現代 GUI 開發工具開發的項目。
- 早期開發模型:適用于在軟件架構確定之前,包含了一系列新的成本和估算方法,基于功能點和代碼行數。
- 結構化后期模型:是 COCOMOⅡ 最詳細的模型,適用于軟件架構確定之后,包括最新的成本估算、代碼行計算方法。
-
軟件內聚類型:
- 偶然內聚:模塊中的代碼無法定義其不同功能的調用,但它使該模塊能執行不同的功能,稱為巧合強度模塊。
- 邏輯內聚:把幾種相關的功能組合在一起,每次調用時由傳遞的參數決定提供那種功能。
- 時間內聚:把需要同時執行的動作組合在一起。
- 過程內聚:構件或者操作的組合方式是,允許在調用前面的構件或操作之后,馬上調用后面的構件或操作,即使兩者之間沒有數據進行傳遞。
- 通信內聚:即模塊內所有處理元素都在同一個數據結構上。
- 順序內聚:即模塊內所有處理元素都順序執行。
- 功能內聚:即模塊內所有元素共同完成同一個功能,聯系緊密,缺一不可。
-
模塊之間的聯系程度:耦合度從低到高
- 非直接耦合:模塊之間無直接聯系,聯系完全通過主模塊的控制和調用。
- 數據耦合:借助參數表傳遞簡單數據。
- 標記耦合:通過參數表傳遞記錄信息。
- 控制耦合:傳遞的信息中包含控制模塊內部邏輯的信息。
- 外部耦合:訪問統一全局變量(非全局數據結構),不是通過參數表傳遞。
- 公共耦合:訪問統一個公共數據環境(如全局數據結構、共享通信區、公共內存)。
- 內容耦合:不通過正常入口,直接訪問另一模塊的內部數據,代碼重疊,模塊有多個入口。
-
數據庫設計階段:
- 1、需求分析:分析用戶需求,包括數據、功能和性能等。
- 2、概念結構設計:依據需求分析結果,采用 E- R 模型進行設計。
- 3、邏輯結構設計:通過將 E-R 轉換成表,來實現從 E-R 模型到關系模型的轉換。
- 4、數據庫物理設計:為所設計的數據庫選擇合適的存儲結構和存儲路徑。
- 5、數據庫實施:編程、測試、運行。
- 6、數據庫運行和維護:系統的運行和數據庫的日常維護。
-
軟件設計:包括四個即獨立又相互聯系的活動,分別為 體系結構設計、接口設計、數據設計、過程設計。
-
軟件開發方法:
- 結構化開發方法:自頂向下逐步分解,開發過程強調整體和全局,適合數據處理領域,不適合規模較大較復雜的項目,當一個環節變動時,改動耗費時間。
- 面向對象開發方法:面向對象進行分析、設計、程序設計。是以系統要處理的問題域為對象,是分析和解決問題的核心。
- 原型開發方法:適合需求不明確,經常變動的項目,可逐步進行優化和改進。
-
軟件開發過程:
- 需求分析:確定軟件要完成的功能及非功能需求。
- 概要設計:要需求分析轉化為軟件的模塊劃分,確定模塊之間的調用關系。
- 詳細設計:將模塊進行細化,得到詳細的數據結構和算法。
- 編碼:根據詳細設計進行代碼的編寫,得到可運行的軟件并測試。
-
軟件配置管理:版本控制、變更控制、過程支持。
-
配置項:
- 產品組:需求文檔、設計文檔、源代碼、測試用例等。
- 項目組:工作計劃、項目質量報告等。
- 環境類:指軟件開發環境或軟件維護環境,如編譯器、操作系統、編輯器、數據庫管理系統、開發工具、項目管理工具、文檔編制工具等。
- 定義累:是需求分析與定義階段結束后得到的產品,如需求規格說明書、項目開發計劃、設計標準或設計原則、驗收測試計劃等。
- 設計類:設計階段結束后得到的產品,如系統設計規格說明、程序規格說明、數據庫設計、編碼標準、用戶界面標準、測試標準、系統測試計劃、用戶手冊等。
- 測試類:系統測試完成后的產品,如系統測試數據、系統測試結果、操作手冊、安裝手冊等。
- 維護類:進入維護階段以后產生的工作產品。
-
集成測試:在單元測試的基礎上進行,集成測試計劃在概要設計階段制定。
- 非漸增式集成測試:先單測每個模塊,在將所有模塊組裝成一個系統進行測試。
- 漸增式集成測試:
- 自頂向下集成:先測試上層模塊,再測試下層模塊,不需要編寫驅動模塊。
- 自底向上集成:先測試下層模塊,再測試上層模塊,不需要編寫樁模塊。
-
白盒測試:結構測試/邏輯驅動測試。
- 靜態測試:靜態結構分析法、靜態質量度量法、代碼走查。
- 動態測試:
-
管道/過濾器體系結構的優點:
- 1、良好的隱蔽性、高內聚、低耦合。
- 2、允許設計者將整個系統的輸入/輸出行為看成是多個過濾器行為的簡單合成。
- 3、支持軟件重用。
- 4、系統維護和增強系統性能簡單。
- 5、允許對一些如吞吐量、死鎖等屬性的分析。
- 6、支持并行執行。
-
軟件維護:
- 1、改正性維護:修復 bug。
- 2、適應性維護:軟件適應信息技術變化和管理需求變化。
- 3、改善性維護:新需求。
- 4、預防性維護:改進軟件的可靠性和可維護性。
-
軟件工程:
- 需求開發活動:需求獲取、需求分析、需求定義。
- 概要設計:系統架構、模塊劃分、系統接口、數據設計。
-
軟件原型:
-
從原型是否實現功能劃分:
- 水平原型:即行為原型,主要用來主界面上,通常只為功能的導航。
- 垂直原型:主要用來復雜的算法實現上。
-
從原型的最終結果劃分:
- 拋棄式原型:即探索式原型,是指達到預期目的后,原型本身被拋棄,主要用在需求不確定性、二義性、不完整性、含糊性等。
- 演化式原型:為開發增量式產品提供基礎,主要用在必須易于升級和優化的場合,適合于 Web 項目。
-
-
軟件能力成熟度集成模型:
- 0、未完成級:表明過程域的一個或多個特定目標沒有被滿足。
- 1、已執行級:過程通過轉化可識別的輸入工作產品,產生可識別的輸出工作產品,關注于過程域的特定目標的完成。
- 2、已管理級:過程作為已管理的過程制度化,針對單個過程實例的能力。
- 3、已定義級:過程作為一定義的過程制度化,關注過程的組織級標準化和部署。
- 4、量化管理級:過程作為定量管理的過程制度化。
- 5、優化級:過程作為優化的過程制度化,表名過程得到很好的執行且持續得到改進。
-
業務用例和參與者一起描述組織支持的業務過程。
-
業務對象模型描述業務結構及結構元素如何完成業務用例。
-
軟件維護工具:
- 版本控制工具、文檔分析工具、開發信息庫工具、逆向工程工具、再工程工具。
-
項目管理工具:成本估算工具。
-
OLAP:針對特定問題的聯機數據訪問與分析。他通過多維的方式對數據進行分析、查找和報表。
-
變更控制過程:問題分析與變更描述、變更分析與成本計算、變更實現。
-
項目范圍管理:
- 項目章程、項目范圍管理計劃、組織過程資產、批準的變更申請。
-
項目時間管理:
- 活動定義、活動排序、活動資源估算、活動歷時估算、制定計劃、進度控制。
-
軟件質量保證:
- 質量審計:包括軟件評審。
- 過程分析。
-
UML 圖:
- 用例圖:從用戶角度描述系統功能。描述角色及角色與用例之間的連接關系。一個用例圖包含了多個模型元素,如系統、參與者和用例。并顯示了這些元素之間的各種關系,如泛化、關聯和依賴等。側重描述用戶需求。
- 類圖:描述系統中類的靜態結構。表示類、接口和它們之間的協作關系。側重描述系統具體實現和系統結構。描述系統的模塊結構,抽象層次一般。
- 對象圖:系統中的多個對象在某一時刻的狀態。類圖的實例,描述對象之間的關系。描述具體的模塊實現,抽象層次最低。
- 狀態圖:描述狀態到狀態的控制流,常用于動態性建模。描述類的對象所有可能的狀態,以及事件發生時狀態的轉移條件。是對類圖的補充。主要描述行為的結果。
- 活動圖:描述業務實現用例的工作流程。描述用例要求所要進行的活動,是一種特殊的狀態圖。主要描述行為的動作。
- 順序圖(序列圖):對象之間的動態合作關系,強調對象發消息的順序,同時顯示對象之間的交互。側重描述系統行為。
- 協作圖:描述對象之間的協作關系。和順序圖極為相似,顯示對象間的動態合作關系。
- 構件圖(組件圖):描述系統的靜態現視圖,一種特殊的 UML 圖。描述代碼構建的物理結構以及各種構建之間的依賴關系。描述系統的模塊結構,抽象層次較高。
- 部署圖(配置圖):定義系統中軟硬件的物理體系結構。
- 包圖:對構成系統的模型元素進行分組整理。
- 組合結構圖:表示類或者構建內部結構的圖。描述結構化類的內部結構。
- 交互概覽圖:用活動圖來表示多個交互之間的控制關系。
-
UML 圖:
- 結構圖:類圖、對象圖、組件圖、部署圖。
- 行為圖:用例圖、順序圖、活動圖、狀態圖、通信圖。
-
UML 事務:
- 結構事務:類、接口、協作、用例、主動類、組件、節點。
- 行為事務:交互、狀態機。
- 分組事務:包。
- 注釋事務:注解。
-
類圖關系:
- 泛化:繼承,三角實線箭頭,箭頭指向父類。一般化和特殊化關系。
- 實現:實現,三角虛線箭頭,箭頭指向接口。語義關系。
- 關聯:擁有,即成員變量,普通實線箭頭,箭頭指向成員變量類型。結構關系。
- 聚合:整體與部分,且部分離開整體可單獨存在。即成員變量,關聯關系的一種,且為強關聯。空心菱形實線,菱形指向整體。
- 組合:整體與部分,且部分離開整體不能單獨存在,即成員變量,關聯關系的一種,且比聚合關系更強。實心菱形實線,菱形指向整體。
- 依賴:使用,即形參,普通虛線箭頭,箭頭指向被依賴者。語義關系。
-
用例關系:
- 包含:當可以從兩個或兩個以上的用例中提取公共行為時,應該使用包含關系來表示它們,而原始用例稱為基本或基礎用例。
- 擴展:如果一個用例明顯的混合了兩種或兩種以上的不同場景,則使用擴展。
- 泛化:當多個用例共同擁有一種類似的結構或行為時。
-
結構化方法:結構化分析、結構化設計、結構化程序設計。與瀑布型相對應。
-
面向對象:
- 面向對象分析(OOA):一種分析方法,利用從問題域的詞匯表中找到的類和對象來分析需求,重點是找到和描述問題領域的對象或者概念,然后構建真實世界的模型,利用面向對象的觀點來看世界。建模系統功能、發現并確定業務對象、組織對象并確定對象間的關系。
- 面向對象設計(OOD):一種設計方法,包括面向對象分解的過程和一種表示法,這種表示法用于展現被設計系統的邏輯模型(類和對象結構)和物理模型(模塊和處理架構)、靜態模型和動態模型。
- 面向對象程序設計(OOP):一種實現方法,在這種方法中,程序被組織成許多相互協作的對象,每個對象代表某個類的一個實例,而類則屬于一個通過繼承關系的層次結構。
-
面向對象類:
-
實體類:映射需求中的每個實體,保存需要存儲在永久存儲介質中的信息。
-
控制類:用于控制用例工作的類,用于對一個或幾個用例所持有的控制行為進行建模。
-
邊界類:用于封裝在用例內、外流動的信息或數據流。
-
-
模型分析:模型的合理性分析、模型的誤差分析、參數的靈敏性分析。
-
多態:
- 參數多態:應用廣泛,最純的多態。
- 包含多態:同樣的操作可用于一個類型及其子類型。
- 過載多態:同一個名(操作符、函數名)在不同的上下文中有不同的類型。
- 強制多態:編譯程序通過語義操作,把操作對象的類型進行強制轉換,以符合函數或操作符的要求。
4、標準與知識產權
4.1 知識產權
- 保護期不受時間限制:署名權、修改權、保護作品完整權。
- 保護期受時間限制:發表權、使用權、獲得報酬權。期限為作者終身及死后五十年。