軟件過程管理論文_第1頁
軟件過程管理論文_第2頁
軟件過程管理論文_第3頁
軟件過程管理論文_第4頁
軟件過程管理論文_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、軟件過程管理課程總結(jié)報(bào)告:軟件過程管理綜述 本科生課程論文 Course Paper論文編號(hào) Paper No:1106010127撰寫日期 Date: 2014-04-25敏捷軟件開發(fā)Agile Software Development姓 名 孫亞磊(計(jì)算機(jī)與信息學(xué)院 11級(jí)計(jì)算機(jī)-1 1106010127)課程名稱 Course:軟件過程管理課程性質(zhì) Course No:專業(yè)選修課學(xué) 分 數(shù) Credits:2主講教師 Instructor:戚榮志. Rongzhi QI開設(shè)學(xué)院 College:計(jì)算機(jī)與信息學(xué)院 Computers & Information Engineerin

2、g開設(shè)時(shí)間 Semester:20132014學(xué)年第二學(xué)期 Spring, 2014河 海 大 學(xué)敏捷軟件開發(fā)摘要:敏捷開發(fā)是一種以人為主體,能夠很好適應(yīng)需求變化的軟件開發(fā)能力, 它 強(qiáng)調(diào)團(tuán)隊(duì)的交流、客戶的合作、應(yīng)對(duì)需求的變化以及迭代交付的開發(fā)方法。 它適用于規(guī)模小、進(jìn)度緊、需求變化大、質(zhì)量要求高的項(xiàng)目,希望以最高 的效率和質(zhì)量來解決用戶目前的問題,在短期和長(zhǎng)期利益之間獲得平衡。關(guān)鍵詞:敏捷開發(fā) 極限編程 敏捷開發(fā)原則 敏捷開發(fā)價(jià)值觀Agile Software DevelopmentAbstract: Agile development is a human body, can be wel

3、l adapted to the changing needs of the software development ability, development method of delivery whichemphasizes the team communication, customer cooperation, cope with changeand iteration. It is suitable for small scale, schedule, changes in demand for large,high quality requirements of the proj

4、ect, hope to solve user problems with the highest efficiency and quality, achieve a balance between short-term and long-term interests.Keywords: Agile development extreme programming agile development principles Agile development values1、 引言 敏捷軟件開發(fā)又稱敏捷開發(fā),是一種從1990年代開始逐漸引起廣泛關(guān)注的一些新型軟件開發(fā)方法,是一種應(yīng)對(duì)快速變化的需求的

5、一種軟件開發(fā)能力。它們的具體名稱、理念、過程、術(shù)語都不盡相同,相對(duì)于“非敏捷”,更強(qiáng)調(diào)程序員團(tuán)隊(duì)與業(yè)務(wù)專家之間的緊密協(xié)作、面對(duì)面的溝通(認(rèn)為比書面的文檔更有效)、頻繁交付新的軟件版本、緊湊而自我組織型的團(tuán)隊(duì)、能夠很好地適應(yīng)需求變化的代碼編寫和團(tuán)隊(duì)組織方法,也更注重軟件開發(fā)中人的作用。2、 敏捷實(shí)踐 2.1、敏捷聯(lián)盟宣言 2001年初,由于發(fā)現(xiàn)許多公司陷入了不斷增長(zhǎng)的過程的泥潭,一批業(yè)界專家聚在一起概括出了一些可以讓軟件開發(fā)具有快速工作、響應(yīng)變化能力的價(jià)值觀和原則,他們被稱為敏捷聯(lián)盟。之后他們創(chuàng)造出了一份價(jià)值觀聲明,這也就是敏捷聯(lián)盟宣言(The Manifesto of the Agile Al

6、liance)。1、 個(gè)體和交互勝過過程和工具 優(yōu)秀的團(tuán)隊(duì)成員是軟件開發(fā)項(xiàng)目獲得成功的最重要因素;當(dāng)然,不好的過程和工具也會(huì)使最優(yōu)秀的團(tuán)員無法發(fā)揮作用。 一個(gè)優(yōu)秀的團(tuán)隊(duì)成員可能只是一個(gè)平均水平的程序員,但是卻能夠很好地和他人合作。合作、溝通和交互能力比單純的編程能力更重要。一個(gè)由平均水平程序員組成的團(tuán)隊(duì),如果他們有很好的交互溝通能力,將比那些有高水平的程序員但成員之間不能進(jìn)行良好交流的的團(tuán)隊(duì)更能獲得成功。 正確的做法是,首先致力于構(gòu)建軟件開發(fā)團(tuán)隊(duì)包括成員和交互方式,然后在根據(jù)需要為團(tuán)隊(duì)配置項(xiàng)目環(huán)境。2、 可以工作的軟件勝過面面俱到的文檔 軟件開發(fā)的主要目標(biāo)是向用戶提供可以工作的軟件而不是文檔;

7、但是,完全沒有文檔的軟件也是一種災(zāi)難。開發(fā)人員應(yīng)該把主要的精力放在創(chuàng)建可工作的軟件上面,僅當(dāng)迫切需要并且有重大意義時(shí),才進(jìn)行文檔編制工作,而且所編制的內(nèi)部文檔應(yīng)該盡量簡(jiǎn)明扼要、主題突出。3、 客戶合作勝過合同談判 客戶通常不可能做到一次性地把他們的需求完整準(zhǔn)確的表述在合同中。能夠滿足客戶不斷變化的需求的切實(shí)可行的途徑是,開發(fā)團(tuán)隊(duì)與客戶密切合作,因此,能知道開發(fā)團(tuán)隊(duì)與客戶協(xié)同工作的合同才是最好的合同。4、 響應(yīng)變化勝過遵循計(jì)劃 軟件開發(fā)過程中總會(huì)有變化,這是客觀存在的現(xiàn)實(shí)。一個(gè)軟件過程必須反映現(xiàn)實(shí),因此,軟件過程有足夠的能力及時(shí)響應(yīng)變化。沒有計(jì)劃的項(xiàng)目也會(huì)因陷入混亂而失敗,關(guān)鍵是計(jì)劃必須有足夠的

8、靈活性和可塑性,在形式發(fā)生變化時(shí)能迅速調(diào)整,以適應(yīng)業(yè)務(wù)和技術(shù)等方面發(fā)生的變化1張海藩,軟件工程導(dǎo)論M,清華大學(xué)出版社,2008-02-01。2.2、敏捷宣言的原則1、 對(duì)我們而言,最重要的是通過盡早和不斷交付有價(jià)值的軟件滿足客戶需要。 敏捷實(shí)踐會(huì)盡早地、經(jīng)常性地進(jìn)行交付。努力在項(xiàng)目剛開始幾周就交付一個(gè)具有基本功能的系統(tǒng)。然后,努力堅(jiān)持每?jī)芍芫徒桓兑粋€(gè)功能漸增的系統(tǒng)2(美)Robert C·Martin,鄧輝譯.敏捷軟件開發(fā)原則、模式與實(shí)踐M.清華大學(xué)出版社,2003-09-01.3(美)Alistair Cockburn,蘇敬凱譯.敏捷軟件開發(fā)M.機(jī)械工業(yè)出版社,2008,1.4朱少

9、民,軟件過程管理M,清華大學(xué)出版社,2007-04。2、 我們歡迎需求的變化,即使在開發(fā)后期。敏捷過程能夠駕馭變化,保持客戶的競(jìng)爭(zhēng)優(yōu)勢(shì)。 這是一個(gè)關(guān)于態(tài)度的聲明,敏捷團(tuán)隊(duì)會(huì)非常努力的保持軟件結(jié)構(gòu)的靈活性,這樣當(dāng)需求變化時(shí),對(duì)于系統(tǒng)造成的影響是最小的。面對(duì)對(duì)象的原則和靈活性有助于我們維持這種靈活性。3、 經(jīng)常交付可以工作的軟件,從幾星期到幾個(gè)月,時(shí)間尺度越短越好 我們交付可以工作的軟件,并且盡早的、經(jīng)常性的交付它。我們不贊成交付大量的文檔或計(jì)劃。我們關(guān)注的目標(biāo)是交付滿足客戶需要的軟件。4、 業(yè)務(wù)人員和開發(fā)者應(yīng)該在整個(gè)項(xiàng)目過程中始終朝夕在一起工作。 為了能夠以敏捷的方式進(jìn)行開發(fā),我們要求開發(fā)員以及

10、客戶必須進(jìn)行頻繁的交互。5、 圍繞斗志高昂的人進(jìn)行軟件開發(fā),給開發(fā)者提供適宜的環(huán)境,滿足他們的需要,并相信他們能夠完成任務(wù)。 在敏捷項(xiàng)目中,人被認(rèn)為是取得項(xiàng)目成功最重要的因素,所有其他的因素都被認(rèn)為是次要的,并且當(dāng)它們對(duì)人有負(fù)面的影響時(shí),就要對(duì)他們進(jìn)行改變。6、 在開發(fā)小組中最有效率也最有效果的信息傳達(dá)方式是面對(duì)面的交談。7、 可以工作的軟件是進(jìn)度的主要度量標(biāo)準(zhǔn)。 敏捷項(xiàng)目通過度量當(dāng)前軟件滿足客戶需求的數(shù)量來度量開發(fā)進(jìn)度。8、 敏捷過程提倡可持續(xù)開發(fā)。出資人、開發(fā)人員和用戶應(yīng)該總是維持不變的節(jié)奏。 敏捷團(tuán)隊(duì)會(huì)測(cè)量自己的開發(fā)速度,他們不允許自己過于疲憊,他們的工作在一個(gè)可以使在整個(gè)項(xiàng)目開發(fā)期間保

11、持高質(zhì)量標(biāo)準(zhǔn)的速度上。9、 對(duì)卓越技術(shù)與良好設(shè)計(jì)的不斷追求將有助于提高敏捷性。 高的產(chǎn)品數(shù)量高的開發(fā)速度的關(guān)鍵,保持軟件盡可能的簡(jiǎn)潔。健壯是快速開發(fā)軟件的途徑。10、 簡(jiǎn)單盡可能減少工作量的藝術(shù)至關(guān)重要。 敏捷開發(fā)團(tuán)隊(duì)不會(huì)試圖去構(gòu)建那些華而不實(shí)的系統(tǒng),他們總是愿意采用和目標(biāo)一致的最簡(jiǎn)單的方法。11、 最好的架構(gòu)、需求和設(shè)計(jì)都源自自我組織的團(tuán)隊(duì)。 敏捷團(tuán)隊(duì)的團(tuán)員共同解決項(xiàng)目中所有方面的問題,每一個(gè)成員都有項(xiàng)目中所有方面的參與權(quán)利,整個(gè)團(tuán)隊(duì)共同承擔(dān)責(zé)任,每一個(gè)團(tuán)員都能影響他們。12、 每隔一定時(shí)間,團(tuán)隊(duì)都要總結(jié)如何更有效率,然后相應(yīng)地調(diào)整自己的行為。 敏捷團(tuán)隊(duì)會(huì)不斷地對(duì)團(tuán)隊(duì)的組織方式、規(guī)則、規(guī)范、

12、關(guān)系等進(jìn)行調(diào)整。敏捷團(tuán)隊(duì)知道所處的環(huán)境在不斷變化,并且知道保持團(tuán)隊(duì)的敏捷性就要隨環(huán)境一起變化。3、 極限編程3.1、極限編程 極限編程(Extreme programming,縮寫為XP),是一種軟件工程方法學(xué),是敏捷軟件開發(fā)中最富有成效的幾種方法學(xué)之一。如同其他敏捷方法學(xué),極限編程和傳統(tǒng)方法學(xué)的本質(zhì)不同在于它更強(qiáng)調(diào)可適應(yīng)性而不是可預(yù)測(cè)性。XP的支持者認(rèn)為軟件需求的不斷變化是很自然的現(xiàn)象,是軟件項(xiàng)目開發(fā)中不可避免的、也是應(yīng)該欣然接受的現(xiàn)象;他們相信,和傳統(tǒng)的在項(xiàng)目起始階段定義好所有需求再費(fèi)盡心思的控制變化的方法相比,有能力在項(xiàng)目周期的任何階段去適應(yīng)變化,將是更加現(xiàn)實(shí)更加有效的方法 。3.2、極

13、限編程的價(jià)值觀3.2.1、溝通 構(gòu)建一個(gè)軟件系統(tǒng)的基本任務(wù)之一就是與系統(tǒng)的開發(fā)者交流以明確系統(tǒng)的具體需求。在一些正式的軟件開發(fā)方法中,這一任務(wù)是通過文檔來完成的。極限編程技術(shù)可以被看成是在開發(fā)小組的成員之間迅速構(gòu)建與傳播制度上的認(rèn)識(shí)的一種方法。它的目標(biāo)是向所有開發(fā)人員提供一個(gè)對(duì)于系統(tǒng)的共享的視角,而這一視角又是與系統(tǒng)的最終用戶的視角相吻合的。為了達(dá)到這一目標(biāo),極限編程支持設(shè)計(jì)、抽象、還有用戶-程序員間交流的簡(jiǎn)單化,鼓勵(lì)經(jīng)常性的口頭交流與回饋。3.2.2、簡(jiǎn)單 極限編程鼓勵(lì)從最簡(jiǎn)單的解決方式入手再通過不斷重構(gòu)達(dá)到更好的結(jié)果。這種方法與傳統(tǒng)系統(tǒng)開發(fā)方式的不同之處在于,它只關(guān)注于對(duì)當(dāng)前的需求來進(jìn)行設(shè)

14、計(jì)、編碼,而不去理會(huì)明天、下周或者下個(gè)月會(huì)出現(xiàn)的需求。極限編程的擁護(hù)者承認(rèn)這樣的考慮是有缺陷的,即有時(shí)候在修改現(xiàn)有的系統(tǒng)以滿足未來的需求時(shí)不得不付出更多的努力。然而他們主張“不對(duì)將來可能的需求上投入精力”所得到的好處可以彌補(bǔ)這一點(diǎn),因?yàn)閷淼男枨笤谒麄冞€沒提出之前是很可能發(fā)生變化的。為了將來不確定的需求進(jìn)行設(shè)計(jì)以及編碼意味著在一些可能并不需要的方面浪費(fèi)資源。而與之前提到的“交流”這一價(jià)值相關(guān)聯(lián)來看,設(shè)計(jì)與代碼上的簡(jiǎn)化可以提高交流的質(zhì)量。一個(gè)由簡(jiǎn)單的編碼實(shí)現(xiàn)的簡(jiǎn)單的設(shè)計(jì)可以更加容易得被小組中的每個(gè)程序員所理解。3.2.3、反饋 在極限編程中,“反饋”是和系統(tǒng)開發(fā)的很多不同方面相關(guān)聯(lián)的。來自系統(tǒng)的

15、反饋:通過編寫單元測(cè)試,程序員能夠很直觀的得到經(jīng)過修改后系統(tǒng)的狀態(tài);來自客戶的反饋:功能性測(cè)試是由客戶還有測(cè)試人員來編寫的。他們能由此得知當(dāng)前系統(tǒng)的狀態(tài)。這樣的評(píng)審一般計(jì)劃2、3個(gè)禮拜進(jìn)行一次,這樣客戶可以非常容易的了解、掌控開發(fā)的進(jìn)度;來自小組的反饋:當(dāng)客戶帶著新需求來參加項(xiàng)目計(jì)劃會(huì)議時(shí),小組可以直接對(duì)于實(shí)現(xiàn)新需求所需要的時(shí)間進(jìn)行評(píng)估然后反饋給客戶。為了溝通系統(tǒng)中的缺陷,可以通過編寫單元測(cè)試,簡(jiǎn)單的證明某一段代碼存在問題。來自系統(tǒng)的直接反饋信息將提醒程序員注意這一部分。用戶可以以定義好的功能需求為依據(jù),對(duì)系統(tǒng)進(jìn)行周期性的測(cè)試。3.2.4、勇氣 極限編程理論中的“系統(tǒng)開發(fā)中的勇氣”最好用一組實(shí)

16、踐來詮釋。其中之一就是“只為今天的需求設(shè)計(jì)以及編碼,不要考慮明天”這條戒律。這是努力避免陷入設(shè)計(jì)的泥潭、而在其他問題上花費(fèi)了太多不必要的精力。勇氣使得開發(fā)人員在需要重構(gòu)他們的代碼時(shí)能感到舒適。這意味著重新審查現(xiàn)有系統(tǒng)并完善它會(huì)使得以后出現(xiàn)的變化需求更容易被實(shí)現(xiàn)。另一個(gè)勇氣的例子是了解什么時(shí)候應(yīng)該完全丟棄現(xiàn)有的代碼。每個(gè)程序員都有這樣的經(jīng)歷:他們花了一整天的時(shí)間糾纏于自己設(shè)計(jì)和代碼中的一個(gè)復(fù)雜的難題卻無所得,而第二天回來以一個(gè)全新而清醒的角度來考慮,在半小時(shí)內(nèi)就輕松解決了問題。3.2.5、尊重 尊重的價(jià)值體現(xiàn)在很多方面。在極限編程中,團(tuán)隊(duì)成員間的互相尊重體現(xiàn)在每個(gè)人保證提交的任何改變不會(huì)導(dǎo)致編譯

17、無法通過、或者導(dǎo)致現(xiàn)有的測(cè)試案例失敗、或者以其他方式導(dǎo)致工作延期。團(tuán)隊(duì)成員對(duì)于他們工作的尊重體現(xiàn)在他們總是堅(jiān)持追求高質(zhì)量,堅(jiān)持通過重構(gòu)的手段來為手頭的工作找到最好的解決設(shè)計(jì)方案。4、 敏捷開發(fā)的適用性4.1、敏捷開發(fā)的帶來的好處1. 精確。瀑布模式通常會(huì)在產(chǎn)品起點(diǎn)與最終結(jié)果之間規(guī)劃出一條直線,然后沿著直線不斷往前走。然而當(dāng)項(xiàng)目到達(dá)終點(diǎn)時(shí),用戶通常會(huì)發(fā)現(xiàn)那已經(jīng)不是他們想去的地方。而敏捷方法則采用小步快跑,每走完一步再調(diào)整并為下一步確定方向,直到真正的終點(diǎn)。 2. 質(zhì)量。敏捷方法對(duì)每一次迭代周期的質(zhì)量都有嚴(yán)格要求。一些敏捷方法如極限編程等,甚至使用測(cè)試驅(qū)動(dòng)開發(fā)(test-driven develo

18、pment),即在正式開發(fā)功能代碼之前先開發(fā)該功能的測(cè)試代碼。這些都為敏捷項(xiàng)目的整個(gè)開發(fā)周期提供了可靠的質(zhì)量保證。3. 速度。敏捷團(tuán)隊(duì)只專注于開發(fā)項(xiàng)目中當(dāng)前最需要的、最具價(jià)值的部分。這樣能很快地投入開發(fā)。另外,較短的迭代周期使團(tuán)隊(duì)成員能迅速進(jìn)入開發(fā)狀態(tài)。4. 豐厚的投資回報(bào)率。在敏捷開發(fā)過程中,最具價(jià)值的功能總是被優(yōu)先開發(fā),這樣能給客戶帶來最大的投資回報(bào)率。5. 高效的自我管理團(tuán)隊(duì)。敏捷開發(fā)要求團(tuán)隊(duì)成員必須積極主動(dòng),自我管理。在這樣的團(tuán)隊(duì)中工作,每個(gè)團(tuán)隊(duì)成員的技術(shù)能力、交流、社交、表達(dá)和領(lǐng)導(dǎo)能力也都能得以提高。4.2、主要的敏捷方法 敏捷開發(fā)方法是一組開發(fā)方法的統(tǒng)稱,主要包括以下幾種:1、極限編程其主要目的是降低需求變化的成本。它引入一系列優(yōu)秀的軟件開發(fā)方法,并將它們發(fā)揮到極致,結(jié)對(duì)編程(pair-programming)就是其中比較知名的方法之一。除此之外, 其核心做法還有小規(guī)模、頻繁的版本發(fā)布、短迭代周期、測(cè)試驅(qū)動(dòng)開發(fā)、持續(xù)集成、每日站立會(huì)議、共同擁有代碼、系統(tǒng)隱喻等。2、Scrum。Scrum是一個(gè)敏捷開發(fā)框架,它由一個(gè)開發(fā)過程、幾種角色以及一套規(guī)范的實(shí)施方

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論