Agile Web Development with Rails
 (Second Edition)

 Dave Thomas and David Heinemeier Hansson
 with Leon Breedt、Mike Clark、James
 Duncan Davidson、Justin Gehtland
 and Andreas Schwarz/著
 Pragmatic出版
 售價:39.95美元


在軟體開發流程的討論中,敏捷式軟體開發(Agile Software Development)一直被熱烈且廣泛地討論著。也由於軟體專案多變的特性,使得傳統的開發流程及軟體工程方法論已經是過於繁重而不切實際。所以像是XP(Extreme Programming)、Agile等輕量級方法論成為新一代軟體工程的寵兒,而許多工具及實作方法亦圍繞著它們的基本精神而不斷繁衍。

程式語言及軟體架構也為了能因應開發流程的敏捷化需求,不斷地透過彈性的軟體框架(Framework)的推出,或是結合強大的整合式開發環境來配合這樣開發流程的體現,希望能及時且有效地反應真正的需求,並快速實作出合乎使用者理想的軟體。

但你會發現,彈性的軟體框架伴隨而來的,便是複雜的組態及物件層級,對於規模較小的應用需求,會有殺雞用牛刀的感覺,絲毫感受不到輕快敏捷的味道。

過去許多程式語言都能有搭配的軟體框架及整合式開發環境,試著要利用一些自動化的機制幫開發人員節省時間。但當你在採用時會發覺,針對這些軟體框架,開發人員需要先花不少時間學習使用方式,來提高掌握度,尤其是在編寫令人頭痛的組態檔時。

這次玩真的,敏捷製程不再是唱高調
自從Ruby on Rails的出現,透過RoR官方網站令人印象深刻的影片展示,許多開發者皆驚歎著Agile時代終於真正來臨,它的快速開發特性讓許多開發者為之著迷,簡潔的軟體架構搭配著優雅的物件導向本質,讓寫過其他物件導向語言的開發人員,能快速領會其精神所在。

你不再需要針對不同的複雜問題,實作打造連自己都不是很熟悉的Design Patterns;你也不需要為了採用不同的軟體框架,而迷失在組態檔設計檔的叢林裡。因為以單純而明確的MVC架構用來做為基本的設計框架,透過URL的命名方式Convention取代複雜的組態設定,對於大多數的軟體專案需求其實就十分足夠了。

相信你也聽了不少關於Ruby on Rails的精彩事蹟,一定想要動手試試,但受限於中文相關資源的缺乏,讓這樣的技術還未能被廣泛使用。目前已有多本專門討論Ruby程式語言的經典好書,但中文版至今才出現2本翻譯專書,包括歐萊禮出版的《超越Java(Beyond Java)》、《Ruby on Rails:建置與執行(Ruby on Rails:up and running)》。對於初次接觸想要學習RoR的同好們,建議還是嘗試閱讀原文版書籍,較能在第一時間掌握較新的技術資訊。

談到與Ruby相關的書,其實早在2001年就有相關專書,像是O'Reilly的《Ruby in a Nutshell》,當時只是針對程式語言本身的特性及撰寫方式進行討論,並未提到Ruby在Web領域的應用。而開始被廣泛討論則是從Bruce A. Tate的《Beyond Java》一書緣起,在該書中便提到Ruby如何搭配Rails的軟體框架,以便快速地實作簡易的Web應用程式,但由於該書當時的討論重心並未在RoR上,所以還不算是專書。

經典加上得獎,你不得不試試
Ruby結合Rails軟體框架的強大威力,在Web技術的應用上發揮得淋漓盡致,加上Web 2.0的加持,更是將其快速開發的特性展露無遺。在《Agile Web Development with Rails》一書中,即是將Ruby語言充分發揮在Web應用上的經典書籍。

在眾多討論RoR的書籍中,享譽盛名的不外乎就是《Agile Web Development with Rails》。本書為RoR之原創者David Heinemeier Hansson所著,而另一位作者Dave Thomas深諳敏捷製程,同時也是經典書《Programming Ruby》的作者。本書第一版並獲得了2006年Jolt Award大獎,可謂實至名歸。

由於本書銷售狀況甚佳,不到1年的時間再推出第二版,因此在書中你除了可以習得作者忠於原味的技術內容,第二版的內容採用了較新的Rails框架(1.1版),並加入RJS、Ajax的應用範例,作為實作的基礎。

章節編排適合初學者閱讀,著重實作範例
《Agile Web Development with Rails》與一般書籍章節設計的差別在於:作者以深入淺出的方式,先以簡短的章節對RoR進行概略性的簡介,然後直接以實例方式切入RoR的程式撰寫,再回頭探討RoR的核心架構,最後透過附錄章節提供Ruby程式語言的介紹。你可以依循作者設計的章節順序逐一閱讀,透過實際的範例操作引領你進入RoR的世界。你完全不需要有Ruby撰寫的經驗也可以快速上手,適合有興趣的入門者研讀。

Rails的出現便是為了讓開發流程更簡捷,所以書中第一部分便從架構簡介開始,讓你先對Rails的軟體架構有基本的認識,除了貫穿核心的MVC模式之外,透過Active Record的OR Mapping機制來進行資料層的處理,也是框架的重點所在。

紙上談兵不過癮,動手開始進行安裝吧!你會覺得安裝RoR一點也不難,而且支援多種作業平臺,依照你所喜愛的平臺種類,將RoR裝到你的開發環境中。除了RoR的核心套件之外,你同時需要搭配的整合性開發環境及資料庫系統,在第三章也對此有詳細說明。

動手實作加深印象
當歡迎畫面呈現在你的瀏覽器中,表示你的RoR已經安裝完成。第四章便教你從專案的建立,產生定義你的Controller及Action內容,並撰寫動態頁面的Template程式。本章的討論可以讓你了解在RoR專案中目錄的結構,以及Controller、Model、View與目錄分布之間的互動關係。這些關係僅僅以URL的語法即可以完整定義,不需要再透過煩雜的組態設定。

有了前幾章的基本觀念後,接下來第二部分的章節,作者設計了一個網路書店的案例,讓你對RoR的印象更深刻。若你曾經接觸過電子商務的網站,你便會十分熟悉這些功能的需求及運作方式,每個章節不是單純的程式片段介紹,而是可以前後貫穿、相互呼應的內容。

記住!本書開宗名義就強調是Agile,所以為了落實敏捷開發的精神,從分析階段開始便以反覆(Iteration)進行,手繪幾張頁面流程圖便開始進行程式撰寫,而不拘泥在以往的UML標準圖例上,這夠敏捷了吧!

範例搭配敏捷製程,更突顯快速開發特性
作者設計了8個任務個別包括了數個Iteration,功能涵蓋商品管理、型錄瀏覽、購物車機制、結帳流程及系統管理等,讓讀者從學習建立RoR應用程式及資料庫設定開始,一步步了解如何利用建立Model的方式,配合Database Migration來建立資料庫結構,並透過scaffold來快速產生資料維護頁面。每個章節都詳細說明整個程式細節及建置步驟,方便讀者學習。作者在程式中亦頗具巧思地設計實作上的錯誤及陷阱,讓讀者加深學習印象。

每個Iteration之間以漸進方式強化範例的功能,Iteration的設計也是作者精心策畫,每個Iteration的結束都產出完整可執行的功能。而在這些實作中,亦提到中途如有需求變更時,實作面的因應做法為何,這也是我們平時在專案執行時常常遇到的,像是新增資料欄位、調整版面設計。傳統的程式語言開發也許會因架構調整而耗工費時,在這裡會讓你感受到RoR敏捷的威力。

在透過程式範例認識RoR之後,第三部分則回頭來探討Rails框架的技術細節。此部分的章節便按部就班地介紹Rails架構,為你建立更紮實的理論基礎。除了框架基本精神以及MVC各元件的撰寫及設計方式外,在Web Services的應用、系統安全性以及測試與部署方式亦有專章討論,這些都是平常程式開發人員所容易疏忽的。

章節編排適合初學者閱讀,著重實作範例
也許你在閱讀本書時對Ruby的語法十分陌生,對於書中的範例程式一時還無法完全掌握,你可以同時參考附錄中的Ruby專章,補足你對Ruby程式語言的缺憾。另外書中也收錄了組態參數的設定方式、本書範例的完整原始碼及相關資源列表等。

對於準備學習Ruby on Rails技術的程式開發人員,《Agile Web Development with Rails》是不錯的選擇。你可以將本書視為Ruby on Rails開發的最佳實踐(Best Practices)書籍,從無到有地建立一個實用參考價值頗高的網站,可以讓你紮實地打好基礎,也足以讓你掌握Ruby on Rails的重要特性,讓你一書到位。若你想針對Ruby語言進行更深入的研究,不只是Web方面的應用,像是Pragmatic出版的《Programming Ruby》、O'Reilly的《Ruby in a Nutshell》、《Ruby Cookbook》都是你可以搭配閱讀的經典。


《作者簡介》陳宏一
交通大學資訊管理研究所碩士。目前任職於某數位行銷公司技術經理,曾任職於南亞科技資訊部工程師、資迅人網路研發副理、艾群科技產品研發部經理,專精於OOAD、 J2EE 相關技術、Open Source、資料庫設計、軟體開發流程及專案管理等;取得SCJP、SCWCD、SCJD、SCEA、ITIL等認證。曾經歷大型社群及電子商務網站、 WAP/3G行動加值服務、CTI/CRM客服系統架構規畫設計等。

熱門新聞

Advertisement