2008年4月17日 星期四

軟體亂度(Software Entropy)

前面討論過技術債務,這裡介紹另一個有趣的隱喻(Metaphor):Software Entropy。這是一個很巧妙的比喻,可惜要學過一些物理才能了解。我們平常喜歡用複雜度(Complexity)來說明程式碼有多亂,用義大利麵來比喻混在一起、亂得不得了的程式。改用entropy這個熱力學字眼,是因為軟體系統的發展過程跟熱力學的定律有些共同之處。entropy這個字中文翻譯為亂度,或是熵。我個人認為在軟體領域翻譯成亂度比較好懂。

熱力學第二定律告訴我們︰一個隔絕的系統,在達到平衡前亂度一直增加,也就是說,如果要降低一個系統的亂度,需要外部消耗能量。這個定律告訴了我們電熱器加熱要用電以外,為甚麼冷氣與電冰箱降溫也一樣需要電。

軟體開發也是一樣。無論怎麼努力預防,程式碼會需要不斷修改的。這個自然演進的過程都是在增加程式碼的亂度。除非我們真的排人力與資源去翻修它,這個亂度不可能自己降。

雖然我們遇到可怕的程式碼,總是會想責怪前人留下這個攤子,責怪客戶亂改變需求,責怪主管沒有好好要求等等。這些因素都可能成立,但是不要忘了這個軟體的定律:開發的過程,亂度只會增加,除非注入額外的能量來降低它。擁抱舊有程式碼的同時,也要了解去改善它本來就是要付出相對的代價。

沒有留言: