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