2015年8月17日 星期一

"Working software over comprehensive documentation" But what if you CAN'T have working software?

真的很想講這個主題,在敏捷式開發宣言當中,有一個很重要的是 working software over comprehensive documentation,這句話真的是至理名言,如果可以,不論如何,請為你的團隊做出 Working Software。

But,就是那個 But,這世界上有一種軟體,是很難先做出 working software 的。這種軟體都是全有全無,只要做出會動的,就相當於做完了。那種軟體叫做系統程式,如編譯器、作業系統、與資料庫系統。

這種軟體都有下列特色:
資料模型的重要性遠大於演算法操作

用很潮的講法就是,MVC 三項開發的成本都集中在 Model 身上,Model 沒開發完成之前,View 跟 Control 都沒辦法開發。

舉例來說好了,編譯器最重要的部分是 intermediate representation (IR),在 IR 沒有設計出來之前,其他所有的演算法都只是空中樓閣,只能想想不能做。

當初在設計 MCLinker 的時候就被主管問過,為什麼不先做出一個功能,然後再做出下一個。當時我的回答是『如果可以,我當然會這樣做。可是 Linker 這種東西,就只有一個功能 - linking,只是要做到這個功能需要許多特殊的資料結構,而資料結構需要大量時間』

因此系統程式的開發,是很難先有 working software 的。

那麼系統程式的開發就不能使用敏捷式開發?其實可以,只是這個 working software 的意義有所轉變,是靠 release engineering 來替代 working software。

...To Be Continue...

沒有留言:

張貼留言