持續整合(CI)雖然強調的是作業自動化,但有不少的執行細節及習慣的養成,仍須由人來配合,並藉著管理制度來規範,並非全然依賴系統平臺。

而《Software Configuration Management Patterns: Effective Teamwork, Practical Integration》一書,當時彙集軟體團隊開發的有效成功模式,著重在標準化的管理規範及原則,讓軟體專案管理者能有跡可循,期望讓不熟的人也能照本宣科、按表操課。

至於2004年Pragmatic所出版的《Pragmatic Project Automation》,應算是討論建構作業自動化議題較完整的第一本書。

全書強調的基本精神就是所有作業都能予以自動化,以有效提升專案執行的效率。最重要的是將實作的細節一併讓讀者了解,包括如何利用工具來完成建構、安裝、部署等作業。除了讓讀者了解正確的建構作業觀念,強調如何逐步將自動化落實在專案執行。

全書內容,以建構、安裝部署、監測機制的自動化為主軸進行探討。建構部分介紹了軟體專案目錄結構的定義方式、如何以Ant工具來建構專案程式碼、定義專案所需的建構腳本、結合JUnit測試工具合併測試作業、設置排程建構的方式;在安裝作業上,亦介紹利用NSIS(Nullsoft Scriptable Install System)來設計你的安裝程式(Installer);而在安排部署時所發行的版本,與開發測試時的內容有所差異,這本書也向你說明了,如何透過定義建構腳本的方式來包裝發行版本。

書中以CruiseControl為持續整合平臺為主要解決方案,加上各章節中均依主題搭配Ant腳本範例,可讓讀者快速定義自己的建構腳本檔,導入專案所需的自動化工具。其中部分自動化程序是作者撰寫shell script達成,書中亦直接提供程式碼。

由O’Reilly公司所出版的《Practical Development Environments》一書,則強調建構SCM核心觀念,內容經歷數項成功專案及數個不同開發團隊,適用於不同規模的專案上之實務證明,歸納出本書精華。書中亦提到不少建置自動化開發環境所需工具,讓你可將開發流程的各個環節緊密相扣,讓重覆枯燥的作業程序,透過系統正確並及時執行。

除了介紹軟體開發生命周期的各階段所適合導入的工具外,整個團隊各個角色的扮演,及達到良好的協同合作溝通,更是讓軟體專案成功的主因。

其中的一個章節闡述了人文與政治面的顧慮,像是具備程式碼更動權限的妥善分配,開發人員心中的真正想法,以及團隊紀律的要求等。作者依照過去專案經常發生的狀況提供具參考價值的建議。這樣的問題勢必存在,但能透過良好的互動預知可能的潛在問題發生,亦能降低專案風險。

持續整合的實作

軟體工程學界大師Martin Fowler 2006年時,再度發表Continuous Integration新版論述(http://martinfowler.com/articles/continuousIntegration.html),文中已將持續整合在實作上應該著重的原則,規範得相當清楚,後續在此議題討論的文章,都幾乎將這些原則奉為圭臬。大師的領頭羊效應後,業界陸續對觀注及討論這議題,不少書也開始雨後春筍般出現。

2007年Addison Wesley出版的《Continuous Integration: Improving Software Quality and Reducing Risk》,便是首本以持續整合CI這個名詞為標題的專書,其談論內容的完整度,筆者認為,算是歷年來相關書籍中寫得最好的一本。

本書先介紹CI時空背景及理論規範的演進,再逐步說明如何建立屬於自己的CI系統環境,兼顧理論與實務。作者先讓讀者了解過去開發團隊所面臨的痛苦及風險,掌握持續整合導入時所影響的作業層面,以及主要可解決的核心問題為何。一旦清楚導入的動機及效益後,再分章節介紹而建立CI系統環境所涵蓋的範圍以及組成元素。在介紹每個章節主題時必然搭配導入工具的設計方式,或是需要撰寫的程式代碼亦同步提供,讓讀者更能了解實作方式。像是如何以TestNG工具來撰寫單元測試程式,以及如何將這些任務定義到Ant建構腳本檔中。

而在書末附錄中,作者亦分門別類地整理了與CI有關的相關資源,並提供不同CI解決方案的評估選用考量要點。對於想開始導入CI的讀者而言具有甚高的參考價值,若你對持續整合完全沒概念,本書可以視為打好基礎的入門良書。

資料庫端的CI作業

當然持續整合的應用不只是在主程式的部分,現今應用程度絕大多數都與資料庫有關,跟隨著軟體版本的演進,資料庫的持續整合作業也不容忽視。《Recipes for Continuous Database Integration》,則是著重在資料庫端的持續整合程序,所有的資料庫相關的程式腳本均必須列入版本控管,才能讓程式碼與資料庫的組態一致。而在重複建構及自動化測試程度的進行過程中,對於資料庫的物件及綱要重建、測試資料之清除及準備、主程式版本升級時,對於現有資料庫結構的更新方式,這裡都有專文討論,而本書列示的十五項法則亦能讓讀者在進行資料庫整合自動化時能更順暢。

可協助CI的工具

工欲善其事,必先利其器。O’Reilly出版的《Java Power Tools》一書,對於開發作業過程中所需的工具有著詳盡的介紹,將絕大部分持續整合會用到的開放源碼工具,來個大閱兵,對於想嘗試持續整合實作的讀者,可以省下不少工夫。

書中所涵蓋的包括:建構工具Maven及Ant,版本控管工具Subversion及CVS,CI Server提到了Continuum、CruiseControl、LuntBuild、Hudson,自動化測試工具JUnit、TestNG、Cobertura,整合及效能檢測工具StrutsTestCase、DBUnit、JUnitPerf、JMeter、SoapUI等,軟體品質工具Checkstyle、PMD、FindBugs、Jupiter、Mylyn,問題追蹤工具Bugzilla、Trac,還有技術文件產生工具Doxygen、SchemaSpy等。這些工具的介紹,必然都會提到與建構工具的整合方式,例如定義Ant及Maven的建構腳本內容,讓自動化建構更能多元化,工作更簡單有效率。

與IT管理接軌

2010年Addison Wesley所出版的《Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation》,亦引起大迴響。本書中除了提及原本持續整合流程中的各個階段所應著重的原則外,更將考量層面擴大到系統維運階段的服務持續供應,必須達到系統服務不中斷的生態平衡。尤其現今的系統複雜度及規模甚高,企業因系統錯誤或問題所造成的損失及代價已不可同日而語,必須有效縮短軟體製程,在最短的時間內快速發布並修復更新來因應,以提升客戶滿意度,這已是現今企業所面臨的重大挑戰,相當值得管理階層一看的書。書中同時提及呼應ITIL中Continuous Delivery所考量的要點,提供了良好的實踐方案以遵循ITIL的本質,所衡量的標準亦能有效被滿足。

由於理論基礎持續成熟,業界採用搭配工具的程度也逐漸提高,像是Hudson、Maven、Subversion等技術手冊,也開始大受歡迎。Manning的In Action系列書籍,亦能提供讀者針對單一工具去獲得深入淺出的理解。

林林總總提到了這麼多書籍,透過閱讀較能完整取得此領域的知識,直接拿現在進行的專案來開刀吧!實際運用收穫更多喔!

 

作者介紹

陳宏一

目前於一家網購平臺公司擔任技術經理,交通大學資訊管理研究所碩士,專精於OOAD、J2EE相關技術、Open Source、資料庫設計、軟體開發流程及專案管理等;取得SCJP、SCWCD、SCJD、SCEA、ITIL等認證。曾經歷大型社群及電子商務網站、WAP/3G行動加值服務、CTI/CRM客服系統架構規畫設計等。

 


熱門新聞

Advertisement