軟件系統設計基本原則

一、抽象

抽象是一種設計技術,說明一個實體的本質,而忽略不重要的方面。抽象將複雜的現象簡化到可以分析、理解的程度。軟件工程中從軟件定義到軟件開發要經歷多個階段,每前進一個階段都可以看作是對軟件解法的抽象層次的一次細化。抽象的最底層就是實現該軟件的源程序代碼。在進行模塊化設計時也可以有多個抽象層次,最高抽象層次的模塊用概括的方式敘述問題的解法,較低抽象層次的模塊是對較高抽象層次模塊對問題解法描述的細化。

 

二、模塊化

模塊在程序總是數據說明、可執行語句等程序對象的集合,或是單獨命名和編址的元素。模塊化是指將一個待開發的軟件分解成若干個小的簡單部分--模塊,每個模塊可獨立開發、測試,最後組裝成完整的程序。只是一種分而治之的原則。模塊化的目的是使程序的結構清晰,容易閱讀、理解、測試和修改。

 

三、封裝

封裝是開發程序結構時使用的法則,每個程序的成分封裝在一個單一的模塊中,在定義每個模塊時儘可能少的顯露內部的處理。

封裝對提高軟件的可修改性、可測試性和可移植性有重要的作用。

 

四、模塊獨立

模塊獨立是指每個模塊完成一個相對獨立的特定子系統,並且與其他模塊之間的聯繫簡單。模塊獨立有兩個標準:耦合性和內聚性。

1、耦合是模塊之間的相對獨立性(相互之間的緊密程度)的度量。耦合取決於各個模塊之間接口的複雜程度、調用模塊的方式以及通過接口信息類型等。

耦合按從弱到強的順序分爲以下幾種:

非直接耦合:兩個模塊之間沒有直接關係,它們分別屬於不同模塊的控制與調用,它們之間不傳遞任何信息。因此,耦合性最弱,模塊獨立性最高。

數據耦合:兩個模塊之間有調用關係,傳遞的最簡單的數據值,在程序中相當於值傳遞。

標記耦合:兩個模塊之間傳遞的是數據結構。

控制耦合:一個模塊調用另一個模塊時,傳遞的是控制變量,被調用模塊通過該控制變量的值有選擇的執行模塊內的某一功能。因此,被調用模塊應具有多個功能,哪個功能起作用受調用模塊控制。

外部耦合:模塊間通過軟件之外的環境聯結。

公共耦合:通過一個公共數據環境相互作用那些模塊間的耦合。

內容耦合:當一個模塊直接使用另一個模塊的內部數據,或通過非正常入口轉入另一個模塊內部。


2、內聚是一個模塊內部各個元素彼此結合的緊密程度的度量。

內聚從低到高分爲以下幾種:

偶然內聚(巧合內聚):一個模塊內的各個元素直接沒有任何聯繫。

邏輯內聚:模塊內執行若干個邏輯相似的功能,通過參數確定該模塊完成哪一個功能。

時間內聚:把需要同時執行的動作組合在一起形成的模塊稱爲時間內聚模塊。

過程內聚:一個模塊完成多個任務,必須按照指定的過程執行。

通信內聚:模塊內的所有處理元素都在同一個數據結構上操作,或者各處使用相同的輸入數據或產生相同的輸出數據。

順序內聚:一個模塊中的各個處理元素都密切相關同一個功能且順序執行,前一個功能元素的輸出是下一個元素功能的輸入。

功能內聚:模塊內所有元素完成同一個功能,缺一不可,是最強的內聚。

將軟件劃分系統模塊是,應儘量做到高內聚、低耦合,提高模塊獨立性。


五、系統深度

表示軟件結構中控制的層 數,它往往能粗略地標誌一個系統的大小和複雜程度。如果層數過多則應該考慮是否有許多管理模塊過分簡單, 能否適當合併。


六、系統寬度

是軟件結構內同一個層次上的模塊總數的最大值。寬度越大系統越複雜。對寬度影響最大的因素是模塊的扇出 。


七、模塊扇出

模塊的扇出是指一個模塊直接控制(調用 )的下層模塊數目 。扇出過大意味着模塊過分複雜,需要控制和協調過多的下級模塊;扇出過小也不好。設計得好的系統平均扇出是3或4。


八、模塊扇入

是指有多少個上級模塊調用它,扇入越大則共享該模塊的上級模塊數目越多 。


在模塊分解時需要注意:
保持模塊的大小適中
儘可能減少調用的深度
直接調用該模塊的次數應該盡最多,但調用其他模塊的次數則不宜過多(扇入大,扇出小)。好的軟件設計結構頂層高扇出,中間扇出較少,底層高扇入。
保證模塊是單入口、 單出口的,模塊的作用域應該在模塊之內
功能應該是可預測的


發佈了62 篇原創文章 · 獲贊 129 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章