石 研;馮阿芳;張錫琨
摘要:本文介紹敏捷方法的目標(biāo)、核心理念特點(diǎn)、基本原則和適用范圍。
Abstract: The thesis introduces the goal、features of the core concept、basic principles of the agile methodology and the scope of its application.
關(guān)鍵詞:軟件開(kāi)發(fā)方法;敏捷方法;指導(dǎo)原則
Key word: software development; agile methodology;guiding principle
中圖分類(lèi)號(hào):TP31 文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1006-4311(2010)04-0052-01
0引言
自從20世紀(jì)70年代,軟件工程產(chǎn)生以來(lái),人們提出了很多軟件開(kāi)發(fā)方法,這些方法大都強(qiáng)調(diào)軟件開(kāi)發(fā)過(guò)程中必須遵守某些嚴(yán)格的規(guī)定。而且隨著技術(shù)的發(fā)展,提出在對(duì)需求和技術(shù)不斷變化的情況下實(shí)現(xiàn)快速的軟件開(kāi)發(fā)的要求。在20世紀(jì)90年代后期,一些軟件開(kāi)發(fā)人員開(kāi)始強(qiáng)調(diào)靈活性在軟件開(kāi)發(fā)過(guò)程中所發(fā)揮的作用,提出一系列新的軟件開(kāi)發(fā)方法,這就是敏捷方法?!懊艚蓍_(kāi)發(fā)”被認(rèn)為是軟件工程的一個(gè)重要的發(fā)展。它強(qiáng)調(diào)軟件開(kāi)發(fā)應(yīng)當(dāng)是能夠?qū)ξ磥?lái)可能出現(xiàn)的變化和不確定性作出全面反應(yīng)的。
1敏捷方法
敏捷開(kāi)發(fā)的總體目標(biāo)是通過(guò)“盡可能早地、持續(xù)地對(duì)有價(jià)值軟件的交付”,使客戶(hù)滿(mǎn)意。很多客戶(hù)都有一些隨著時(shí)間變化的業(yè)務(wù)需求,不僅表現(xiàn)在新發(fā)現(xiàn)的需求上,也表現(xiàn)在對(duì)市場(chǎng)變化做出反應(yīng)的需求上。通過(guò)在軟件開(kāi)發(fā)過(guò)程中加入靈活性,敏捷方法可以使用戶(hù)能夠在開(kāi)發(fā)周期的后期增加或改變需求。
敏捷方法主要是用于需求模糊或快速變化的前提下,小型開(kāi)發(fā)團(tuán)隊(duì)的軟件開(kāi)發(fā)活動(dòng)。敏捷方法能夠在保證軟件開(kāi)發(fā)成功的前提下,盡量減少開(kāi)發(fā)過(guò)程中的活動(dòng)和紙品,做到“剛剛好”,從而在滿(mǎn)足所需的軟件質(zhì)量要求的前提下,力求提高開(kāi)發(fā)的效率。
敏捷方法提出了12個(gè)指導(dǎo)原則:(1)在快速不斷地交付用戶(hù)可運(yùn)行的軟件的過(guò)程中,把使用戶(hù)滿(mǎn)意放在第一位。(2)以積極的態(tài)度對(duì)待需求的變化。敏捷方法的過(guò)程緊密?chē)@變化展開(kāi)并利用變化來(lái)實(shí)現(xiàn)客戶(hù)的競(jìng)爭(zhēng)優(yōu)勢(shì)。(3)以幾周到幾個(gè)月為周期,盡快、不斷地交付可運(yùn)行的軟件供用戶(hù)使用。(4)在項(xiàng)目過(guò)程中,業(yè)務(wù)人員和開(kāi)發(fā)人員最好能一起工作。(5)以積極向上的員工為中心建立項(xiàng)目組,給予他們所需的環(huán)境和支持,對(duì)他們的工作予以充分的信任。(6)在項(xiàng)目組中,最有用、最有效的信息溝通手段是面對(duì)面的交談。(7)項(xiàng)目進(jìn)度度量的首要依據(jù)是可運(yùn)行的軟件。(8)敏捷方法高度重視可持續(xù)開(kāi)發(fā)。項(xiàng)目發(fā)起者、開(kāi)發(fā)者和用戶(hù)應(yīng)能始終保持步調(diào)一致。(9)應(yīng)時(shí)刻關(guān)注技術(shù)上的精益求精和設(shè)計(jì)的合理,這樣能提高軟件的快速應(yīng)變力。(10)簡(jiǎn)單化(盡可能減少不必要工作的藝術(shù))是基本原則。(11)最好的框架結(jié)構(gòu)、需求和設(shè)計(jì)產(chǎn)生于組織的項(xiàng)目組。(12)項(xiàng)目組要定期對(duì)其運(yùn)作方面進(jìn)行反思,提出改進(jìn)意見(jiàn),并相應(yīng)進(jìn)行細(xì)調(diào)。
敏捷方法有很多具體的方法,常用的一些具體的敏捷方法有:
極限編程:它是描述敏捷方法最普遍的概念,激發(fā)軟件人員創(chuàng)造性,是管理負(fù)擔(dān)最小的一組技術(shù)。極限編程實(shí)際上是敏捷過(guò)程的一種具體形式,是提供敏捷方法最一般原則的指導(dǎo)方針。
水晶法:它是基于“每一個(gè)不同項(xiàng)目都需要不同的策略、約定和方法論?!崩砟畹囊唤M方法。人對(duì)于軟件質(zhì)量有重要影響,因而隨著項(xiàng)目質(zhì)量和軟件開(kāi)發(fā)人員素質(zhì)的提高,項(xiàng)目和過(guò)程的質(zhì)量也隨之提高。
并列爭(zhēng)球法:它是用迭代的方法,其中把每30天一次的迭代稱(chēng)為一個(gè)“沖刺”,并按需求的優(yōu)先級(jí)來(lái)實(shí)現(xiàn)產(chǎn)品。多個(gè)自組織和自治小組并行地遞增實(shí)現(xiàn)產(chǎn)品。協(xié)調(diào)是通過(guò)簡(jiǎn)短的日常會(huì)議來(lái)進(jìn)行的。
自適應(yīng)軟件開(kāi)發(fā):在開(kāi)發(fā)過(guò)程中,有一個(gè)使命作為指導(dǎo),它設(shè)立項(xiàng)目的目標(biāo),但是并不描述如何到達(dá)這個(gè)目標(biāo)。特征被視作客戶(hù)價(jià)值的關(guān)鍵點(diǎn),因此項(xiàng)目是圍繞著構(gòu)造的構(gòu)件來(lái)組織并實(shí)現(xiàn)特征的。過(guò)程中的迭代是很重要的,因此“重做”與“做”同樣關(guān)鍵,變化包含其中。變化不被視作改正,而是被視作對(duì)軟件開(kāi)發(fā)實(shí)際情況的調(diào)整。確定的交付時(shí)間迫使軟件開(kāi)發(fā)人員認(rèn)真考慮每一個(gè)生產(chǎn)版本的關(guān)鍵需求,同時(shí)風(fēng)險(xiǎn)也包含其中,它使得開(kāi)發(fā)人員首先跟蹤最艱難的問(wèn)題。
敏捷方法的基本原則包括:
客戶(hù)參與:客戶(hù)應(yīng)該在開(kāi)發(fā)過(guò)程中始終緊密參與其中。他們的作用是提供和排序新系統(tǒng)的需求并評(píng)估系統(tǒng)的反復(fù)。
增量式移交:軟件以增量的方式進(jìn)行開(kāi)發(fā),客戶(hù)指定在每個(gè)增量中將要包含的需求。
人非過(guò)程:開(kāi)發(fā)團(tuán)隊(duì)的技術(shù)應(yīng)該得到承認(rèn)和發(fā)揚(yáng)。團(tuán)隊(duì)成員應(yīng)該保持他們自己的工作風(fēng)格,不落俗套。
接受變更:預(yù)計(jì)系統(tǒng)需求的變更,并設(shè)計(jì)系統(tǒng)使之適應(yīng)這些變更。
保持簡(jiǎn)單性:致力于所開(kāi)發(fā)的軟件和開(kāi)發(fā)過(guò)程的簡(jiǎn)單性。只要可能,就積極地去降低系統(tǒng)中的復(fù)雜性。
在實(shí)踐中,敏捷方法所給予的基本原則有時(shí)難于付諸實(shí)施,主要有下面一些原因:(1)雖然讓客戶(hù)參與到軟件開(kāi)發(fā)過(guò)程中來(lái)的想法很吸引人,但是它的成功性依賴(lài)于有人愿意加入進(jìn)來(lái),并且肯花時(shí)間與開(kāi)發(fā)團(tuán)隊(duì)溝通,而且此人還必須能夠代表所有的系統(tǒng)相關(guān)人員。因此,經(jīng)常是客戶(hù)代表屈從于其他壓力而不能全身心地投入到軟件開(kāi)發(fā)中來(lái)。(2)開(kāi)發(fā)團(tuán)隊(duì)成員個(gè)人可能從性格上不太適應(yīng)激烈的投入,而這正是敏捷方法的典型特征,因此他們可能做不到與其他成員良好溝通。(3)對(duì)變更做出優(yōu)先級(jí)排序可能是極端困難的,尤其是對(duì)那些有很多參與者的系統(tǒng),因?yàn)槊總€(gè)參與者會(huì)給出不同的優(yōu)先級(jí)。(4)維護(hù)簡(jiǎn)單性需要額外的工作。迫于移交時(shí)間表的壓力,團(tuán)隊(duì)成員會(huì)沒(méi)有時(shí)間執(zhí)行應(yīng)該有的系統(tǒng)簡(jiǎn)化過(guò)程。
此外,軟件需求文檔通常是客戶(hù)和軟件開(kāi)發(fā)組織之間合同的一部分內(nèi)容,而增量描述是敏捷方法的固有內(nèi)容,因此為此類(lèi)開(kāi)發(fā)寫(xiě)合同通常比較困難。
敏捷方法對(duì)適用范圍也有相應(yīng)的要求,必須滿(mǎn)足下列條件才適用:需求不確定并且極易發(fā)生變更的場(chǎng)合。由富有責(zé)任感并積極向上的開(kāi)發(fā)人員組成的較小的開(kāi)發(fā)團(tuán)隊(duì)。用戶(hù)容易溝通并且能夠參與項(xiàng)目開(kāi)發(fā),開(kāi)發(fā)范圍不被限定。
2結(jié)束語(yǔ)
作為一種新出現(xiàn)軟件生命周期模型,敏捷方法也不是萬(wàn)能的,也具有局限性,那就是適合小規(guī)模的項(xiàng)目。在進(jìn)行具體的軟件系統(tǒng)的開(kāi)發(fā)時(shí),每個(gè)軟件開(kāi)發(fā)組織都需要為它的組織、管理、員工和軟件過(guò)程確定合適的生命周期模型,而且還要根據(jù)當(dāng)前開(kāi)發(fā)的具體的軟件產(chǎn)品的特點(diǎn)適當(dāng)?shù)馗淖兡P?一般這樣的模型應(yīng)結(jié)合各種生命周期模型的適當(dāng)特點(diǎn),揚(yáng)長(zhǎng)避短。
參考文獻(xiàn):
[1][美]Shari Lawrence Pfleeger,[加]Joanne M.Atlee.軟件工程[M].楊衛(wèi)東,譯.第三版.北京:人民郵電出版社,2007.
[2]梁穎紅.軟件工程理論與實(shí)踐[M].哈爾濱工業(yè)大學(xué)出版社,2008.