發表文章

目前顯示的是 一月, 2010的文章

軟體工程與大型整合專案—以WiMAX整合型計畫為例 (3/3)

圖片
Continuous Integration

在討論版本控管時,我們曾經提到WiMAX計畫使用一個輔助工具「JCIS」進行持續整合(Continuous Integration)的工作。那麼,為什麼要做持續整合呢?維基百科中對於持續整合的理論有些初步的介紹,包含下列十個重要的Practices:
維護一個程式庫(Maintain a code repository)將建置自動化 (Automate the build)使建置能進行自我測試(Make the build self-testing)每人每天送交程式碼(Everyone commits every day)每次送交都應該被建置(Every commit should be built)維持快速的建置時間(Keep the build fast)在實際運行的環境下進行測試(Test in a clone of the production environment)簡化取得最新可交付版本的方法(Make it easy to get the latest deliverables)每個人都能看到最新版建置的測試結果(Everyone can see the results of the latest build)將佈署自動化 (Automate deployment) 上述許多Practices都要求自動化,自動化又可以分為半自動和全自動,以半自動為例,可能是有人每天固定手動執行make指令,將所有要建置的檔案編譯與連結,接著有人將結果複製到實際運行的環境,再下指令讓電腦執行所有的測試,這個過程雖然必須由人來操作,但只要下少許指令就可以完成了。那麼全自動呢?就是在專案開始的時候進行若干設定,之後由電腦自動處理一切編譯、連結、測試等工作,這就需要一套輔助工具了。

要確實完成這麼多的Practices,其實門檻是很高的。即使是在企業界,也難免會有不遵守遊戲規則的軟體工程師,更何況我們的開發主力是學校裡沒什麼專案成敗壓力的學生。舉例說,要做到「每人每天送交程式碼」幾乎是不可能的,基本上學生開發程式是有一天沒一天的,最多只能要求到「有修改就必須送交程式碼」。另外像是「每次送交都應該被建置」,在我們第一年的WiMAX計畫中可以說是完全失敗。在開發環境未能統一的情況下,子計畫的開發人員往往以為只要在自己的開發環境上能建置…