最近看了打造可維護軟體這本書,慢慢地整理自己的心得。這是第一章-可維護性的前言與簡介。
前言
這是作者在SIG從事15年的軟體品質顧問的工作之後,所學到的經驗。
SIG有一套方法論可以衡量軟體的可測性,就它們的資料,平均水準之下的可維護性與平均水準之上的可維護性至少相差兩倍的工作量。
提升可維護性不需要甚麼神奇魔法或火箭科學,些許簡單的技能與知識,加上確實應用它們的紀律與環境,就能讓可維護性產生爆炸性的提升。
靜態程式碼分析工具可以列出許多的程式碼問題,但卻會讓人卻步。因為大量且提高可維護性的效果不同的建議,會讓人無法選擇。所以作者揀選出10項最能提升可維護性的法則,作為提升軟體品質的起點。
甚麼是可維護性
可維護性代表系統被修改的難易程度,是軟體品質的指標之一。ISO 25010:2011 定義出軟體品質的八個特性:可維護性、功能可適性、效能、兼容性、可靠性、安全性及可移植性。
軟體系統不像實體物件會慢慢自行磨損,之所以需要被修改,通常有以下幾種原因:
- 發現系統中有Bug
- 提升系統品質
- 使用者提出功能需求或變更
- 系統環境變更-例如作業系統的升級
可維護性之所以重要,是因為它是其他軟體品質指標的基礎。無論是提升效能、功能可適性、安全性等,任何最佳化都需要修改程式碼。在可維護性高的系統中,修改工作更較容易進行,引發的意外衝擊及Bug也會少很多。
關於可維護性的各種誤解
沒有仔細思考前,對於軟體可維護性可能會有一些誤解
- 可維護性與程式語言有關:使用C#開發的軟體系統不見得比C開發的軟體系統更容易維護。
- 可維護性等於沒有Bug:高於平均值的可維護性只表示我們可以有效率的修改系統,降低Bug數量。
- 可維護性是一道是非題:我們追求的是足夠的可維護性,而非完美的可維護性(天曉得那是甚麼)。