第一部分 有效開(kāi)發(fā) 1-5章 完結(jié)

第一部分有效開(kāi)發(fā)

第二章快速軟件開(kāi)發(fā)的策略


快速開(kāi)發(fā)的總體策略

*避免典型錯(cuò)誤

*打好開(kāi)發(fā)基礎(chǔ)

*管理風(fēng)險(xiǎn) 避免災(zāi)難

*采用面向進(jìn)度的開(kāi)發(fā)方式

開(kāi)發(fā)速度的四維

*人員,過(guò)程,產(chǎn)品,技術(shù)

*人員

1.項(xiàng)目成員的選擇

*有才能的人 更少和更好的人

*工作匹配 使任務(wù)和人員的技能和動(dòng)機(jī)相匹配

*職業(yè)的晉升 幫助人員自我實(shí)現(xiàn)

*團(tuán)隊(duì)平衡 強(qiáng)調(diào)人員之間的互補(bǔ)和協(xié)調(diào)

*排除不稱職的人員盡快!

2.項(xiàng)目組結(jié)構(gòu)

3.人員激勵(lì)

*過(guò)程

1.避免重復(fù)工作

2.質(zhì)量保證

質(zhì)量保證有兩個(gè)目的:

A.基礎(chǔ)的質(zhì)量保證

B.在各個(gè)階段用最少的時(shí)間代價(jià),查出錯(cuò)誤

我覺(jué)得還有以下目的:

C.對(duì)真實(shí)進(jìn)度進(jìn)行審核。因?yàn)橛袝r(shí)程序員的進(jìn)度是有水分的,需要通過(guò)測(cè)試將水分排出,獲得真實(shí)進(jìn)度情況。

3.開(kāi)發(fā)基礎(chǔ)

4.風(fēng)險(xiǎn)管理

5.資源目標(biāo)

6.生命期計(jì)劃

由于生命期計(jì)劃是基本的項(xiàng)目管理,因此它是非常有用的。例如,你有一個(gè)高風(fēng)險(xiǎn)的項(xiàng)目,基于風(fēng)險(xiǎn)的生命期模型就非常適合,如果面對(duì)一個(gè)需求含糊的項(xiàng)目,則增量生命期模型更有益。生命期模型可以使你更容易確定并組織軟件項(xiàng)目要進(jìn)行的多種活動(dòng),從而更高效的工作。

7.面向客戶的開(kāi)發(fā)

現(xiàn)代軟件的開(kāi)發(fā)方式與典型的主機(jī)時(shí)代的開(kāi)發(fā)方式相比,一個(gè)最為徹底的改變是更側(cè)重于關(guān)注客戶的需求和愿望。開(kāi)發(fā)人員已經(jīng)意識(shí)到:開(kāi)發(fā)符合產(chǎn)品規(guī)格的軟件只是完成了一半的工作,另一半是幫助客戶配置出產(chǎn)品能夠?qū)崿F(xiàn)的功能,而實(shí)現(xiàn)這些功能所花的時(shí)間遠(yuǎn)遠(yuǎn)多于紙面上確定的產(chǎn)品規(guī)格所需的時(shí)間。將自己站在客戶的角度考慮問(wèn)題,是避免返工最好的方法,因?yàn)樽罱K是客戶來(lái)決定你花了12個(gè)月開(kāi)發(fā)出來(lái)的東西,是不是合適。

*產(chǎn)品

1.產(chǎn)品規(guī)模

產(chǎn)品規(guī)模是對(duì)開(kāi)發(fā)進(jìn)度影響最大的因素,大項(xiàng)目耗費(fèi)的時(shí)間多,小項(xiàng)目耗費(fèi)的時(shí)間少,是最簡(jiǎn)單的原理,所以大幅度提高進(jìn)度最直接的方式就是縮小產(chǎn)品規(guī)模,俗稱砍需求?;蛘呖梢苑蛛A段開(kāi)發(fā)來(lái)臨時(shí)縮小規(guī)模。

2.產(chǎn)品特性

對(duì)性能,內(nèi)存,穩(wěn)定性,可靠性要求很高的產(chǎn)品需要更長(zhǎng)的時(shí)間周期。選擇你的戰(zhàn)略目標(biāo),如果進(jìn)度排在首位,就不要同時(shí)設(shè)置太多其他因素去限制開(kāi)發(fā)人員的手腳。

*技術(shù)

工具,控件,技術(shù)積累都是爭(zhēng)取快速開(kāi)發(fā)的關(guān)鍵。

開(kāi)發(fā)速度的進(jìn)化過(guò)程


基于承諾的快速開(kāi)發(fā)

基于承諾的開(kāi)發(fā)策略也是一只快速開(kāi)發(fā)的方式,這種策略要求員工對(duì)項(xiàng)目總體進(jìn)行承諾,并授予其自主權(quán),然后看著他們每周工作60或80小時(shí),直到最后他們完了(累垮)或者項(xiàng)目完了(完成)。

基于承諾的開(kāi)發(fā)策略一般是通過(guò)磨練,汗水,決心來(lái)實(shí)現(xiàn)的。

對(duì)于公司來(lái)說(shuō),利用開(kāi)發(fā)人員的承諾與責(zé)任心,用一個(gè)月的薪水壓榨兩個(gè)月的工作也是是很劃算的。

然后其帶來(lái)的弊端與風(fēng)險(xiǎn)太大:

1.無(wú)法保證項(xiàng)目是否完成

即使基于承諾,但也不是每個(gè)承諾都能兌現(xiàn)。導(dǎo)致完成不了的因素很多,且不可控,與承諾沒(méi)有太大關(guān)系。

2.將導(dǎo)致長(zhǎng)期激勵(lì)問(wèn)題

一旦員工全身心投入到承諾中,并最后面臨失敗,他們將變得沮喪,怨恨,士氣低落。

3.不可重復(fù)

4.人力資源的浪費(fèi)

參與項(xiàng)目的人員忘記了家庭,朋友,愛(ài)好,甚至他們的健康,去促使項(xiàng)目成功,這種獻(xiàn)身不是必須的,通過(guò)周密,理性,知識(shí)化的管理和計(jì)劃,可以用少許努力獲得同樣的結(jié)果。

第三章典型錯(cuò)誤

錯(cuò)誤對(duì)于開(kāi)發(fā)進(jìn)度的影響

任何最佳實(shí)踐的使用,都只是項(xiàng)目成功的必要條件,而非充分條件。即使你做了一些正確的事情,只要做錯(cuò)一件事,就會(huì)使你前功盡棄,而滑向失敗的深淵。

常見(jiàn)的典型錯(cuò)誤

*人員

1挫傷積極性

2人員素質(zhì)低

在很多案例中,人員的選擇都著眼于盡快招到人,而不是在項(xiàng)目中能工作得最好的人。這種方法能讓項(xiàng)目盡早的啟動(dòng),但不一定能盡早的完成。

3對(duì)有問(wèn)題的員工失控

4英雄主義

5項(xiàng)目后期加入人員

6辦公室擁擠嘈雜

7開(kāi)發(fā)人員與客戶之間的摩擦

這種沖突往往來(lái)自缺乏有效溝通,缺乏溝通還會(huì)導(dǎo)致對(duì)需求的準(zhǔn)確理解,對(duì)界面的設(shè)計(jì)不合理等。雙方的摩擦和沖突會(huì)轉(zhuǎn)移客戶和開(kāi)發(fā)人員雙方的注意力。

8不現(xiàn)實(shí)的預(yù)期

有人認(rèn)為樹(shù)立現(xiàn)實(shí)的預(yù)期,是項(xiàng)目成功的前5個(gè)因素之一。(Standish Group)。這個(gè)錯(cuò)誤容易發(fā)生在一線技術(shù)人員,或者一線管理人員身上。

9缺乏有效的項(xiàng)目支撐

快速開(kāi)發(fā)有很多方面需要得到高層的支持,包括實(shí)際的計(jì)劃,變更控制等。

10缺乏各種角色的齊心協(xié)力

11缺乏客戶介入

沒(méi)有用戶的早期介入,充滿了需求誤解的風(fēng)險(xiǎn)。

12政治高于物質(zhì)

13對(duì)現(xiàn)實(shí)充滿想象

*過(guò)程

14過(guò)于樂(lè)觀的計(jì)劃

過(guò)于樂(lè)觀的計(jì)劃給團(tuán)隊(duì)施加額外的壓力,為了滿足樂(lè)觀的計(jì)劃,可能砍掉很多必要的工作,對(duì)開(kāi)發(fā)人員的自信和生產(chǎn)率造成了長(zhǎng)期和巨大的傷害。

15缺乏足夠的風(fēng)險(xiǎn)管理

有時(shí)我們沒(méi)有足夠的風(fēng)險(xiǎn)意識(shí),有時(shí)我們意識(shí)到了風(fēng)險(xiǎn)卻沒(méi)有制定對(duì)應(yīng)的措施。

16承包人導(dǎo)致失敗/客戶方導(dǎo)致失敗

17缺乏計(jì)劃

18在壓力下放棄計(jì)劃

項(xiàng)目組制定了計(jì)劃,但當(dāng)項(xiàng)目遇到困難時(shí)就放棄計(jì)劃。那么失敗的原因不是在于放棄計(jì)劃本身,而是不能制定替代計(jì)劃,就一頭栽進(jìn)編碼和麻煩中去。

19在模糊的項(xiàng)目前期浪費(fèi)時(shí)間

模糊的前期一般是指項(xiàng)目開(kāi)始之前的時(shí)間,通常是花在審批和預(yù)算上。通常在這個(gè)時(shí)期為后面節(jié)約出更多時(shí)間,是廉價(jià)的。

20前期活動(dòng)不合要求

由于需求分析,概要設(shè)計(jì),詳細(xì)設(shè)計(jì)等工作,并不生成代碼,對(duì)于急于砍掉不必要的活動(dòng)的項(xiàng)目,他們很容易成為目標(biāo)。

21設(shè)計(jì)低劣

22缺少質(zhì)量保證措施

23缺少管理控制

項(xiàng)目過(guò)程中很少設(shè)置控制點(diǎn),缺乏必要的計(jì)劃拖延警告。想要保證項(xiàng)目可控,你必須隨時(shí)準(zhǔn)確說(shuō)出項(xiàng)目所處的位置。

24太早或過(guò)于頻繁的集成

這點(diǎn)可能無(wú)法完全認(rèn)同,現(xiàn)在也有持續(xù)集成的觀點(diǎn)。

25相遇估算時(shí)遺漏必要的任務(wù)

26追趕計(jì)劃

27魯莽編碼

*產(chǎn)品

28需求的鍍金

29功能蔓延

30開(kāi)發(fā)人員的鍍金

31又推又拉的交易

經(jīng)理在批準(zhǔn)進(jìn)度順眼的同時(shí),又加入了新的功能。

32研究導(dǎo)向的開(kāi)發(fā)

*技術(shù)

33銀彈綜合癥

過(guò)于相信沒(méi)有采用過(guò)的技術(shù),當(dāng)項(xiàng)目鎖定這個(gè)技術(shù),并期望以此來(lái)解決進(jìn)度問(wèn)題時(shí),不可避免的遭遇挫折。

34過(guò)高的估計(jì)了新技術(shù)新方法帶來(lái)的節(jié)省量

35項(xiàng)目中間切換工具

36缺乏有效的源代碼控制手段

37沒(méi)有總結(jié)出自己最差的實(shí)踐

項(xiàng)目不停的做,卻沒(méi)有總結(jié)出自己的錯(cuò)誤列表,那么你自己無(wú)法從以往的項(xiàng)目中學(xué)習(xí),也無(wú)法與其他人其他團(tuán)隊(duì)交流。

第四章軟件開(kāi)發(fā)的基本原則

管理原則

簡(jiǎn)單的來(lái)說(shuō),管理原則由以下幾個(gè)部分組成:判定產(chǎn)品規(guī)模,根據(jù)規(guī)模分配資源,制定資源計(jì)劃,監(jiān)控引導(dǎo)項(xiàng)目

*項(xiàng)目估算和進(jìn)度安排

1判定項(xiàng)目規(guī)模大小

2估算完成項(xiàng)目的代價(jià)

3基于估算制定計(jì)劃

*計(jì)劃編制

糟糕的計(jì)劃比其他麻煩更經(jīng)常地激起問(wèn)題。與計(jì)劃編制相關(guān)的問(wèn)題舉例如下:

*計(jì)劃編制失敗

*沒(méi)簽訂好合同

*無(wú)效的變更控制

*不切實(shí)際的最終期限

*跟蹤

制定了一個(gè)項(xiàng)目計(jì)劃,就要監(jiān)控他是否在按計(jì)劃進(jìn)行,包括對(duì)進(jìn)度,費(fèi)用,質(zhì)量等目標(biāo)的檢查。典型的管理控制包括:任務(wù)列表,進(jìn)度報(bào)告會(huì),里程碑檢查,預(yù)算報(bào)告及走查管理。典型的技術(shù)控制包括:技術(shù)方案確認(rèn)(UML,流程圖確認(rèn)),質(zhì)量檢查。


跟蹤是一個(gè)基本的項(xiàng)目管理行為。如果你不跟蹤項(xiàng)目,則無(wú)法管理項(xiàng)目。

度量

保持長(zhǎng)期可持續(xù)運(yùn)作的關(guān)鍵,是能夠搜集基準(zhǔn)數(shù)據(jù)來(lái)分析質(zhì)量和生產(chǎn)率。

技術(shù)原則

*需求管理

需求管理就是收集需求,把需求記錄成文檔,電子郵件,編寫界面串聯(lián)腳本(原型)等形式,然后根據(jù)這些來(lái)跟蹤設(shè)計(jì)和編碼,并隨時(shí)管理修改需求以適應(yīng)隨后項(xiàng)目的過(guò)程。

程序員對(duì)需求管理的抱怨太常見(jiàn)。

以下是一些需求管理的基礎(chǔ):

*需求分析方法。包括結(jié)構(gòu)分析,數(shù)據(jù)結(jié)構(gòu)分析和面向?qū)ο蠓治觥?/p>

*系統(tǒng)建模實(shí)踐。如類圖,數(shù)據(jù)流圖,實(shí)體關(guān)系圖,數(shù)據(jù)字典和狀態(tài)圖等。

*溝通實(shí)踐。

*需求管理和生命期模型的關(guān)系。如漸進(jìn)交付,階段交付,螺旋型,瀑布型,編碼修正型等。

需求管理在兩個(gè)方面對(duì)加快開(kāi)發(fā)速度發(fā)揮著重要作用。第一,正規(guī)的需求管理中,需求收集往往比較從容。第二,正確把需求擺在首位,往往比被動(dòng)這樣花費(fèi)少得多的時(shí)間。

*設(shè)計(jì)

*構(gòu)建

*軟件配置管理

質(zhì)量保證原則


*易錯(cuò)模塊

20%的模塊中,集中了80%的錯(cuò)誤。

*測(cè)試

單元測(cè)試10%到50%的漏洞。

系統(tǒng)測(cè)試20%到60%的漏洞。

剩下的40%要么通過(guò)技巧發(fā)現(xiàn),要么最終被用戶發(fā)現(xiàn)。

*技術(shù)回顧

1走查

走查不止包括代碼部分,更加側(cè)重于需求,設(shè)計(jì)。對(duì)于我們的項(xiàng)目,建議每個(gè)負(fù)責(zé)人審核每個(gè)模塊的數(shù)據(jù)流圖或流程圖。

2代碼閱讀

3檢查

檢查的內(nèi)容跟走查差不多,但是比走查正式得多。你可以使用它對(duì)需求分析,界面原型,設(shè)計(jì),編碼等差錯(cuò)。

檢查過(guò)程如下:

檢查會(huì)議之前,

“仲裁人”發(fā)布產(chǎn)品要被檢查的消息。

“審閱人”在會(huì)議之前列出檢查列表。

檢查會(huì)議開(kāi)始,

“作者”解釋要被檢查的內(nèi)容。

“審閱人”鑒別錯(cuò)誤。

“記錄員”記錄錯(cuò)誤。

檢查會(huì)議結(jié)束,

“仲裁人”寫一份檢查報(bào)告,說(shuō)明每個(gè)漏洞和如果處理。

4技術(shù)回顧

按照指導(dǎo)來(lái)做

第五章風(fēng)險(xiǎn)管理

風(fēng)險(xiǎn)管理要素

風(fēng)險(xiǎn)管理工作就是在風(fēng)險(xiǎn)成為影響軟件項(xiàng)目成功的威脅前,識(shí)別,著手處理并消除風(fēng)險(xiǎn)的源頭。你可以在幾個(gè)層次中管理風(fēng)險(xiǎn):

1危機(jī)管理:救火模式,在風(fēng)險(xiǎn)已經(jīng)造成麻煩后才著手處理。

2失敗處理,察覺(jué)到了風(fēng)險(xiǎn)并迅速反應(yīng),但只是在風(fēng)險(xiǎn)發(fā)生之后。

3風(fēng)險(xiǎn)緩解,事先制定好風(fēng)險(xiǎn)發(fā)生后的措施,但不做任何預(yù)防措施。

4著力預(yù)防,將風(fēng)險(xiǎn)識(shí)別和風(fēng)險(xiǎn)防范作為項(xiàng)目的一部分加以規(guī)劃和執(zhí)行。

5消滅根源,識(shí)別和消除可能產(chǎn)生的風(fēng)險(xiǎn)根源。

本章的目的是描述如果定位4和5層面上的軟件進(jìn)度風(fēng)險(xiǎn)。

總體來(lái)講,風(fēng)險(xiǎn)管理由風(fēng)險(xiǎn)評(píng)估和風(fēng)險(xiǎn)控制組成。

*風(fēng)險(xiǎn)評(píng)估


風(fēng)險(xiǎn)評(píng)估由風(fēng)險(xiǎn)識(shí)別,風(fēng)險(xiǎn)分析,風(fēng)險(xiǎn)優(yōu)先級(jí)組成。

*風(fēng)險(xiǎn)識(shí)別,就是提出潛在的可能破壞項(xiàng)目的風(fēng)險(xiǎn)列表。

*風(fēng)險(xiǎn)分析,評(píng)估每一個(gè)風(fēng)險(xiǎn)的可能性和影響,判定風(fēng)險(xiǎn)的級(jí)別。

*風(fēng)險(xiǎn)優(yōu)先級(jí),按風(fēng)險(xiǎn)影響大小排出一個(gè)風(fēng)險(xiǎn)優(yōu)先級(jí)列表,這個(gè)風(fēng)險(xiǎn)列表將作為風(fēng)險(xiǎn)控制的基礎(chǔ)。

*風(fēng)險(xiǎn)控制

風(fēng)險(xiǎn)控制由風(fēng)險(xiǎn)管理計(jì)劃,風(fēng)險(xiǎn)化解和風(fēng)險(xiǎn)監(jiān)控構(gòu)成。

*風(fēng)險(xiǎn)管理計(jì)劃:制定一個(gè)應(yīng)對(duì)每個(gè)重要風(fēng)險(xiǎn)的應(yīng)對(duì)方案,同時(shí)確保每一個(gè)單獨(dú)的風(fēng)險(xiǎn)管理計(jì)劃之間,以及與整體風(fēng)險(xiǎn)管理計(jì)劃之間一致。

*風(fēng)險(xiǎn)化解:每個(gè)重要風(fēng)險(xiǎn)所對(duì)應(yīng)的計(jì)劃的執(zhí)行。

*風(fēng)險(xiǎn)監(jiān)控:就是對(duì)解決風(fēng)險(xiǎn)的過(guò)程進(jìn)行監(jiān)控,監(jiān)控還包括識(shí)別新的風(fēng)險(xiǎn)并反饋到正在進(jìn)行的風(fēng)險(xiǎn)管理中。

風(fēng)險(xiǎn)識(shí)別

*最常見(jiàn)的進(jìn)度計(jì)劃風(fēng)險(xiǎn):

1功能蔓延

2需求鍍金,開(kāi)發(fā)人員鍍金

3質(zhì)量不定

4計(jì)劃過(guò)于樂(lè)觀

5設(shè)計(jì)欠佳

6銀彈綜合癥

7研發(fā)導(dǎo)向的開(kāi)發(fā)

8人員薄弱

9簽約商失敗

10研發(fā)人員與客戶之間的摩擦

*進(jìn)度計(jì)劃風(fēng)險(xiǎn)的完整列表:

1計(jì)劃編制風(fēng)險(xiǎn)

1計(jì)劃,資源和產(chǎn)品定義全憑客戶或上級(jí)口頭指令,并且不完全一致。對(duì)于我們的項(xiàng)目,這點(diǎn)可以理解為產(chǎn)品經(jīng)理太軟弱,在開(kāi)發(fā)過(guò)程中聽(tīng)?wèi){客戶定義產(chǎn)品范圍。

2計(jì)劃是優(yōu)化過(guò)的,是“理想狀態(tài)”。這點(diǎn)對(duì)于開(kāi)發(fā)人員和經(jīng)驗(yàn)比較少的項(xiàng)目經(jīng)理,幾乎是通病。他們對(duì)于計(jì)劃過(guò)于樂(lè)觀。

3計(jì)劃忽略了必要的步驟。計(jì)劃時(shí)間容易被想象成實(shí)現(xiàn)任務(wù),而非設(shè)計(jì)+檢查+實(shí)現(xiàn)+測(cè)試。

4計(jì)劃基于特定的成員。而實(shí)際上那些成員無(wú)法進(jìn)入項(xiàng)目。

5在限定時(shí)間內(nèi)無(wú)法建成一定規(guī)模的產(chǎn)品。俗稱無(wú)法完成的任務(wù)。

6產(chǎn)品規(guī)模比預(yù)估要大?;蛘呤沁^(guò)程中,產(chǎn)品規(guī)模變得比預(yù)估要大。

7工作量大于估算。

8進(jìn)度已經(jīng)拖延。在計(jì)劃編制時(shí),如果當(dāng)前進(jìn)度已經(jīng)落后,非常容易過(guò)于樂(lè)觀的預(yù)估今后的速度。

9進(jìn)度的延誤造成生產(chǎn)率下降。

10目標(biāo)日期提前,但是沒(méi)有相應(yīng)地調(diào)整產(chǎn)品范圍或可用資源。

11一個(gè)任務(wù)的延遲,導(dǎo)致相關(guān)任務(wù)的連鎖反應(yīng)。

12涉足不熟悉的產(chǎn)品領(lǐng)域,花費(fèi)在設(shè)計(jì)和實(shí)現(xiàn)的時(shí)間比預(yù)估要多。

2組織和管理

1項(xiàng)目缺乏一個(gè)有凝聚力的領(lǐng)導(dǎo)人。對(duì)于我們公司來(lái)說(shuō),這個(gè)風(fēng)險(xiǎn)天然存在。因?yàn)楫a(chǎn)品經(jīng)理,項(xiàng)目負(fù)責(zé)人,商務(wù),都無(wú)法單獨(dú)全權(quán)對(duì)項(xiàng)目負(fù)責(zé)。期望以后項(xiàng)目部在開(kāi)發(fā)階段能全權(quán)對(duì)項(xiàng)目負(fù)責(zé)。

2由于前期乏力,項(xiàng)目被長(zhǎng)時(shí)間擱置。

3解雇和削減開(kāi)支,導(dǎo)致小組能力下降。

4僅由管理層或市場(chǎng)人員進(jìn)行技術(shù)決策,導(dǎo)致計(jì)劃進(jìn)度延長(zhǎng)。

5低效的項(xiàng)目組織結(jié)構(gòu),導(dǎo)致生產(chǎn)率降低。前期公司測(cè)試自成一個(gè)部門,這點(diǎn)我認(rèn)為非常不利于項(xiàng)目快速開(kāi)發(fā)?,F(xiàn)在產(chǎn)品部門也正在造成同樣的問(wèn)題。

6管理層的決策時(shí)間/周期比預(yù)估要長(zhǎng)。

7預(yù)算削減打亂項(xiàng)目計(jì)劃。

8管理層做出了打擊項(xiàng)目積極性的決定。

9非技術(shù)的第三方工作比預(yù)估要長(zhǎng)。

10計(jì)劃性太差,無(wú)法適應(yīng)期望的開(kāi)發(fā)速度。這點(diǎn)對(duì)于現(xiàn)在一部非常普遍,項(xiàng)目計(jì)劃太差,監(jiān)控太差,里程碑幾乎沒(méi)有,相應(yīng)的進(jìn)度預(yù)警幾乎沒(méi)有。

11項(xiàng)目計(jì)劃由于進(jìn)度壓力而放棄。非常普遍。

12管理層強(qiáng)調(diào)英雄主義。

3開(kāi)發(fā)環(huán)境

1設(shè)施沒(méi)有及時(shí)到位。

2設(shè)施擁擠,雜亂和破損。雜亂的辦公環(huán)境,說(shuō)這個(gè)不知道算不算矯情。

3開(kāi)發(fā)工具沒(méi)有及時(shí)到位。

4開(kāi)發(fā)工具不如期望的那樣有效。如:需要時(shí)間熟悉新工具,新環(huán)境等。

5開(kāi)發(fā)工具不是基于技術(shù)需求,不能提供計(jì)劃所要求的性能。

6新工具的學(xué)習(xí)時(shí)間比預(yù)期時(shí)間要長(zhǎng)。

4最終用戶

1用戶堅(jiān)持新需求。

2用戶對(duì)交付的產(chǎn)品不滿意,要求重新設(shè)計(jì)和重做。這點(diǎn)很大程度上,是由需求細(xì)節(jié)溝通不充分導(dǎo)致,其次就是用戶介入時(shí)間太晚,最后就是產(chǎn)品質(zhì)量太差。

3用戶不買進(jìn)項(xiàng)目相關(guān)產(chǎn)品,導(dǎo)致項(xiàng)目功能殘缺。比如短信接口,服務(wù)器等。

4最終用戶的意見(jiàn)未被采納,造成產(chǎn)品不得不重做。

5客戶

1客戶堅(jiān)持新需求。

2客戶對(duì)規(guī)劃,原型和規(guī)格的審核/決策周期比預(yù)估要長(zhǎng)。

3客戶沒(méi)有或者不能參與規(guī)劃,原型,和規(guī)格審核,導(dǎo)致需求不穩(wěn)定或耗時(shí)的變更。比這更可怕的是客戶對(duì)原型審核過(guò)于草率。

4客戶答復(fù)的時(shí)間比預(yù)期要長(zhǎng)。比如回答或者澄清需求相關(guān)問(wèn)題。

5客戶堅(jiān)持要做技術(shù)決策而導(dǎo)致進(jìn)度延遲。

6客戶對(duì)開(kāi)發(fā)進(jìn)度管理過(guò)細(xì),導(dǎo)致進(jìn)展很慢。

7客戶提供的組件無(wú)法與開(kāi)發(fā)的產(chǎn)品匹配,導(dǎo)致額外的設(shè)計(jì)和集成。

8客戶提供的組件質(zhì)量較差,導(dǎo)致額外的設(shè)計(jì)工作,以及額外的客戶關(guān)系維護(hù)工作。雅漾就是這個(gè)情況,碰到這種情況,一定要通過(guò)郵件確認(rèn)客戶問(wèn)題,以免最后被客戶反咬。

9客戶不接受交付的軟件,盡快已經(jīng)滿足了所有的規(guī)格。這種情況,一般客戶會(huì)用我方一些小錯(cuò)誤作為不接受交付的理由。

10客戶期望的開(kāi)發(fā)速度是開(kāi)發(fā)人員無(wú)法達(dá)到的。

6承包商/客戶方

1承包商/客戶方?jīng)]有按承諾交付組件。

2承包商/客戶方提交的組件質(zhì)量太差。

3承包商/客戶方?jīng)]有買進(jìn)項(xiàng)目開(kāi)發(fā)必要的工具。

7需求

1需求已經(jīng)成為項(xiàng)目基準(zhǔn),但變化還在繼續(xù)。

2需求定義欠佳,而進(jìn)一步定義卻會(huì)擴(kuò)張項(xiàng)目范圍。出現(xiàn)這種情況,一般就是產(chǎn)品經(jīng)理的原型不細(xì)致。所以在審核原型的時(shí)候,一定要細(xì)致。

3添加額外的需求。做好需求管理,不管新需求是小是大。

4產(chǎn)品定義含混的部分比預(yù)期的要大。

8產(chǎn)品

1錯(cuò)誤發(fā)生率比較高的模塊,需要比預(yù)期更多的時(shí)間測(cè)試,設(shè)計(jì)和實(shí)現(xiàn)。

2矯正質(zhì)量低下的產(chǎn)品,需要比預(yù)期更多的時(shí)間測(cè)試,修復(fù)。

3使用不熟悉的新技術(shù)。

4由于產(chǎn)品功能錯(cuò)誤,導(dǎo)致需要重新設(shè)計(jì)和實(shí)現(xiàn)。

5開(kāi)發(fā)額外不需要的功能(需求鍍金)。

9外部環(huán)境

1產(chǎn)品依賴政府規(guī)章。

2產(chǎn)品依賴正在草擬的標(biāo)準(zhǔn)。

10人員

1招聘人員所花的時(shí)間比預(yù)期要長(zhǎng)。

2作為先決條件的任務(wù)無(wú)法完成。

3開(kāi)發(fā)人員與管理層關(guān)系欠佳。

4成員沒(méi)有全身心的投入產(chǎn)品。

5缺乏激勵(lì)機(jī)制,士氣低下。

6缺乏必要的規(guī)范,增加了工作失誤與重復(fù)工作。

7項(xiàng)目結(jié)束前,人員流失。

8項(xiàng)目后期加入新員工。

9項(xiàng)目組成員無(wú)法有效的一起工作。

10項(xiàng)目組成員之間沖突。

11有問(wèn)題的成員,沒(méi)有盡早的調(diào)理開(kāi)發(fā)組,導(dǎo)致其他成員不滿。

12最佳人員沒(méi)有進(jìn)入項(xiàng)目組。

13人員不足。

14任務(wù)分配不合理。

15人員工作的進(jìn)展比預(yù)期要慢。

16管理人員怠工,導(dǎo)致計(jì)劃和進(jìn)度失控。參考何飛創(chuàng)業(yè)期,何飛和我的怠工狀態(tài),是項(xiàng)目計(jì)劃和進(jìn)度失控。

17開(kāi)發(fā)人員怠工,不仔細(xì),導(dǎo)致工作遺漏,質(zhì)量低下。

11設(shè)計(jì)和實(shí)現(xiàn)

1設(shè)計(jì)過(guò)于簡(jiǎn)單,導(dǎo)致需要重新設(shè)計(jì)和實(shí)現(xiàn)。

2設(shè)計(jì)過(guò)于復(fù)雜,導(dǎo)致一些不必要的工作。

3設(shè)計(jì)質(zhì)量底下,導(dǎo)致重復(fù)設(shè)計(jì)和實(shí)現(xiàn)。

4使用不熟悉的方法。

5產(chǎn)品采用太底層的語(yǔ)言或技術(shù)。

6一些必要的功能,無(wú)法使用現(xiàn)有的代碼和實(shí)現(xiàn)。開(kāi)發(fā)人員必須要用新的庫(kù)或自行開(kāi)發(fā)。盡快完善代碼庫(kù)。

7代碼和庫(kù)質(zhì)量低下。

8分別開(kāi)發(fā)的模塊,無(wú)法有效集成。參考后臺(tái)和移動(dòng)端集成,參考移動(dòng)端之間的一致性。

12過(guò)程

1大量紙面工作,拖慢了進(jìn)度。

2過(guò)程跟蹤不準(zhǔn)確。

3前期工作不真實(shí)。

4質(zhì)量跟蹤不準(zhǔn)確。

5太不正規(guī)。缺乏對(duì)軟件開(kāi)發(fā)策略和標(biāo)準(zhǔn)的遵循。我們應(yīng)該在這個(gè)地方。

6過(guò)于正規(guī)。教條的遵循軟件開(kāi)發(fā)策略和標(biāo)準(zhǔn)。

7向管理層撰寫進(jìn)程報(bào)告,占用開(kāi)發(fā)人員大量時(shí)間。

8風(fēng)險(xiǎn)管理粗心,導(dǎo)致沒(méi)有發(fā)現(xiàn)重大項(xiàng)目風(fēng)險(xiǎn)。

9項(xiàng)目風(fēng)險(xiǎn)管理花費(fèi)的時(shí)間,比預(yù)期時(shí)間長(zhǎng)。

風(fēng)險(xiǎn)分析

在確定了項(xiàng)目存在哪些風(fēng)險(xiǎn)之后,下一步就是分析每個(gè)風(fēng)險(xiǎn)可能造成的影響。以下是一些風(fēng)險(xiǎn)分析方法。

*風(fēng)險(xiǎn)影響量

風(fēng)險(xiǎn)影響量是一種非常有用的風(fēng)險(xiǎn)分析方法,它常被寫成RE,Risk Exposure。風(fēng)險(xiǎn)的一個(gè)定義就是“不希望的損失”。風(fēng)險(xiǎn)暴露量就等于“不希望的損失”的概率乘以造成損失之后的損失程度。舉例來(lái)說(shuō)就是:你認(rèn)為實(shí)際進(jìn)度比計(jì)劃要延長(zhǎng)4周的概率是25%,那么風(fēng)險(xiǎn)影響量就是25% x 4周= 1周。

你可以建立一個(gè)由風(fēng)險(xiǎn),發(fā)生概率,損失大小,影響量組成的風(fēng)險(xiǎn)評(píng)估表。


風(fēng)險(xiǎn)影響量的缺點(diǎn)是:主觀意見(jiàn)對(duì)風(fēng)險(xiǎn)結(jié)果影響比較大,因?yàn)槟惚仨毥o出概率和損失大小的數(shù)值,所以不能指望它有多精確。

下面將描述怎樣預(yù)估損失大小和風(fēng)險(xiǎn)概率。

*預(yù)估損失大小

損失大小通常比風(fēng)險(xiǎn)概率更容易預(yù)估。例如:如果你的項(xiàng)目可能在2月1號(hào)通過(guò),最遲應(yīng)該是在3月1號(hào),那么你的風(fēng)險(xiǎn)損失就是一個(gè)月。

如果有時(shí)損失大小不容易直接估算出來(lái),還可以將損失拆分成更小的部分,分別評(píng)估。

*預(yù)估風(fēng)險(xiǎn)概率

風(fēng)險(xiǎn)概率的預(yù)估有很強(qiáng)的主觀性。以下是一些提供主觀預(yù)估精確度的方法:

1由最熟悉項(xiàng)目的人評(píng)估。應(yīng)該是目前最適合我們的。

2 Delphi法或少數(shù)服從多數(shù)的方法。每個(gè)人獨(dú)立的對(duì)風(fēng)險(xiǎn)概率預(yù)估。然后一輪輪討論,直到達(dá)成共識(shí)。

3打賭法。比如:設(shè)備如果及時(shí)到位,你贏得125塊,如果沒(méi)有到位,你輸我100塊,逐步調(diào)整賭注,直到雙方都滿意。那么設(shè)備無(wú)法及時(shí)到位的風(fēng)險(xiǎn)就是100/125 = 44%。

4使用形容詞標(biāo)準(zhǔn)。如非??赡埽芸赡?,可能,或許,不太可能,不可能,根本不可能等,讓成員選擇風(fēng)險(xiǎn)對(duì)應(yīng)的形容詞,然后把形容詞轉(zhuǎn)化為量化的評(píng)估。

*整個(gè)項(xiàng)目的延期和緩沖

對(duì)風(fēng)險(xiǎn)影響量的評(píng)估,最終需要反映到整個(gè)項(xiàng)目預(yù)期上來(lái)。所以在進(jìn)度計(jì)劃制定過(guò)程中,應(yīng)該加上風(fēng)險(xiǎn)影響量的時(shí)間。

之前何飛的做法,是在進(jìn)度計(jì)劃上,直接加10%到30%的時(shí)間,以應(yīng)對(duì)風(fēng)險(xiǎn),這種做法比較粗糙,建議使用風(fēng)險(xiǎn)影響量。

風(fēng)險(xiǎn)優(yōu)先級(jí)

一旦建立了風(fēng)險(xiǎn)列表,下一步就是確定每個(gè)風(fēng)險(xiǎn)的優(yōu)先級(jí)。

首先,按照風(fēng)險(xiǎn)影響量從大到小排序,就形成了一個(gè)粗略的優(yōu)先級(jí)列表。如果能成功的處理影響量較大的主要風(fēng)險(xiǎn),就有希望超出預(yù)期計(jì)劃完成項(xiàng)目了。一般情況下,你最好花時(shí)間控制影響量大的主要風(fēng)險(xiǎn)。

然后,根據(jù)實(shí)際情況,將影響量沒(méi)有在前面,但是概率或損失很大的風(fēng)險(xiǎn)提高優(yōu)先級(jí)。

風(fēng)險(xiǎn)控制

確定了風(fēng)險(xiǎn)優(yōu)先級(jí)列表,就可以準(zhǔn)備對(duì)它進(jìn)行控制了。本節(jié)描述風(fēng)險(xiǎn)控制的三個(gè)方面:風(fēng)險(xiǎn)管理計(jì)劃,風(fēng)險(xiǎn)化解,和風(fēng)險(xiǎn)監(jiān)控。

*風(fēng)險(xiǎn)管理計(jì)劃

編制風(fēng)險(xiǎn)管理計(jì)劃的重點(diǎn)是制定一個(gè)計(jì)劃,以處理高優(yōu)先級(jí)的風(fēng)險(xiǎn)。

風(fēng)險(xiǎn)管理計(jì)劃可以理解為一段一段的風(fēng)險(xiǎn)管理描述,例如每個(gè)風(fēng)險(xiǎn)由誰(shuí)引起,表現(xiàn)形式是什么,可能什么時(shí)候發(fā)生,在哪發(fā)生,為什么發(fā)生以及是怎樣發(fā)生的,并描述風(fēng)險(xiǎn)監(jiān)控,關(guān)閉已經(jīng)化解的風(fēng)險(xiǎn),確定緊急風(fēng)險(xiǎn)等。

*風(fēng)險(xiǎn)化解

1避免風(fēng)險(xiǎn)

不要做冒險(xiǎn)活動(dòng)。

2將風(fēng)險(xiǎn)從系統(tǒng)的一部分轉(zhuǎn)移到另一部分

有時(shí)系統(tǒng)中一個(gè)部分的風(fēng)險(xiǎn),在另一個(gè)部分則不是風(fēng)險(xiǎn)。比如說(shuō)服客戶自己設(shè)計(jì)業(yè)務(wù)模塊,而不是自己設(shè)計(jì)。

3購(gòu)買關(guān)于風(fēng)險(xiǎn)的信息

4消除產(chǎn)生風(fēng)險(xiǎn)的根源

5接受風(fēng)險(xiǎn)

6發(fā)布風(fēng)險(xiǎn)

讓上級(jí)領(lǐng)導(dǎo)或客戶提前知道風(fēng)險(xiǎn)以及可能后果,如果發(fā)生了,他們也就沒(méi)有這么驚訝了。

7控制風(fēng)險(xiǎn)

定制風(fēng)險(xiǎn)無(wú)法化解時(shí)的處理方案。比如:分配額外的資源來(lái)測(cè)試令人擔(dān)心的模塊等。

8記住風(fēng)險(xiǎn)

以下是一些風(fēng)險(xiǎn),已經(jīng)對(duì)應(yīng)的控制方法:


*風(fēng)險(xiǎn)監(jiān)控

當(dāng)我們定制了風(fēng)險(xiǎn)防范計(jì)劃之后,雖然風(fēng)險(xiǎn)還是存在的,并且風(fēng)險(xiǎn)在項(xiàng)目過(guò)程中,會(huì)增大,或減小,所以需要對(duì)風(fēng)險(xiǎn)進(jìn)行監(jiān)控。

1前十個(gè)風(fēng)險(xiǎn)列表

最有效的風(fēng)險(xiǎn)監(jiān)控工具之一就是每周前十個(gè)風(fēng)險(xiǎn)列表。列表包括:風(fēng)險(xiǎn)當(dāng)前級(jí)別,以前級(jí)別,上表次數(shù),風(fēng)險(xiǎn)名字,風(fēng)險(xiǎn)化解進(jìn)展。每周對(duì)風(fēng)險(xiǎn)列表進(jìn)行更新。下面是個(gè)示意表:


對(duì)于快速開(kāi)發(fā)項(xiàng)目,項(xiàng)目經(jīng)理和項(xiàng)目經(jīng)理的上司每周都應(yīng)該審核前十個(gè)風(fēng)險(xiǎn)列表。它最有意義的地方是促使你定期查看風(fēng)險(xiǎn)情況。

2中間檢查

在每個(gè)小里程碑后進(jìn)行一次風(fēng)險(xiǎn)檢查是非常有益的。

3風(fēng)險(xiǎn)官員

為了防止項(xiàng)目經(jīng)理和開(kāi)發(fā)人員忽視計(jì)劃中的風(fēng)險(xiǎn),有些企業(yè)任命了全職的風(fēng)險(xiǎn)官員,專門警告項(xiàng)目風(fēng)險(xiǎn)。

第二部分快速開(kāi)發(fā)

第六章快速開(kāi)發(fā)中的核心問(wèn)題

一個(gè)標(biāo)準(zhǔn)是否可以適應(yīng)所有情況

你需要怎樣的開(kāi)發(fā)方法

*進(jìn)度計(jì)劃有嚴(yán)格限制的產(chǎn)品

對(duì)于確實(shí)需要全力以赴提高開(kāi)發(fā)速度,而不注重成本,可預(yù)測(cè)性的產(chǎn)品來(lái)說(shuō),它與典型產(chǎn)品有著不同的時(shí)間價(jià)值曲線:


*表面上的快速開(kāi)發(fā)

某些項(xiàng)目中,客戶,用戶,上級(jí)或者產(chǎn)品提出“快速開(kāi)發(fā)”的需求,有時(shí)還希望低費(fèi)用,低風(fēng)險(xiǎn)。他們其實(shí)也不知道這樣的要求是否過(guò)分,或者是否真的過(guò)分。

在你得到消息要在限定的時(shí)間內(nèi)“快速開(kāi)發(fā)”時(shí),應(yīng)該充分挖掘你所面對(duì)的真實(shí)需求。各種表面上號(hào)稱需要“快速開(kāi)發(fā)”的項(xiàng)目,實(shí)際上是還有其他需求。

1防止失控狀態(tài)

如果一個(gè)軟件組織有失控,拖延工期,或者超出預(yù)算的歷史,如果一個(gè)客戶有被其簽約商拖延工期,超出預(yù)算的歷史,都會(huì)造成客戶要求“快速開(kāi)發(fā)”。但是在這種情況下,客戶真正的需求是能在規(guī)定的進(jìn)度和預(yù)算下完成。

在這種情況下,你真正需要的是較好的風(fēng)險(xiǎn)管理,預(yù)算管理和進(jìn)度控制來(lái)保證項(xiàng)目順利進(jìn)行。

2可預(yù)測(cè)性

在很多情況下,客戶需要將軟件產(chǎn)品與市場(chǎng),發(fā)布會(huì),公司計(jì)劃等其他項(xiàng)目協(xié)調(diào)在一起。這時(shí)你需要較好的風(fēng)險(xiǎn)管理。

3最低費(fèi)用

對(duì)于軟件開(kāi)發(fā)項(xiàng)目,客戶希望費(fèi)用最低的情況并不罕見(jiàn)。在這種情況下,他們口里說(shuō)著快速開(kāi)發(fā),其實(shí)是需要降低費(fèi)用。

但是在實(shí)際上,最短的開(kāi)發(fā)周期跟最低的費(fèi)用并不是同義詞。

4渴望加班

在一些情況下,客戶或者上級(jí)利用他們對(duì)進(jìn)度的關(guān)系,來(lái)掩飾他們希望開(kāi)發(fā)者提供免費(fèi)加班。

這種情況是很容易區(qū)分的,在這種情況下,客戶強(qiáng)烈關(guān)系進(jìn)度,但是無(wú)法提供與之對(duì)應(yīng)的費(fèi)用或資源。如果客戶對(duì)項(xiàng)目進(jìn)度的關(guān)心讓你感到壓力,那么它的重要性足以讓客戶增加對(duì)項(xiàng)目的支持。

*你真正需要的是全力以赴的開(kāi)發(fā)

現(xiàn)實(shí)中的項(xiàng)目,客戶希望你在低費(fèi)用,短時(shí)間里,提供質(zhì)量最好的產(chǎn)品。往往你只能三選二。在短時(shí)間里,提供低質(zhì)量的產(chǎn)品往往是最錯(cuò)誤的做法。因?yàn)槿绻銣?zhǔn)時(shí)發(fā)布了低質(zhì)量的產(chǎn)品,客戶不認(rèn)為你準(zhǔn)時(shí)發(fā)布了產(chǎn)品,而是你發(fā)布了低質(zhì)量的產(chǎn)品。對(duì)應(yīng)到我們項(xiàng)目組,也就是一直存在的細(xì)節(jié)問(wèn)題。認(rèn)為項(xiàng)目很急,所以在細(xì)節(jié)問(wèn)題的處理上太粗心。

按時(shí)完成的可能性

我們感覺(jué)開(kāi)發(fā)速度緩慢,一部分原因是有些工作確實(shí)緩慢,另一部分原因是沒(méi)有達(dá)到預(yù)期的速度,所以顯得緩慢。對(duì)于第二種情況,我們的對(duì)策是維護(hù)兩套進(jìn)度,一套用來(lái)真實(shí)的控制項(xiàng)目,另外一套給上海和客戶,用來(lái)降低客戶預(yù)期。

軟件項(xiàng)目包含太多可變因素,通常不能100%精確地設(shè)定開(kāi)發(fā)進(jìn)度。


上面的圖表達(dá)了幾個(gè)假定:

l完成一個(gè)項(xiàng)目,都有一個(gè)最快完成速度的極限值。

l完成一個(gè)項(xiàng)目,沒(méi)有一個(gè)最慢完成速度的極限值。

l完成幾率曲線的前一段和后一段形狀不同。


很多項(xiàng)目最初瞄準(zhǔn)了不可能開(kāi)發(fā)的區(qū)域,最終落在了緩慢開(kāi)發(fā)的區(qū)域。

建議安排好項(xiàng)目進(jìn)度,使按時(shí)完成的可能性達(dá)到50%是比較合理的做法。

感知與現(xiàn)實(shí)

即使按時(shí)完成任務(wù),要知道開(kāi)發(fā)速度慢的感覺(jué)與事實(shí)上的速度慢一樣能影響你的項(xiàng)目成果。即使我們一直不停的在做,也沒(méi)有理由期望客戶緘默的等待幾個(gè)月,直到項(xiàng)目結(jié)束。應(yīng)該意識(shí)到讓客戶定期知道項(xiàng)目的進(jìn)度情況是我們工作的一部分。

不切實(shí)際的用戶期望

如果項(xiàng)目進(jìn)度制定在一個(gè)不可能的區(qū)域內(nèi),但在有效區(qū)域完成,人們還是認(rèn)為這是一個(gè)失敗的項(xiàng)目。盡管它是在給定資源條件下,以有效的進(jìn)度完成。

有時(shí)候,客服開(kāi)發(fā)速度慢的感覺(jué),需要確保合理的用戶期望,并提供穩(wěn)定的項(xiàng)目進(jìn)展報(bào)告。

克服慢速開(kāi)發(fā)的感覺(jué)

兩種方法克服慢速開(kāi)發(fā)的問(wèn)題:

l將事實(shí)上的慢速開(kāi)發(fā)重新定位。

將實(shí)際進(jìn)度縮短,將進(jìn)度移動(dòng)到有效開(kāi)發(fā)區(qū)域。

l將感覺(jué)上的慢速開(kāi)發(fā)重新定位。

拜托癡心妄想,延長(zhǎng)計(jì)劃進(jìn)度時(shí)間,縮小計(jì)劃于實(shí)際的差距。

時(shí)間都去哪里了

*典型的觀點(diǎn)

許多項(xiàng)目開(kāi)始于需求定義之前,如果這一階段沒(méi)有經(jīng)過(guò)良好的定義和管理,可能會(huì)延續(xù)很長(zhǎng)一段時(shí)間。


*軟性問(wèn)題

1返工

對(duì)具有缺陷的需求,設(shè)計(jì),代碼進(jìn)行返工,普遍需要花費(fèi)整體開(kāi)發(fā)費(fèi)用的40%。在早期對(duì)缺陷進(jìn)行修正是最廉價(jià)的。因而避免返工是一個(gè)縮短項(xiàng)目執(zhí)行時(shí)間的有利機(jī)會(huì)。

2功能蔓延

典型的項(xiàng)目經(jīng)驗(yàn)告訴我們,25%的需求會(huì)發(fā)生變化,有些時(shí)候更多。對(duì)本質(zhì)的需求變化不加以限制是開(kāi)發(fā)效率的首要錯(cuò)誤。所以避免功能蔓延,需求鍍金對(duì)項(xiàng)目進(jìn)度是很有好處的。

3需求定義

一般情況下,需求定義要花費(fèi)項(xiàng)目全部時(shí)間的10%到30%。而且由于需求收集是一種無(wú)所限制的工作,也就可能會(huì)花費(fèi)大量不必要的時(shí)間。在需求定義階段適當(dāng)?shù)亩酱?,?duì)項(xiàng)目進(jìn)度很有幫助。在需求定義期間,包括聯(lián)合應(yīng)用開(kāi)發(fā),漸進(jìn)原型,階段交付和不同的風(fēng)險(xiǎn)管理方法,將在其他章節(jié)中介紹。

4模糊的項(xiàng)目前期

開(kāi)發(fā)速度的權(quán)衡

最初的資源股價(jià)和進(jìn)度往往不能被接受,這不是因?yàn)轫?xiàng)目經(jīng)理或程序設(shè)計(jì)者的工作有差錯(cuò),而是由于用戶通常希望得到的比他們提供的資源要多。如果工作不能與可行的進(jìn)度和資源想適應(yīng),那么他們要么就得到的更少,要么就是導(dǎo)致時(shí)間和資源增加。

*進(jìn)度,費(fèi)用和產(chǎn)品的平衡

*質(zhì)量的權(quán)衡

對(duì)軟件產(chǎn)品的質(zhì)量要求分為兩種:

第一種是要求軟件有較低的缺陷率。由于低缺陷率與短的開(kāi)發(fā)周期分身就是匹配的,在這種情況下沒(méi)有更好的辦法為了進(jìn)度來(lái)權(quán)衡質(zhì)量。

第二種是要求產(chǎn)品包括高質(zhì)量產(chǎn)品應(yīng)有的特性,可用性,健壯性,有效性等。對(duì)之中質(zhì)量要求的關(guān)注會(huì)延長(zhǎng)開(kāi)發(fā)時(shí)間,因此也就使我們需要相對(duì)于進(jìn)度去平衡這種質(zhì)量要求。

*個(gè)人效率的權(quán)衡

在嘗試達(dá)到個(gè)人最大生產(chǎn)力和最求進(jìn)度最快之間存在沖突。達(dá)到每個(gè)人最大生產(chǎn)力的最簡(jiǎn)單辦法就是保持小規(guī)模團(tuán)隊(duì),而最求進(jìn)度最快最簡(jiǎn)單的方法就是擴(kuò)大團(tuán)隊(duì)人數(shù)。因此意味著快速開(kāi)發(fā)并不總是生產(chǎn)力最高的。

典型的進(jìn)度改進(jìn)模式


如上圖,典型開(kāi)發(fā)過(guò)程中,計(jì)劃雖然好看,但是很少有機(jī)會(huì)完成。從典型開(kāi)發(fā)到有效開(kāi)發(fā)要完成的最大部分工作是從癡心妄想轉(zhuǎn)變到有意義的項(xiàng)目計(jì)劃。如下圖:


如上圖,有效開(kāi)發(fā)的項(xiàng)目中,進(jìn)度的分布范圍是較狹窄的。有兩個(gè)原因:一是人們學(xué)會(huì)了怎樣實(shí)際地設(shè)置目標(biāo),二是人們學(xué)會(huì)了如何較快的開(kāi)發(fā)軟件。

向快速開(kāi)發(fā)前進(jìn)

后續(xù)章節(jié)中將描述實(shí)現(xiàn)快速開(kāi)發(fā)的方法:

l生命期計(jì)劃

l估算

l進(jìn)度計(jì)劃

l面向客戶開(kāi)發(fā)

l激勵(lì)

l團(tuán)隊(duì)合作

l團(tuán)隊(duì)結(jié)構(gòu)

l生產(chǎn)力工具

l項(xiàng)目矯正

以上的部分內(nèi)容我們?cè)谇懊嬖?jīng)講過(guò),之所以我們?cè)谙旅孢€要討論,是因?yàn)橐陨蟽?nèi)容是獲得最快開(kāi)發(fā)速度的關(guān)鍵方法。

第七章生命期計(jì)劃

任何軟件開(kāi)發(fā)都要經(jīng)歷一個(gè)“生命期”,包括從1.0版本在某個(gè)人腦中閃現(xiàn)到6.74b版本在最后一個(gè)用戶的機(jī)器上最后一次使用之間的所有活動(dòng)。

生命期模型的主要功能是為開(kāi)發(fā)活動(dòng)確定一種次序,一種標(biāo)準(zhǔn)。

人們最熟悉的模型是瀑布生命期模型,但是它的弱點(diǎn)也同樣著名。作為一個(gè)項(xiàng)目骨架,你選擇的生命期模型對(duì)項(xiàng)目的成功和任何其他計(jì)劃一樣重要,并幫助你一步一步接近目標(biāo)。如果你選擇了合適的生命期模型,就可以提高開(kāi)發(fā)速度,提高質(zhì)量,加強(qiáng)項(xiàng)目跟蹤控制,減少成本,降低風(fēng)險(xiǎn)或改善用戶關(guān)系。選擇了錯(cuò)誤的生命期模型,也必定會(huì)導(dǎo)致工作拖沓,勞動(dòng)重復(fù),無(wú)謂的浪費(fèi)和挫折。

純瀑布模型


1說(shuō)明

盡管存在許多問(wèn)題,純瀑布模型是其他模型的基礎(chǔ),是一個(gè)比較有效的生命期模型。

在瀑布模型中,項(xiàng)目始終按照一定順序的步驟從初始概念進(jìn)展到系統(tǒng)測(cè)試。項(xiàng)目確保在每個(gè)階段結(jié)束時(shí)進(jìn)行檢查,判定是否可以開(kāi)始下一個(gè)階段的工作。

文檔驅(qū)動(dòng)。意味著主要工作成果是通過(guò)文檔傳遞。在瀑布模型中,各階段不連續(xù)也不交疊。

降低計(jì)劃管理費(fèi)用。因?yàn)槟憧梢灶A(yù)先完成所有計(jì)劃,文檔產(chǎn)生并提供了貫穿生命期過(guò)程的充分說(shuō)明。

2適合情境

當(dāng)你有一個(gè)穩(wěn)定的產(chǎn)品定義和很容易被理解的技術(shù)解決方案時(shí),瀑布模型特別合適。在這種情況下,瀑布模型可以幫助你及早發(fā)現(xiàn)問(wèn)題,提供穩(wěn)定的需求。

對(duì)于那些容易理解但很復(fù)雜的項(xiàng)目,采用瀑布模型很合適。

3缺點(diǎn)

缺乏靈活性。必須在項(xiàng)目開(kāi)始階段就說(shuō)明全部需求。

編碼修正模型


1說(shuō)明

編碼修正模型是一種不太有用的模型,但是比較常見(jiàn)。如果你沒(méi)有明確的選擇其他生命期模型,也許你就不自覺(jué)的在用編碼修正模型。編碼修改也被稱為魯莽編碼。

當(dāng)你使用編碼修正模型的時(shí)候,你是從一個(gè)大致想法開(kāi)始,可能有一個(gè)正式規(guī)范,可能沒(méi)有,然后你結(jié)合設(shè)計(jì),編碼,調(diào)式和測(cè)試方法,完成開(kāi)發(fā)。如下圖:

2適合情境/優(yōu)點(diǎn)

編碼修正模型有兩個(gè)優(yōu)點(diǎn):第一,不需要什么成本。你不需要在編碼工作之外付出成本,比如項(xiàng)目規(guī)劃,文檔編制,質(zhì)量保證等。第二,只需要極少的專業(yè)知識(shí)。任何有編碼技能的人都能使用它。

對(duì)于一些非常小的,用完就丟的軟件,原型,驗(yàn)證程序等,這種模型還是很合適的

3缺點(diǎn)

對(duì)于其他項(xiàng)目來(lái)說(shuō),這種模型是非常危險(xiǎn)的。因?yàn)樗?b>不提供項(xiàng)目進(jìn)展,質(zhì)量評(píng)估,風(fēng)險(xiǎn)識(shí)別等。

螺旋模型!


1說(shuō)明

螺旋模型是一種以風(fēng)險(xiǎn)為導(dǎo)向的生命期模型。它把項(xiàng)目分解成一個(gè)個(gè)小項(xiàng)目,每個(gè)小項(xiàng)目都標(biāo)識(shí)一個(gè)或多個(gè)主要風(fēng)險(xiǎn),直到所有主要風(fēng)險(xiǎn)都被確認(rèn)?!帮L(fēng)險(xiǎn)”的概念在這里有所外延,它可以是需求或者是框架沒(méi)有被理解清楚,潛在的性能問(wèn)題,根本的技術(shù)問(wèn)題,等等。

它的基本思路是,從一個(gè)小范圍的關(guān)鍵中心開(kāi)始尋找風(fēng)險(xiǎn),制定風(fēng)險(xiǎn)計(jì)劃,并交付給下一步驟。如此迭代,每次迭代都把項(xiàng)目擴(kuò)展到更大的規(guī)模。每次迭代都包括一下六個(gè)步驟:

(1)確定目標(biāo),方案和約束條件。

(2)識(shí)別并解決風(fēng)向。

(3)評(píng)價(jià)備選方案。

(4)開(kāi)發(fā)本次迭代可供交付的內(nèi)容,并檢查它們的正確性。

(5)規(guī)劃下一個(gè)迭代過(guò)程。

(6)交付給下一步驟,開(kāi)始新的迭代過(guò)程。

2適合情境/優(yōu)點(diǎn)

可以采用不同的方法把螺旋模型和其他生命期模型結(jié)合在一起使用。比如使用螺旋模型將項(xiàng)目分解,將風(fēng)險(xiǎn)降低到可以接受的水平后,再采用瀑布模型或其他模型來(lái)執(zhí)行項(xiàng)目。

通常都是在螺旋模型中,把其他生命期模型引入作為迭代過(guò)程

螺旋模型最重要的優(yōu)勢(shì)就是,隨著成本的增加,風(fēng)險(xiǎn)程度隨之降低。時(shí)間和資金花得越多,風(fēng)險(xiǎn)越小。

螺旋模型至少提供和瀑布模型一樣多的管理控制。在每個(gè)迭代結(jié)束前都設(shè)置了檢查點(diǎn)。

螺旋模型能使你對(duì)任何無(wú)法逾越的風(fēng)險(xiǎn)都提前預(yù)知

3缺點(diǎn)

螺旋模型唯一的缺陷就是比較復(fù)雜。需要責(zé)任心,專注和管理方面的知識(shí)。通過(guò)目標(biāo)和里程碑,來(lái)決定項(xiàng)目是否已經(jīng)準(zhǔn)備好進(jìn)行下一輪迭代。

如果項(xiàng)目的目標(biāo)明確,風(fēng)險(xiǎn)適度,你就沒(méi)有必要采用螺旋模型。

生魚(yú)片模型


1說(shuō)明

純瀑布模型最大的弱點(diǎn)不是這些活動(dòng)本身,而是模型把活動(dòng)看作是不連續(xù)的,有順序的階段來(lái)處理。因此,可以針對(duì)這個(gè)弱點(diǎn),來(lái)調(diào)正模型,進(jìn)化成各種修改后的瀑布模型,生魚(yú)片模型就是其中一個(gè)。

傳統(tǒng)瀑布模型允許在階段之間,存在最低限度的重疊。而生魚(yú)片模型建議的是一種大幅度的重疊。

2適合情境/優(yōu)點(diǎn)

對(duì)比純瀑布模型,生魚(yú)片可以充分減少文檔需求。

如果你在一個(gè)小的,定義得很好的項(xiàng)目,那么這種模型可以用到最有效的模型。

3缺點(diǎn)

因?yàn)殡A段是重疊的,所以將會(huì)導(dǎo)致里程碑非常不明確,很難精確進(jìn)行過(guò)程跟蹤。

具有子項(xiàng)目的瀑布模型


1.說(shuō)明

純瀑布模型的另一個(gè)問(wèn)題是,必須在上階段全部完成后,才進(jìn)入下一個(gè)階段。但在實(shí)際工作中,系統(tǒng)某些部分可能比較簡(jiǎn)單,有些地方比較復(fù)雜,而由于復(fù)雜的問(wèn)題,導(dǎo)致簡(jiǎn)單的部分也無(wú)法開(kāi)始。因此,我們可以把系統(tǒng)分成幾個(gè)相對(duì)獨(dú)立的子項(xiàng)目,每個(gè)子項(xiàng)目都按自己的節(jié)奏進(jìn)行,這就形成了一個(gè)具有子項(xiàng)目的瀑布模型。

2.適合情境/優(yōu)點(diǎn)

這種模型比較適合于系統(tǒng)包含多個(gè)相對(duì)獨(dú)立的項(xiàng)目。

3.缺點(diǎn)

具有子項(xiàng)目的瀑布模型,主要的風(fēng)險(xiǎn)在于子項(xiàng)目之間的相關(guān)性無(wú)法預(yù)料。為了解決這個(gè)風(fēng)險(xiǎn),你可以等到架構(gòu)設(shè)計(jì)完成,排查相關(guān)性之后,再拆分子項(xiàng)目。

降低風(fēng)險(xiǎn)的瀑布模型


1.說(shuō)明

純瀑布模型的另一個(gè)問(wèn)題是,必須在開(kāi)始架構(gòu)設(shè)計(jì)之前,就完整的定義需求。這在實(shí)際工作中非常困難。所以我們可以在瀑布模型中引入螺旋模型,以便確定和降低風(fēng)險(xiǎn)。

2.適合情境/優(yōu)點(diǎn)

降低風(fēng)險(xiǎn)的瀑布模型比較適合開(kāi)發(fā)一個(gè)高風(fēng)險(xiǎn)內(nèi)核的項(xiàng)目。不止在需求階段,在項(xiàng)目任何階段都能引入螺旋模型以降低風(fēng)險(xiǎn)。

3.缺點(diǎn)

降低風(fēng)險(xiǎn)的瀑布模型跟螺旋模型一樣,就是比較復(fù)雜。

漸進(jìn)原型!


1.說(shuō)明

漸進(jìn)原型通常是從最顯著的方面開(kāi)始,向客戶展示完成的部分,然后根據(jù)反饋信息繼續(xù)開(kāi)發(fā)項(xiàng)目,一直重復(fù)這一過(guò)程,直到用戶認(rèn)為原型已經(jīng)足夠好,然后結(jié)束工作,交付作為最終產(chǎn)品的原型。

2.適合情境/優(yōu)點(diǎn)

在需求變化很快的時(shí)候,用戶很難提出明確需求的時(shí)候,開(kāi)發(fā)人員對(duì)于最佳架構(gòu)沒(méi)有把握的時(shí)候,漸進(jìn)原型都特別有用。

3.缺點(diǎn)

漸進(jìn)原型主要的缺點(diǎn)是,你不可能在開(kāi)始的時(shí)候知道產(chǎn)品總時(shí)間需要多久。

另一個(gè)缺點(diǎn)就是,漸進(jìn)原型很容易退化成編碼修正模型。所以要注意,真正的漸進(jìn)原型,包含真正的需求分析,設(shè)計(jì)和可維護(hù)的代碼。漸進(jìn)原型每次重復(fù)時(shí)的實(shí)際進(jìn)展是比較小的。

階段交付!


1.說(shuō)明

階段交付可以持續(xù)地在確定的階段向用戶展示軟件。和漸進(jìn)原型不同,在前期你就明確的知道整體分為多少階段,每個(gè)階段完成哪些內(nèi)容。

2.適合情境/優(yōu)點(diǎn)

階段交付模型,在整個(gè)周期內(nèi),持續(xù)不斷的產(chǎn)出階段性成果,把有用的功能交付到客戶手中。

階段交付能夠提供有形的階段進(jìn)度產(chǎn)出。這樣的進(jìn)度產(chǎn)出能夠使項(xiàng)目進(jìn)度壓力更加可控。

3.缺點(diǎn)

階段交付的主要缺點(diǎn)是,如果管理層面和技術(shù)層面缺乏仔細(xì)的規(guī)劃,工作就無(wú)法進(jìn)行。

使用階段交付模型需要注意的問(wèn)題是:

在管理層面上,你需要確信所規(guī)劃的階段對(duì)用戶非常有意義,而且在工作安排上保證員工能及時(shí)在階段最后期限完成

在技術(shù)層面上,你需要確信考慮了不同產(chǎn)品組成部分的技術(shù)依賴性。通常會(huì)犯的一個(gè)錯(cuò)誤就是把一個(gè)在第二階段就需要用到的組件,放在了第四個(gè)階段才開(kāi)發(fā)。

面向進(jìn)度的設(shè)計(jì)


1.說(shuō)明

面向進(jìn)度的設(shè)計(jì)模型,類似于階段交付,相同點(diǎn)是都在連續(xù)的階段規(guī)劃產(chǎn)品。差異是面向進(jìn)度設(shè)計(jì)模型,在開(kāi)始的時(shí)候不必知道究竟能達(dá)到什么樣的預(yù)定目標(biāo)。你可能規(guī)劃了五個(gè)階段,由于一些限制,僅僅完成了前三個(gè)階段。

2.適合情境/優(yōu)點(diǎn)

面向進(jìn)度的設(shè)計(jì)模型,能確保你在一個(gè)確定的日期發(fā)布產(chǎn)品

該模型的關(guān)鍵在于按優(yōu)先級(jí)區(qū)分系統(tǒng)特性,規(guī)劃開(kāi)發(fā)階段。比如windows系統(tǒng)中包括了一些小程序,比如計(jì)算器,寫字板,畫筆等,可以為這些小程序采用面向進(jìn)度的設(shè)計(jì)模型,來(lái)保證他們不影響windows的開(kāi)發(fā)和發(fā)布。

是否使用本模型,取決于你對(duì)自己的工作規(guī)劃是否有信心。如果你非常有信息,那么面向進(jìn)度的設(shè)計(jì)是個(gè)低效的模型,如果你不是那么自信,這個(gè)模型就很有用了。

3.缺點(diǎn)

面向進(jìn)度的設(shè)計(jì)模型,最大的缺點(diǎn)是如果你不明白所有階段,就會(huì)浪費(fèi)時(shí)間去指定,架構(gòu)和設(shè)計(jì)你不需要的特性。

漸進(jìn)交付!


1.說(shuō)明

漸進(jìn)交付是一種跨越了漸進(jìn)原型和階段交付兩種模型的生命期。漸進(jìn)交付跟漸進(jìn)原型比較類似,區(qū)別是取決于你計(jì)劃滿足用戶需求的程度。如果你計(jì)劃滿足用戶的絕大部分需求,漸進(jìn)交付就跟漸進(jìn)原型差不多。如果你計(jì)劃滿足少量的需求,漸進(jìn)交付就跟階段交付差不多。

漸進(jìn)交付于漸進(jìn)原型最大的差別不在方法上,而是工作重點(diǎn)上。漸進(jìn)原型中,你強(qiáng)調(diào)系統(tǒng)看得見(jiàn)的樣子,然后回來(lái)補(bǔ)系統(tǒng)漏洞;在漸進(jìn)交付中,你在乎的是系統(tǒng)的核心。

增量開(kāi)發(fā)方法

增量開(kāi)發(fā)方法包括螺旋型模型,漸進(jìn)原型,階段交付,漸進(jìn)交付。

面向開(kāi)發(fā)工具的設(shè)計(jì)


商品軟件

當(dāng)你興沖沖的準(zhǔn)備做一個(gè)新系統(tǒng)時(shí),一個(gè)常常被忽略的選擇就是可以直接購(gòu)買商品軟件。

為項(xiàng)目選址最快的生命期模型!


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容