在軟件設(shè)計中,很多人都不知道模塊設(shè)計是什么。模塊化設(shè)計是指將工業(yè)模具分解成小的部分過程。在模塊設(shè)計中,把分解成小部分稱為模塊,設(shè)計此類模塊的過程稱為模塊設(shè)計。在計算機程序中,可以復(fù)制,分離和重復(fù)使用的單元也稱為模塊。使用計算機程序來編譯這樣的模塊稱為模塊化設(shè)計。模塊設(shè)計非常便于內(nèi)容的組織和管理;適用于響應(yīng)式框架;融合卡片和極簡風(fēng)格;基于網(wǎng)格,能在任何項目平臺上使用。
在設(shè)計好軟件的體系結(jié)構(gòu)后,就已經(jīng)在宏觀上明確了各個模塊應(yīng)具有什么功能,應(yīng)放在體系結(jié)構(gòu)的哪個位置。我們習(xí)慣地從功能上劃分模塊,保持“功能獨立”是模塊化設(shè)計的基本原則。因為,“功能獨立”的模塊可以降低開發(fā)、測試、維護等階段的代價。但是“功能獨立”并不意味著模塊之間保持絕對的孤立。一個系統(tǒng)要完成某項任務(wù),需要各個模塊相互配合才能實現(xiàn),此時模塊之間就要進行信息交流。
評價模塊設(shè)計優(yōu)劣的三個特征因素:“信息隱藏”、“內(nèi)聚與耦合”和“封閉——開放性”。
● 信息隱藏
為了盡量避免某個模塊的行為去干擾同一系統(tǒng)中的其它模塊,在設(shè)計模塊時就要注意信息隱藏。應(yīng)該讓模塊僅僅公開必須要讓外界知道的內(nèi)容,而隱藏其它一切內(nèi)容。
模塊的信息隱藏可以通過接口設(shè)計來實現(xiàn)。接口是模塊的外部特征,應(yīng)當(dāng)公開;而數(shù)據(jù)結(jié)構(gòu)、算法、實現(xiàn)體等則是模塊的內(nèi)部特征,應(yīng)當(dāng)隱藏。一個模塊僅提供有限個接口,執(zhí)行模塊的功能或與模塊交流信息必須且只須通過調(diào)用公有接口來實現(xiàn)。如果模塊是一個C++對象,那么該模塊的公有接口就對應(yīng)于對象的公有函數(shù)。如果模塊是一個COM對象,那么該模塊的公有接口就是COM對象的接口。一個COM對象可以有多個接口,而每個接口實質(zhì)上是一些函數(shù)的集合。
● 高內(nèi)聚
內(nèi)聚是一個模塊內(nèi)部各成分之間相關(guān)聯(lián)程度的度量。內(nèi)聚程度從低到高大致劃分為低端、中段和高端。模塊設(shè)計者沒有必要確定內(nèi)聚的精確級別,重要的是盡量爭取高內(nèi)聚,避免低內(nèi)聚。
各種內(nèi)聚類型的含義如下:
偶然性內(nèi)聚。如果一個模塊的各成分之間的關(guān)系彼此松散,稱為偶然性內(nèi)聚。
邏輯性內(nèi)聚。幾個邏輯上相關(guān)的功能被放在同一模塊中,則稱為邏輯性內(nèi)聚。例如一個模塊讀取各種不同類型外設(shè)的輸入。
時序性內(nèi)聚。如果一個模塊內(nèi)的幾個功能必須在同一時間內(nèi)執(zhí)行,但這些功能只是因為時間因素關(guān)聯(lián)在一起,則稱為時間性內(nèi)聚。
過程性內(nèi)聚。如果一個模塊內(nèi)部的處理成分是相關(guān)的,而且這些處理必須以特定的次序執(zhí)行,則稱為過程性內(nèi)聚。
通信內(nèi)聚。如果一個模塊的所有成分都操作同一數(shù)據(jù)集或生成同一數(shù)據(jù)集,則稱為通信內(nèi)聚。
順序內(nèi)聚。如果模塊內(nèi)的某個成分的輸出作為另一個成分的輸入,則稱為順序內(nèi)聚。
功能內(nèi)聚。模塊的所有成分對于完成單一的功能都是必須的,則稱為功能內(nèi)聚。
● 低耦合
耦合是模塊之間依賴程度的度量。內(nèi)聚和耦合是密切相關(guān)的,與其它模塊存在強耦合的模塊通常意味著弱內(nèi)聚,而強內(nèi)聚的模塊通常意味著與其它模塊之間存在弱耦合。
耦合的強度依賴于以下幾個因素:
1.一個模塊對另一個模塊的函數(shù)調(diào)用數(shù)量;
2.一個模塊向另一個模塊傳遞的數(shù)據(jù)量;
3.一個模塊施加到另一個模塊的控制的多少;
4.模塊之間接口的復(fù)雜程度。
耦合程度從低到高大致劃分為低端、中段和高端。模塊設(shè)計應(yīng)當(dāng)爭取“高內(nèi)聚、低耦合”,而避免“低內(nèi)聚、高耦合”。
各種耦合類型的含義如下:
非直接耦合。模塊之間沒有直接的信息傳遞,稱為非直接耦合。
數(shù)據(jù)耦合。模塊之間通過接口傳遞參數(shù),稱為數(shù)據(jù)耦合。
標(biāo)記耦合。模塊間通過接口傳遞內(nèi)部數(shù)據(jù)結(jié)構(gòu)的一部分,稱為印記耦合。此數(shù)據(jù)結(jié)構(gòu)的變化將使相關(guān)的模塊發(fā)生變化。
控制耦合。模塊傳遞信號給另一個模塊,接收信號的模塊根據(jù)信號值調(diào)整動作,稱為控制耦合。
公共耦合。兩個以上的模塊共同引用一個全局?jǐn)?shù)據(jù)項,稱為公共耦合。
內(nèi)容耦合。當(dāng)一個模塊直接修改或操作另一個模塊的數(shù)據(jù),或者直接轉(zhuǎn)入另一個模塊時,就發(fā)生了內(nèi)容耦合。
以上就是關(guān)于軟件設(shè)計中的模塊設(shè)計是什么的全部內(nèi)容介紹,想了解更多關(guān)于模塊設(shè)計的信息,請繼續(xù)關(guān)注中培偉業(yè)。