---  項目經(jīng)理被問到最多的問題就是,“這個項目什么時候才能完成?”   被問的時候,可能項目才定下來,僅僅知道大概的功能模塊, " /> 香蕉久久夜色精品国产使用方法 ,国模冰冰炮一区二区,在线电影一区二区

色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

敏捷開發(fā)中對進度的把握

  如何做effort的estimate?本文給出了敏捷開發(fā)模式中的一個方法。
  ---

  項目經(jīng)理被問到最多的問題就是,“這個項目什么時候才能完成?”

  被問的時候,可能項目才定下來,僅僅知道大概的功能模塊,非功能性需求還模糊不清,甚至團隊成員都沒到位。但是上級、銷售、客戶急切地要知道,這個項目什么時候才能完成?

  被問的時候,也可能項目已臨近結(jié)束,或者說臨近當初計劃的交付日期。然而待完成的功能還有一堆,測試出來的bug有一大堆,客戶又提出了新的需求,團隊正有人要離職 …。但是上級、銷售、客戶非常急切地要知道,這個項目到底什么時候才能完成?

  這還不算糟糕。更頭疼的問題是:“再有三周,項目應(yīng)該完成了吧?”

  因為后者根本不是問題,而是命令。項目經(jīng)理必須要能夠合理解釋為什么三周不能夠完成項目;或者說明在三周內(nèi),能夠完成什么。

  我們都用過MSProject, 但是那上面的漂亮表格對這樣的困境毫無幫助。相反,正是Project 中的甘特圖和日程表,埋下了陷阱。因為,在Project中無法預(yù)估需要多少工作日才能完成模糊不清的需求,也無法體現(xiàn)實際情況發(fā)生變化后對進度的影響。

  當我們討論進度的時候,其實包含了兩個未知的變量。第一是完成需求所要的工作量,包括需求定義、開發(fā)內(nèi)容邊界;第二是團隊的工作能力,包括成員的行業(yè)知識專業(yè)技能,成員之間、成員和外部的溝通能力,等等。

  關(guān)鍵就在于,這兩項都是變量。如果任務(wù)是搬一千塊磚頭,每分鐘每人能搬10塊,那么結(jié)果是顯而易見的。

  在敏捷開發(fā)中,采用相對估算和迭代求精的方法來處理項目進度的問題。

  首先是工作量。用估算代碼行數(shù)或者界面元素的方式,就像論斤賣書一樣,只適用于粗制濫造的軟件生產(chǎn)過程。用戶需要的并不是代碼或者按鈕,而是可靠易用的功能。

  在敏捷方式中,先由用戶和設(shè)計人員粗略估計各個功能模塊的相對規(guī)模和難度,給出一定的分值。分值不代表具體人月,起相對比較的作用。例如有查詢、顯示、修改三個模塊,如果實現(xiàn)顯示模塊的工作量是10分,那么查詢模塊可能是15分,而修改為20分。

  下一步,選擇一個工作量估分最低的模塊,例如這里是顯示模塊,然后進一步考量其工作量。例如要準備數(shù)據(jù)庫、設(shè)計界面、執(zhí)行查詢,顯示內(nèi)容等等。假設(shè)這輪估算得出此模塊需要10人天,從而得出單位分值對應(yīng)的人天為1;那么,整個項目就需要45人天。

  這個估算建立在對項目的初步了解上,主要依賴項目經(jīng)理的經(jīng)驗。有偏差?沒關(guān)系。接下來通過迭代來求精。先來實現(xiàn)顯示模塊,如果事實上花費了12人天,那么根據(jù)比例關(guān)系,剩余內(nèi)容的估算大約就是42人天。

  當然,比例關(guān)系也不是一成不變的。隨著模塊的逐個完成,項目經(jīng)理對項目的認識也在加深,他可以再調(diào)整剩余模塊的相對分值。

  在實際操作中,項目經(jīng)理首先按照優(yōu)先級排列功能模塊。然后把高優(yōu)先級的模塊盡可能地細分,再選擇分值最小的模塊開始開發(fā)。統(tǒng)計總工作量時,按比例累加其他模塊的工作量,并加一定的調(diào)整系數(shù),因為模塊的復(fù)雜度不是線性增長的。每次迭代開發(fā)完成后,逐步降低調(diào)整系數(shù)。通常4~5次迭代后,可以將調(diào)整系數(shù)歸零。

  在上面的例子中,第一次估算的初步結(jié)果是45人天,因為完全是憑經(jīng)驗,因此要給較大的調(diào)整系數(shù),比如說0.4,因此給出的估算工作量區(qū)間為[45*0.6,45*1.4],即27到63人天之間。為保險起見,項目經(jīng)理上報的工作量為70人天。

  第二次估算,剩余內(nèi)容的初步估算為42,調(diào)整系數(shù)下降為0.3,因此給出估算區(qū)間為30到50人天之間。依此類推,通過不斷迭代,對剩余工作量的估算將越來越精確。

  這樣估算的好處在哪里?

  首先,工作量變量的很大一部分因素,存在于非功能需求,例如界面的美觀程度。而同一項目的不同模塊之間,非功能需求往往是一致的,相對估算法過濾了這一層復(fù)雜度。團隊能力這一變量因素也是如此。當然,隨著項目的進展,成員的開發(fā)能力應(yīng)該有一定的上升,但隨著加班出差等因素,投入程度也可能下降,因而會相互抵消。總之在周期6個月以內(nèi)的項目中,很少出現(xiàn)團隊工作能力戲劇性變化的情形。因此相對估算也過濾了這個復(fù)雜度。

  其次,迭代求精的方式讓項目經(jīng)理對估算時間更有把握。最初出現(xiàn)偏差是必然的,但只要團隊穩(wěn)定,沒有大的需求變動,估算范圍將迅速收縮。這比一次性報數(shù)更準確。

  它的額外好處是,敏捷開發(fā)是遵循優(yōu)先級的,即使對剩余時間(即低優(yōu)先級模塊的開發(fā)時間)的估算不十分準確,影響也不是非常大。

  對比一下甘特圖方式,在開發(fā)初期就要把各個模塊的開發(fā)時間估算出來以統(tǒng)計總量,這就是瀑布開發(fā)的模式。

  進度問題的另一方面,是項目經(jīng)理如何了解團隊以及每個開發(fā)人員的開發(fā)速度。當任務(wù)分配之后,項目經(jīng)理如何做到心中有數(shù),估算任務(wù)實際完成時間。

  敏捷開發(fā)過程中,由開發(fā)人員自己來估算完成該任務(wù)所需要的時間。當然,每個人的能力不同;每個人的心態(tài)也不同,有的人保守,有的人樂觀。沒關(guān)系,還是靠迭代來逐步求精。

  在每天的例會上,開發(fā)人員被要求對當前任務(wù)的剩余開發(fā)時間做重估。不同于Project統(tǒng)計每人每天在任務(wù)中花費了多少時間,敏捷方式只關(guān)心這項任務(wù)還需要多少時間去完成,直到歸零,然后再來統(tǒng)計實際的工作時間。

  為什么?因為統(tǒng)計開發(fā)過程中的花費時間是毫無意義的。這和搬磚頭不同,也許昨天用了8個小時沒有一點進展,今天一旦想通了就事半功倍。我們真正關(guān)心的,就是到底還需要多少時間來完成任務(wù),而不是已經(jīng)花費掉不可恢復(fù)的時間成本。

  在每天例會中,項目經(jīng)理需要注意時間曲線保持水平的成員,他是不是遇到瓶頸了,是否需求幫助?也要留意時間曲線下降幅度過大的成員,他發(fā)現(xiàn)了什么好的辦法,有沒有低估需求?這樣,項目經(jīng)理會更面向結(jié)果,只要按計劃保證質(zhì)量完成任務(wù)就行,成員到底花了多少時間是個人的事。傳統(tǒng)做法記錄每個人每天的工作內(nèi)容,第一是因繁瑣而失真。其次,一旦上級發(fā)現(xiàn)某人工作時間不夠(即便他完成了任務(wù)),忍不住會派新任務(wù),從而造成越干活越多,反過來打擊程序員的積極性。

  敏捷估算的關(guān)鍵之處,是把成員能力這個變量的估算,交給最合適的人去做,即程序員本人。然后通過比較歷次迭代時的預(yù)估和實際時間,給出校正系數(shù),以避免程序員過于保守或過于樂觀。這肯定不是絕對準確的,但效果往往比項目經(jīng)理自己拍腦袋估算,然后強行指定deadline 要好得多。

  在敏捷開發(fā)中,做計劃比計劃本身更重要。項目經(jīng)理需要時刻向前考慮,考慮各種動態(tài)因素,而不是死報著計劃本身。在進度估算的時候,項目經(jīng)理應(yīng)該在不同階段,根據(jù)實際情況,給出合乎情理的回答。

it知識庫敏捷開發(fā)中對進度的把握,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 利津县| 伊宁市| 玉山县| 德安县| 福建省| 莱芜市| 汶上县| 金门县| 通河县| 洪泽县| 吴江市| 图片| 金溪县| 双牌县| 南漳县| 邢台县| 高雄市| 始兴县| 竹北市| 湘乡市| 历史| 宜兴市| 长丰县| 怀远县| 长丰县| 龙泉市| 霸州市| 双鸭山市| 南昌市| 会昌县| 建德市| 临潭县| 迁安市| 洪雅县| 剑河县| 平江县| 荣昌县| 房山区| 淮滨县| 龙山县| 永平县|