1.軟件工程的7條本質特征:
- 軟件工程關注於大型程序的構造
- 軟件工程的中心課題是控制復雜性
- 軟件經常變化
- 開發軟件的效率非常重要
- 和諧的合作是開發軟件的關鍵
- 軟件必須有效的支持他的用戶
- 在軟件工程領域中通常由具有一種文化背景的人替具有另一種文化背景的人創造產品
2.軟件工程生命周期:
問題定義、可行性研究、需求分析、總體設計、詳細設計、編碼和單元測試、綜合測試、維護
3.瀑布模型:
- 傳統的瀑布模型和實際的瀑布模型(15頁&16頁圖)
- 傳統瀑布模型特點:
- 階段間具有順序性和依賴性
- 推遲實現的觀點
- 質量保證的觀點
- 每個階段都必須完成規定的文檔
- 每個階段結束前都要對所完成的文檔進行評審
- 實際的瀑布模型增加了“反饋環”,因為在設計階段可能發現規格說明文當中的錯誤,而設計上的缺陷或錯誤可能在實現的過程中顯現出來,在綜合測試階段將發現需求分析、設計或編碼階段的很多錯誤。
- 優點:
- 可強迫開發人員采用規范的方法
- 嚴格規定了每個階段必須提交文檔
- 要求每個階段交出的所有產品必須經過質量保證小組的仔細驗證。
- 缺點:
- 用戶只能通過文檔了解產品,但僅通過紙上的靜態規格說明很難全面的動態認識軟件產品。
4.總體設計的原理:
- 原理包括:模塊化、抽象、模塊獨立
- 模塊化:
- 把程序划分成獨立命名且可獨立訪問的模塊,每個模塊完成一個子功能,把這些模塊集成起來構成一個整體,可以完成指定的功能滿足用戶需求。
- 總成本曲線:把復雜問題分解能減小成本,但模塊過多導致接口設計成本增加;故每個程序都相應的有一個最適當的模塊數目使得開發成本最小,依據總成本開發曲線估計。
- 抽象:
- 抽象:一定事物、狀態或過程之間總存在某些相似的方面(共性),把這些共性集中和概括起來,暫時忽略他們之間的差異,這就是抽象。
- 求精:為了能集中精力解決主要問題而盡量推遲對細節的考慮。是一種自頂向下策略。
5.內聚和耦合:
- 耦合:
- 耦合是對一個軟件內不同模塊之間互連程度的度量。
- 耦合強弱取決於模塊間接口的復雜程度,進入或訪問一個模塊的點,以及通過接口的數據。
- 在軟件設計中應該追求盡可能松散耦合的系統。
- 分類:
- 數據耦合:兩個模塊彼此只交換數據(低耦合,必須存在,一個系統可以只有數據耦合
- 控制耦合:模塊間交換的信息中有控制信息(中等程度的耦合,往往多余,可以分解后用數據耦合代替
- 特征耦合:把整個數據結構作為參數傳遞而被調用的模塊只需要其中一部分元素
- 公共環境耦合:兩個或多個模塊通過一個公共數據環境相互作用。(如果只有兩個模塊有公共環境:①一個模塊往公共環境送數據,另一個取,為數據耦合;②兩個都既傳又取,介於數據耦合和控制耦合之間
- 內容耦合:
- 一個模塊訪問了另一個模塊的內部數據
- 一個模塊不通過正常入口而轉到另一個模塊內部
- 兩個模塊有一部分程序代碼重疊(只可能出現在匯編程序中
- 一個模塊有多個入口
- 出現以上之一則為內容耦合
- 內容耦合程度最高,應該堅決避免
- 內聚:
- 內聚標志着一個模塊內各個元素彼此結合的緊密程度,它是信息隱藏和局部化概念的自然擴展。
- 設計是力求高內聚。
- 分類:
- 低內聚
- 偶然內聚:任務之間即使有關系也很松散(出現修改錯誤的概率高
- 邏輯內聚:一個模塊完成的任務在邏輯上屬於相同或相似的一類
- 時間內聚:一個模塊包含的任務必須在同一段時間內執行
- 中內聚:
- 過程內聚:一個模塊內的處理元素是相關的,而且必須以特定次序執行(程序流程圖得到的往往是過程內聚的
- 通信內聚:模塊中所有元素都使用同一個輸入數據和(或)產生同一個輸出數據
- 高內聚:
- 順序內聚:一個模塊內的處理元素同一個功能密切相關,且這些處理必須順序執行(數據流圖得到的是順序內聚
- 功能內聚:模塊內所有處理元素屬於一個整體,完成一個單一的功能(程度最高
- 低內聚
后續補充大概率出題的大題
