4.1 概要設計
(1)概要設計的任務,
(2)概要設計的步驟,(3)設計原則,(3.1)模塊劃分,(3.2)信息隱藏和局部化。
概要設計的任務
- 概括地說明系統應該如何實現。
- 設計軟體的結構(模塊組成)。
概要設計的步驟
1.設想供選擇的方案
2.選取合理的方案
依據:
(1) 系統流程圖。(2) 組成系統的資源清單。(3) 成本/效益分析。(4) 該系統的進度計劃。
3.推薦最佳方案,並審查:
- 是否確實符合用戶的需要?
- 現有條件下能否實現?
4.功能分解
思考:一個地圖APP需要分解為哪些功能模塊?
5.設計軟體結構
通常,程序的一個模塊只完成一個功能。
應該把模塊組織成良好的層次系統,頂層模塊調用其下層模塊以實現程序的完整功能,
每個下層模塊再調用更下層的模塊,最下層的模塊完成最具體的功能。
6.設計資料庫
7.制定測試計劃
8.書寫文檔
(1). 系統說明
(2). 用戶手冊
(3). 測試計劃
(4). 詳細的實現計劃
(5). 資料庫設計結果
9.審查和複審
設計原理——模塊劃分
模塊化的好處:
- 結構清晰
- 容易設計、理解
- 有利於管理——
大型程序可以由許多程序員分工編寫不同的模塊,
困難的模塊交給熟練的程序員。
模塊化的理論依據:
設問題x的複雜程度是函數C(x)
解決x需要的工作量(時間)用函數E(x)表示
對於兩個問題P1和P2,
- 如果C(P1)>C(P2),
- 則E(P1)>E(P2)
根據人類解決一般問題的經驗,有如下規律:
- C(P1+P2)>C(P1)+C(P2)
也就是說:如果一個問題由P1和P2兩個問題組合而成,那麼它的複雜程度大於分別考慮每個問題時的複雜程度之和。
綜上所述,得到下面的不等式
- E(P1+P2)>E(P1)+E(P2)
即:把複雜的問題分解成多個容易解決的小問題,原來的問題也就容易解決了。
推論:如果無限地分解軟體,最後各個模塊工作量也就小得可以忽略
然而,隨著模塊數目增加,設計模塊間介面所需要的工作量也將增加。下圖是「總成本曲線」:
即:只有在最小成本區的模塊數才是合適的劃分,模塊多了少了都不合適。
設計原理——信息隱藏和局部化
信息隱藏:模塊內包含的信息(函數/變數)對於不需要這些信息的模塊來說,不能訪問。
如果在測試期間和維護期間需要修改軟體,使用信息隱藏原理作為模塊化系統設計的標準就會帶來極大好處。
面向對象語言中,提供的private、protected關鍵字,就是用於信息隱藏。
局部化:把一些關係密切的元素放得彼此靠近。比如:
相關函數放在一個模塊中
變數統一定義
推薦閱讀:
※《軟體方法》上冊第2版推薦序
※The world at your fingertips - 天涯明月刀幕後8(重啟)
※【推薦】真正綠色的四窗口的文件管理器文件管理的福音
※5W 相關
※4.2 內聚和耦合