軟件模塊化設(shè)計(jì)案例分析
劉路路
發(fā)布于2022-11-24 18:41
5
2
標(biāo)簽:模塊化設(shè)計(jì)
1. 高內(nèi)聚、低耦合
以管材擠出生產(chǎn)線為例,從功能視角,按高內(nèi)聚、低耦合原則對控制軟件進(jìn)行模塊化設(shè)計(jì)。
(1)擠出機(jī)軟件模塊完成的功能
溫度控制、主機(jī)控制、熔體壓力、擠出機(jī)邏輯、用戶管理、配方管理、趨勢曲線、故障處理、EuroMap27、長度統(tǒng)計(jì)、屏幕校正等。
(2)牽引機(jī)軟件模塊完成的功能
牽引驅(qū)動(dòng)控制、牽引邏輯、用戶管理、故障處理、EuroMap27、長度統(tǒng)計(jì)、屏幕校正等。
(3)切割機(jī)軟件模塊完成的功能
切割驅(qū)動(dòng)控制、切割邏輯、用戶管理、故障處理、EuroMap27、切割統(tǒng)計(jì)、屏幕校正等。對管材擠出生產(chǎn)線的三個(gè)子裝備(擠出機(jī)/牽引機(jī)/切割機(jī)),由于用戶管理、故障處理、屏幕校正的需求是一樣的,因此只需要一次設(shè)計(jì)后為多模塊共用。由于長度統(tǒng)計(jì)在牽引機(jī)和擠出機(jī)中的大部分需求一致,因此只需要綜合兩者需求進(jìn)行一次性開發(fā)。模塊化設(shè)計(jì)使得這些開發(fā)的代碼實(shí)現(xiàn)重用,提高了開發(fā)效率。管材擠出生產(chǎn)線的軟件模塊化結(jié)構(gòu)設(shè)計(jì)如圖4.11所示,圖示表明擠出機(jī)、牽引機(jī)、切割機(jī)的軟件模塊的結(jié)構(gòu)劃分與功能實(shí)現(xiàn),這種設(shè)計(jì)明顯提高了代碼重用率。

2.分層式設(shè)計(jì)
軟件分層式結(jié)構(gòu)的優(yōu)勢如下總額
1)個(gè)體開發(fā)人員可以只關(guān)注整個(gè)結(jié)構(gòu)中的某一層。
2)可以很容易地用新的實(shí)現(xiàn)來替換原有層次的實(shí)現(xiàn)。
3)可以降低層與層之間的依賴。
4)有利于標(biāo)準(zhǔn)化。整點(diǎn)
5)有利于各層邏輯的復(fù)用。
概括來說,分層式設(shè)計(jì)的目的是分散關(guān)注、松散耦合、邏輯復(fù)用、標(biāo)準(zhǔn)定義。
一個(gè)好的軟件分層式結(jié)構(gòu),可以使開發(fā)人員的分工更加明確。一旦定義好各層次之間的接口,負(fù)責(zé)不同邏輯設(shè)計(jì)的開發(fā)人員就可以分散關(guān)注,齊頭并進(jìn)。每個(gè)開發(fā)人員的任務(wù)得到了確認(rèn),開發(fā)進(jìn)度就可以迅速地提高。
如果一個(gè)系統(tǒng)沒有分層,各個(gè)模塊(子系統(tǒng))的邏輯都緊緊糾纏在一起,彼此間相互依賴,誰都是不可替換的。一旦發(fā)生改變,則牽一發(fā)而動(dòng)全身,對項(xiàng)目的影響極為嚴(yán)重。降低層與層間的依賴性,既可以良好地保證未來的可擴(kuò)展性,在復(fù)用性上也優(yōu)勢明顯。每個(gè)功能模塊一旦定義好統(tǒng)一的接口,就可以被各個(gè)模塊所調(diào)用,而不用為相同的功能進(jìn)行重復(fù)地開發(fā),因此松散耦合帶來的好處是顯著的。
以管材擠出生產(chǎn)線常用的主機(jī)控制為例,擠出機(jī)主機(jī)的控制軟件按四層共四個(gè)模塊來設(shè)計(jì)。管材擠出生產(chǎn)線主機(jī)控制軟件分層模塊化結(jié)構(gòu)如圖4.12所示。

圖4.12 管材擠出生產(chǎn)線主機(jī)控制軟件分層模塊化結(jié)構(gòu)
分層式設(shè)計(jì)可以靈活應(yīng)對各種需求,而無須修改其他層的模塊。假如某廠商的擠出機(jī)不用RS422,改用CAN總線來與LENZE驅(qū)動(dòng)器通信,我們只需要修改LENZE_DRV通信協(xié)議部分,無需對LENZE_APP、主畫面、人機(jī)界面部分修改。又比如,某廠商將LENZE驅(qū)動(dòng)器用在塑鋼門窗焊接上,需要使用LENZE驅(qū)動(dòng)器的定位功能,只需要對LENZE_APP、MAIN、人機(jī)界面修改,無須修改LENZE_DRV協(xié)議實(shí)現(xiàn)部分。
模塊化軟件編程的分層操作要點(diǎn)是,每一層直接對下一層操作,盡量避免交叉調(diào)用或越級調(diào)用,這樣的軟件架構(gòu)更易于維護(hù)、擴(kuò)展。
當(dāng)然,分層式結(jié)構(gòu)也不可避免具有一些缺陷∶
1)降低了系統(tǒng)的性能。這是因?yàn)槿绻徊捎梅謱邮浇Y(jié)構(gòu),很多業(yè)務(wù)可以直接訪問數(shù)據(jù)庫,以此獲取相應(yīng)的數(shù)據(jù),如今卻必須通過中間層來完成。
2)有時(shí)會(huì)導(dǎo)致級聯(lián)的修改。這種修改尤其體現(xiàn)在自上而下的方向。如果在表示層中需要增加一個(gè)功能,為保證其設(shè)計(jì)符合分層式結(jié)構(gòu),可能需要在相應(yīng)的業(yè)務(wù)邏輯層和數(shù)據(jù)訪問層中都增加相應(yīng)的代碼。