Test-driven development 或是 test-first development 中文有人翻譯成「測試先行」,大意是說還沒開始寫 production code (就是一般所謂的程式)之前,先把 test code 給寫出來。奇怪了「待測程式(production code)」都還沒個影子,如何寫 test code 去測試它(不存在的東西如何測試?)箇中細節暫且不談,總之「測試先行」的目的是希望開發人員能夠先從「end users(可能是最終的客戶,或是呼叫你的程式的其他程式或是其他開發人員)」的角度來看看自己等一下所準備撰寫的程式應該長成什麼樣子,之後再實際逐一把這些程式實做完成。
Teddy 今天要談的是另一個類似的觀念,姑且稱之為「安裝先行」。傳統採用 waterfall 開發流程的專案或是產品,安裝與佈署的問題通常都是最後才被考慮的問題。為什麼?因為東西都還沒開發完畢,幹麼去考慮安裝和佈署的問題啊(東西都還不能用啊)。但是如果團隊採用的是 agile methods(敏捷方法),那麼「理論上」每個 iteration 結束時,都應該要有一個可以執行的軟體(running software),所以對於敏捷團隊來說,在專案初期便應該需要考慮軟體安裝與佈署的問題。
關於這個問題 Teddy 和指導教授曾經發表過一篇持續整合的論文,其中有介紹這樣的觀念(如下圖所示)。
這兩天 Teddy 把 97 Things Every Programmer Should Know 這本書翻了一下,發現書中第 40 頁也有提到類似的觀念。
Deploy Early and Often
Starting your project with an installation process will give you time to evolve the process as you move through the product development cycle, and the chance to make changes to the application code to make the installation easier.
有興趣的鄉民們可以參考一下。
**
友藏內心獨白:當遇到防弊與興利的抉擇時,大部分的人還是會選擇比較不會被質疑的防弊。
現在這個世道,所謂有智慧並不是預見危險而提出警告,而是要跟眾人一起毀於被公認為正確的方式下,這樣就不會有人有怨言了
回覆刪除