軟件開發(fā)管理者思維的變化_第1頁
軟件開發(fā)管理者思維的變化_第2頁
軟件開發(fā)管理者思維的變化_第3頁
軟件開發(fā)管理者思維的變化_第4頁
軟件開發(fā)管理者思維的變化_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

付費下載

下載本文檔

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

文檔簡介

軟件開發(fā)管理者思維的變化

軟件開發(fā)是一種對人類智慧的管理,對人大腦思維的“工廠化”管理。人是有感情的、有情緒的、變化的、相對獨立的工作單元,這與冰冷的機器是不可比的,所以在中國的歷史上,管理人是最難的工作;“學(xué)而優(yōu)則仕”的觀點就是讓最聰明的人應(yīng)該選出來做官,做官就是管理人的。軟件開發(fā)不僅是代碼編程,而是人員的有效組織,如何既發(fā)揮人的主觀能動性,避免情緒變化對工作的影響,又可以讓大家有效的交流,讓多個大腦的思路統(tǒng)一,快速完成目標(biāo)呢?多年來軟件企業(yè)的管理者一直在不斷地探索。

另外有一個問題一直是軟件開發(fā)管理人員的心?。很浖枪ぞ?,開發(fā)的是客戶業(yè)務(wù)的應(yīng)用,但客戶不了解軟件,開發(fā)者不了解業(yè)務(wù),如何有效溝通是軟件質(zhì)量的重大障礙。把開發(fā)者變成客戶業(yè)務(wù)的專家是個沒有辦法的辦法,讓軟件企業(yè)付出的代價也是昂貴的。

瀑布模型、極限編程、敏捷開發(fā)是有代表性的開發(fā)模式,在對開發(fā)者、客戶、最終的產(chǎn)品的關(guān)注上的變化,體現(xiàn)了軟件開發(fā)管理者在管理模式上的變化。

一、瀑布開發(fā)

瀑布模型(WaterfallModel)是Royce在1970年提出的,他把大型軟件開發(fā)分為:分析與編程,象工廠流水線一樣把軟件開發(fā)過程分成各種工序,并且每個工序可以根據(jù)軟件產(chǎn)品的規(guī)模、參與人員的多少進一步細分成更細的工序。該模型非常符合軟件工程學(xué)的分層設(shè)計思路,所以成為軟件開發(fā)企業(yè)使用最多的開發(fā)模型。

瀑布模型的特點:

1、強調(diào)文檔,前一個階段的輸出就是下一個階段的輸入,文檔是個階段銜接的唯一信息。所以很多開發(fā)人員好象是在開發(fā)文檔,而不是開發(fā)軟件,因為要到開發(fā)的后期,才可以看到軟件的“模樣”。

2、沒有迭代與反饋。瀑布模型對反饋沒有涉及,所以對變化的客戶需求非常不容易適應(yīng),瀑布就意味著沒有回頭路。

3、管理人員喜歡瀑布模型的原因是把文檔理解為開發(fā)的速度,可以方便地界定不同階段的里程碑。

瀑布模型的用戶很多,也有一些反對的意見:

第一、瀑布模型不適合客戶需求不斷變化的軟件開發(fā),尤其是客戶的業(yè)務(wù)管理的軟件,業(yè)務(wù)隨著市場變化,而軟件初期的設(shè)計可能已經(jīng)大大變化,而后期的需求更改成本是開始的10倍基數(shù)。在ERP盛行的軟件市場里,一方面市場帶動需求變化,另一方面初期客戶對需求描述不清楚,都為瀑布模型的使用團隊帶來困難。

第二、瀑布模型是一種軟件文檔的開發(fā),把開發(fā)者變成流水線上的機器,大量重復(fù)性的工作讓編程人員提不起興趣,工作很枯燥,沒有激情,編程成了一種沒有創(chuàng)意的機械勞動,這讓一向以高科技為標(biāo)志的高級程序人員大為惱火。

在這種背景下,極限編程(extremeProgramming,XP)帶來了新鮮的空氣。

二、極限編程

極限編程誕生于一種加強開發(fā)者與用戶的溝通需求,讓客戶全面參與軟件的開發(fā)設(shè)計,保證變化的需求及時得到修正。要讓客戶能方便地與開發(fā)人員溝通,一定要用客戶理解的語言,先測試再編碼就是先給客戶軟件的外部輪廓,客戶使用的功能展現(xiàn),讓客戶感覺到未來軟件的樣子,先測試再編碼與瀑布模型顯然是背道而馳的。同時,極限編程注重用戶反饋與讓客戶加入開發(fā)是一致的,讓客戶參與就是隨時反饋軟件是否符合客戶的要求。有了反饋,開發(fā)子過程變短,迭代也就很自然出現(xiàn)了,快速迭代,小版本發(fā)布都讓開發(fā)過程變成更多的自反饋過程,有些象更加細化的快速模型法。當(dāng)然極限編程還加入了很多激勵開發(fā)人員的“措施”,如結(jié)隊編程、40小時工作等。

極限編程是一種開發(fā)管理模式,它強調(diào)的重點是:

1、角色定位:極限編程把客戶非常明確地加入到開發(fā)的團隊中,并參與日常開發(fā)與溝通會議。客戶是軟件的最終使用者,使用是否合意一定以客戶的意見為準(zhǔn)。不僅讓客戶參與設(shè)計討論,而且讓客戶負責(zé)編寫擁護故事(UserStory),也就是功能需求,包括軟件要實現(xiàn)的功能以及完成功能的業(yè)務(wù)操作過程。用戶在軟件開發(fā)過程中的責(zé)任被提到與開發(fā)者同樣的重要程度。

2、敏捷開發(fā):敏捷開發(fā)追求合作與響應(yīng)變化。迭代就是縮短版本的發(fā)布周期,縮短到周、日,完成一個小的功能模塊,可以快速測試、并及時展現(xiàn)給客戶,以便及時反饋。小版本加快了客戶溝通反饋的頻率,功能簡單,在設(shè)計、文擋環(huán)節(jié)大大簡化。極限編程中文擋不再重要的原因就是因為每個版本功能簡單,不需要復(fù)雜的設(shè)計過程。極限編程追求設(shè)計簡單,實現(xiàn)客戶要求即可,無需為擴展考慮太多,因為客戶的新需求隨時可以添加。

3、追求價值:極限編程把軟件開發(fā)變成自我與管理的挑戰(zhàn),追求溝通、簡單、反饋、勇氣,體現(xiàn)開發(fā)團隊的人員價值,激發(fā)參與者的情緒,最大限度地調(diào)動開發(fā)者的積極性,情緒高漲,認真投入,開發(fā)的軟件質(zhì)量就大大提高。結(jié)對編程就是激發(fā)隊員才智的一種方式。

極限編程把軟件開發(fā)過程重新定義為聆聽、測試、編碼、設(shè)計的迭代循環(huán)過程,確立了測試->編碼->重構(gòu)(設(shè)計)的軟件開發(fā)管理思路。

極限編程的12個實踐是極限編程者總結(jié)的實踐經(jīng)典,是體現(xiàn)極限編程管理的原則,對極限編程具有指導(dǎo)性的意義,但并非一定要完全遵守12個實踐,主要看它給軟件過程管理帶來的價值。

1、小版本。為了高度迭代,與客戶展現(xiàn)開發(fā)的進展,小版本發(fā)布是一個可交流的好辦法,客戶可以針對性提出反饋。但小版本把模塊縮得很小,會影響軟件的整體思路連貫,所以小版本也需要總體合理的規(guī)劃。

2、規(guī)劃游戲。就是客戶需求,以客戶故事的形式,由客戶負責(zé)編寫。極限編程不講求統(tǒng)一的客戶需求收集,也不是由開發(fā)人員整理,而是采取讓客戶編寫,開發(fā)人員進行分析,設(shè)定優(yōu)先級別,并進行技術(shù)實現(xiàn)。當(dāng)然游戲規(guī)則可進行多次,每次迭代完畢后再行修改??蛻艄适率情_發(fā)人員與客戶溝通的焦點,也是版本設(shè)計的依據(jù),所以其管理一定是有效的、溝通順暢的。[NextPage]

3、現(xiàn)場客戶。極限編程要求客戶參與開發(fā)工作,客戶需求就是客戶負責(zé)編寫的,所以要求客戶在開發(fā)現(xiàn)場一起工作,并為每次迭代提供反饋。

4、隱喻。隱喻是讓項目參與人員都必須對一些抽象的概念理解一致,也就是我們常說的行業(yè)術(shù)語,因為業(yè)務(wù)本身的術(shù)語開發(fā)人員不熟悉,軟件開發(fā)的術(shù)語客戶不理解,因此開始要先明確雙方使用的隱喻,避免歧異。

5、簡單設(shè)計。極限編程體現(xiàn)跟蹤客戶的需求變化,既然需求是變化的,所以對于目前的需求就不必過多地考慮擴展性的開發(fā),講求簡單設(shè)計,實現(xiàn)目前需求即可。簡單設(shè)計的本身也為短期迭代提供了方便,若開發(fā)者考慮“通用”因素較多,增加了軟件的復(fù)雜度,開發(fā)的迭代周期就會加長。簡單設(shè)計包括四方面含義:1、通過測試。2、避免重復(fù)代碼。3、明確表達每步編碼的目的,代碼可讀性強。4、盡可能少的對象類和方法。由于采用簡單設(shè)計,所以極限編程沒有復(fù)雜的設(shè)計文檔要求。

6、重構(gòu)。重構(gòu)是極限編程先測試后編碼的必然需求,為了整體軟件可以先進行測試,對于一些軟件要開發(fā)的模塊先簡單模擬,讓編譯通過,到達測試的目的。然后再對模塊具體“優(yōu)化”,所以重構(gòu)包括模塊代碼的優(yōu)化與具體代碼的開發(fā)。重構(gòu)是使用了“物理學(xué)”的一個概念,是在不影響物體外部特性的前提下,重新優(yōu)化其內(nèi)部的機構(gòu)。這里的外部特性就是保證測試的通過。

7、測試驅(qū)動開發(fā)。極限編程是以測試開始的,為了可以展示客戶需求的實現(xiàn),測試程序優(yōu)先設(shè)計,測試是從客戶實用的角度出發(fā),客戶實際使用的軟件界面著想,測試是客戶需求的直接表現(xiàn),是客戶對軟件過程的理解。測試驅(qū)動開發(fā),也就是客戶的需求驅(qū)動軟件的開發(fā)。

8、持續(xù)集成。集成的理解就是提交軟件的展現(xiàn),由于采用測試驅(qū)動開發(fā)、小版本的方式,所以不斷集成(整體測試)是與客戶溝通的依據(jù),也是讓客戶提出反饋意見的參照。持續(xù)集成也是完成階段開發(fā)任務(wù)的標(biāo)志。

9、結(jié)對編程。這是極限編程最有爭議的實踐。就是兩個程序員合用一臺計算機編程,一個編碼,一個檢查,增加專人審計是為了提供軟件編碼的質(zhì)量。兩個人的角色經(jīng)常變換,保持開發(fā)者的工作熱情。這種編程方式對培養(yǎng)新人或開發(fā)難度較大的軟件都有非常好的效果。

10、代碼共有。在極限編程里沒有嚴(yán)格文檔管理,代碼為開發(fā)團隊共有,這樣有利于開發(fā)人員的流動管理,因為所有的人都熟悉所有的編碼。

11、編碼標(biāo)準(zhǔn)。編碼是開發(fā)團隊里每個人的工作,又沒有詳細的文檔,代碼的可讀性是很重要的,所以規(guī)定統(tǒng)一的標(biāo)準(zhǔn)和習(xí)慣是必要的,有些象編碼人員的隱喻。

12、每周40小時工作。極限編程認為編程是愉快的工作,不輕易加班,今天的工作今天做,小版本的設(shè)計也為了單位時間可以完成的工作安排。

三、敏捷開發(fā)

極限編程的思想體現(xiàn)了適應(yīng)客戶需求的快速變化,激發(fā)開發(fā)者的熱情,也是目前敏捷開發(fā)思維的重要支持者。

2001年,17名編程大師分別代表極限編程、Scrum(“棒球”團隊開發(fā)模式)、特征驅(qū)動開發(fā)、動態(tài)系統(tǒng)開發(fā)方法、自適應(yīng)軟件開發(fā)、水晶方法、實用編程等開發(fā)流派,發(fā)表“敏捷軟件開發(fā)”宣言。敏捷軟件開發(fā)是一個開發(fā)軟件的管理新模式,用來替代以文件驅(qū)動開發(fā)的瀑布開發(fā)模式。敏捷方式也稱輕量級開發(fā)方法。敏捷軟件開發(fā)宣言內(nèi)容:

個體和交互勝過過程和工具

可以工作的軟件勝過面面具到的文檔

可戶合作勝過合同談判

響應(yīng)變化勝過遵循計劃

敏捷開發(fā)集成了新型開發(fā)模式的共同特點,它重點強調(diào):

1.以人為本,注重編程中人的自我特長發(fā)揮。

2.強調(diào)軟件開發(fā)的產(chǎn)品是軟件,而不是文檔。文檔是為軟件開發(fā)服務(wù)的,而不是開發(fā)的主體。

3.客戶與開發(fā)者的關(guān)系是協(xié)作,不是合約。開發(fā)者不是客戶業(yè)務(wù)的“專家”,要適應(yīng)客戶的需求,是要客戶合作來闡述實際的需求細節(jié),而不是為了開發(fā)軟件,把開發(fā)人員變成客戶業(yè)務(wù)的專家,這是傳統(tǒng)開發(fā)模式或行業(yè)軟件開發(fā)企業(yè)的最大面臨問題。

4.設(shè)計周密是為了最終軟件的質(zhì)量,但不表明設(shè)計比實現(xiàn)更重要,要適應(yīng)客戶需求的不斷變化,設(shè)計也要不斷跟進,所以設(shè)計不能是“閉門造車”、“自我良好”,能不斷根據(jù)環(huán)境的變化,修改自己的設(shè)計,指導(dǎo)開發(fā)的方向是敏捷開發(fā)的目標(biāo)。

敏捷開發(fā)避免了傳統(tǒng)瀑布方式的弊端,主要是吸收了各種新型開發(fā)模式的“動態(tài)”特性,關(guān)注點從文檔到開發(fā)者,管理方式也從工廠的流水線到團隊的自我放松式的組織??偨Y(jié)敏捷開發(fā)與瀑布模式的不同,主要是下面幾個“敏捷”的關(guān)注點:

迭代。軟件的功能是客戶的需求,界面的操作是客戶的“感覺”,對迭代的強調(diào)是縮短了軟件版本的周期

客戶參與。以人為本,客戶是軟件的使用者,是業(yè)務(wù)理解的專家,沒有客戶的參與,開發(fā)者很難理解客戶的真實需求

小版本。快速功能的展現(xiàn),看似簡單,但對于復(fù)雜的客戶需求,合理地分割與總體上的統(tǒng)

溫馨提示

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

最新文檔

評論

0/150

提交評論