總體設計的任務
根據使用者需求分析階段得到的目標系統的邏輯模型確定一個合理的軟體系統的體繫結構.包括劃分組成系統的模組,模組間的調用關係及模組間的介面關係,軟體系統所用的資料結構或者資料庫結構.
軟體結構和過程
軟體結構是軟體元素(模組)間的關係表示,而軟體元素間的關係是多種多樣的,如調用關係,內含項目關聯性,從屬關係和嵌套關係等,這些關係都可以表示為層次形式.階層是軟體結構廣泛應用的一種表示形式,因為它結構清晰,可理解性好,從而使可靠性,可維護性和可讀性都得到提高.以模組為軟體元素的階層是一種靜態階層,它是在對"問題"的逐步定義過程中得到的,當問題的每一部分都能夠由模組來實現時則軟體的階層也就得到了.因為問題定義過程實際上是一種分解過程,隱含地表示了模組間的關係.
軟體結構提供了軟體模組間的組成關係,而軟體過程是用以描述每個模組的操作細節,當然包括一個模組對下一層模組的操作細節.實際上,過程的描述就是關於某個模組演算法的詳細描述.
模組設計
模組設計有幾個主要的概念,:
下面我為大家介紹一下這幾個概念
模組化
在軟體開發過程中,大型軟體由於其控制路徑多,涉及範圍廣而且變數數目多,總體複雜.模組化是為了使一個複雜的大型程式能被人的智力所管理,理想模組的特點如下:
- 每個理想模組只解決一個問題.
- 每個理想模組的功能都應該明確,使人容易理解.
- 理想模組之間的串連關係簡單,具有獨立性.
- 由理想模組構成的系統,容易使人理解,易於編程,易於測試,易於修改和維護.
抽象
物件導向中對象即是一種抽象,結構化分析方法中也涉及到抽象.抽象是一種思維方法,而模組設計中的抽象方法是指在認識事物時,忽略事物的細節,通過事物本質的共同特性來認識事物.軟體工程的每一步都是對軟體解法的抽象層次的一次細化.在可行性分析階段,軟體被看做是一個完整的系統部分;在需求分析期間,用在問題環境中的熟悉的術語來描述軟體的解法;由總體設計階段轉入詳細設計階段,抽象的程度進一步減少;最後,當來源程式寫出來時,也就達到了抽象的最底層.
資訊隱蔽
資訊隱蔽是指在設計和確定模組時,使得一個模組內包含的資訊(過程和資料),對於不需要這些資訊的其他模組來說是不能訪問的或者說是不可見的.資訊隱蔽對於軟體的測試與維護有很大的好處.這樣,在修改期間,由於疏忽而引入的錯誤所造成的影響就可以局限在一個活幾個模組內部,不至影響到軟體的其他部分.
模組獨立性
模組獨立性是指軟體系統中每個模組只涉及軟體要求的具體子功能,而和軟體系統中的其他的模組介面是簡單的.模組的獨立程度可由兩個定性標準度量,即耦合和內聚.耦合衡量不同模組彼此間互相依賴(串連)的緊密程度;內聚衡量一個模組內部各個元素彼此結合的緊密程度.
模組的耦合
耦合是對一個軟體結構各個模組之間互連程度的度量.耦合強弱取決於模組間介面的複雜程度,調用模組的方式以及通過介面的資訊.在軟體設計中應該儘可能採用鬆散耦合的系統.在這樣的系統中可以研究,測試或維護任何一個模組,而不需要對系統的其他模組有很多瞭解和影響.區分模組間耦合程度強弱的標準有:
我們應該採取的原則是:盡量使用資料耦合,少用控制耦合,限制公用環境耦合的範圍,完全不用內容耦合.
模組的內聚
模組的內聚是標識一個模組內各個元素彼此結合的緊湊程度,其處理動作的組合強度,設計時應力求做到高內聚.內聚和耦合是密切相關的,模組的高內聚往往意味著模組間的松耦合.內聚和耦合都是進行模組化設計的有力工具.區分模組內聚程度強弱的標準有:
總而言之,模組化,抽象,資訊隱蔽和局部化概念的直接結果就是模組獨立,高內聚低耦合才能獲得較高的模組獨立性.
結構設計
軟體結構也可以有多種形式和風格,如:
- 管道和過濾器
- 物件導向
- 隱式請求
- 層次化
- 過程式控制制
在進行軟體設計時,選擇什麼樣的設計風格的一個重要因素是分析該軟體應用的範圍,每種設計風格各有所長,我們應根據具體應用進行選擇.
總體設計的準則
- 多樣化設計
- 設計對於分析模型應該是可跟蹤的
- 設計不應該從頭做起
- 軟體設計應該儘可能縮短軟體和現實世界的距離
- 設計應該表現出一致性和規範性
- 設計的易修改性
- 容錯性設計
- 設計的粒度要適當
- 在設計時就要開始評估軟體的品質
- 複審設計,減少設計引入的錯誤