二、 項(xiàng)目風(fēng)險(xiǎn)的估計(jì)
前面說(shuō)到,小型軟件公司的項(xiàng)目經(jīng)理往往是老板本人,有很強(qiáng)的風(fēng)險(xiǎn)意識(shí)。但在這里還是要著重說(shuō)說(shuō)軟件工程的風(fēng)險(xiǎn)管理,因?yàn)轫?xiàng)目經(jīng)理認(rèn)識(shí)的風(fēng)險(xiǎn)大多局限在商業(yè)風(fēng)險(xiǎn)(銷(xiāo)售問(wèn)題等)中,對(duì)風(fēng)險(xiǎn)的理解很片面。
軟件風(fēng)險(xiǎn)是指軟件開(kāi)發(fā)過(guò)程中及軟件產(chǎn)品本身可能造成的傷害或損失。風(fēng)險(xiǎn)關(guān)注未來(lái)的事情,這意味著,風(fēng)險(xiǎn)涉及選擇及選擇本身包含的不確定性,在軟件開(kāi)發(fā)過(guò)程及軟件產(chǎn)品都要面臨各種決策的選擇。風(fēng)險(xiǎn)是介于確定性和不確定性之間的狀態(tài),是處于無(wú)知和完整知識(shí)之間的狀態(tài)。另一方面,風(fēng)險(xiǎn)將涉及思想、觀念、行為、地點(diǎn)等因素的改變。根據(jù)風(fēng)險(xiǎn)內(nèi)容,我們可以將風(fēng)險(xiǎn)分為項(xiàng)目風(fēng)險(xiǎn)(成本提高,時(shí)間延長(zhǎng)等)、技術(shù)風(fēng)險(xiǎn)(技術(shù)不成熟等)、商業(yè)風(fēng)險(xiǎn)(銷(xiāo)售問(wèn)題等)、戰(zhàn)略風(fēng)險(xiǎn)(公司的經(jīng)營(yíng)戰(zhàn)略發(fā)生了變化)、管理風(fēng)險(xiǎn)(公司管理人員是否成熟等)、預(yù)算風(fēng)險(xiǎn)(預(yù)算是否準(zhǔn)確等)等。
另外,我們還可以將風(fēng)險(xiǎn)分為已知風(fēng)險(xiǎn)(如員工離職等)、可預(yù)報(bào)風(fēng)險(xiǎn)(從以往經(jīng)驗(yàn)得出可能有風(fēng)險(xiǎn)的)和不可預(yù)知風(fēng)險(xiǎn)。
例如,在一些訂單開(kāi)發(fā)的軟件中,存在著很大的商業(yè)風(fēng)險(xiǎn)。林子大了,什么鳥(niǎo)都有?蛻舳嗔,需要不同,客戶相關(guān)的風(fēng)險(xiǎn)出現(xiàn)的概率不一樣。一些人只知道他們需要什么;而另一些人知道他們不需要什么。一些客戶希望進(jìn)行詳細(xì)的討論,而另客戶則滿足于模糊的承諾?蛻粲胁煌膫(gè)性。一些人喜歡享受客戶的身份,而另一些人則根本不喜歡作為客戶。一些人會(huì)高興地接受幾乎任何交付的產(chǎn)品,并能充分利用一個(gè)不好的產(chǎn)品;而另一些人則會(huì)對(duì)質(zhì)量差的產(chǎn)品猛烈抨擊。一些人會(huì)對(duì)質(zhì)量好的產(chǎn)品表示贊賞;而另一些人則不管怎樣都抱怨不休。客戶和供應(yīng)商之間也有各種不同的通信方式。一些人非常熟悉產(chǎn)品及生產(chǎn)廠商;而另一些人則可能素未謀面,僅僅通過(guò)信件來(lái)往和電話與生產(chǎn)廠商溝通。一個(gè)“不好的”客戶可能會(huì)對(duì)一個(gè)軟件項(xiàng)目組能否在預(yù)算內(nèi)完成項(xiàng)目產(chǎn)生很大的影響。對(duì)于項(xiàng)目管理者而言,不好的客戶是對(duì)項(xiàng)目計(jì)劃的巨大威脅和實(shí)際的風(fēng)險(xiǎn)。
對(duì)于大多數(shù)軟件項(xiàng)目而言,風(fēng)險(xiǎn)因素——性能、成本、支持、進(jìn)度,也代表了風(fēng)險(xiǎn)參考水平值。即,對(duì)于性能下降、成本超支、支持困難、或進(jìn)度延遲,都有一個(gè)水平值的要求,超過(guò)它會(huì)導(dǎo)致項(xiàng)目被迫停止。如果風(fēng)險(xiǎn)的組合所產(chǎn)生的問(wèn)題引起一個(gè)或多個(gè)參考水平值被超過(guò),則工作將會(huì)停止。在軟件風(fēng)險(xiǎn)分析中,風(fēng)險(xiǎn)參考水平值存在一個(gè)點(diǎn),稱(chēng)為參考點(diǎn)或臨界點(diǎn),在這個(gè)點(diǎn)上,決定繼續(xù)進(jìn)行該項(xiàng)目或終止它(問(wèn)題太多)都是可以接受的。下圖以圖形方式表示了這種情況。如果風(fēng)險(xiǎn)的組合產(chǎn)生問(wèn)題導(dǎo)致成本超支及進(jìn)度延遲,則會(huì)有一個(gè)水平值,即圖中的曲線,當(dāng)超過(guò)它時(shí)會(huì)引起項(xiàng)目終止。
三、 項(xiàng)目進(jìn)度成本效益的估計(jì)
其實(shí),這也是項(xiàng)目風(fēng)險(xiǎn)有著緊密聯(lián)系,是項(xiàng)目風(fēng)險(xiǎn)發(fā)生的一大因素之一。為此,需要做到以下幾步:
1、在制定項(xiàng)目計(jì)劃時(shí),必須進(jìn)行項(xiàng)目的需求分析,明確項(xiàng)目的需求。
在的需求分析階段,往往存在著這樣的誤區(qū):在項(xiàng)目的需求分析階段,開(kāi)發(fā)方與客戶方在各種的問(wèn)題的基本輪廓上達(dá)成一致即可,具體細(xì)節(jié)可以在以后填充。因?yàn)闊o(wú)論開(kāi)始時(shí)有多么細(xì)致,以后對(duì)需求的修改幾乎是必然的。當(dāng)然這樣做是有原因的:在具體實(shí)際中由于種種原因客戶方很難在需求分析階段全面而準(zhǔn)確地描述所有問(wèn)題。隨著開(kāi)發(fā)進(jìn)度的推進(jìn),往往會(huì)有一些需求的改變。但是這樣做,由于需求階段對(duì)問(wèn)題的描述不夠細(xì)致,導(dǎo)致后來(lái)預(yù)算超出或者時(shí)間進(jìn)度達(dá)不到要求。
正確的做法是:在項(xiàng)目需求分析階段,雙方必須全面地盡可能細(xì)致地討論項(xiàng)目的應(yīng)用背景、功能要求、性能要求、操作界面要求、與其他軟件的接口要求,以及對(duì)項(xiàng)目進(jìn)行評(píng)估的各種評(píng)價(jià)標(biāo)準(zhǔn)。并且,在需求分析結(jié)束以后,雙方還要建立可以直接聯(lián)系的渠道,以盡早地對(duì)需求變動(dòng)問(wèn)題進(jìn)行溝通。并在項(xiàng)目需求分析完成后,和客戶明確項(xiàng)目的哪些部分可以在日后的進(jìn)度中能修改,修改的限度,哪些不能修改。例如,應(yīng)用背景、功能要求方面應(yīng)該是在需求分析階段確定,日后不能做修改。而性能、界面及接口等可以在日后作有限度的修改。
2、制定項(xiàng)目計(jì)劃:
有人這樣說(shuō)計(jì)劃的,“計(jì)劃,計(jì)劃,紙上畫(huà)畫(huà),墻上掛掛,計(jì)劃不如變化!”。計(jì)劃很容易成為空話,特別是在軟件工程中,影響計(jì)劃的因素太多,計(jì)劃形同虛設(shè)了!但是,軟件進(jìn)行項(xiàng)目管理的目的是綜合各種因素,制定合理的計(jì)劃,并通過(guò)計(jì)劃的實(shí)施,使其規(guī)范化,從而提高項(xiàng)目的效益,提高人員效率,降低項(xiàng)目的成本。
制定項(xiàng)目計(jì)劃首先對(duì)項(xiàng)目進(jìn)行估算,粗算出項(xiàng)目的總體進(jìn)度。然后進(jìn)行精化:確定概要設(shè)計(jì)階段、詳細(xì)設(shè)計(jì)階段、編碼階段、測(cè)試階段、安裝及維護(hù)階段等階段的具體要求、完成時(shí)間、投入人力物力,并確定幾個(gè)關(guān)鍵階段。這些關(guān)鍵階段的要求進(jìn)度必須在指定日期之前完成。后做出項(xiàng)目進(jìn)度表,列出在每個(gè)階段的難點(diǎn)要點(diǎn),要注意的問(wèn)題。,并將需要分析階段的內(nèi)容和項(xiàng)目計(jì)劃、進(jìn)度表整理成文檔,分發(fā)到相關(guān)人員手上。
3、充分考慮影響項(xiàng)目計(jì)劃的因素,并做出相應(yīng)的措施。
影響因素可以分為主觀因素和客觀因素?陀^因素有客戶相關(guān)風(fēng)險(xiǎn),外部環(huán)境的影響,停電,機(jī)器損壞,不能上網(wǎng)等原因?陀^因素在一定程度上可以轉(zhuǎn)變?yōu)橹饔^因素。主觀因素有:人的因素、技術(shù)因素,資源因素。人的因素,本項(xiàng)目是否有足夠的人手,投入本項(xiàng)目的每一個(gè)成員有沒(méi)有要兼顧其他事情、項(xiàng)目,人員的流動(dòng)、休假甚至是離職,這些對(duì)本項(xiàng)目的計(jì)劃有多大的影響,并對(duì)此作處相應(yīng)的不久措施。技術(shù)因素,本項(xiàng)目是否涉及到技術(shù)問(wèn)題,所占比例是多少,以前是否有個(gè)類(lèi)似的問(wèn)題,新技術(shù)對(duì)本項(xiàng)目人員而言,新到什么程度,解決需要的技術(shù)問(wèn)題。要注意,盲目追求新技術(shù),也會(huì)影響項(xiàng)目的進(jìn)度,甚至拖垮整個(gè)項(xiàng)目,成為技術(shù)先烈。還有一個(gè)技術(shù)問(wèn)題是,本項(xiàng)目的人員,對(duì)要實(shí)施的軟件的行業(yè)背景的熟悉程度。根據(jù)這些因素決定是否對(duì)本項(xiàng)目的人員進(jìn)行培訓(xùn)。≠Y源因素,項(xiàng)目經(jīng)費(fèi)是否充足,軟件配置,硬件配置是否及時(shí)充足?偟膩(lái)說(shuō),可以把影響項(xiàng)目的計(jì)劃劃分為A—災(zāi)難的 B-嚴(yán)重的 C-輕微的 D-可忽略的,對(duì)相應(yīng)的等級(jí)作處相應(yīng)的應(yīng)變措施。
4 、根據(jù)計(jì)劃估算出成本。計(jì)劃一旦確定,可以通過(guò)人力資源成本、日常辦公費(fèi)用、軟硬件的損耗等算出本項(xiàng)目的成本。
四、 項(xiàng)目的立項(xiàng):
只要經(jīng)過(guò)管理方式的考慮,風(fēng)險(xiǎn)的評(píng)估,項(xiàng)目進(jìn)度成本效益的衡量,再綜合其他方方面面的因素,做出決定,是否立項(xiàng)。
第三章 編碼的管理
在這里首先要聲明一點(diǎn)的是,雖然在這里并沒(méi)有著重強(qiáng)調(diào)系統(tǒng)設(shè)計(jì),但系統(tǒng)設(shè)計(jì)是軟件工程管理的很重要的一部分。這里,項(xiàng)目確定計(jì)劃包含了系統(tǒng)設(shè)計(jì)。
在以前,甚至是在現(xiàn)在,也有相當(dāng)大的一部分人是這樣認(rèn)為的:軟件程序主要由代碼組成,因此編碼階段是整個(gè)軟件項(xiàng)目的重要的階段,應(yīng)該給與大量的時(shí)間,并且集中主要的資源。
其實(shí),與以前相比,由于軟件的規(guī)模和復(fù)雜度的增加,以及半自動(dòng)化軟件代碼開(kāi)發(fā)平臺(tái)的出現(xiàn),現(xiàn)代軟件項(xiàng)目管理的中心發(fā)生了轉(zhuǎn)移--不是著重編碼階段,而是著重系統(tǒng)總體/詳細(xì)設(shè)計(jì)階段。一般說(shuō)來(lái),在現(xiàn)代軟件項(xiàng)目管理中各種資源的合理分配比例是:項(xiàng)目論證、風(fēng)險(xiǎn)評(píng)估階段3%,項(xiàng)目需求分析階段8%,系統(tǒng)總體/詳細(xì)設(shè)計(jì)階段45%,編碼階段10%,系統(tǒng)測(cè)試階段34%。
但是,如果軟件項(xiàng)目沒(méi)有實(shí)施好的話,頻繁地對(duì)軟件進(jìn)行修改、甚至重做,編碼階段會(huì)耗費(fèi)大量地時(shí)間,在整個(gè)軟件工程所占地時(shí)間比例也大大增加。很多軟件工程,不能按計(jì)劃完成是因?yàn)榫幋a階段的問(wèn)題太多了。