1典型的總體設計過程包括那些步驟?
1.設想供選擇的方案
2.選取合理的方案
3.推薦最佳方案
4.功能分解
5.設計軟件結構
6.設計數據庫
7.制定測試計劃
8.書寫文檔
9.審查和複審
2軟件設計過程中應該遵循那些基本原理?
軟件工程是研究和應用如何以系統性的、規範化的、可定量的過程化方法去開發和維護軟件,以及如何把經過時間考驗而證明正確的管理技術和當前能夠得到的最好的技術方法結合起來。
軟件工程學的內容
軟件工程學的主要內容是軟件開發技術和軟件工程管理.
軟件開發技術包含軟件工程方法學、軟件工具和軟件開發環境;軟件工程管理學包含軟件工程經濟學和軟件管理學。
(1)用分階段的生存週期計劃進行嚴格的管理。
(2)堅持進行階段評審。
(3)實行嚴格的產品控制。
(4)採用現代程序設計技術。
(5)軟件工程結果應能清楚地審查。
(6)開發小組的人員應該少而精。
(7)承認不斷改進軟件工程實踐的必要性。
3軟件設計時,如何獲得較高的模塊獨立性?
模塊獨立性
模塊化設計是指將軟件分解爲多個獨立模塊,不同的模塊具有不同的功能和職責。每個模塊可以獨立的進行開發、測試,最後組裝成完整的軟件。
模塊獨立性是指軟件系統中每個模塊只涉及軟件要求的子功能,而與軟件系統中其他模塊的接口是簡單的。例如如果一個模塊只具有單一功能且與其他模塊沒有太多的聯繫,那麼稱此模塊具有模塊獨立性。
具有高內聚低耦合的模塊,纔是模塊獨立性比較強的模塊
耦合
• 耦合性是程序結構中各個模塊之間相互關聯的度量
• 它取決於各個模塊之間接口的複雜程度、調用模塊的方式以及那些信息通過接口
非直接耦合(Nondirect Coupling)
• 兩個模塊之間沒有直接關係,它們之間的聯繫完全是通過主模塊的控制和調用來實現的。
• 非直接耦合的耦合性最低,模塊獨立性最強。
數據耦合 (Data Coupling)
• 一個模塊訪問另一個模塊時,彼此之間是通過簡單數據參數 (不是控制參數、公共數據結構或外部變量)來交換輸入、輸出信息的
標記耦合 (Stamp Coupling)
• 一組模塊通過參數表傳遞記錄信息,就是標記耦合
• 這個記錄是某一數據結構的子結構,而不是簡單變量
控制耦合 (Control Coupling)
• 如果一個模塊通過傳送開關、標誌、名字等控制參數,明顯地控制選擇另一模塊的功能,就是控制耦合
外部耦合(External Coupling)
• 一組模塊都訪問同一全局簡單變量而不是同一全局數據結構,而且不是通過參數表傳遞該全局變量的信息,
則稱之爲外部耦合
公共耦合(Common Coupling)
• 若一組模塊都訪問同一個公共數據環境,則它們之間的耦合就稱爲公共耦合
內容耦合 (Content Coupling)
• 如果發生下列情形,模塊之間就是內容耦合:
– 一個模塊直接訪問另一個模塊的內部數據
– 一個模塊不通過正常入口轉到另一模塊內部
– 兩個模塊有一部分程序代碼重迭(只可能出現在彙編語言中)
– 一個模塊有多個入口
內聚
• 模塊內聚性越強,功能獨立性越好,對於形成的模塊結構有比較好的作用。
• 要求模塊結構達到高內聚,低耦合。
高 內聚性 低
功能內聚
信息內聚
通信內聚
過程內聚
時間內聚
邏輯內聚
巧合內聚
高 功能獨立性 低
功能內聚 (Functional Cohesion)
• 一個模塊中各個部分都是完成某一具體功能必不可少的組成部分,或者說該模塊中所有部分都是爲了完成
一項具體功能而協同工作,緊密聯繫,不可分割的,則稱該模塊爲功能內聚模塊
• 功能內聚模塊的內聚最高,功能獨立性最強
信息內聚 (Informational Cohesion)
• 完成多個功能,各個功能都在同一數據結構上操作,每一項功能有一個唯一的入口點
通信內聚(Communication Cohesion)
• 如果一個模塊內各功能部分都使用了相同的輸入數據,或產生了相同的輸出數據,則稱之爲通信內聚模塊
• 通常,通信內聚模塊是通過數據流圖來定義的
過程內聚(Procedural Cohesion)
• 使用流程圖做爲工具設計程序時,如果流程圖太大,可以把流程圖中的某一部分劃出組成模塊,就得到過
程內聚模塊
– 例如,把流程圖中的循環部分、判定部分、計算部分分成三個模塊,這三個模塊都是過程內聚模塊。
時間內聚(Classical Cohesion)
• 時間內聚又稱爲經典內聚
• 大多爲多功能模塊,但模塊的各個功能的執行與時間有關,通常要求所有功能必須在同一時間段內執行
– 例如,初始化模塊和終止模塊就是時間內聚模塊。
邏輯內聚(Logical Cohesion)
• 這種模塊把幾種相關的功能組合在一起,每次被調用時,由傳送給模塊的判定參數來確定該模塊應執行哪
一種功能。
巧合內聚(Coincidental Cohesion)
• 當幾個模塊內正好有一段代碼是相同的,將它們抽取出來形成單獨的模塊,即巧合內聚模塊。這種模塊沒
有獨立功能,各部分之間沒有聯繫,或聯繫很鬆散。
這一題答案來自https://blog.csdn.net/qq_34803572/article/details/78881824