ML(Unified Modeling Language)在1991年成為標準的物件導向分析設計語言,因此終結了纏鬥多年的物件導向開發方法之戰。不過,UML並不完整,事實上,UML三位創辦人當時暫時切除了提出統一開發程序的事務,才讓UML順利產出。由此可以想見,提出統一的「開發程序」(development process),遠比提出統一的「建模語言」(modeling language),要來得困難多了。

至此,UML非常順利地站穩標準的、統一的建模語言的地位,而被分割出去的開發程序則顛沛流離,一直到近來,似乎終於在「敏捷方法」(Agile Method)之地,開出一片小黃花。

再多說一點,脫離了UML之後,開發流程後續的發展為何?UML三位創辦人正式推出了UML之後,其實後續還是提出了一套整合的開發流程,也就是鼎鼎有名的RUP(Rational Unified Process)。當時UML三位大師所在的公司是Rational,也就是RUP中R的由來,只是後來,Rational被IBM併購了,不過從RUP的名稱上頭,可以想見,當時這些大師們企圖將RUP打造成統一的開發程序。

RUP是一套完善且龐大的開發程序,對於大型專案可能很有貢獻。但是,對於中小型專案而言,可能過於沉重且昂貴。因此,RUP的命運並不如UML這般光采。

後來,開始出現一些簡化版的RUP,諸如:AUP(Agile Unified Process)、或者EssUP(Essential Unified Process)等等的輕量級開發程序。AUP是簡化版的RUP,而EssUP則是UML創始人之一Ivar Jacobson彙總了RUP、CMMI和敏捷式開發方法三者特色後提出的軟體開發程序。

由此現象,我們可以發現,輕量級的、敏捷式(agile)的開發程序,逐步受到重視,開始嶄露頭角。

就目前來說,敏捷式開發程序中,最受歡迎的支派,就是「Scrum」了。所以,我們就不去學厚重的RUP,也省去經歷其他敏捷式開發程序的麻煩,直接進入最受歡迎的Scrum,做為前進敏捷開發的第一步吧!

三四三話Scrum
如果,你跟我一樣想要用最迅速、敏捷的方式來認識Scrum,我自己慣用的口訣是「三四三」。其實,Scrum敏捷開發只是一個簡單的框架(Framework),核心元素包含有:3種角色、4個會議、3項產出。

● 3種角色:Scrum教練、產品負責人和團隊。

● 4個會議:衝刺規畫會議、每日站立會議、衝刺審查會議以及衝刺回顧會議。

● 3項產出:產品待辦清單、衝刺待辦清單和燃盡表。

所以,我經常用「三四三」這個口訣,來記憶Scrum框架的核心元素,與你分享之。

Scrum的3種角色
在Scrum敏捷開發中,提出了3種主要的角色,分別說明如下:

● 產品負責人(Product Owner):其實,產品負責人這個角色有點像是客戶代表。他會站在比較接近客戶的立場,去設定產品待辦項目的優先順序,以及為團隊說明客戶的需求。

● Scrum教練(Scrum Master):顧名思義,Scrum教練必須熟知整個Scrum敏捷開發,以便能夠協助產品負責人和團隊的運作。

● 團隊(Team):就是一般的開發團隊,通常是跨職能的組成,也就是團隊成員混合著架構師、分析師、設計師、程序員、測試員等等。

Scrum的4個會議
在每一個衝刺(Sprint)期間,除了團隊需要實際執行分內的任務外,Scrum還定義了4個重要的會議,分別簡單敘述如下:

● 衝刺計畫會議(Sprint Planning Meeting):每個衝刺期間的一開始必須先舉行衝刺計畫會議,主要用來決定該衝刺期間的待辦項目,以及團隊的衝刺任務。

● 每日站立會議(Daily Standup Meeting):衝刺期間的每一天早上,都要執行15分鐘的站立會議,主要可以用來了解團隊的工作執行狀況。

● 衝刺審查會議(Sprint Review Meeting):每個衝刺的最後一天會先執行衝刺審查會議,隨後執行衝刺回顧會議。在衝刺審查會議中,主要用來展示並了解該衝刺的待辦項目達成狀況。

● 衝刺回顧會議(Sprint Retrospective Meeting):相較之下,前述的衝刺審查會議,其討論的主題鎖定在「產品」上頭。而此處的衝刺回顧會議,其討論的主題則聚焦在團隊的「開發程序」上頭,主要用來討論並調整下一期衝刺的開發程序。

在物件導向技術中,建議採用反覆式的開發方式,而不是過去的瀑布式開發方式。

簡單來說,所謂的反覆式的開發方式是指,在一小段的反覆期中,執行了分析、設計、實作、測試等等的開發步驟,以便迅速地修訂錯誤。

而在Scrum敏捷開發中,同樣採用反覆式的開發方式。不過,在物件導向技術中,稱為這樣的一小段時期為一個「反覆」(Iteration, 也有另一個常見的譯詞為「循環」)。到了Scrum敏捷開發中,則稱為一個「衝刺」(Sprint, Sprint Iteration)。

Scrum的3項產出
在Scrum敏捷開發中,一共有3項重要的產出,分別簡述如下:

● 產品待辦清單(Product Backlog):其實,產品待辦清單的概念很簡單,它主要包含了一般常見的功能性需求和非功能性需求;不過,比較特別的是,它還包含了技術團隊提出的需求,而不只是照顧到客戶的需求而已。
也因此,Scrum敏捷開發特別採用了「產品待辦清單」(Product Backlog)的字眼,用來跟傳統作法上只照顧客戶的系統需求,做字面上的分野。

● 衝刺待辦清單(Sprint Backlog):衝刺待辦清單中的待辦項目,其實是產品待辦清單的子集。在每一次的衝刺規畫會議中,才會開會決定要處理哪些待辦項目。

● 燃盡圖(Burndown Chart):簡單來說,我們可以繪製燃盡圖,來呈現一個時間區段中,剩餘的工作量。所以,有些文章或書籍中,也將「Burndown Chart」中譯為「剩餘工作圖」或者是「剩餘時間圖」,原因正是如此。

對Scrum的「三四三」有了初步的概念以後,接下來在這個系列文章中,將模擬一個五人團隊如何使用Scrum敏捷開發基金系統作為例子,來介紹Scrum敏捷開發的核心元素,並且結合UML的使用,讓你可以看了立即上手。

Scrum敏捷開發是一種「增值流程」(value-up process)講具體些,就是每一次的「衝刺」都會具體實現「顧客價值」(business value),說更加具體些,每一次的衝刺都會產出可以執行的程式碼,而且這些可執行碼能夠提供給顧客滿意的軟體服務。

但是,萬丈高樓平地起,住戶看不到的地基不重要嗎?顧客摸不著的基礎架構不重要嗎?所以呢,在開始傾全力往前衝刺之時,我們得先執行一個「衝刺0」的階段,這個階段主要目標就是在打好地基,做好基礎建設及規畫,下一回將從這個打地基工作開始談起。

作者簡介:
邱郁惠
研究UML/OOAD十餘年,創辦UML Blog(www.umltw.com)推廣UML,出版多本UML/OOAD專業書籍,擁有OCUP/UML三級認證、PMP、ITIL、OOAD認證。目前為自由工作者,專職於企業內訓、專案輔導、自辦課程、專欄寫作。

作者簡介:
施奇宏
投身軟體開發領域逾15年,任職於金融產業,有豐富金融IT實戰開發經驗。對於Java、.NET、C++等都有涉獵。最近著迷於軟體工程,尤其是測試驅動開發(TDD)及領域驅動設計(DDD)。

熱門新聞

Advertisement