軟件項(xiàng)目管理
單擊此處編輯母版標(biāo)題樣式,,單擊此處編輯母版文本樣式,,第二級(jí),,第三級(jí),,第四級(jí),,第五級(jí),,*,*,*,,軟件項(xiàng)目管理,項(xiàng)目管理過(guò)程,軟件項(xiàng)目管理的對(duì)象是軟件工程項(xiàng)目。它所涉及的范圍覆蓋了整個(gè)軟件工程過(guò)程。,,為使軟件項(xiàng)目開(kāi)發(fā)獲得成功,關(guān)鍵問(wèn)題是必須對(duì)軟件項(xiàng)目的工作范圍、可能風(fēng)險(xiǎn)、需要資源,(,人、硬件/軟件,),、要實(shí)現(xiàn)的任務(wù)、經(jīng)歷的里程碑、花費(fèi)工作量,(,成本,),、進(jìn)度安排等做到心中有數(shù)。,軟件項(xiàng)目管理可以提供這些信息。,,這種管理在技術(shù)工作開(kāi)始之前就應(yīng)開(kāi)始,在軟件從概念到實(shí)現(xiàn)的過(guò)程中繼續(xù)進(jìn)行,當(dāng)軟件工程過(guò)程最后結(jié)束時(shí)才終止。,,啟動(dòng)一個(gè)軟件項(xiàng)目,在制定軟件項(xiàng)目計(jì)劃之前,必須,,明確項(xiàng)目的目標(biāo)和范圍,,考慮候選的解決方案,,標(biāo)明技術(shù)和管理上的要求,,有了這些信息,才能確定合理、精確的成本估算,實(shí)際可行的任務(wù)分解以及可管理的進(jìn)度安排。,軟件人員和用戶是在系統(tǒng)工程步驟中確定項(xiàng)目的目標(biāo)和范圍。,,目標(biāo)標(biāo)明了軟件項(xiàng)目的目的但不涉及如何去達(dá)到這些目的。,,范圍標(biāo)明了軟件要實(shí)現(xiàn)的基本功能,并盡量以定量的方式界定這些功能。,,當(dāng)明確了軟件項(xiàng)目的目標(biāo)和范圍后,就應(yīng)考慮候選的解決方案。,有了方案,管理人員和技術(shù)人員就能夠據(jù)此選擇一種“好的”方法,給出諸如交付期限、預(yù)算、個(gè)人能力、技術(shù)界面及其它許多因素所構(gòu)成的限制。,度量,進(jìn)行度量工作,是為了了解產(chǎn)品開(kāi)發(fā)的技術(shù)過(guò)程和產(chǎn)品本身。,,度量開(kāi)發(fā)過(guò)程的目的是為了改進(jìn)過(guò)程,,,度量產(chǎn)品的目的是為了提高產(chǎn)品的質(zhì)量。,,度量的作用是為了有效地定量地進(jìn)行管理,。,為有效地度量,常常需要考慮:對(duì)于過(guò)程和產(chǎn)品,,,合適的度量是什么?,,所收集的數(shù)據(jù)如何使用?,,用于比較個(gè)人、過(guò)程或產(chǎn)品的度量是否合理?,,管理人員和技術(shù)人員可利用這些度量來(lái)了解軟件工程過(guò)程的實(shí)際情況和它所生產(chǎn)的產(chǎn)品質(zhì)量 。,估算,在軟件項(xiàng)目管理過(guò)程中關(guān)鍵的活動(dòng)就是制定項(xiàng)目計(jì)劃。,,在做計(jì)劃時(shí)必須就需要的人力(以人月為單位)、項(xiàng)目持續(xù)時(shí)間(以年份或月份為單位)、成本(以元為單位)做出估算。,,這種估算大多是利用以前的花費(fèi)做為參考而做出的。,如果新項(xiàng)目與以前的一個(gè)項(xiàng)目在大小上和功能上十分類(lèi)似,則新項(xiàng)目需要工作量、開(kāi)發(fā)持續(xù)時(shí)間、成本大致與那個(gè)老項(xiàng)目相同。,,假使項(xiàng)目背景完全生疏,只憑過(guò)去的經(jīng)驗(yàn)做出估算可能就不夠了。,,現(xiàn)在已有了許多用于軟件開(kāi)發(fā)的估算技術(shù)。其共同特點(diǎn)是:,,事先建立軟件范圍,,以軟件度量(以往的度量)為基礎(chǔ),以做出估算,,項(xiàng)目被分解為可單獨(dú)進(jìn)行估算的小塊,,管理人員大多使用不止一種估算技術(shù),并用一種估算技術(shù)做為另一種估算技術(shù)的交叉檢查。,風(fēng)險(xiǎn)分析,每當(dāng)新建一個(gè)程序時(shí),總是存在某些不確定性。,,用戶要求是否能確切地被理解?,,在項(xiàng)目最后結(jié)束之前要求實(shí)現(xiàn)的功能能否建立?,,是否存在目前仍未發(fā)現(xiàn)的技術(shù)難題?,,在項(xiàng)目出現(xiàn)嚴(yán)重誤期時(shí)是否,,會(huì)發(fā)生一些變更?等等。,風(fēng)險(xiǎn)分析對(duì)于軟件項(xiàng)目管理是決定性的,然而現(xiàn)在還有許多項(xiàng)目不考慮風(fēng)險(xiǎn)就著手進(jìn)行。,,所謂風(fēng)險(xiǎn)分析實(shí)際上就是一系列風(fēng)險(xiǎn)管理步驟,其中包括風(fēng)險(xiǎn)識(shí)別、風(fēng)險(xiǎn)估計(jì)、風(fēng)險(xiǎn)優(yōu)化、風(fēng)險(xiǎn)管理策略、風(fēng)險(xiǎn)解決和風(fēng)險(xiǎn)監(jiān)督。這些步驟貫穿在軟件工程過(guò)程中。,進(jìn)度安排,每一個(gè)軟件項(xiàng)目都要求制定一個(gè)進(jìn)度安排,但不是所有的進(jìn)度都得一樣安排。,,對(duì)于進(jìn)度安排,需要考慮的是:,,預(yù)先對(duì)進(jìn)度如何計(jì)劃?,,工作怎樣就位?,,如何識(shí)別定義好的任務(wù)?,,管理人員對(duì)結(jié)束時(shí)間如何掌握,?,,,如何識(shí)別和監(jiān)控關(guān)鍵路徑以確保結(jié)束?,,對(duì)進(jìn)展如何度量?,,如何建立分隔任務(wù)的里程碑。,,軟件項(xiàng)目的進(jìn)度安排與任一個(gè)工程項(xiàng)目的進(jìn)度安排基本相同。首先識(shí)別一組項(xiàng)目任務(wù),再建立任務(wù)之間的相互關(guān)聯(lián),然后估算各個(gè)任務(wù)的工作量,分配人力和其它資源,制定進(jìn)度時(shí)序。,追蹤和控制,一旦建立了開(kāi)發(fā)進(jìn)度安排,就可以開(kāi)始著手追蹤和控制活動(dòng)。,,由項(xiàng)目管理人員負(fù)責(zé)追蹤在進(jìn)度安排中標(biāo)明的每一個(gè)任務(wù)。,,如果任務(wù)實(shí)際完成日期滯后于進(jìn)度安排,則管理人員可以使用一種自動(dòng)的項(xiàng)目進(jìn)度安排工具來(lái)確定在項(xiàng)目的中間里程碑上進(jìn)度誤期所造成的影響。,還可對(duì)資源重新定向,,對(duì)任務(wù)重新安排,,(做為最壞的結(jié)果)可以修改交付日期以調(diào)整已經(jīng)暴露的問(wèn)題。用這種方式可以較好地控制軟件的開(kāi)發(fā)。,軟件生產(chǎn)率和質(zhì)量的度量,生產(chǎn)率與質(zhì)量的度量是以投入工作量為依據(jù)的軟件開(kāi)發(fā)活動(dòng)的度量和開(kāi)發(fā)成果質(zhì)量的度量。,,,為什么要對(duì)軟件進(jìn)行度量,,,面向規(guī)模的度量,,,面向功能的度量,,,軟件質(zhì)量的度量,,,在軟件工程過(guò)程中使用度量,為什么要對(duì)軟件進(jìn)行度量,①,表明軟件產(chǎn)品的質(zhì)量;,,②,,弄清軟件開(kāi)發(fā)人員的生產(chǎn)率;,,③ 給出使用了新的軟件工程方法和工具所得到的(在生產(chǎn)率和質(zhì)量?jī)煞矫妫┑男б妫?,④ 建立項(xiàng)目估算的“基線”;,,⑤ 幫助調(diào)整對(duì)新的工具和附加培訓(xùn)的要求。,度量的方式,,在物理世界中的度量有兩種方式。,,,直接度量(例如,度量一個(gè)螺栓的長(zhǎng)度);,,間接度量(例如,用次品率來(lái)度量生產(chǎn)出的螺栓質(zhì)量)。,,軟件度量也同樣分為兩類(lèi):直接度量與間接度量。,軟件工程過(guò)程的直接度量包括所投入的成本和工作量。,,軟件產(chǎn)品的直接度量包括產(chǎn)生的代碼行數(shù)(,LOC,)、,執(zhí)行速度、存儲(chǔ)量大小、在某種時(shí)間周期中所報(bào)告的差錯(cuò)數(shù)。,,軟件產(chǎn)品的間接度量包括功能性、復(fù)雜性、效率、可靠性、可維護(hù)性和許多其它的質(zhì)量特性。,只要事先建立特定的度量規(guī)程,很容易做到直接度量軟件所需要的成本和工作量、產(chǎn)生的代碼行數(shù)等。,,軟件的功能性、效率、可維護(hù)性等質(zhì)量特性卻很難用直接度量判明,只有通過(guò)間接度量才能推斷。,軟件開(kāi)發(fā)成本估算方法,對(duì)于一個(gè)大型的軟件項(xiàng)目,由于項(xiàng)目的復(fù)雜性,開(kāi)發(fā)成本的估算不是一件簡(jiǎn)單的事,要進(jìn)行一系列的估算處理。主要靠分解和類(lèi)推。,,基本估算方法分為三類(lèi)。,,自頂向下的估算方法,,,自底向上的估計(jì)法,,差別估計(jì)法,自頂向下的估算方法,這種方法的主要思想是從項(xiàng)目的整體出發(fā),進(jìn)行類(lèi)推。,,估算人員根據(jù)以前已完成項(xiàng)目所消耗的總成本(或總工作量),推算將要開(kāi)發(fā)的軟件的總成本(或總工作量),然后按比例將它分配到各開(kāi)發(fā)任務(wù)單元中去,再來(lái)檢驗(yàn)它是否能滿足要求。,這種方法的優(yōu)點(diǎn)是估算工作量小,速度快。,,缺點(diǎn)是對(duì)項(xiàng)目中的特殊困難估計(jì)不足,估算出來(lái)的成本盲目性大,有時(shí)會(huì)遺漏被開(kāi)發(fā)軟件的某些部分。,自底向上的估計(jì)法,這種方法的主要思想是把待開(kāi)發(fā)的軟件細(xì)分,直到每一個(gè)子任務(wù)都已經(jīng)明確所需要的開(kāi)發(fā)工作量,然后把它們加起來(lái),得到軟件開(kāi)發(fā)的總工作量。,,它的優(yōu)點(diǎn)是估算各個(gè)部分的準(zhǔn)確性高。缺點(diǎn)是缺少各項(xiàng)子任務(wù)之間相互聯(lián)系所需要的工作量,還缺少許多與軟件開(kāi)發(fā)有關(guān)的系統(tǒng)級(jí)工作量,.,差別估計(jì)法,這種方法綜合了上述兩種方法的優(yōu)點(diǎn),其主要思想是把待開(kāi)發(fā)的軟件項(xiàng)目與過(guò)去已完成的軟件項(xiàng)目進(jìn)行類(lèi)比,從其開(kāi)發(fā)的各個(gè)子任務(wù)中區(qū)分出類(lèi)似的部分和不同的部分。,,類(lèi)似的部分按實(shí)際量進(jìn)行計(jì)算,不同的部分則采用相應(yīng)方法進(jìn)行估算。,,專(zhuān)家判定技術(shù),由多位專(zhuān)家進(jìn)行成本估算,,單獨(dú)一位專(zhuān)家可能會(huì)有種種偏見(jiàn),最好由多位專(zhuān)家進(jìn)行估算,取得多個(gè)估算值。,,有多種方法把這些估算值合成一個(gè)估算值。,一種方法是簡(jiǎn)單地求各估算值的中值或平均值。其優(yōu)點(diǎn)是簡(jiǎn)便。缺點(diǎn)是可能會(huì)由于受一、二個(gè)極端估算值的影響而產(chǎn)生嚴(yán)重的偏差。,,一種方法是召開(kāi)小組會(huì),使各位專(zhuān)家們統(tǒng)一于或至少同意某一個(gè)估算值。優(yōu)點(diǎn)是可以擯棄蒙昧無(wú)知的估算值,缺點(diǎn)是一些組員可能會(huì)受權(quán)威或政治因素的影響。,Deiphi,技術(shù),標(biāo)準(zhǔn),Deiphi,技術(shù),,組織者發(fā)給每位專(zhuān)家一份軟件系統(tǒng)規(guī)格說(shuō)明書(shū)和一張記錄估算值的表格,請(qǐng)他們進(jìn)行估算。,,專(zhuān)家詳細(xì)研究軟件規(guī)格說(shuō)明書(shū)的內(nèi)容,對(duì)該軟件提出三個(gè)規(guī)模的估算值,即:,a,i,,(,最小,),,m,i,(,可能,),,b,i,(,最大,),,無(wú)記名地填寫(xiě)表格,,組織者對(duì)專(zhuān)家們填在表格中的答復(fù)進(jìn)行整理:,,,a.,計(jì)算各專(zhuān)家估算的期望值,Ei,;,,b.,對(duì)專(zhuān)家的估算結(jié)果分類(lèi)摘要。,,專(zhuān)家對(duì)此估算值另做一次估算。,,在綜合專(zhuān)家估算結(jié)果的基礎(chǔ)上,組織專(zhuān)家再次無(wú)記名地填寫(xiě)表格。 比較兩次估算的結(jié)果。若差異很大,要通過(guò)查詢找出差異的原因。,,上述過(guò)程可重復(fù)多次。最終可獲得一個(gè)得到多數(shù)專(zhuān)家共識(shí)的軟件規(guī)模(源代碼行數(shù))。,,最后,通過(guò)與歷史資料進(jìn)行類(lèi)比,根據(jù)過(guò)去完成軟件項(xiàng)目的規(guī)模和成本等信息,推算出該軟件每行源代碼所需要的成本。然后再乘以該軟件源代碼行數(shù)的估算值,就可得到該軟件的成本估算值。,軟件開(kāi)發(fā)成本估算的經(jīng)驗(yàn)?zāi)P?軟件開(kāi)發(fā)成本估算是依據(jù)開(kāi)發(fā)成本估算模型進(jìn)行估算的。,,開(kāi)發(fā)成本估算模型通常采用經(jīng)驗(yàn)公式來(lái)預(yù)測(cè)軟件項(xiàng)目計(jì)劃所需要的成本、工作量和進(jìn)度數(shù)據(jù)。,,用以支持大多數(shù)模型的經(jīng)驗(yàn)數(shù)據(jù)都是從有限的一些項(xiàng)目樣本中得到的。,IBM,模型,,E,=,5.2×L,0.91,,D,=,4.1×L,0.36,,=,14.47×E,0.35,,S,=,0.54×E,0.6,,DOC,=,49×L,1.01,,L,是源代碼行數(shù),(KLOC),,,E,是工作量,(PM),,,D,是項(xiàng)目持續(xù)時(shí)間,(,月,),,,S,是人員需要量,(,人,),,,DOC,是文檔數(shù)量,(,頁(yè),),。,IBM,模型是靜態(tài)單變量模型。,,在此模型中,一般指一條機(jī)器指令為一行源代碼。,,一個(gè)軟件的源代碼行數(shù)不包括程序注釋、作業(yè)命令、調(diào)試程序在內(nèi)。,,對(duì)于非機(jī)器指令編寫(xiě)的源程序,例如匯編語(yǔ)言或高級(jí)語(yǔ)言程序,應(yīng)轉(zhuǎn)換成機(jī)器指令源代碼行數(shù)來(lái)考慮。,,轉(zhuǎn)換系數(shù)表,定義,:,轉(zhuǎn)換系數(shù)=機(jī)器指令條數(shù)/非機(jī)器語(yǔ)言執(zhí)行步數(shù)。,Putnam,模型,Putnam,模型是一種動(dòng)態(tài)多變量模型。適用于大型項(xiàng)目,但也可以應(yīng)用在一些較小的軟件項(xiàng)目中。,,它是假定在軟件開(kāi)發(fā)的整個(gè)生存期中工作量有特定的分布。,,大型軟件項(xiàng)目的開(kāi)發(fā)工作量分布可以用,Rayleigh-Norden,曲線表示。,,,用,Rayleigh-Norden,曲線可以導(dǎo)出一個(gè)“軟件方程”,,,,td,是開(kāi)發(fā)持續(xù)時(shí)間,(,年,),,,K,是軟件開(kāi)發(fā)與維護(hù)在內(nèi)的整個(gè)生存期所花費(fèi)的工作量,(,人年,),,,L,是源代碼行數(shù),(LOC),,,Ck,是技術(shù)狀態(tài)常數(shù),因開(kāi)發(fā)環(huán)境而異。,技術(shù)狀態(tài)常數(shù),C,k,的取值,COCOMO,模型 (,COnstructive,,COst,,MOdel,),結(jié)構(gòu)型成本估算模型是一種精確、易于使用的成本估算方法。,,DSI,(,源指令條數(shù))定義為代碼的源程序行數(shù)。若一行有兩個(gè)語(yǔ)句,則算做一條指令。它包括作業(yè)控制語(yǔ)句和格式語(yǔ)句,但不包括注釋語(yǔ)句。,KDSI,=,1000DSI,。,MM,(,度量單位為人月)表示開(kāi)發(fā)工作量。,,TDEV,(,度量單位為月)表示開(kāi)發(fā)進(jìn)度。它由工作量決定。,,軟件開(kāi)發(fā)項(xiàng)目的分類(lèi)軟件開(kāi)發(fā)項(xiàng)目的總體類(lèi)型,:,,,組織型,,嵌入型,,半獨(dú)立型,COCOMO,模型的分類(lèi),COCOMO,模型按其詳細(xì)程度分成三級(jí):,,基本,COCOMO,模型,,中間,COCOMO,模型,,詳細(xì),COCOMO,模型,,基本,COCOMO,模型是靜態(tài)單變量模型,用源代碼行數(shù),(LOC),為自變量的經(jīng)驗(yàn)函數(shù)計(jì)算軟件開(kāi)發(fā)工作量。,中間,COCOMO,模型在用,LOC,為自變量的函數(shù)計(jì)算軟件開(kāi)發(fā)工作量(稱(chēng)為名義工作量)的基礎(chǔ)上,用涉及產(chǎn)品、硬件、人員、項(xiàng)目等方面的影響因素調(diào)整工作量估算。,,詳細(xì),COCOMO,模型包括中間,CO COMO,模型的所有特性,但用上述各種影響因素調(diào)整工作量估算時(shí),還要考慮對(duì)軟件工程過(guò)程中每一步驟(分析、設(shè)計(jì)等)的影響。,基本,COCOMO,模型,基本,COCOMO,模型的工作量和進(jìn)度公式,中間,COCOMO,模型,進(jìn)一步考慮,15,種影響軟件工作量的因素,通過(guò)定下乘法因子,修正,COCOMO,工作量公式和進(jìn)度公式,可以更合理地估算軟件(各階段)的工作量和進(jìn)度。,,中間,COCOMO,模型的名義工作量與進(jìn)度公式如下所示。,中間,COCOMO,模型的名義工作量,,與進(jìn)度公式,15,種影響軟件工作量的因素,,fi,產(chǎn)品因素:軟件可靠性、數(shù)據(jù)庫(kù)規(guī)模、產(chǎn)品復(fù)雜性,,硬件因素:執(zhí)行時(shí)間限制、存儲(chǔ)限制、虛擬機(jī)易變性、環(huán)境周轉(zhuǎn)時(shí)間,,人的因素:分析員能力、應(yīng)用領(lǐng)域?qū)嶋H經(jīng)驗(yàn)、程序員能力、虛擬機(jī)使用經(jīng)驗(yàn)、程序語(yǔ)言使用經(jīng)驗(yàn),,項(xiàng)目因素:現(xiàn)代程序設(shè)計(jì)技術(shù)、軟件工具的使用、開(kāi)發(fā)進(jìn)度限制,此時(shí),工作量計(jì)算公式改成,,,例,1.,一個(gè),32,KDSI,的聲音輸入系統(tǒng)是一個(gè)輸入原型,或是一個(gè)可行性表演模型。所需可靠性非常低。把此模型看做半獨(dú)立型軟件。則有,MM,,=,3.0,(,32,),1.12,=,146,又查表知,f,1,=,0.75,,,其它,f,i,=,1.00,,,則最終有,MM,=,146×0.75,=,110.,例,14.,一個(gè)規(guī)模為,10KDSI,的商用微機(jī)遠(yuǎn)程通信的嵌入型軟件,使用中間,COCOMO,模型進(jìn)行成本估算。,,程序名義工作量,,,MM,=,2.8 (10),1.20,,=,44.38,(,MM,),,程序?qū)嶋H工作量,,,MM,=,44.38×,,,=,44.38×1.17,=,51.5,(,MM,),開(kāi)發(fā)所用時(shí)間,,,TDEV,=,2.5 (51.5),0.32,,=,8.9,(,月),,如果分析員與程序員的工資都按每月,6,000,美元計(jì)算,則該項(xiàng)目的開(kāi)發(fā)人員的工資總額為,,,51.5×6,000,=,309,000,(美元),,做為對(duì)比,現(xiàn)在用,IBM,模型計(jì)算:,,,PM,=,5.2 (10),0.91,,=,42.27,(,人月),,,D,=,4.1 (10),0.38,,=,9.84,(,月),,,S,=,0.54 (42.27),0.60,,=,5.1 (,人,),詳細(xì),COCOMO,模型,詳細(xì),COCOMO,模型的名義工作量公式和進(jìn)度公式與中間,COCOMO,模型相同。,,工作量因素分級(jí)表分層、分階段給出。針對(duì)每一個(gè)影響因素,按模塊層、子系統(tǒng)層、系統(tǒng)層,有三張工作量因素分級(jí)表,供不同層次的估算使用。每一張表中工作量因素又按開(kāi)發(fā)各個(gè)不同階段給出。,例如,關(guān)于軟件可靠性(,RELY,),要求的工作量因素分級(jí)表(子系統(tǒng)層),如表所示。,,使用這些表格,可以比,中間,COCO MO,模型,更方便、更準(zhǔn)確地估算軟件開(kāi)發(fā)工作量。,