A good (software) designer will consider how software will grow and change and what elements are most likely to be focal points for change. - Rebecca Wirfs-Brock and Alan McKean (2003)
我曾經在本部落格提到過軟體設計的兩項原則:Open-Closed Principle (OCP)與Dependency Inversion Principle (DIP),這兩項原則都是教我們如何處理『改變』。不過1996年A. Cockburn 提出一項非常重要的軟體設計原則:Protected Variations (PV),事實上,PV涵蓋OCP與DIP,但更為廣泛(有機會再來談談PV)。改變有兩種:『改變點』(variation point),就是存在於現存的系統或需求內,另外一種是『演化點』(evolution point),也就是將來可能產生的改變,這則諺語主要指後者,我個人認為設計者如果能時時刻刻注意這些設計原則,或可避免產生『好人難為』的窘境(請參考薛念林教授post的『好人難為』一文)。
軟體完成後,再怎麼測試,都不可能一輩子不改,除錯外,需求的改變最為關鍵,如何因應,我看大慨在發展軟體時,遵照一些設計原則與樣式,以便賦予軟體具有『生氣』(animation),『沒有生氣』(inanimate)的軟體鐵定不能長壽。
回覆刪除