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