一、軟件研發(fā)類項(xiàng)目模塊化管理
1. 層次分明
可以簡單理解為設(shè)計(jì)一個結(jié)構(gòu)合理的樹狀菜單。
2. 抽象與細(xì)分
抽象:只考慮要解決的問題(用戶需求),不考慮實(shí)現(xiàn)方法;
細(xì)分:強(qiáng)調(diào)對需求的逐步分解,分解時僅較上一部分增加少量的細(xì)節(jié)。
例:
用戶想要實(shí)現(xiàn)在線報(bào)銷的功能,那我們就給他做一個“報(bào)銷軟件”,這個“報(bào)銷軟件”就是抽象出來的實(shí)體;
接下來要對“報(bào)銷軟件”進(jìn)行名列前茅次分解:報(bào)銷信息填寫、發(fā)票識別與驗(yàn)真、審批;
第二次分解“發(fā)票識別與驗(yàn)真”:發(fā)票信息錄入、發(fā)票真?zhèn)涡则?yàn)證、發(fā)票是否已用驗(yàn)證;
第三次分解“發(fā)票是否已用驗(yàn)證”:歷史已用發(fā)票查詢、歷史已用發(fā)票編號對比……
3. 組成獨(dú)立
在軟件工程領(lǐng)域也被成為“信息隱蔽”,意思是在設(shè)計(jì)和確定模塊時,使一個模塊內(nèi)包含信息(流程或數(shù)據(jù)),對于不需要這些信息的其他模塊來說是不能訪問的。
也就是說,除了必要的接口,盡量減少模塊間、分系統(tǒng)、子系統(tǒng)間的邏輯依賴,這樣在后期維護(hù)升級時,就可以避免干涉其他不相關(guān)的部分。
例:
“報(bào)銷單”包含單據(jù)編號、單據(jù)類型、單據(jù)金額、提交人、提交日期等信息,但“財(cái)務(wù)分析”模塊只需要用到單據(jù)金額、提交日期兩項(xiàng)數(shù)據(jù),那么就只允許“財(cái)務(wù)分析”模塊通過接口調(diào)用的方式訪問這兩項(xiàng)數(shù)據(jù),其他數(shù)據(jù)一概不能訪問。
4. 面向數(shù)據(jù)結(jié)構(gòu)(面向接口)
軟件系統(tǒng)一般由邏輯(算法)和信息兩部分構(gòu)成,信息又分為內(nèi)容和數(shù)據(jù);邏輯是構(gòu)建軟件功能的骨架,內(nèi)容和數(shù)據(jù)是血肉,其中以數(shù)據(jù)尤為重要。
假如要實(shí)現(xiàn)軟件模塊化且模塊之間相互獨(dú)立,必須要先拋棄邏輯(實(shí)現(xiàn)方法),因?yàn)橛羞壿嬀痛磉@兩個模塊誰也離不開誰,就不能稱之為獨(dú)立。
如果這兩個模塊必須要關(guān)聯(lián)在一起,但又不允許它們在邏輯上互相干涉,那么較好的辦法就是為它們內(nèi)部包含的數(shù)據(jù)進(jìn)行抽象化,形成標(biāo)準(zhǔn)化接口,以數(shù)據(jù)調(diào)用的形式實(shí)現(xiàn)兩個模塊間的互相協(xié)作。
5. 高內(nèi)聚,低耦合
這里要解釋一下,其實(shí)“高內(nèi)聚,低耦合”才是軟件開發(fā)的內(nèi)在要求,“模塊化設(shè)計(jì)”只是實(shí)現(xiàn)“高內(nèi)聚,低耦合”的其中一種方法。
“高內(nèi)聚”最精準(zhǔn)的體現(xiàn)是“面向?qū)ο箝_發(fā)”,它的意思是從功能角度來衡量模塊間的聯(lián)系,也就是說一個好的內(nèi)聚模塊應(yīng)當(dāng)只做一件事;
“低耦合”的精準(zhǔn)體現(xiàn)是“面向接口開發(fā)”,意思是從軟件結(jié)構(gòu)角度衡量各個模塊之間的聯(lián)系,耦合強(qiáng)弱取決于模塊間接口的復(fù)雜程度、進(jìn)入或訪問一個模塊需要調(diào)用的接口數(shù)量和次數(shù);極端的低耦合是不需要任何接口,但一般很少見。
“高內(nèi)聚,低耦合”是判斷軟件設(shè)計(jì)好壞很重要的一個標(biāo)準(zhǔn),關(guān)于如何達(dá)到這一要求,本文不作重點(diǎn)介紹,大家可以自己查查資料簡單了解一下。
延伸閱讀:
二、模塊化的好處
1、模塊之間互相隔離,實(shí)現(xiàn)故障隔離。
2、一個模塊一個分支,不會引發(fā)代碼沖突。
3、具有良好的復(fù)用性。
4、方便維護(hù),多版本部署,可以在運(yùn)行時同時部署某個模塊的新舊版本,進(jìn)行AB TEST。
當(dāng)然,這也是根據(jù)企業(yè)規(guī)模決定是否要進(jìn)行模塊化開發(fā)。如果公司具有一定的研發(fā)實(shí)力,開發(fā)人員比較多,可以進(jìn)行模塊化開發(fā),如果公司只有幾個編程人員,模塊化開發(fā)還是要慎重考慮。