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