其主要原因是一些新任的項(xiàng)目經(jīng)理是由程序員提拔起來的,不太熟悉軟件工程各階段工作職責(zé)中某些具體工作的分配,無法按任務(wù)分清每個人的責(zé)任。如應(yīng)該分清楚需求人員該做什么、設(shè)計(jì)人員該做什么、編碼人員該做什么、測試人員該做什么。責(zé)任似乎很容易分清,但大家卻經(jīng)常聽到“這是需求的事”、“這是設(shè)計(jì)的事”這樣的爭論,嚴(yán)重的造成項(xiàng)目組內(nèi)部的糾紛扯皮。就是因?yàn)檫@些新的項(xiàng)目經(jīng)理對一項(xiàng)具體工作,如界面設(shè)計(jì)、數(shù)據(jù)規(guī)格等應(yīng)該由需求分析人員來做,還是設(shè)計(jì)人員來做分不清楚,還有就是做到什么程度算概要設(shè)計(jì),什么程度算詳細(xì)設(shè)計(jì),職責(zé)上也要搞清楚。建議新上任的項(xiàng)目經(jīng)理應(yīng)該多學(xué)習(xí)軟件工程的相關(guān)知識。
6、項(xiàng)目任務(wù)分工或進(jìn)度計(jì)劃表的顆粒度太大
常見的現(xiàn)象有對任務(wù)持續(xù)時間進(jìn)行不切實(shí)際的估計(jì);或未考慮到任務(wù)的相互依賴關(guān)系而造成遺漏工作。其主要原因是軟件工程的分析與設(shè)計(jì)經(jīng)驗(yàn)的不足,無法細(xì)化系統(tǒng)需求,并從需求推導(dǎo)出設(shè)計(jì),根據(jù)設(shè)計(jì)去分配任務(wù)。根據(jù)細(xì)化的需求也可以分配任務(wù),但是由于需求中的功能點(diǎn)和設(shè)計(jì)中的模塊往往不是一一對應(yīng)的,如一個需求功能點(diǎn)需要一系列的模塊來實(shí)現(xiàn),多個需求功能點(diǎn)也可以共用同一組模塊加上不同的設(shè)置參數(shù)來實(shí)現(xiàn)。所以根據(jù)設(shè)計(jì)來確定程序代碼階段的任務(wù)分配比較合理。需求是整個項(xiàng)目的基礎(chǔ)、需求的清晰顆粒度對后面的工作及工作計(jì)劃的準(zhǔn)確性至關(guān)重要。項(xiàng)目計(jì)劃的準(zhǔn)確度是以一開始以需求(包括設(shè)計(jì)層需求)為基礎(chǔ)得出的工作結(jié)構(gòu)分解的完整性、清晰性為基礎(chǔ)的。如果沒有這個基礎(chǔ),項(xiàng)目計(jì)劃就不可能做得很準(zhǔn)確。在無法準(zhǔn)確制定項(xiàng)目計(jì)劃的情況下,對其風(fēng)險要足夠重視,并制定出具體可行的對策。如果對整體的需求或工作結(jié)構(gòu)分解無法一次完整的清晰,就應(yīng)當(dāng)把它先分解為幾個大塊,分塊進(jìn)行,已經(jīng)清晰的先制定本塊(階段)計(jì)劃,下一環(huán)節(jié)的工作也可以開始(分塊)進(jìn)行。再項(xiàng)目開始階段往往還沒有得到詳細(xì)的需求成果,因此根據(jù)項(xiàng)目計(jì)劃漸進(jìn)明晰的特點(diǎn),在需求調(diào)研分析階段過后,需求成果清晰是,應(yīng)當(dāng)及時細(xì)化項(xiàng)目計(jì)劃,在概要設(shè)計(jì)完成時,要更進(jìn)一步地細(xì)化后面編碼測試階段的詳細(xì)計(jì)劃。
7、與上一種情況相反的是計(jì)劃表的顆粒度太細(xì)
就是說軟件開發(fā)的工作雖然可以被劃分為若干階段,但是這些階段不應(yīng)該是整齊劃一的。雖然每個環(huán)節(jié)階段成果是下一環(huán)節(jié)階段成果的基礎(chǔ),但即使在階段成果通過評審之后下一環(huán)節(jié)對上一環(huán)節(jié)也應(yīng)當(dāng)隨時進(jìn)行檢查驗(yàn)證,上一環(huán)節(jié)根據(jù)下一環(huán)節(jié)的驗(yàn)證檢查情況進(jìn)行調(diào)整。在上一環(huán)節(jié)沒有得出可以供下一環(huán)節(jié)開展工作的基本成果時,下一階段的投入可能是浪費(fèi)時間?!鞍慈蝿?wù)分清每個人的責(zé)任”并不是說上一環(huán)節(jié)的人員在初次完成本環(huán)節(jié)后交給下一環(huán)節(jié)就了事了,而應(yīng)該繼續(xù)與下一環(huán)節(jié)的人員共同作戰(zhàn)、相互影響、不斷進(jìn)行同步完善,及時地解釋和調(diào)整上一階段的成果。如果上一階段與下一階段的負(fù)責(zé)人是同一個人,就沒有這方面的問題,但是在實(shí)際工作匯報時要考慮到在某個階段可能進(jìn)行著前一個階段或后一個階段的工作。
8、資源需求沒有經(jīng)過較為周密的估算
軟件開發(fā)項(xiàng)目的資源因?yàn)橐驗(yàn)槠渥陨淼奶攸c(diǎn)和受到各種因素的影響,很難做到“精確”。盡管如此,還是應(yīng)該盡可能地做到“周密”。需要重點(diǎn)考慮的軟件開發(fā)項(xiàng)目的資源主要是人力資源,沒有盡可能足夠詳細(xì)精確地估計(jì)整個項(xiàng)目的每個階段所需要的人時(或人日、人月)數(shù);這是因?yàn)閷浖_發(fā)的工作量沒有進(jìn)行精確的估算。為了估算軟件開發(fā)項(xiàng)目的工作量和完成期限,首先需要根據(jù)較為完整的需求來預(yù)測軟件規(guī)模。度量軟件規(guī)模的常用方法有、代碼行估算法和功能點(diǎn)估算法。這兩種方法各有優(yōu)缺點(diǎn),應(yīng)該根據(jù)軟件項(xiàng)目的特點(diǎn)選擇適用的軟件規(guī)模度量方法。根據(jù)項(xiàng)目的規(guī)??梢怨浪愠鐾瓿身?xiàng)目所需的工作量,我們可以使用一種或