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