模塊分解的規(guī)則
1.模塊獨立性
所謂兩個模塊彼此完全獨立,是指其中任一模塊在運行時,與另一個模塊存在無關。獨立性只是一個相對的概念。具有獨立功能而且和其他模塊之間相互作用少的模塊,稱為獨立性高的模塊。
保證模塊獨立性高是設計一個系統(tǒng)的關鍵,它具有以下優(yōu)點:
。1) 系統(tǒng)容易開發(fā)。系統(tǒng)開發(fā)往往由若干人分工合作完成,由于模塊之間聯(lián)系少,接口簡單,可以簡化合作者之間的協(xié)調工作。
。2) 系統(tǒng)可*性高。模塊之間的相互影響小,當一個模塊出錯時,產生波動效應的概率低,從而提高了系統(tǒng)的可*性。
。3) 系統(tǒng)容易維護。在對一個模塊進行修改和維護時,不必擔心其他模塊的內部是否會受到影響。
要衡量模塊自身聯(lián)系是否緊密、與外部的聯(lián)系是否合理,需引入模塊凝聚、模塊耦合的概念。
2.模塊凝聚
模塊凝聚是用以衡量一個模塊內部自身功能的內在聯(lián)系是否緊密的指標,也是衡量模塊質量好壞的重要標準。模塊按凝聚程度的高低可分為以下五級:
。1) 偶然凝聚。一個模塊內部各組成部分的處理彼此無關,偶然地組合在一起,這是一種組織得最差的模塊,凝聚程度最低。
。2) 邏輯凝聚。一個模塊內部各組成部分的處理邏輯相似,但功能卻彼此不同。這種模塊通常包含一個選擇控制和若干彼此獨立的處理功能。先執(zhí)行選擇功能,再根據(jù)選擇的結果,控制執(zhí)行不同的處理功能。由于它的邏輯途徑比較復雜,修改困難,因此凝聚程度較差。
(3) 時間凝聚。這是指若干處理由于執(zhí)行時間彼此有關,集中在一起組成的模塊。如初始化模塊,各處理內容必須在特定時間內執(zhí)行,而各處理內容彼此無關,故凝聚程度較差。時間凝聚的模塊通常要影響到其他許多模塊的運行,因此與其他模塊之間聯(lián)系多,修改比較困難。
。4) 數(shù)據(jù)凝聚。模塊內部包含若干處理,它們按一定的順序執(zhí)行,且前一處理所產生的輸出數(shù)據(jù),是后一處理的輸入數(shù)據(jù),這稱為數(shù)據(jù)凝聚模塊。這種模塊可較明確表述其功能,內部結構較密切,與其他模塊聯(lián)系一般較少,凝聚性較好。
(5) 功能凝聚。一個模塊只執(zhí)行一個明確的功能,即上級模塊調用它時,它只完成一項確定的任務。這種模塊獨立性強、便于修改。凝聚程度高,是結構化設計模塊的理想目標。一個模塊的內部凝聚程度。
3.模塊耦合
模塊間的信息聯(lián)系方式,稱為模塊的耦合,它是衡量模塊間結構性能的重要指標。耦合有三種類型:
(1) 數(shù)據(jù)耦合。兩個模塊間通過調用關系傳遞被處理的數(shù)據(jù)稱為數(shù)據(jù)耦合。
。2) 控制耦合。兩個模塊間通過調用關系,不僅傳遞數(shù)據(jù),還傳遞對運行過程有影響的控制信號。下層模塊執(zhí)行校驗功能,校驗結果的控制信號傳回上層模塊,以控制其他模塊的運行。如數(shù)據(jù)正確,調用正常處理模塊;如數(shù)據(jù)異常,或遇到文件尾等不同情況時,調用不同處理模塊,這種耦合使一個模塊的執(zhí)行直接影響到接受該控制信號的模塊的運行。這對于系統(tǒng)的修改工作是不利的,特別是對自下向上傳遞的控制信號,影響面更大。因此,應當盡量將這種耦合減少到最低限度。
。3) 非法耦合。一個模塊與另一個模塊內部發(fā)生聯(lián)系,即一個模塊中的某些內容在另一模塊中以某種方式被引用,稱為非法耦合。例如,不經(jīng)過調用關系,直接使用或修改另一模塊中的數(shù)據(jù),將控制選擇指向另一模塊中的某一標號(節(jié)、過程) 等。
模塊間數(shù)據(jù)耦合是最正常的方式,為保持模塊的獨立性,模塊之間互相傳遞的數(shù)據(jù)要盡量少;要努力避免控制耦合,特別是避免自下而上傳遞控制信號;應消除任何形式的非法耦合。