□ 鐘宇霆
軟件開發(fā)是廣電新媒體業(yè)務(wù)的重要組成部分,傳統(tǒng)的瀑布式軟件開發(fā)方法希望通過借鑒成熟的建筑行業(yè)的做法,采用預(yù)先大規(guī)模的架構(gòu)設(shè)計,對系統(tǒng)做好明確的分割,繼而進行不同層次的設(shè)計,直到所有可以預(yù)見到的需求都得以滿足,然后才開始進行的代碼的編寫和構(gòu)建。采用這種方法生產(chǎn)出來的軟件交付工期很長,適應(yīng)性很差,除了少數(shù)特殊行業(yè)之外基本已經(jīng)被市場所淘汰,現(xiàn)已無法滿足常見的開發(fā)需要。敏捷開發(fā)是一種從1990年代開始逐漸引起廣泛關(guān)注的新型軟件開發(fā)方法,是一種應(yīng)對快速變化的需求的軟件開發(fā)能力。它描述了一套軟件開發(fā)的價值和原則,在這些開發(fā)中,需求和解決方案皆通過自組織跨功能團隊達成。敏捷軟件開發(fā)主張適度的計劃、進化開發(fā)、提前交付與持續(xù)改進,并且鼓勵快速與靈活地面對開發(fā)與變更,使用敏捷開發(fā)方法可以更好地滿足日常的廣電新媒體業(yè)務(wù)開發(fā)需要。
敏捷開發(fā)體系強調(diào)以用戶需求演化為核心,采用持續(xù)迭代、循序漸進的方法進行項目研發(fā)。在敏捷開發(fā)體系中,軟件項目在初期規(guī)劃構(gòu)建時就切分成為多個子項目,各個子項目的成果均經(jīng)過測試,具備可視、可集成和可運行使用的特征。其主要特點如下:
軟件研發(fā)經(jīng)常受到由W.W.Royce 在1970年最初提出的瀑布式開發(fā)方法影響,這種開發(fā)方法是最典型的預(yù)見性的方法,嚴格遵循預(yù)先計劃的需求分析、設(shè)計、編碼、集成、測試、維護的步驟順序進行。在進入正式開發(fā)之前必須通過計劃的需求分析把項目的全部功能和模塊規(guī)劃好,這樣就容易讓非軟件核心運行功能和支撐業(yè)務(wù)運營的功能需求分析在前期占用過多的時間;而敏捷開發(fā)體系主張簡單,從支撐業(yè)務(wù)運營的功能和軟件核心運行的功能作為核心需求,不需要過分構(gòu)建軟件,只基于滿足業(yè)務(wù)運轉(zhuǎn)的最低功能實現(xiàn),從而滿足快速上線的要求。
在現(xiàn)實開發(fā)工作中,人們對需求的理解也是不斷變化的。在項目進行過程中,會不斷有新人加入,也會有舊人離開,同時,需求也隨著項目不斷推進而有所變化。因此,項目的目標和成功標準也會發(fā)生變化。這就意味著項目環(huán)境要隨著變化而變化,敏捷開發(fā)體系正是基于這個特點而被應(yīng)用。
與瀑布式開發(fā)方法相比,敏捷開發(fā)體系不需要在一開始的時候就建模好一切相關(guān)的細節(jié)。只需要開發(fā)一個小的模型,打下基礎(chǔ),然后慢慢改進模型,或是在不需要的時候調(diào)整或重構(gòu)這個模型,采用一個基礎(chǔ)的版本進行遞增的迭代,這樣就容易開發(fā)出滿足需要的軟件,投入最基本的時間、金錢、設(shè)備等各種資源,使得投資收益最大化。
開發(fā)軟件需要使用多種模型,因為每種模型只能描述軟件的單個方面。敏捷開發(fā)體系僅挑選有需要的模型進行軟件描述,不只是簡單地把源代碼、開發(fā)文檔、設(shè)計文檔等盡可能詳細地描述,而是為了保證項目的順利進行,使其他人能夠操作、維護、改進系統(tǒng),所以,敏捷開發(fā)體系使用能夠描述工作的模型即可。
從開始采取行動,到獲得行動的反饋,二者之間的時間至關(guān)緊要。和團隊一起開發(fā)模型,想法可以立刻獲得反饋,特別是采用了敏捷開發(fā)體系以后,通過項目會議、迭代計劃、每日站會、會議評審和項目回顧的方法,能夠建立起一套快速上線、快速迭代、快速滿足需求的方法,實現(xiàn)以有效的方式,制造出滿足需要的軟件,而不是制造無關(guān)的文檔,無關(guān)地用于管理的工件。
在廣電新媒體日常應(yīng)用中,敏捷方法很多,包括Scrum、極限編程、功能驅(qū)動開發(fā)以及統(tǒng)一過程(RUP)等,這些方法本質(zhì)上是一樣的。敏捷開發(fā)小組主要的工作方式可以歸納為:項目會議、迭代計劃、每日站會、會議評審和項目回顧。
項目會議目的是確定實現(xiàn)產(chǎn)品待辦列表中要達到的項目目標的最低開發(fā)需求,它可以為開發(fā)團隊提供指引,使得團隊明確為什么要構(gòu)建增量。項目目標也在項目會議中確定,它為開發(fā)團隊在項目中所實現(xiàn)的功能具有指導(dǎo)意義和留有一定的彈性。在項目會議中選定的產(chǎn)品待辦列表能夠提供連貫一致的功能,也是項目目標的方向。
項目會議要求開發(fā)團隊必須在工作中時刻謹記項目目標。為了達成項目目標,需要實現(xiàn)相應(yīng)的功能和實施所需的技術(shù)。如果所需工作和預(yù)期不同,開發(fā)團隊需要與產(chǎn)品負責(zé)人溝通協(xié)商項目待辦列表的范圍,以確保能夠在最短時間內(nèi)交付一個最低可以使用的版本。
完成項目會議就相當于確定了項目目標和開發(fā)內(nèi)容,開發(fā)團隊就可以根據(jù)目標劃分迭代計劃了。在敏捷項目中,總體上并沒有什么上游階段、下游階段,可以根據(jù)需要定義開發(fā)過程在初始階段可以有一個簡短的分析、建模、設(shè)計,但只要項目真正開始,每次迭代都會做同樣的工作(分析、設(shè)計、編碼、測試等等)。迭代是受時間框限制的,也就是說即使放棄一些功能,也必須結(jié)束迭代。時間框一般很短,大部分是2—4 周,在Scrum 中采用的是30 個日歷天,也就是4 周。迭代的時間長度一般是固定的,但也有報告說,有的小組在迭代開始的時候選擇合適的時間長度。
每日站會是開發(fā)團隊的一個以15分鐘為限的事件。每日站會在項目進行的每一天都舉行。在每日站會上,開發(fā)團隊為接下來的24 小時的工作制定計劃。通過檢視上次每日站會以來的工作和預(yù)測即將到來的工作來優(yōu)化團隊協(xié)作和性能。每日站會在同一時間同一地點舉行,以便降低復(fù)雜性。開發(fā)團隊借由每日站會來檢視完成項目目標的進度,并檢視完成項目待辦列表的工作進度趨勢。每日站會優(yōu)化了開發(fā)團隊達成項目目標的可能性。每天,開發(fā)團隊應(yīng)該知道如何以自組織團隊來協(xié)同工作以達成項目目標,并在項目結(jié)束時開發(fā)出預(yù)期中的增量。
會議的結(jié)構(gòu)由開發(fā)團隊設(shè)定。如果會議專注于達成項目目標的進展,開發(fā)團隊可以采用不同的方式進行。一些開發(fā)團隊會以問題為導(dǎo)向來開會,有些開發(fā)團隊會基于更多的討論來開會。例如:昨天,我為幫助開發(fā)團隊達成項目目標做了什么?今天,我為幫助開發(fā)團隊達成項目目標準備做什么?是否有任何障礙在阻礙我或開發(fā)團隊達成項目目標?
開發(fā)團隊或者開發(fā)團隊成員通常會在每日站會后立即聚到一起進行更詳細的討論,或者為項目中剩余的工作進行調(diào)整或重新計劃。每日站會可以增進交流溝通、減少其他會議、發(fā)現(xiàn)開發(fā)過程中需要移除的障礙、突顯并促進快速地做決策、提高開發(fā)團隊的認知程度。這是一個進行檢視與適應(yīng)的關(guān)鍵會議。
評審會議一般在項目快結(jié)束時進行,用以檢查所交付的產(chǎn)品迭代并按需調(diào)整產(chǎn)品待辦列表。在會議評審中,項目團隊和干系人協(xié)同討論在這次項目中所完成的工作。根據(jù)完成情況和項目期間產(chǎn)品待辦列表的變化,所有參會人員協(xié)同討論接下來可能要做的事情來優(yōu)化價值。這個會議目的是為了獲取演示迭代版本的反饋并促進合作。對于長度為一個月的項目來說,評審會議時間最長不超過4 小時。對于較短的項目來說,會議時間通常會縮短。
項目回顧會議是開發(fā)團隊檢視自身并創(chuàng)建下一個項目改進計劃的機會。
回顧會議發(fā)生在項目評審會議結(jié)束之后,下個項目計劃會議之前。對于長度為一個月的項目來說,回顧會議時間最長不超過3 小時。對于較短的項目來說,會議時間通常會縮短。
項目回顧會議的目的在于檢視前一個項目中關(guān)于人、關(guān)系、過程和工具的情況如何,找出并加以排序做得好的和潛在需要改進的主要方面,同時制定改進開發(fā)團隊工作方式的計劃。
在項目回顧會議結(jié)束時,開發(fā)團隊應(yīng)該明確接下來的項目中需要實施的改進,在下一個項目中實施這些改進是基于開發(fā)團隊對自身的檢視而做出的適當調(diào)整。
敏捷開發(fā)體系是一個非常簡單的開發(fā)流程,也是滿足當前開發(fā)環(huán)境的一個總結(jié),通過這套開發(fā)方法,可以在需求迅速變化時實施產(chǎn)品迭代,改善團隊交流并實現(xiàn)最優(yōu)化合作,達到最大化生產(chǎn)效率。在廣電新媒體業(yè)務(wù)中實施敏捷開發(fā)體系,能夠很好地保障研發(fā)的持續(xù)交付和效率,還能解決研發(fā)團隊關(guān)于軟件研發(fā)的工作分配和積極性調(diào)動,為新媒體的應(yīng)用研發(fā)提供了一個很好的解決辦法。