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