產(chǎn)品簡介
詳細介紹
西門子調速器功能模塊是指數(shù)據(jù)說明,、可執(zhí)行語句等程序元素的集合,它是指單獨命名的可通過名字來訪問的過程、函數(shù),、子程序或宏調用,。功能模塊化是將程序劃分成若干個功能模塊,每個功能模塊完成了一個子功能,,再把這些功能模塊總起來組成一個整體,。以滿足所要求的整個系統(tǒng)的功能。
西門子調速器模塊獨立性編輯
功能模塊獨立的概念是功能模塊化,、抽象,、信息隱蔽和局部化概念的直接結果。
抽象是指對事物,、狀態(tài)或過程之間所存在的某些相似的方面集中和概括起來,,而暫時忽略他們之間的差異,即考慮抽象事物的本質特征而暫時不考慮他們的細節(jié),。信息隱蔽是指再設計功能模塊時使得一個功能模塊內所包含的信息(過程或數(shù)據(jù)),,對于不需要這些信息的功能模塊來說是不能訪問的。信息隱蔽原則對于以后在軟件維護期間修改軟件時會帶來極大的好處,,因為大量數(shù)據(jù)和過程是軟件的其他部分所不能覺察的,,因而再對某個功能模塊修改時就不大會影響到軟件的其他部分,所謂局部化是指把一些關系密切的軟件元素在物理位置上彼此靠近,。
功能模塊獨立性是通過制定具有單一功能并且和其他功能模塊沒有過多聯(lián)系的功能模塊來實現(xiàn)的,。每個功能模塊只涉及該軟件要求的一個具體子功能,而且與軟件結構的其他部分的接口是簡單的,。
功能模塊獨立性好的軟件接口簡單,,易于編制,獨立的功能模塊也比較容易測試和維護,,限制了功能模塊之間由于聯(lián)系緊密而引起的修改副作用,。獨立性是保證軟件質量的重要因素。
獨立性度量編輯
功能模塊獨立性是由內聚性和耦合性兩個定性指標來度量的,。內聚性是度量一個功能模塊內功能強度的一個相對指標,。耦合性則用來度量功能模塊之間的相互聯(lián)系的程度。
耦合
耦合是軟件結構中各功能模塊之間相互連接的一種度量,,耦合強弱取決于功能模塊間接口的復雜程度,、進入或訪問一個功能模塊的點以及通過接口的數(shù)據(jù)。
耦合有以下幾種,,他們之間的耦合度由高到低排列:
☆內容耦合,。如一個功能模塊直接訪問另一個功能模塊的內容,則這兩個功能模塊稱為內容耦合,。
☆公共耦合,。如一組功能模塊都訪問統(tǒng)一全局數(shù)據(jù)結構,則稱之為公共耦合。
☆外部耦合,。如一組功能模塊都訪問統(tǒng)一全局數(shù)據(jù)項,,則稱之為外部耦合。
☆控制耦合,。如一功能模塊明顯地把開關量,、名字等信息送入另一功能模塊,控制另一功能模塊的功能,,則為控制耦合,。
☆標記耦合。如一組功能模塊共享了某個記錄,,而不是簡單變量,,即這些功能模塊都需某一數(shù)據(jù)的子結構時,就需要按該記錄的結構進行操作,,并通過參數(shù)表來傳遞記錄信息,,這樣的耦合稱之為標記耦合。
☆數(shù)據(jù)耦合,。如一個功能模塊訪問另一個功能模塊,,被訪問的功能模塊的輸入和輸出都是數(shù)據(jù)項參數(shù),則這兩個功能模塊為數(shù)據(jù)耦合,。
☆非直接耦合,。若兩個功能模塊沒有直接關系,他們之間的聯(lián)系*是通過主程序的控制和調用來實現(xiàn)的,,便稱這兩個功能模塊為非直接耦合,,獨立性*。
上面只是對耦合機制進行了一個分類,。原則上講,,功能模塊化設計總是希望功能模塊之間的耦合表現(xiàn)為非直接耦合方式,。但是,,由于問題所固有的復雜性和空間方面的考慮,有時則要根據(jù)實際情況,,全面權衡,,選用其它類型的耦合。 [1]
內聚
內聚是從功能角度來度量功能模塊內的聯(lián)系,,一個好的內聚功能模塊應當恰好做一件事,。它描述的是功能模塊內的功能聯(lián)系。
內聚有如下的種類,,其內聚度由弱到強排列:
☆偶然內聚,。一功能模塊中的代碼無法定義其不同功能的調用。但它使該功能模塊能執(zhí)行不同的功能,這種功能模塊稱為巧合強度功能模塊,。
☆邏輯內聚,。這種功能模塊把幾種相關的功能組合在一起,每次被調用時,,有傳送給功能模塊參數(shù)來確定該功能模塊應完成那一種功能,。
☆時間內聚。這種功能模塊順序完成一類相關功能,,比如初始化功能模塊,,它順序為變量置初值。
☆過程內聚,。如果一個功能模塊內的處理元素是相關的,,而且必須以特定次序執(zhí)行則稱為過程內聚。
☆通信內聚,。這種功能模塊除了具有過程內聚的特點外,,還有另外一種關系,則它的所有功能都通過使用公共數(shù)據(jù)而發(fā)生關系,。
☆順序內聚,。如果一個功能模塊內的處理元素和同一個功能密切相關,而且這些處理必須順序執(zhí)行,,通常一個處理元素的輸出數(shù)據(jù)作為下一個處理元素的輸入數(shù)據(jù),,則稱為順序內聚。
☆功能內聚,。如果一個功能模塊包括并僅包括未完成某一具體任務所必需的所有成分,,或者說功能模塊中所有成分結合起來是為了完成一個具體的任務,此功能模塊稱為功能強度模塊,。
軟件功能模塊指標編輯
系統(tǒng)中的各功能模塊在納入時間,、激活機制和控制方式等方面可以不相同。
1)納入時間
納入時間是指一個功能模塊被歸并到軟件的源語言描述之中的時間,。比如宏功能模塊是由編譯器把它作為程序的一部分直接插入到引用位置上去的,。而普通的子程序則是通過產(chǎn)生目標代碼與連接代碼而納入到軟件中的。
2)激活機制
功能模塊的激活機制通常有兩種:一個是通過引用來調用功能模塊,,另一個是通過中斷來調用一個功能模塊,。在實時系統(tǒng)中,通常使用后者,。比如,,使用一個外部時間來引起處理過程的中斷,然后使控制轉到另一個功能模塊,。
3)控制方式
一般功能模塊具有單一入口和單一出口,,并作為程序的一部分順序地執(zhí)行,,有時,也需要更為復雜的控制方式,,如可重入功能模塊,。這種功能模塊不以任何方式修改它自己或它所訪問的局部地址,從而這樣的功能模塊就可以同時被幾個任務使用,。
4)結構分類
在軟件結構中,,功能模塊可以分為以下幾類:
順序功能模塊:它在沒有明顯中斷情況下被應用軟件調用和執(zhí)行。
增量功能模塊:它在調用結束之前可以被應用程序中斷,,然后在中斷點重新啟動,。
并行功能模塊:它在并行多處理機環(huán)境中與別的功能模塊同時執(zhí)行。 [2]
設計要素編輯
1.提高功能模塊獨立性
在得到軟件結構之后,,就應首先著眼于改善功能模塊的獨立性,,考驗是否應該把一些功能模塊提取或合并,力求降低耦合提高內聚,。例如,,多個功能模塊共有的一個子功能可以獨立成一個功能模塊,由這些功能模塊調用,,有時可以通過分解或合并功能模塊以減少控制信息的傳遞及對全局數(shù)據(jù)的引用,,并且降低接口的復雜度。
2.功能模塊規(guī)模適度
經(jīng)驗表明,,當功能模塊過大時,,功能模塊的可理解性就會迅速下降。但是對過大的功能模塊分解時,,也不應降低功能模塊的獨立性,。因為當對一個大的功能模塊分解時,有可能增加功能模塊之間的依賴,。
3.深度,、寬度、扇出和扇入要適當
如果深度過大則說明有的控制模塊可能簡單了,。如果寬度過大則說明系統(tǒng)的控制過于集中,。而扇出過大則意味著功能模塊過于復雜,需要控制和協(xié)調過多的下級模塊,,這時應適當?shù)卦黾又虚g層次,,扇出太小則可以把下級模塊進一步分解成若干個子功能模塊,,或者合并到上級功能模塊中去,。一個功能模塊的扇入是表明有多少個上級功能模塊直接調用它,扇入越大則共享該模塊的上級模塊數(shù)目越多,,這是有好處的,。
4.要使模塊的作用范圍保持在該模塊的控制范圍內
功能模塊的作用范圍是指受該功能模塊內一個判定影響的所有功能模塊的集合,。功能模塊的控制范圍是指這個功能模塊本身以及所有直接或間接從屬于它的功能模塊的集合。在一個設計得很好的系統(tǒng)中,,所有受判定影響的功能模塊應該都從屬于作出判定的那個功能模塊,,*局限于做出判定的那個功能模塊本身及它的直接下級模塊。對于那些不滿足這一條件的軟件結構修改的辦法是:將判定點上移或者將那些在作用范圍內但是不在控制范圍內的功能模塊移植到控制范圍內,。
5.應減少功能模塊的接口的復雜性和冗余度,,并改善一致性
功能模塊接口復雜是軟件發(fā)生錯誤的一個主要原因。應該仔細設計模塊接口,,使得信息傳遞簡單并且和模塊的功能一致,。
6.設計成單入口、單出口的功能模塊,,避免病態(tài)連接
要防止內容耦合性,,如果功能模塊都是從頂部入口、從底部出口的話,,這樣的軟件也更易于理解和易于維護,。病態(tài)連接關系是指從中部進入或訪問一個模塊。
7.模塊的功能可預測
如果一個功能模塊可以當做一個黑箱,,即只要輸入的數(shù)據(jù)相同就產(chǎn)生同樣的輸出,,這個模塊的功能就是可以預測的。而那些具有內部記憶的功能模塊則可能是不可預知的,,因為它可能記載了某個內部標志并且利用這個標志去選擇處理方案,。由于這個標志對上級功能模塊來說是看不見的,因而可能引起混亂,。
8.組裝軟件根據(jù)設計的約束和移植的需要
組裝是指用來把軟件組合起來,,以便把軟件放入特定的處理環(huán)境或送往其他的地方。有時,,設計約束要求一個程序要在內存中覆蓋自己,。如果有這種要求的話,原設計結構就可能必須重新組織以便按照重復的次數(shù),、存取的頻率以及各次調用之間的間隔來把功能模塊組合起來,。