軟件維護
軟件維護:在軟件發佈後,修改軟件以修正錯誤和提升性能
維護包含兩點:
- 確定錯誤位置
- 測試、修正和文檔
代碼可維護性的指標
- CC(Cyclomatic Complexity,圈複雜度):代碼裏面的環數,如圖
- HV(Halstead Volume,運算符和操作數的數目)
- LOC(The average number of lines of code per module ,每個模塊的代碼行數)
- COM(The percentage of comment lines per module ,註釋行的百分比)
這裏提示,深度地繼承會使得代碼難以理解,同時注意高內聚低耦合,注意測試。
模塊設計
模塊設計是要將程序的功能分散到獨立可交互的模塊中
評價模塊性的五個標準
▪可分解性
- 較大的組件是否分解爲較小的組件?
▪可組合性
- 較大的部件是否由較小的部件組成?
▪可理解性
- 組件是否可以單獨理解?
▪連續性(可持續性)
- 規格的微小變化是否會影響本地化和有限數量的組件?對規格說明的改動,其影響是否是局部和有限的
▪保護性
- 運行時異常的影響是否僅限於少數相關組件
模塊設計的五個規則
▪ Direct Mapping (直接映射):模塊的結構與現實世界中問題領域的結構保持一致
影響持續性和可分解性
▪ Few Interfaces (儘可能少的接口):模塊應儘可能少的與其他模塊通訊
影響:可持續性、保護性、可理解性、可組合性
▪ Small Interfaces (儘可能小的接口):如果兩個模塊通訊,那麼它們應交換儘可能少的信息
對“可持續性”和“保護性”產生影響
▪ Explicit Interfaces (顯式接口):當A與B通訊時,應明顯的發生在A與B的接口之間)
可分解性、可組合性、可持續性、 可理解性
▪ Information Hiding (信息隱藏):經常可能發生變化的設計決策應儘可能隱藏在抽象接口後面
可持續性
SOLID
單一責任原則
開放封閉原則
Liskov替換原則
接口隔離原則
依賴轉置原則
GRASP(通用責任分配軟件模式)
控制者
信息專家
創造者
低耦合
高內聚
間接的
多態性
受保護的變體
純粹的製造