模組化方法

模組化方法

模組化方法是一種軟體開發方法,是把一個待開發的軟體分解成若干小的簡單的部分,採用對複雜事物分而治之的經典原則。模組化方法涉及的主要問題是:模組設計的規則,系統如何分解成模組。每一模組都可獨立開發、測試,最後再組裝成整個軟體。對一個規約進行分解,以得到模組系統結構的方法有數據結構設計法、功能分解法、數據流設計、面向對象的設計等。

基本介紹

  • 中文名:模組化方法
  • 外文名:Modularization Method
  • 學科軟體工程
  • 定義:一種軟體開發方法
  • 原則:分而治之
  • 有關術語:模組
簡介,原則,模組與設計規則,特點,

簡介

模組化概念首先提出於產品設計領域,是在傳統順序化設計製造模式基礎上發展起來的一種新的設計思想。人們將“產品”定義為具有某種功能,能夠滿足人們某種需求的東西。而所謂模組,就是將產品中的一些組成要素集合起來,劃分成一個具有特定功能的“半自律性子系統”,這個子系統內部的結構要素之間聯繫緊密,而子系統與其他子系統之間關係相對獨立。劃分這個子系統,並且將多個子系統相互組合形成上級系統直至形成最終產品的過程被稱為模組化。每個模組都具有一個特定的子功能,所有這樣的模組按照某種規則組裝起來形成一個整體系統。在整個系統中,模組是可組合、可分解、可更換的獨立單元。模組化方法就是將一個複雜問題分解成多個獨立的、相互關聯的模組,再通過分別獨立地實現各模組的功能,最終將所有模組組合起來以處理大型、複雜問題的一種途徑。
模組化方法是一種軟體開發方法,把一個待開發的軟體分解成若干小的簡單的部分,稱為模組。每一個模組都獨立地開發、測試,最後再組裝出整個軟體。這種開發方法是對待覆雜事物的“分而治之”的一般原則在軟體開發領域的具體體現。模組化開發方法涉及的主要問題是:模組設計的規則,系統如何分解成模組。模組化方法在產品設計中的目的在於:
力求用儘量少的模組實現儘量多的產品,在滿足產品需求的情況下,提高模組在不同組合中的重用性,以減少重複投入,並且好的重用性帶來單一模組批量生產的邊際效益,進一步降低成本。
用儘可能小的代價實現產品性能和功能的更新,合理地設計模組外部特性,提高等位模組之間的互換性。這樣不僅可以將變更影響控制在一個最小範圍內,而且在產品進入維護保養階段的生命周期後,也可以實現故障模組的快速替代。

原則

單一職責原則。即一個模組不要存在多於一個導致模組變更的因素。也就是說,一個模組只負責一項功能,或者即使一個模組具有多個功能,但必不存在對其中一個功能的改變會影響想到其他功能的情況。
里氏替換原則。在面向對象型編程中,這一原則是表達:子類可以擴展父類的功能,但不能改變父類原有的功能。而對於一般產品的模組化設計而言,這一原則訴說的是模組與模組系列之間的關係,是解決模組通用性和互換性的指導。由於模組化設計是自頂向下的,在進行模組內部細節設計之前,人們已經定義好了上級系統的功能組合,規劃好了上級系統的組成與結構。在系統中一個必要模組可以被與之相似的功能可以替用的其他模組所替換,而不必影響到系統結構,也不會要求系統中別的關聯模組做出更改。那么這個模組和可替換它的其他模組被稱為一個模組系列。一個系列下的所有模組必然有一個或多個共同遵守的規則,雖然各模組都具有各自與眾不同的特殊功能,但一定是都完全滿足這個模組系列在系統中的基本功能。比如說一個計算機系統需要一台彩色顯示器,我們可以提供一台帶有音箱的顯示器,但不能提供一台單色顯示器
依賴倒置原則。高層模組不應該受制於低層模組。一個簡單的系統可以是多個模組的簡單一維組合。但隨著系統複雜程度的上升,模組的層級結構不可避免。如果模組A的功能實現依賴於模組B的功能,那么B就是A的低層模組。
接口隔離原則。一個模組對另一個模組的依賴應建立在最小接口之上。根據上一條依賴倒置原則,我們創造出模組I來起到模組A與模組B或者C的接口作用。隨著低層模組的不斷增多,模組I為了適配每一個不同的低層模組,其所攜帶的不同接口的兼容性設計也就越來越多。雖然I的兼容性越好,意味著需要引入的新模組數量就減少,仿佛實現了“極可能少的模組實現儘可能多的產品”這一目標,但在現實中,接口臃腫的模組I在參與到系統組合中的時候,無論有用與否,所有的接口都在耗費著系統的資源,無論成本上還是效率上考慮,都不是合理的安排。這種情況下,應當將臃腫的模組I拆分設計成一系列相對獨立的接口模組J,K…。這個系列中的每一個模組都只適用於所需要它們的場合。在現實中,如何定義模組的接口,每個模組應具備兼容接口的數量,是需要根據組合的複雜程度、變更靈活性上面進行辯證地思考。
迪米特法則。在面向對象型編程中,這一原則是這樣定義的:一個對象應該對其他對象保持最少的了解。在一般性設計中,這是指要儘量降低構成要素之間的耦合。要素只與同模組內的其他要素相關聯,沒有跨模組聯繫。任何需要從一個模組傳遞到另一個模組去的影響都將通過模組與模組之間的標準接口實現。
開閉原則。是指當需求發生改變,需要對功能模組進行修改,在原有系統中其他模組還在發揮作用的情況下,不要對原有模組進行修改,因為這些修改何有可能帶來難以預測的衍生問題,而應該為現有模組系列增添新的符合新需求的模組與原有模組進行互換,或者在系統中增加新的模組滿足新的功能。

模組與設計規則

模組是執行一個特殊任務或實現一個特殊的抽象數據類型的一組例程和數據結構。模組通常由兩部分組成。接口:列出可由其它模組或例程訪問的常數、數據類型、變數、函式等;實現:私有量(只能由本模組自己使用的)及實際實現本模組的源程式代碼。模組的接口部分刻畫了各個模組是如何耦合的,是其它模組的設計者和使用者所需要知道的。而實現部分是各模組的內部事務,其它模組並不需要知道。這也體現了對待覆雜事物的另一原則,抽象原則,即把非本質的性質隱藏起來,只突出那些本質的性質,以減輕人們思考和注意的負擔。模組化澄清和規範化了軟體中各部分間的界面。如此就便利了成組的軟體設計人員工作,也促使了更可靠的軟體設計實踐。在把系統分解成模組時,應該遵循以下的規則:
①得到最高的模組內聚,也就是在一個模組內部的元素最大程度地關聯。只實現一種功能的模組是具有最高內聚的,具有三種以上功能的模組則是低內聚的。
②最低的耦合,也就是不同模組之間的關係儘可能弱。
③模組大小適度。
④ 模組調用鏈的深度不可過多。
⑤接口乾淨,信息隱蔽。
⑥儘可能地復用已有模組。
如何對一個規約進行分解,以得到模組化的系統結構。已經有一些基於設計規則的方法。
數據結構設計方法。最著名的是Jackson結構化設計。它從畫出所有輸入、輸出數據的邏輯結構圖開始, 最後得到程式結構圖,反映了系統結構。可能還需要繼續對其中模組求精,得到更低級的模組,但是基本程式結構是不變的。
功能分解。步驟是:陳述出功能意圖(即要解決的問題),進行功能求精(即劃分層次),連線求精了的功能,進行檢查,再求精,再檢查,直至得到滿意的解決為止。這種方法,也稱為結構化設計、層次化分解、模組分解、功能分解。
數據流設計。步驟是:把問題分解成由動作圖(也稱為進程)和數據圖(也稱為流)組成的數據流圖,還有存放待處理的靜態信息的存儲元素。然後從數據流圖中找出中心進程 ,以它為根,把數據流圖轉換為樹形結構。按照功能分解形式來分解進程,即把模組分為三類(輸入、變換、輸出),進行進程求精,得到PDL語言表示。最後把 PDL 變成某種程式語言。
面向對象的設計。這一方法要求標識出對象及其屬性、每個對象所需要的操作。把數據及函式封裝在一起,以形成類。並建立其間相互可見的關係,即許可的調用與被調用關係,形成每個類的界面。最後是實現每個類。

特點

易設計:較大的複雜問題分解為若干較小的簡單問題,使我們可以從抽象的模組功 能角度而非具體的實現角度去理解軟體系統,從而整個系統的結構非常清晰、容易理解,設計人員在設計之初可以更加關注系統的頂層邏輯而非底層細節。
易實現:模組化設計適合團隊開發,因為每個團隊成員不需要了解系統全貌,只需 關注所分配的小任務。另外團隊可以靈活地增加人手,新人只需直接接手某個模組, 不會影響系統其他模組的開發。
易測試:每個模組不但可以獨立開發,也可以獨立測試,最後組裝時再進行聯合測試。
易維護:如果需要修改系統或者擴展系統功能,只需針對特定模組進行修改或者添加新模組。
可重用:很多模組的代碼都可以不加修改地用於其他程式的開發。

相關詞條

熱門詞條

聯絡我們