天天看點

《軟體設計師》複習總結《軟體設計師》複習總結

《軟體設計師》複習總結

7号的時候考完了軟考中級的《軟體設計師》,在考之前花了10天的時間把《軟體設計師》這本教材看完了,恰巧的是,我大學開的課程都涵蓋了這本書的内容,是以看得時候就相當于一個全方面的複習了。我把相關的總結都寫在了本子上,在考完了一直忙着課業和找工作等,現在總算是花時間把這些萬字筆記記在電腦裡來了。

這個的軟體設計師考試複習局限性還是比較大的:

  1. 資料庫中真正深入的内容幾乎沒有,面向面試的話遠遠不夠,需要自己再去學習;
  2. 計算機網絡考綱覆寫的過少,自己再去複習
  3. 算法和資料結構淺嘗辄止,但這方面的學習是一個堅持長久的過程

文章目錄

  • 《軟體設計師》複習總結
      • 計算機組成原理
      • 編譯原理
      • 資料結構與算法
          • 常用資料結構
          • 查找和排序
          • 常見算法思想
            • 以上内容見對應教材及部落格園總結
          • 其他題目
      • 作業系統
          • 總述
          • 程序管理
            • 程序
            • 程序同步和通信
            • 程序排程
            • 死鎖
            • 線程
          • 存儲管理
            • 方案
            • 分區存儲管理
            • 分頁存儲管理
            • 分段存儲管理
            • 段頁式存儲管理
            • 虛拟存儲管理(重點難點)
          • 裝置管理
            • 裝置
            • I/O
            • 儲存設備
          • 檔案管理
          • 作業管理
      • 軟體工程
          • 基礎知識
            • 生存周期
            • 軟體過程模型
            • 其他過程周期
            • 軟體項目管理
          • 結構化開發方法
            • 系統設計
            • 總體結構設計
            • 結構化分析方法
          • 面向對象技術
            • 統一模組化語言UML
            • 設計模式
      • 關系代數和資料庫
          • 關系代數
            • 相關概念
            • 關系代數運算
            • SQL語句
          • 資料庫
      • 計算機網絡
      • 标準化和知識産權
      • 軟體系統分析與設計(下午題)
      • 其他題目

計算機組成原理

  1. 原、反、補、移碼
    • 原碼
      • 正數不變
      • 負數改符号位
    • 反碼
      • 正數負數都是在原碼基礎上除符号位外其餘位取反
    • 補碼
      • 反碼+1
    • 移碼
      • 補碼符号位取反
    • n位補碼可直接表示數值:-2(n-1)或2(n-1)-1
  2. 浮點數的階數二進制表示
    • 二進制數N:

      N=2^E*F

      ,其中E為階數,F為階碼,二者均為帶符号數
    • 浮點數相加,小階向大階對齊,同時尾數右移n位
  3. 奇偶校驗(不能糾錯)、循環循環備援校驗
  4. 海明碼(能糾錯):

    2^k-1>=n+k

    ,其中k為校驗碼數,n為資料位
  5. 計算機指令集:
    • CISC:複雜指令集計算機
      • 絕大多數計算機采用
      • 不等長指令集
    • RISC:簡單指令集計算機
      • ARM為代表的移動端産品
      • 等長指令集
      • 硬布線邏輯
  6. 指令控制方式:
    • 順序方式(串行)
    • 重疊方式
    • 流水方式
  7. 流水線種類(P17)
  8. 流水線吞吐率:

    流水操作時間不同時,吞吐率為最長流水段操作時間的倒數

  9. RISC的流水線技術
    • 超流水線
    • 超标量
    • 超長指令集
  10. 并行處理機分類:
    1. 處理機操作步驟并行
      • 流水線處理機
    2. 處理機操作并行:
      • 陣列處理機
    3. 指令、任務、作業并行:
      • 多處理機
      • 分布式處理機(叢集)
  11. 存儲器分類:P21
    • 重點:
      • 按工作方式分:
      • 按尋址方式分:
  12. Cache位址映射方法:
    • 直接映射
    • 全相聯映射
      • 該映射,位址全裝滿時才能替換
    • 組相聯映射
    注:嵌入式系統中,Cache對程式員是透明的
  13. 硬碟容量
    • 非格式化:

      容量=面數*(磁道數/面)*内圓周長*最大位密度

    • 格式化:

      容量=面數*(磁道數/面)*(扇區數/道)*(位元組數/扇區)

    注:

    /

    為或
  • 磁道不涉及柱面的容量問題,直接相乘即可
  1. 記憶體與接口的編址方法:
    • 獨立編址
    • 統一編址
  2. I/O控制方式
    1. 直接控制方式
      • 無條件傳送
      • 程式查詢方式
    2. 中斷方式
    3. DMA方式(直接存儲器存儲)

      DMA方式的流程,重點為DMA控制器。其根據占用總線不同,DMA方式也出現不同

    4. IOP(通道)方式(I/O處理機又稱通道)
    • 其中中斷方式的終端處理方法P33
  3. 總線(BUS)結構
    • 資料總線(DB):雙向
    • 位址總線(AB):單向
    • 控制總線(CB):單獨單向、總體雙向
  • 常見總線類型

    USB、PCI、PCI-E、SATA

  • 總線部件可同時接受資料,但隻能分時發送資料
  1. 計算機安全的三類安全性:
    • 技術安全性
    • 管理安全性
    • 政策安全性
  2. 安全威脅:分為故意和偶然
    • 因素:内部和外部
  3. 加密技術
    • 對稱加密(私人秘鑰)

      DES,TDES,RC-5,IDEA,AES

    • 非對稱加密(公開密鑰)

      RSA

    • 比較:
      • 非對稱加密保密性更好,但時間長、速度慢
      • 故,非對稱加密适用于少量資料,對稱加密适用于檔案
  4. 認證技術
    1. 資訊摘要技術認證:代表:MD5認證(hash()函數實作)
    2. 數字簽名認證
    3. SSL安全套接字協定認證【一個檢測協定】(面試會問)
      • SSL的工作原理
        1. 握手協定(Handshake protocol)
        2. 記錄協定(Record protocol)
        3. 警報協定(Alert protocol)
      • 具體見連結

        https://blog.csdn.net/shipfsh_sh/article/details/80419994

    4. 數字時間戳技術認證
    • 數字簽名不能驗證接收者合法性
  5. 計算機性能評價方法
    1. 時鐘頻率
    2. 指令執行速度
    3. 等效指令速度
    4. 資料處理速率
    5. 核心程式法
    6. 基準測試程式
      • 整數測試程式
      • 浮點測試程式
  6. CPU區分記憶體中的指令和資料:
    • 依靠指令周期的不同階段
  7. 執行指令

    首先從位址總線(AB)傳程式計數器(PC)

  8. 時鐘周期(CPU)< 機器周期(主機)< 指令周期(程式)
  9. 取指周期取指令,執行周期取資料
  10. 程式計數器PC存放下一條指令位址

編譯原理

  1. 編譯程式和解釋程式
    • 解釋程式

      概念:由它解釋并執行源程式或翻譯成中間代碼後由它執行的程式

      • 解釋翻譯過程不生成獨立目标程式,代表:Java
    • 編譯程式

      概念:将源程式編譯翻譯成目标程式後程式獨立運作的程式

      • 編譯翻譯過程會生成獨立儲存的目标程式,代表:C/C++
  2. 程式設計語言定義
    • 語義、文法、語用
    • 分類:
      1. 面向過程的(指令式和結構化程式設計語言),C、PASCAL
      2. 面向對象的,C++、Java、Python
      3. 函數式,LISP、Scala
      4. 邏輯型,PROLOG
  3. 語言處理程式
    • 彙程式設計式
    • 編譯程式
    • 解釋程式
  4. 彙程式設計式
    • 語句
      1. 指令語句
      2. 僞指令語句
      3. 宏指令語句
    • 翻譯過程

      兩次掃描

      • 第一次産生符号表ST;
      • 第二次使用ST及MOT2(機器指令表)、POT2(僞指令表)三表産生目标程式
  5. 編譯程式
    • 工作過程:(六個普通階段和兩個特殊階段)P69,圖2-4
      1. 詞法分析

        ​ ↓

      2. 文法分析

        ​ ↓

      3. 語義分析

        ​ ↓

      4. 中間代碼生成(通常為四元式)

        ​ ↓

      5. 代碼優化

        ​ ↓

      6. 目标代碼生成
    • 具體過程原理見《編譯原理》教材
    • 移進-歸約分析法:是自底向上的文法分析法
  6. 解釋程式

    詞法、文法和語義分析階段原理與編譯程式相同。但後續過程為解釋器直接執行分析的源程式,或者分析完的源程式生成中間代碼後直接執行。

    故工作過程:

    1. 分析部分:詞法→文法→語義[→中間代碼生成(逆波蘭式)]
    2. 解釋執行
  7. 編譯程式與解釋程式比較
    1. 效率:編譯可能更高
    2. 靈活性:解釋更靈活
    3. 可移植性:解釋更好
  8. 有限自動機:P76
  9. 正規式與正規集示例:P76
  10. 絕大多數程式設計語言都采用上下文無關文法

資料結構與算法

常用資料結構
  1. 數組
  2. 連結清單
  3. 廣義表
  4. 隊列
    • 二叉樹
查找和排序
  1. 排序
    • 基礎排序
      1. 冒泡排序
      2. 選擇排序
      3. 插入排序
    • 進階排序
      1. 希爾排序
      2. 快排
      3. 歸并排序
      4. 堆排序
  2. 查找

    重點二分查找

常見算法思想
  1. 遞歸
  2. 分治
  3. 貪心
  4. 回溯
  5. 動态規劃

以上内容見對應教材及部落格園總結

其他題目
  1. 傳值方式形參和實參存儲空間互不幹擾,傳引用方式形參和實參存儲空間為同一位址
  2. 常量有常量
  3. 關鍵碼序列,父親節點必須在前
  4. 拓撲序列:依次周遊沒有前驅結點的結點
  5. 周遊二叉樹
    • 二叉樹的每一個三節點的二叉樹小部分都要按照要求序列周遊
  6. 無向圖深度周遊鄰接矩陣:O(n^2)
  7. 單連結清單中,隊列入隊需周遊,出隊不需要;棧都不需要
  8. 使用隊列對圖進行廣度周遊
  9. 動态綁定:運作時綁定;靜态綁定:編譯時綁定。
  10. 二叉樹形态個數:

    C(2n,n)/n+1

    ,其中C(2n,n)為排列
  11. 霍夫曼編碼:哈夫曼樹,相加的兩數中,小的置0,大的置1
  12. n長非空字元串S的互異非平凡子串個數:

    (n+2)(n-1)/2

  13. 哈夫曼樹字元編碼長度
    • (用次數畫出二叉樹後,字元串轉換對應次數),對應層數-1
  14. 二叉樹有k節必有k+1個空的孩子指針

作業系統

總述
  1. 四大特征
    • 并發性
    • 共享性
    • 虛拟性
    • 不确定性
  2. 五大功能
    1. 程序管理
    2. 檔案管理
    3. 存儲管理
    4. 裝置管理
    5. 作業管理
  3. 常見分類及其特征
    1. 批處理作業系統
      • 其中多道批處理的特征:多道;宏觀上并行,微觀上串行
    2. 分時作業系統
      • 特征:多路性、獨立性、互動性、及時性
    3. 實時作業系統
    4. 網絡作業系統
    5. 分布式作業系統
    6. 微型作業系統
    7. 嵌入式作業系統
  4. 程式執行的特征
    • 順序性
    • 封閉性
    • 可再現性
  5. 作業系統的使用者界面
    1. 控制台式界面
    2. 字元界面
    3. 圖形界面
    4. 新一代界面(如VR等)
程序管理

程序

  1. 概念:一個具有一定獨立功能的程式關于某個資料集合的一次可以并發執行的運作活動。
  2. 程序的組成

    程式(不可修改部分)+資料(可修改部分)+PCB程序控制塊(唯一辨別)+系統資源(I/O和檔案等)

  3. 原語

    由若幹條機器指令組成,用于完成特定功能的程式段

程序同步和通信

  1. 程序同步和互斥
    • 同步:合作程序間的直接制約
    • 互斥:不同程序申請同一個臨界區的間接制約
  2. PV操作
    • P申請資源,V釋放資源,S信号量
    • 信号量S為負數後,P操作還是會繼續減少信号量S
    • 前趨圖解法:箭頭出發處都是V操作,箭頭處都是P操作。再根據圖和選項确定S的位置即可
  3. 進階通信方式
    • 共享存儲模式
    • 消息傳遞模式
    • 管道通信

程序排程

  1. 三級排程
    • 進階排程:I/O或外存→交換區
    • 中級排程:交換區→記憶體
    • 低級排程:就緒态→運作态
    注:

    意為到
  2. 程序排程算法:
    1. 先來先服務(FCFS)
    2. 時間片輪轉(RR)
      • 固定時間片
      • 可變時間片
      • 多級回報排程
    3. 優先級排程
      • 按獲得資源方式分為:
        1. 搶占式
        2. 非搶占式
      • 按優先級規則分為(它們也可進一步分為搶占或非搶占)
        1. 短作業優先(STFC)
        2. 最短剩餘時間優先(SRFC)
        3. 最高響應比優先
      • 按優先級規則是否可變分為
        1. 靜态優先級
        2. 動态優先級
  3. 算法性能衡量名額
    • 平均周轉時間:N個程序的周轉時間的平均值
      • 周轉時間:程序從建立到結束運作所經曆的時間

        周轉時間=等待時間+執行時間

        完成時間點-送出時間點

        • 等待時間:程序等待處理機狀态的時間之和
        • 執行時間:執行所需時間,一般伴随程序給出
    • 平均帶權周轉時間:N個程序的帶權周轉時間的平均值
      • 帶權周轉時間:

        帶權周轉時間=周轉時間/執行時間

        ,即響應比

死鎖

  1. 概念:兩個以上的程序互相都要求對方已經占用資源,導緻無法繼續運作的現象
  2. 産生的四個必要條件
    1. 互斥條件
    2. 請求保持條件
    3. 不可剝奪條件
    4. 環路(回路)條件
  3. 死鎖處理
    • 死鎖預防
      1. 預先靜态配置設定法(破壞“不可剝奪條件”)
      2. 資源有序配置設定法(破壞“環路”條件)
    • 死鎖避免
      • 銀行家算法(破壞四個條件之一)
    • 死鎖檢測和解除
      • 不同于前兩種不産生死鎖,它允許死鎖産生,通過檢測出死鎖後解除。包括:
        1. 資源剝奪法
        2. 撤銷程序法
  4. 題目中死鎖不發生條件:
    • 程序數*(所需資源-1)+1

      P*(R-1)+1

線程

  1. 概念:一個程序中可以包含多個并發(并行)執行的部分。
  2. TCB(線程控制塊):是程序控制塊的組成和附屬
  3. 與程序的關系:
    • 每個程序包含一個或多個線程,每個線程有各自的運作環境
    • 線程們共享其程序的程式區和資料區
    • 線程作為CPU排程和配置設定的基本機關,程序作為作為其他資源配置設定的機關
存儲管理

方案

  1. 分區存儲管理
  2. 分頁存儲管理
  3. 分段存儲管理
  4. 段頁式存儲管理
  5. 虛拟存儲管理

分區存儲管理

  1. 内碎片:已分區空間内未使用空間
  2. 外碎片:無法再配置設定的小分區
  3. 分區保護:
    • 上界/下界寄存器保護
      • 條件:上界寄存器≤實體位址≤下界寄存器
    • 基址/限長寄存器保護
      • 條件:基址寄存器≤實體位址≤基址寄存器+限長寄存器(作業長度)

分頁存儲管理

  1. 普通分頁
    1. 頁:位址空間等分
    2. 塊:主存空間等分
    3. 位址結構:

      位址結構=頁号+頁内位址

    4. 頁表:頁塊映射表
    5. 邏輯位址→實體位址
      • 偏移量不變,頁塊号轉換後拼接即可。
        • 還可根據塊起始位址與塊大小獲得具體實體位址
  2. 塊表:聯想存儲器組成用于存儲特定頁表(最活躍的)
  3. 兩級頁表(80386及以後的晶片)
    • 外層頁表:對頁表進行分頁,對應實體位址
    • 内頁表:根據外頁表實體位址找到,功能對應上述普通頁表

分段存儲管理

  1. 位址結構:

    位址結構=段号+段内位址

  2. 段表:段與實體位址映射表
  3. 邏輯位址→實體位址:
    • 先判斷偏移量是否大于所在段的段長造成越界
    • 若越界則不存在;不越界則,偏移量+實體位址

段頁式存儲管理

  1. 位址結構:

    位址結構=段号+段内頁号+頁内位址

  2. 邏輯結構既有段表也有頁表,兩者都與上述相同
  3. 邏輯位址→實體位址:
    • 查段表獲得頁起始位址
    • 查頁表得到實體塊及其起始位址
    • 拼接

虛拟存儲管理(重點難點)

  1. 實作系統
    1. 請求分頁系統(常用)
    2. 請求分段系統
    3. 請求段頁式系統
  2. 請求分頁實作例題,見試卷
  3. 頁面置換算法(重點)
    1. 最佳置換算法(理想化,實作條件:已知後續頁号)
      • 最長或後續不使用的頁塊替換
    2. 先進先置換(FIFO)
      • 最直覺但性能最差的算法,有Belady現象
    3. 最近最少未使用算法(LRU)
      • 自上次通路後經曆的時間T最長的替換
    4. 最近未用算法(NRU)
      • 類似于3,檢查所用塊通路是否為0替換,當一個替換不成功時将1變為0,直到找到為0的頁為止。每一次替換成功将該頁通路位變為1。
  4. 工作集:在某段時間間隔(Δ)裡程序實際要通路的頁面的集合,
    • 工作集大小影響系統效率
裝置管理

裝置

  1. 概念:負責計算機與外部I/O工作,也稱外設。
  2. 裝置分類:四種分類方式,具體見教材
  3. 裝置管理技術
    1. 中斷技術
    2. DMA技術
    3. 通道技術
    4. 緩存技術
  4. 中斷方式時,CPU與外設可并行工作

I/O

  1. I/O系統:負責管理I/O工作的稱為I/O系統
    • 組成:裝置、控制器、通道、總線和I/O軟體
  2. I/O軟體的目标:實作裝置獨立性和統一命名
  3. I/O軟體與裝置的層次結構
    I/O請求 I/O應答
    層次 I/O功能
    使用者程序(軟體) 進行I/O調用、格式化I/O、Spooling系統
    裝置無關軟體 命名、保護、阻塞、緩存、配置設定
    裝置驅動程式 置裝置寄存器;檢查狀态
    中斷處理程式 當I/O結束時喚醒驅動程式
    裝置(硬體) 執行I/O操作
  4. 輸入資訊最早由硬體的指令解釋器獲得
  5. 相關技術
    1. 通道技術:通道處理機和通道。
      • 交換資訊分類
        1. 位元組多路通道
        2. 數組選擇通道
        3. 數組多路通道
    2. DMA技術:DMA控制器
    3. 緩沖技術:
      • 分類
        • 硬體緩沖
        • 軟體緩沖
      • 緩沖區
        • 單緩沖
        • 雙緩沖
        • 多緩沖
        • 環形緩沖
    4. Spooling技術:虛拟化裝置資源,由Spooling系統控制資源配置設定

儲存設備

  1. 常見儲存設備
    • 錄音帶
    • CD光牒
    • 磁盤(機械硬碟)
    • 固态硬碟
  2. 磁盤排程
    1. 磁盤排程算法(移臂排程尋找柱面)
      • 先來先服務(FCFS)
      • 最短尋道時間優先(SSTF)
      • 掃描算法(SCAN):在2的基礎上考慮掃描方向因素
      • 單項掃描排程算法(CSCAN):在3的基礎上規定隻有一種掃描方向
    2. 旋轉排程算法(旋轉排程尋找扇區,記住三個原則【教材P222】)
      • 例4.15
        1. 解析有誤。

          R1=6ms

          R2~R9=9*(16+6)

          ,其中括号内16為轉一圈的時間,6為讀+處理時間
        2. 優化方式及優化後的時間記住
          • 優化時間:

            優化時間=實體塊數N*(讀時間+處理時間)

      • 例題4.16
        1. 要記住該例題
        2. 要根據旋轉排程算法原則判斷序列
檔案管理
  1. 檔案概念:具有符号名的、邏輯上具有完整意義的一組相關資訊項的集合(抽象機制)
  2. 檔案管理系統:作業系統中實作檔案統一管理的一組軟體和相關資料的集合
  3. 檔案系統:專門負責管理和存取檔案資訊的軟體機構
    • 功能:
      1. 按名存取
      2. 統一的使用者接口
      3. 并發通路和控制
      4. 安全性控制
      5. 優化性能
      6. 差錯恢複
  4. 檔案類型:各種不同分類方式,見教材
    • 常用的檔案系統類型:FAT,VFAT,NTFS,EXT2,XFS,HPFS
  5. 檔案的結構
    • 實體結構:在存儲器上的存放方式
      1. 連續結構
      2. 連結結構
      3. 索引結構
      4. 多個實體塊的索引表
    • 邏輯結構
      1. 記錄式檔案(有結構的):一個以上記錄構成
      2. 流式檔案(無結構的):順序字元流構成
  6. 檔案目錄:檔案控制塊的有序集合
    • 檔案控制塊(FCB):描述和控制檔案的資料結構
      • 包含的三類資訊:
        1. 基本資訊類
        2. 存取控制資訊類
        3. 使用資訊類
    • 目錄結構
      1. 一級目錄
      2. 二級目錄
      3. 多級目錄
  7. 檔案存取方法
    1. 順序存取
    2. 随機存取
  8. 空閑空間管理
    • 管理的資料結構:磁盤配置設定表
    • 方法:
      1. 空閑區表(适用連續結構)
      2. 位示圖(适用于各種實體結構)
      3. 空閑塊鍊(适用連結結構)
      4. 成組連結(适用連結結構)
  9. 位示圖例題
  10. 檔案使用
    • 操作級檔案指令:
      1. 目錄管理類指令
      2. 檔案操作類指令
      3. 檔案管理類指令
  11. 檔案連結
    1. 硬連結
    2. 符号連結(軟連結)
  12. 檔案保護
    • 方法:存取控制
      1. 存取控制矩陣
      2. 存取控制表
      3. 使用者權限表
      4. 密碼
  13. 4個對檔案進行的安全性管理級别
    1. 系統級
    2. 使用者級
    3. 目錄級
    4. 檔案級
  14. 檔案系統的可靠性
    1. 轉儲和恢複
    2. 日志檔案
    3. 檔案系統的一緻性
作業管理
  1. 作業管理程式:在作業系統中用來控制作業執行和撤銷的一組程式
  2. 作業控制
    1. 脫機控制(作業說明書控制,無需人工)
    2. 聯機控制(人工幹預)
  3. 作業概念:程式、資料、作業說明書組成(類似于程序的組成)
  4. 作業的狀态
    • 送出
    • 後備
    • 執行
    • 完成
  5. 作業控制塊(JCB):作業唯一辨別
    • 包含的資訊
      1. 使用者名
      2. 作業名
      3. 狀态标志
    • 後備隊列:若幹個JCB組成的隊列
  6. 作業排程算法
    • 與程序排程算法一緻,但少一個多級回報排程,多一個均衡排程
  7. 性能衡量名額
    • 與程序排程算法的标準一緻

軟體工程

基礎知識

生存周期

  1. 軟體生存周期
    1. 可行性分析與項目開發計劃
      • 結果:産生可行性分析報告和項目開發計劃
    2. 需求分析
      • 結果:确定系統做什麼,産生軟體需求說明書
    3. 概要設計
      • 結果:需求轉換為體系結構和對應子產品,産生概要設計說明書
    4. 詳細設計
      • 結果:子產品功能的具體過程描述,産生詳細設計文檔
    5. 編碼
      • 要求:一般不超過總項目時間的20%
    6. 測試
      • 結果:測試計劃、測試用例及測試報告
    7. 維護

軟體過程模型

  1. 軟體過程:軟體開發中所遵循的路線圖(不是很重要)
    • 三層含義:個體含義、整體含義、工程含義
    • 兩個評估模型:
      1. 軟體工程能力成熟度模型(CMM):對軟體組成進化階段的描述
        • 5個成熟度級别:
          1. 初始級
          2. 可重複級
          3. 已定義級
          4. 已管理級
          5. 優先級
      2. 軟體工程能力成熟度模型內建(CMMI)
        • 表示方式:
          1. 階段式模型
          2. 連續式模型
  2. 軟體過程模型
    1. 瀑布模型
      • 優點:容易了解、成本低
      • 缺點:需要已知完整需求,風險控制弱
    2. 增量模型
      • 優點:內建瀑布模型優點,且每個檔案版本成本低、時間短,承擔風險小
      • 缺點:不好進行子產品劃分;同時早期思考需穩定完整,否則可能從頭再來
    3. 演化模型:不斷完善,盡快使用
      • 适合對軟體需求缺乏準确認知的情況
      • 分為:
      1. 原型模型
        • 分類:
          1. 探索型原型
          2. 實驗性原型
          3. 演化型原型
        • 優勢:不斷溝通,能不斷疊代更新使用者新需求
        • 抛棄式适合不明确需求
      2. 螺旋模型
        • 工作步驟
          1. 制定計劃
          2. 風險分析
          3. 實施工程
          4. 使用者評估
        • 優勢:強調風險分析,适用于龐大、複雜并且具有高風險的系統
        • 缺點:過多的疊代會增加開發成本,延遲送出時間
    4. 噴泉模型:以使用者需求為動力,以對象作為驅動的模型
      • 優點:适用于面向對象的開發方法,使得開發過程既有可疊代性和無間隙性
      • 缺點:不利于項目管理,使得稽核難度加大
    5. 基于構件的開發模型:利用預先包裝的構件來構造應用系統
      • 包括
        1. 領域工程
        2. 應用系統工程
    6. 形式化方法模型:基于嚴格數學基礎
      • 主要活動:生成軟體形式化的數學規格說明
    7. 統一過程(UP)模型:由UML方法和工具支援
      • 4個階段
        1. 起始階段
        2. 精化階段
          • 裡程碑為生命周期架構
        3. 建構階段
        4. 移交階段
    8. 靈活模型
      • 包括
        1. 極限程式設計
          • 結對程式設計中包含代碼審查過程,但不改變速度
          • 不包括精心設計
        2. 水晶法
        3. 并列争求法
        4. 自适應軟體開發
        5. 靈活統一過程

其他過程周期

  1. 需求分析:略
  2. 系統分析
    • 總述:
      1. 結果:系統方案建議書
      2. 對現有系統進行分析時,不進行邏輯分析
    • 分類
      1. 概要設計
        • 包括
          1. 軟體系統總體結構
          2. 資料結構及資料庫設計
          3. 編寫概要設計文檔
          4. 評審
      2. 詳細設計:略
  3. 系統測試
    1. 結果:得到操作手冊
    2. 傳統項目/面向對象項目/Web應用的測試
      • 都包括單元測試和內建測試
    3. Alpha和Beta測試都屬于确認測試
    4. 測試方法,重點掌握加粗部分,看例題
      1. 靜态測試
        • 人工檢測
        • 計算機輔助靜态分析(略)
      2. 動态測試
        • 黑盒測試(功能測試):測試軟體外部特性
          • 技術:
            1. 等價類劃分
            2. 邊界值分析
            3. 錯誤推測
            4. 因果圖
        • 白盒測試(結構測試):測試軟體内部結構和邏輯
          • 技術:
            1. 語句覆寫/代碼行覆寫
            2. 判定覆寫/分支覆寫
            3. 條件覆寫
            4. 條件組合覆寫
            5. 路徑覆寫(基本路徑測試)
            • 具體看這篇部落格:https://blog.csdn.net/Shiny0815/article/details/80185142?utm_source=blogxgwz4
    5. 調試(Debug):測試之後,找到錯誤的具體原因和位置
      • 方法:
        1. 試探法
        2. 回溯法
        3. 對分查找法
        4. 歸納法
        5. 演繹法
  4. 運作和維護
    1. 軟體維護工具不包括配置管理,配置管理屬于下面的軟體項目管理

軟體項目管理

  1. 範圍:人員、産品、過程和項目
  2. 成本估算:
    • COCOMO模型:

      E=a(L^b),D=c(E^d)

      ,初級,其中E為工作量,D為開發時間,L為源碼行估計值,a、b、c、d為常數
    • COCOMOII模型估算時,不包括用例數
  3. 進度管理:略
  4. 項目組織和配置管理:略
  5. 風險管理
    • 風險類型
      1. 市場風險
      2. 政策風險
      3. 銷售風險
      4. 管理風險
      5. 預算風險
  6. 軟體品質
    • 系統可靠性:

      MTBF/(MTBF+1)

    • 串聯關系的可靠性:

      R1*R2*R3*···Rn

      ,Ri為各子產品的單獨可靠性
    • 并聯關系的可靠性:

      1-(1-R1)*(1-R2)*(1-R3)*···(1-Rn)

      ,Ri也為各子產品的單獨可靠性
    • 軟體評審時軟體品質保證的重要活動之一
  7. 軟體度量
    • 分類
      1. 面向規模的度量
      2. 面向功能的度量
    • 複雜度度量
      • MeCabe度量法(計算環路複雜度)

        V(G)=m-n+2p

        ,其中m為圖中弧(即路徑)的個數,n為結點數,p為強連通分量個數(就算不連通也至少為1)
        • 當V(G)>10是,軟體為複雜,充分測試較困難
  8. 軟體工具及環境:略
結構化開發方法

系統設計

  1. 基本原理
    • 四大方面
      1. 抽象
      2. 子產品化
      3. 資訊隐蔽
        • 該原則提高軟體的可修改性和可移植性
      4. 子產品度量
        • 兩個标準,重點
          1. 耦合性:子產品間的相對獨立性度量
            耦合性
            無直接耦合 資料耦合 标記耦合 控制耦合 外部耦合 公共耦合 内容耦合
            子產品獨立性
          2. 内聚性:對一個子產品内部各個元素彼此結合的緊密程度的度量
            内聚性
            功能内聚 順序内聚 通信内聚 過程内聚 時間内聚 邏輯内聚 偶然内聚
            子產品獨立性
          • 需注意的問題
            1. 2個子產品共用一個東西就是公共耦合
            2. 資料耦合是有資料傳遞,标記是傳遞了資料結構
            3. 耦合和功能數無關
  2. 結構化設計與結構化分析的關系
    1. 要點

      概要設計

      1. 資料(概念)設計:資料庫和檔案系統設計,對應資料對象描述(E-R圖)和資料字典
      2. 體系結構設計:部件及它們間的關系,對應資料流圖
      3. 接口設計:互動(子產品間/子系統)
      詳細設計
      1. 過程設計:子產品的詳細設計,即:各部分算法和資料結構,對應加工規格說明、狀态-遷移圖和控制規格說明
    2. 其他
      1. 架構師主要關注系統的行為

總體結構設計

  1. 系統結構設計原則
    1. 分解-協調原則
    2. 自頂向下原則
    3. 資訊隐蔽、抽象原則
    4. 一緻性原則
    5. 明确性原則
    6. 子產品間耦合盡量小,内聚盡量高
    7. 扇入和扇出系數要合理,不過高也不過低
  2. 子產品結構設計
    1. 子產品4個要求
      1. 輸入和輸出
      2. 處理功能
      3. 内部功能
      4. 程式代碼
    2. 子產品結構圖
      • 記住相關圖形樣式,P322
  3. 系統文檔:略

結構化分析方法

  1. 基本手段:抽象和分解
  2. 資料流圖
    • 必考大題,記住相關圖形,詳細解析見:第12章下午題總結
  3. 資料字典
    • 4類條目,對應4張定義表
      1. 資料流
      2. 資料項
      3. 資料存儲
      4. 基本加工
    • 不包括外部實體
  4. 結構化設計方法
    • 結構化分析不包括資料字典
面向對象技術

統一模組化語言UML

**必考大題,**詳細解析見:第12章下午題總結

  1. UML詞彙表的3個構造塊
    • 事物
    • 關系
  2. 事物:記住相關圖形
    • 分類
      1. 結構事物
      2. 行為事物
      3. 分組事物
      4. 注釋事物
  3. 關系:記住六個相關圖形
    1. 依賴:箭頭處為被使用者(小),圖形:虛線+線箭頭
    2. 關聯:箭頭處為被擁有者(小),圖形:實線+線箭頭

      關聯是一組鍊兩個類之間可以有多個不同角色辨別的關聯

      • 聚合:菱形處為整體(大),圖形:實線+空心菱
      • 組合:菱形處為整體(大),圖形:實線+實心菱
    3. 泛化:箭頭處為父類(小),圖形:實線+三角箭頭
    4. 實作:箭頭處為接口(小),圖形:虛線+三角箭頭
  4. 圖:重中之重,記住相關内容和圖樣,必考下午題
    • 重要:類圖、對象圖、用例圖、狀态圖、活動圖、構件圖、部署圖
    • 一般:互動圖,包括:序列圖(順序圖)、通信圖、互動概覽圖、計時圖
    • 略:組合結構圖、包圖
      • 其他知識:
        1. 類圖不适用對對象快照模組化
        2. 對象狀态表示了對象屬性及其目前值
        3. 用例圖中,參與者可以是:人、硬體或其他系統可以扮演的角色
        4. 狀态圖中一個轉換有兩個狀态

設計模式

《軟體工程》内容中最重要的知識點

  • 建立型
    1. 抽象工廠
    2. 建造者(生成器)
    3. 工廠方法
    4. 原型
    5. 單例
  • 結構型
    1. 擴充卡
    2. 橋接
    3. 組合
    4. 裝飾
    5. 外觀
      • 題目中看到外觀、圖形界面字樣一般就是外觀模式
    6. 享元
    7. 代理
  • 行為型
    1. 責任鍊
    2. 指令
    3. 解釋器
    4. 疊代器
    5. 中介者
    6. 備忘錄
    7. 觀察者
      • 特征:類應該對擴充開放,對修改關閉
    8. 狀态
      • 主要接口:圖中出度為0的
    9. 政策
    10. 模闆方法
  1. 通路者
  • 加粗部分為重點
  • 具體内容見我的另一篇部落格:https://blog.csdn.net/qq_43175022/article/details/110312504

關系代數和資料庫

關系代數

相關概念

  1. 笛卡爾積
    • 得到一個n元組,元組元素為各個域元素的排列組合
  2. 關系模式
    • R(U)或R(A1,A2,A3,···AN)。U為屬性名集合,Ai為屬性名或域名
  3. 關系完整性
    • 實體完整性:主屬性不為空
    • 參照完整性:外碼必須對應或為空
    • 使用者定義完整性:使用者定義的限制
  4. 關系模式下找主鍵
    • 畫出關系圖,入度為0的點為主鍵;
    • 找主鍵是注意關系集
  5. 關系代數表達式中,查詢效率最高是:
    • 笛卡爾積盡量最後使用

關系代數運算

  1. 并∪:結構相同才能并
  2. 交∩:兩者相同的元組,條件同1
  3. 差:排除減數的元組(行),條件同1
  4. 廣義笛卡爾積:屬性(列)合并,新元組為老元組整體的排列組合
  5. 投影:屬性(列)的條件篩選(條件為比較運算,在投影清單中)
  6. 選擇:元組(行)額條件篩選
  7. 連接配接:笛卡爾積+選擇
    • θ連接配接:θ為比較運算符,篩選出

      XθY

      的笛卡爾積
    • 等值連接配接:θ為’='的θ連接配接
    • 自然連接配接:篩選具有相同屬性(列)且元素相同的笛卡爾積并去掉重複列
      • 加粗部分即:要求為相同屬性(列),且屬性元素兩表也要有相同元組(行)
  8. 除:篩選具有相同屬性(列)且元素相同的排除該相同屬性(列)的元組集,并去重。
    • 加粗部分與自然連接配接意思相同
    • 條件:S是R的子集,R是被除數表,S是除數表
    • 例題可見教材P483
  9. 廣義投影:允許投影清單使用算術運算,而不隻限于比較運算
  10. 内外連接配接
    • 内連接配接:即第7點中的等值連接配接
    • 外連接配接
      1. 左外連接配接
        • 根據左表中與右表相同屬性(列)進行查找後連接配接,去掉重複列,并根據右表數量得到新元組數量,左表存在右表沒有的,該元組中的右表屬性用null填充
      2. 右外連接配接
        • 把左外連接配接的邏輯換成從右邊出發的即可
      3. 全外連接配接
        • 左連接配接和右連接配接的結果合并

SQL語句

  • 見資料書
資料庫
  1. 資料庫邏輯設計:關系規範化
  2. 資料庫管理系統:DBMS
    • 功能
      1. 資料定義
      2. 資料庫操作
      3. 資料庫運作管理
      4. 資料的組織、存儲和管理
      5. 資料庫的建立和維護
      6. 其他功能
    • 分類
      1. 關系型資料庫系統 RDBS
      2. 面向對象型資料庫系統 OODBS
      3. 對象關系型資料庫系統 ORDBS
  3. 三級模式結構:“三級模式”和“兩級映像“
    《軟體設計師》複習總結《軟體設計師》複習總結
    • 聚簇索引順序就是資料的實體存儲順序
  4. 資料模型
    • 分類
      1. 概念資料模型
      2. 基本資料模型
    • 三要素
      1. 資料結構
      2. 資料操作
      3. 資料限制條件
  5. E-R模型:實體-聯系模型,用于描述概念模型
    • E-R圖相關圖例和實體、關系、屬性和方法等概念
    • 必考大題
  6. 基本資料模型(資料庫常用)
    1. 層次模型
    2. 網狀模型
    3. 關系模型(最常用之一)
    4. 面向對象模型(應用:CAD、圖形資料、人工智能)
  7. 關系型資料庫的規範化
    1. 函數依賴:略
    2. 規範化
      1. 1NF:屬性不可拆分,即字段不可分,每個字段是原子級别的。
      2. 2NF:完全傳遞依賴,即元組中有主鍵,非主鍵字段依賴于主鍵
      3. 3NF:消除傳遞依賴,即非主鍵字段之間不能互相依賴,要互相獨立
    3. 模式分解及其特性
      1. 分解概念
      2. 分解後與原本是否等價的3種情況
  8. 資料庫控制功能
    1. 事務控制
      1. 事務開始
      2. 事務送出
      3. 事務異常
      4. 事務復原
      5. 事務結束
    2. 事務控制4個特性
      1. 原子性:事務要麼不做要麼都做
      2. 一緻性:保證事務從一個一緻性狀态到另一個一緻性狀态(一緻性狀态:當事務成功送出是,稱事務處于一緻性狀态)
      3. 隔離性:事務互相隔離
      4. 持久性:即使資料庫崩潰,對表操作也永久有效
    3. 備份和恢複
      • 故障類型
        1. 内部故障
        2. 系統故障
        3. 媒體故障
        4. 計算機病毒
      • 備份方法
        1. 靜态轉儲和動态轉儲
        2. 海量轉儲和增量轉儲
        3. 日志檔案
      • 恢複步驟
        1. 反向掃描日志,查找事務操作
        2. 對事務的操作進行逆操作
        3. 循環上述兩步,直到事務的開始标志
    4. 并發控制
      1. 并發導緻不一緻性出現的問題
        1. 丢失修改
        2. 不可重複讀
        3. 讀髒資料
      2. 設定事務隔離級别
        • 由低到高依次是
        1. Read uncommitted(未授權讀取、讀未送出)
        2. Read committed(授權讀取、讀送出)
        3. Repeatable read(可重複讀取)
        4. Serializable(序列化)
      3. 并發控制技術
        • 封鎖
          1. 排它鎖:隻允許一個事務對資料對象加鎖,持鎖讀寫
          2. 共享鎖:允許多個事務對資料對象加鎖,加鎖後可讀不可寫
        • 三級封鎖協定:略
        • 封鎖的粒度
          • 粒度:封鎖對象的大小
          • 分類:
            1. 行鎖
            2. 表鎖

計算機網絡

  1. 網絡拓撲結構
    • 總線型
    • 星型
    • 環型
    • 樹型
    • 分布式
  2. ISO/OSI七層模型和TCP/IP五層模型對比
    《軟體設計師》複習總結《軟體設計師》複習總結
  3. 各層對應裝置
    • 實體層:中斷器、集線器
    • 資料鍊路層:網橋、交換機
    • 網絡層:路由器
    • 應用層:網關
  4. 傳輸方式和媒體
    • 有線
      1. 雙絞線
      2. 同軸線纜
      3. 光纖
    • 無線
      1. 微波
      2. 紅外線
      3. 衛星
  5. 各層對應協定
    1. 資料鍊路層
      • 點對點信道
        • PPP點對點協定
      • 廣播信道
        • CSMA/CD載波監聽多點接入/碰撞檢測協定
    2. 網絡層
      • IP網際協定
      • 配套三個協定
        1. ARP位址解析協定
        2. ICMP網際控制封包協定
        3. IGMP網際組管理協定
    3. 傳輸層
      • TCP傳輸控制協定
      • UDP使用者封包協定
    4. 應用層
      • FTP
        • 資料口:20
        • 控制口:21
        • 上傳口:1024~65536
      • www網際網路
      • HTTP協定,端口80
      • HTTPS協定,端口:443
      • SNMP:簡單網絡管理協定,使用UDP傳輸,162口
      • STMP:EMail傳輸,使用TCP傳輸,25口
        • 配合POP3服務端口,110口
    5. 不考但需要學習的内容
      1. 構成超網計算題
      2. 路由選擇算法
      3. 位址解析
    6. 資訊安全五要素
      1. 機密性
      2. 完整性
      3. 可控性
      4. 可用性
      5. 可審查性
    7. 資訊存儲安全
      1. 資訊使用安全
      2. 系統安全監控
      3. 計算機病毒防治
      4. 資料加密
      5. 防治非法攻擊
    8. 網絡安全威脅
      1. 非授權通路
      2. 資訊洩露或丢失
      3. 破壞資料完整性
      4. 拒絕服務攻擊
      5. 利用網絡傳播病毒
        • 系統幹涉為被動攻擊
    9. 安全控制技術
      1. 防火牆技術
      2. 加密技術
      3. 使用者識别技術
      4. 通路控制技術
      5. 網絡反病毒技術
      6. 網絡安全漏洞掃描技術
      7. 入侵檢測技術
    10. 防火牆三個發展階段
      1. 包過濾防火牆
      2. 應用代理網關防火牆
      3. 狀态檢測技術防火牆
    11. 其他
      • 安全電子郵件服務:S/MIME
      • 有效傳輸速率:資料位占比/總傳輸速率
        • 總傳輸速率:字元位數*網速
      • 漏洞掃描不為檢測技術
      • URL:主機名+協定名+檔案名
      • 本地主機首先在本地hosts檔案中查詢目标網址的IP位址
      • 路由器管理:SSH方式,SSH為一個檢測協定
      • 伺服器收到請求首先查緩存

标準化和知識産權

主要見題目

  1. 軟體技術資訊和經營資訊由商業秘密權保護
  2. 商标權可無限續期
  3. 煙草制品必須使用注冊商标

軟體系統分析與設計(下午題)

  1. 資料流圖
    • 一分一個預設資料流
    • 加工向資料庫或其他發送的資料流一定是一個動作
    • 每個加工必有輸入和輸出
    • 有上交文檔的,著作權都屬于公司
  2. 關系模式和E-R圖
    • 一空可能不止一個屬性
    • 從其他關系中引用的屬性全部是外鍵
    • E-R圖中聯系:聯系的實體不單隻有兩個,考慮3個甚至4個
    • 有時候說明不一定有全部全部的屬性資訊,還要根據前後自己補充
    • 弱實體隻與對應實體有聯系
  3. UML圖和設計模式
    • 狀态圖填寫時注意根據已有狀态來組織詞語填寫
    • 特别注意掌握類圖/對象圖和觀察者模式
  4. 算法(C語言實作)
  5. 面向對象程式設計(C++/Java二選一)
  • 其他見部落格:https://blog.csdn.net/qq_36205380/article/details/84066328#_1

其他題目

  1. 圖像資料量要除以8
  2. 倉庫風格,編譯器不屬于
  3. 采樣頻率=定義頻率*2
  4. 索引
    • 直接索引:塊号大小
    • 一級索引:磁盤塊/塊号大小
    • 二級索引:一級的平方