軟件項(xiàng)目工作量估算概述課件_第1頁(yè)
軟件項(xiàng)目工作量估算概述課件_第2頁(yè)
軟件項(xiàng)目工作量估算概述課件_第3頁(yè)
軟件項(xiàng)目工作量估算概述課件_第4頁(yè)
軟件項(xiàng)目工作量估算概述課件_第5頁(yè)
已閱讀5頁(yè),還剩145頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

講座5軟件項(xiàng)目工作量估算講座5軟件項(xiàng)目工作量估算1軟件工作量估算

有些估算做得很仔細(xì),而有些卻只是憑直覺(jué)的猜測(cè)。大多數(shù)項(xiàng)目超過(guò)估算進(jìn)度的25%到100%,但也有少數(shù)一些組織的進(jìn)度估算精確到了10%以?xún)?nèi),能控制在5%以?xún)?nèi)的還沒(méi)有聽(tīng)說(shuō)?!狫ones,1994軟件工作量估算2軟件工作量估算“大多數(shù)IS人士,無(wú)論是否為管理者,從來(lái)都無(wú)權(quán)控制他們自己的進(jìn)度計(jì)劃。進(jìn)度計(jì)劃通常由市場(chǎng)部或高層管理部門(mén)直接下達(dá),就像飛石從天而降(也有人稱(chēng)之為鳥(niǎo)糞)”“就此問(wèn)題,我曾與IS領(lǐng)域中許多人士進(jìn)行過(guò)交流。大家一致認(rèn)為當(dāng)前IS領(lǐng)域面臨的最大難題,既不是掌握快速更新的技術(shù),也不是探求新型的管理哲學(xué),而是被迫接受根本無(wú)法達(dá)到的進(jìn)度計(jì)劃?!保≧obert.L.Glass)軟件工作量估算“大多數(shù)IS人士,無(wú)論是否為管理者,從來(lái)都無(wú)權(quán)3一個(gè)月的時(shí)間造這樣一棟房子?沒(méi)問(wèn)題太好了,那我們開(kāi)工吧!你當(dāng)初計(jì)劃10萬(wàn)元造的房屋可能最終的實(shí)際造價(jià)為50萬(wàn)元。一個(gè)月的時(shí)間造這樣一棟房子?沒(méi)問(wèn)題太好了,那我們開(kāi)工吧!你當(dāng)4從造房子中學(xué)到的除非你確切知道“它”是什么?否則無(wú)法說(shuō)明它的確切花費(fèi)。蓋房子時(shí),可以蓋夢(mèng)想中的房子(不考慮花費(fèi)),也可以按估算蓋,但是功能必須具有一定的靈活性從造房子中學(xué)到的除非你確切知道“它”是什么?否則無(wú)法說(shuō)明它的5不確定性問(wèn)題客戶(hù)會(huì)要求X功能嗎?客戶(hù)要的是X功能的便宜版本還是昂貴版本呢?同一功能的不同版本的實(shí)施難度至少有10%左右的差別。如果實(shí)施了X功能的便宜版本,客戶(hù)會(huì)不會(huì)以后又想要昂貴的版本。X功能如何設(shè)計(jì)?同一功能的不同設(shè)計(jì),在復(fù)雜度方面會(huì)有10%左右的差別。X功能的質(zhì)量級(jí)別是什么?依據(jù)實(shí)施過(guò)程的不同,首次提交的X功能的缺陷數(shù)量會(huì)有10%的差異。調(diào)試和糾正X功能實(shí)施過(guò)程中的錯(cuò)誤要花多少時(shí)間?研究發(fā)現(xiàn)調(diào)試和糾正同樣的錯(cuò)誤,不同程序員所花時(shí)間會(huì)有10%左右的差異。把X功能和其它功能結(jié)合起來(lái)要花多少時(shí)間?……不確定性問(wèn)題客戶(hù)會(huì)要求X功能嗎?6軟件工作量估算的漸進(jìn)性

軟件工作量估算的漸進(jìn)性

7估算的準(zhǔn)確性和精確性準(zhǔn)確(accuracy)是結(jié)果與目標(biāo)之間有多近,用3代表圓周率比用4更準(zhǔn)確精確(precision)是結(jié)果有多少有意義的位數(shù),3.14比3代表圓周率更精確一個(gè)結(jié)果可以不準(zhǔn)確而精確,不精確而準(zhǔn)確,軟件估算中錯(cuò)誤的精確是準(zhǔn)確的敵人,40~70個(gè)人月的工作量估算可能是最準(zhǔn)確又最精確的估算,而精確到55個(gè)人月看起來(lái)更精確,但不準(zhǔn)確。估算的準(zhǔn)確性和精確性準(zhǔn)確(accuracy)是結(jié)果與目標(biāo)之間8軟件工作量估算困難的原因估算困難是由于軟件的本質(zhì)帶來(lái)的,特別是其復(fù)雜性和不可見(jiàn)性。軟件開(kāi)發(fā)是人力密集型工作的,因而不能以機(jī)械的觀點(diǎn)來(lái)看待傳統(tǒng)的工程項(xiàng)目經(jīng)常會(huì)議相近的項(xiàng)目做參考,不同的只是客戶(hù)和地點(diǎn),而絕大部分軟件項(xiàng)目是獨(dú)一無(wú)二的。新技術(shù)的不斷出現(xiàn)和應(yīng)用。缺少項(xiàng)目經(jīng)驗(yàn)數(shù)據(jù),許多組織無(wú)法提供原有項(xiàng)目數(shù)據(jù),而即使提供了這些項(xiàng)目數(shù)據(jù),也未必非常有用。軟件工作量估算困難的原因估算困難是由于軟件的本質(zhì)帶來(lái)的,特別9例子結(jié)論:很難用這些數(shù)據(jù)去估算項(xiàng)目例子10工作量估算的其它困難某些人試圖建立一個(gè)過(guò)去項(xiàng)目的全軟件業(yè)的數(shù)據(jù)庫(kù),但是許多詞匯意義的不明確使得這種努力沒(méi)有效果,例如“測(cè)試”階段究竟包括哪些活動(dòng)就不明確。估計(jì)的主觀性:人們?nèi)菀椎凸佬№?xiàng)目的工作量,而過(guò)分夸大大項(xiàng)目的工作量估計(jì)的政治因素:不同的人有不同的目標(biāo),如項(xiàng)目經(jīng)理會(huì)高估項(xiàng)目工作量,許多機(jī)構(gòu)采用獨(dú)立的估算小組,但是將項(xiàng)目經(jīng)理和項(xiàng)目成員吸收進(jìn)估算小組,能夠增強(qiáng)他們的責(zé)任感。工作量估算的其它困難某些人試圖建立一個(gè)過(guò)去項(xiàng)目的全軟件業(yè)的數(shù)11何時(shí)需要度量策略計(jì)劃:選擇合適的項(xiàng)目可行性分析系統(tǒng)描述:實(shí)現(xiàn)各個(gè)需求的工作量需要被衡量評(píng)估供應(yīng)商的建議項(xiàng)目計(jì)劃:項(xiàng)目進(jìn)行過(guò)程中,估算越來(lái)越準(zhǔn)確在項(xiàng)目開(kāi)始階段考慮的是用戶(hù)需求,不考慮實(shí)現(xiàn),但是為了估算,有時(shí)需要考慮一些實(shí)現(xiàn)方法何時(shí)需要度量策略計(jì)劃:選擇合適的項(xiàng)目12過(guò)高估計(jì)和過(guò)低估計(jì)的問(wèn)題過(guò)高估計(jì)的問(wèn)題Parkinson法則:給的時(shí)間越多,工作花費(fèi)的時(shí)間也越多Brook法則:當(dāng)人數(shù)增加后,項(xiàng)目所需的工作量將不成比例的增加。當(dāng)團(tuán)隊(duì)規(guī)模變大后,由于管理,協(xié)調(diào)和通信的增加,將造成工作量的增加。因而“投入更多的人將使延期的工作更加延期”過(guò)低估計(jì)的問(wèn)題質(zhì)量降低Weinberg的可靠性零法則“如果系統(tǒng)不必可靠,那么它可以滿(mǎn)足任何目標(biāo)”。過(guò)高估計(jì)和過(guò)低估計(jì)的問(wèn)題過(guò)高估計(jì)的問(wèn)題13工作量估算對(duì)職員的影響如果職員能夠完成目標(biāo),那么他們將受到鼓舞如果他們發(fā)現(xiàn)目標(biāo)根本不能完成,那么他們的激情將受到極大損害因而,估計(jì)不是一種簡(jiǎn)單的預(yù)測(cè)行為,而是一種管理目標(biāo)工作量估算對(duì)職員的影響如果職員能夠完成目標(biāo),那么他們將受到鼓14軟件估算的基礎(chǔ)(1)歷史數(shù)據(jù)的需要在參考?xì)v史數(shù)據(jù)時(shí)需要考慮不同的環(huán)境,如編程語(yǔ)言,軟件工具,標(biāo)準(zhǔn)和人員的經(jīng)驗(yàn)。工作度量直接計(jì)算真正的成本或時(shí)間是不可能的。編寫(xiě)程序的時(shí)間不同的人將有顯著的區(qū)別。通常將工作量表達(dá)為如源代碼的數(shù)量(sourcelineofcode,SLOC),或者千行代碼量(KLOC)軟件估算的基礎(chǔ)(1)歷史數(shù)據(jù)的需要15軟件估算的基礎(chǔ)(2)復(fù)雜性相同KLOC的兩個(gè)程序花費(fèi)的時(shí)間將會(huì)不同。因而不能簡(jiǎn)單地應(yīng)用KLOC或SLOC,而要根據(jù)復(fù)雜性進(jìn)行修正,但是復(fù)雜性的度量通常是主觀而定的。軟件估算的基礎(chǔ)(2)復(fù)雜性16基于承諾的估計(jì)一些組織直接從需求出發(fā)安排進(jìn)度而不進(jìn)行中間的工作量估算。他們要求每個(gè)開(kāi)發(fā)者作出進(jìn)度承諾而非進(jìn)度估算。有利于開(kāi)發(fā)者對(duì)進(jìn)度的關(guān)注,開(kāi)發(fā)者在接受承諾后士氣高昂,自愿加班加點(diǎn)問(wèn)題在于開(kāi)發(fā)者的估算比現(xiàn)實(shí)要樂(lè)觀,大約低20至30個(gè)百分點(diǎn)(VanGenuchten,1991)承諾應(yīng)該現(xiàn)實(shí)可行,以使你的團(tuán)隊(duì)會(huì)不斷成功而不是不斷失敗。基于承諾的估計(jì)一些組織直接從需求出發(fā)安排進(jìn)度而不進(jìn)行中間的工17軟件工作量估計(jì)技術(shù)自下而上:各個(gè)部分的工作量先估算出來(lái),然后進(jìn)行合成自頂向下:首先定義整個(gè)項(xiàng)目的工作量,然后分解到各個(gè)部分專(zhuān)家判斷對(duì)比法算術(shù)模型Parkinson:能夠使用的參與該項(xiàng)目的人力贏利價(jià)格:贏得合同的價(jià)格軟件工作量估計(jì)技術(shù)自下而上:各個(gè)部分的工作量先估算出來(lái),然后18自底向上方法該方法首先將項(xiàng)目分成部件任務(wù),然后估算每個(gè)任務(wù)所需的工作量。在大型的項(xiàng)目中,分解任務(wù)的過(guò)程是一個(gè)疊代的過(guò)程,直到最下面的任務(wù)不可分解,產(chǎn)生WBS。該方法適合于項(xiàng)目規(guī)劃的后期。如果應(yīng)用在前期,那么必須對(duì)最終的系統(tǒng)作出一些假設(shè),例如對(duì)軟件模塊的數(shù)量和大小進(jìn)行假設(shè)。如果項(xiàng)目是全新的或者沒(méi)有歷史數(shù)據(jù),建議用該方法自底向上方法該方法首先將項(xiàng)目分成部件任務(wù),然后估算每個(gè)任務(wù)所19練習(xí)工資系統(tǒng)已經(jīng)被安裝在Brightmouth學(xué)院,目前有一個(gè)新的需求,需要在系統(tǒng)中添加一個(gè)子系統(tǒng),該系統(tǒng)分析每節(jié)課時(shí)老師的成本。每個(gè)老師的工資可以從系統(tǒng)中獲得,每個(gè)老師花在每個(gè)課程上的時(shí)間也可以從系統(tǒng)中獲得。為了實(shí)現(xiàn)該系統(tǒng),需要哪些任務(wù),哪些任務(wù)的工作量比較難計(jì)算。練習(xí)工資系統(tǒng)已經(jīng)被安裝在Brightmouth學(xué)院,目前有一20練習(xí)答案獲取用戶(hù)需求分析系統(tǒng)中已有數(shù)據(jù)設(shè)計(jì)報(bào)表和編寫(xiě)用戶(hù)建議編寫(xiě)測(cè)試計(jì)劃編寫(xiě)技術(shù)描述設(shè)計(jì)軟件寫(xiě)軟件測(cè)試軟件寫(xiě)說(shuō)明書(shū)執(zhí)行接受測(cè)試設(shè)計(jì),寫(xiě),測(cè)試軟件將最難估算工作量練習(xí)答案21自頂向下方法自頂向下的方法和參數(shù)化模型一般采用對(duì)比方法確定總的工作量對(duì)比是建立在一系列參數(shù)的基礎(chǔ)上的,通過(guò)這些參數(shù)可以計(jì)算出新系統(tǒng)的工作量形式:effort=(系統(tǒng)規(guī)模)*(生產(chǎn)率)例如系統(tǒng)規(guī)??梢杂肒LOC來(lái)計(jì)算,生產(chǎn)率以40天/KLOC預(yù)測(cè)軟件開(kāi)發(fā)工作量的模型有兩個(gè)部分,第一部分為估算軟件大小,第二部分為估算工作效率自頂向下方法自頂向下的方法和參數(shù)化模型22練習(xí)學(xué)生要求每學(xué)期寫(xiě)一篇有關(guān)IT的報(bào)告,如果你想建立一個(gè)估算學(xué)生完成這樣一份報(bào)告的模型,你用什么來(lái)衡量報(bào)告的大小,什么因素會(huì)影響學(xué)生完成報(bào)告的難度?字?jǐn)?shù)材料能否獲取對(duì)主題的熟悉程度寬度/深度技術(shù)難度練習(xí)學(xué)生要求每學(xué)期寫(xiě)一篇有關(guān)IT的報(bào)告,如果你想建立一個(gè)估算23專(zhuān)家判斷具有應(yīng)用領(lǐng)域或者開(kāi)發(fā)環(huán)境知識(shí)的人員對(duì)任務(wù)的評(píng)估該方法特別是在對(duì)原有系統(tǒng)進(jìn)行替換時(shí)有用,評(píng)估者對(duì)影響的代碼的比例進(jìn)行分析,從而得到工作量評(píng)估。專(zhuān)家判斷具有應(yīng)用領(lǐng)域或者開(kāi)發(fā)環(huán)境知識(shí)的人員對(duì)任務(wù)的評(píng)估24類(lèi)比估計(jì)類(lèi)比方法又被稱(chēng)為基于案例的推理(Case-basedreasoning)評(píng)估者尋找已經(jīng)完成的項(xiàng)目,這些項(xiàng)目與需要開(kāi)發(fā)的新項(xiàng)目在許多特征上必須是類(lèi)似的。如何選擇與待預(yù)測(cè)的項(xiàng)目相近的項(xiàng)目?歐幾里的距離(EuclideanDistance)公式distance=((目標(biāo)系統(tǒng)參數(shù)1-原系統(tǒng)參數(shù)1)2+(目標(biāo)系統(tǒng)參數(shù)2-原系統(tǒng)參數(shù)2)2+……)的平方根類(lèi)比估計(jì)類(lèi)比方法又被稱(chēng)為基于案例的推理(Case-based25練習(xí)假定將要構(gòu)造的系統(tǒng)有7個(gè)輸入,15個(gè)輸出,過(guò)去有一個(gè)項(xiàng)目有8個(gè)輸入,17個(gè)輸出,這兩個(gè)項(xiàng)目的歐幾里的距離是多少?答案:2.24練習(xí)假定將要構(gòu)造的系統(tǒng)有7個(gè)輸入,15個(gè)輸出,過(guò)去有一個(gè)項(xiàng)目26Albrecht功能點(diǎn)分析該方法是由AllanAlbrecht在IBM工作時(shí)發(fā)明的自頂向下方法。功能點(diǎn)法(FunctionPoints)的基本點(diǎn)是計(jì)算機(jī)信息系統(tǒng)包括五個(gè)主要部件或者外部用戶(hù)類(lèi)型,它們是:外部輸入:應(yīng)用數(shù)據(jù)外部輸出:提供給用戶(hù)的面向應(yīng)用的信息內(nèi)部邏輯文件:邏輯主文件外部接口文件:與其它系統(tǒng)交換信息外部查詢(xún):在線(xiàn)的輸入以獲得立即的結(jié)果Albrecht功能點(diǎn)分析該方法是由AllanAlbrec27功能點(diǎn)方法加權(quán)因子的確定功能點(diǎn)方法加權(quán)因子的確定28練習(xí)在學(xué)院工資系統(tǒng)項(xiàng)目中需要開(kāi)發(fā)一個(gè)程序,該程序?qū)臅?huì)計(jì)系統(tǒng)中提取每年的工資額,并從兩個(gè)文件中分別提取課程情況和每個(gè)老師教的每一門(mén)課的時(shí)間,該程序?qū)⒂?jì)算每一門(mén)課的老師的成本并將結(jié)果存成一個(gè)文件,該文件可以輸出給會(huì)計(jì)系統(tǒng),同時(shí)該程序也將產(chǎn)生一個(gè)報(bào)表,以顯示對(duì)于每一門(mén)課,每個(gè)老師教學(xué)的時(shí)間和這些工時(shí)的成本。假定報(bào)表是具有高度復(fù)雜性的,其它具有一般復(fù)雜性練習(xí)在學(xué)院工資系統(tǒng)項(xiàng)目中需要開(kāi)發(fā)一個(gè)程序,該程序?qū)臅?huì)計(jì)系統(tǒng)29練習(xí)外部輸入:無(wú)外部輸出:報(bào)告,1內(nèi)部邏輯文件:財(cái)務(wù)輸入文件,1外部接口文件:工資文件,人員文件,課程文件,財(cái)務(wù)輸入文件,4外部查詢(xún):無(wú)考慮加權(quán):外部輸入:無(wú);外部輸出:1×7=7;內(nèi)部邏輯文件:1×10=10;外部接口文件:4×7=28;外部查詢(xún):無(wú);共:45練習(xí)外部輸入:無(wú)30功能點(diǎn)方法:復(fù)雜性判定如何判定功能的復(fù)雜性?國(guó)際功能點(diǎn)用戶(hù)小組(IFPUG)內(nèi)部邏輯文件、外部接口文件外部輸入文件功能點(diǎn)方法:復(fù)雜性判定如何判定功能的復(fù)雜性?31功能點(diǎn)方法:復(fù)雜性判定外部輸出文件如何確定記錄個(gè)數(shù)和數(shù)據(jù)個(gè)數(shù)如某系統(tǒng)內(nèi)部邏輯文件:訂單文件,包含訂單信息(包括訂單號(hào),供應(yīng)商名稱(chēng),訂單日期)和訂單項(xiàng)(包括商品號(hào),價(jià)格和數(shù)目),則記錄個(gè)數(shù)為2,數(shù)據(jù)個(gè)數(shù)為6,在表中可以確定該功能點(diǎn)復(fù)雜性為低。功能點(diǎn)方法:復(fù)雜性判定外部輸出文件32功能點(diǎn)方法:轉(zhuǎn)換為代碼行通過(guò)定義各個(gè)功能點(diǎn)對(duì)應(yīng)各種語(yǔ)言的代碼行數(shù),則功能點(diǎn)可以轉(zhuǎn)化為代碼行一些數(shù)據(jù):Cobol:91C:128QuickBasic:64ObjectOrientedLanguages:30功能點(diǎn)方法:轉(zhuǎn)換為代碼行通過(guò)定義各個(gè)功能點(diǎn)對(duì)應(yīng)各種語(yǔ)言的代碼33MarkII功能點(diǎn)該方法被作為英國(guó)政府項(xiàng)目實(shí)施中采用的標(biāo)準(zhǔn)基本原理:對(duì)于一個(gè)處理事務(wù)計(jì)算方法:wi×輸入數(shù)據(jù)元素+we×實(shí)體+wo×輸出數(shù)據(jù)元素系數(shù)總和為2.5,標(biāo)準(zhǔn)設(shè)置為0.58,1.66,0.26MarkII功能點(diǎn)該方法被作為英國(guó)政府項(xiàng)目實(shí)施中采用的標(biāo)準(zhǔn)34MarkII功能點(diǎn)系數(shù)調(diào)整,考慮因素:與其它應(yīng)用的接口特殊的安全特征與第三方的直接交互用戶(hù)訓(xùn)練特征文檔需求MarkII功能點(diǎn)系數(shù)調(diào)整,考慮因素:35功能點(diǎn)的其它擴(kuò)展功能點(diǎn)方法起源于業(yè)務(wù)信息系統(tǒng)應(yīng)用,因而強(qiáng)調(diào)了數(shù)據(jù)方面的因素而沒(méi)有考慮功能和行為(控制)方面的因素。特征點(diǎn)(FeaturePoints):除了考慮普通功能點(diǎn)的內(nèi)容外,還考慮了算法的特征(矩陣轉(zhuǎn)換,字符串解析,處理中斷等都是算法的例子)Boeing提出了一個(gè)三維功能點(diǎn)方法(3D)其中三維為數(shù)據(jù)維,功能維(輸入轉(zhuǎn)化為輸出的步驟)和控制維(狀態(tài)之間的轉(zhuǎn)換數(shù))。功能點(diǎn)的其它擴(kuò)展功能點(diǎn)方法起源于業(yè)務(wù)信息系統(tǒng)應(yīng)用,因而強(qiáng)調(diào)了36功能點(diǎn)轉(zhuǎn)化為工作量對(duì)于原來(lái)的項(xiàng)目,計(jì)算生產(chǎn)率:生產(chǎn)率=功能點(diǎn)數(shù)目/工作量(人日)則,對(duì)于新項(xiàng)目,功能點(diǎn)計(jì)算出來(lái)后,工作量為:工作量=功能點(diǎn)數(shù)目/生產(chǎn)率更復(fù)雜的方法:最小二乘法即工作量=系數(shù)1+功能點(diǎn)數(shù)×系數(shù)2功能點(diǎn)轉(zhuǎn)化為工作量對(duì)于原來(lái)的項(xiàng)目,計(jì)算生產(chǎn)率:37對(duì)象點(diǎn)ObjectPoints起源于紐約大學(xué)的LeonardN.Stern商學(xué)院,它類(lèi)似于功能點(diǎn)方法,但是更容易計(jì)算。對(duì)象點(diǎn)方法與面向?qū)ο蠓椒úo(wú)直接聯(lián)系。該方法計(jì)算應(yīng)用所需要處理的屏幕,報(bào)告和部件,這些都被稱(chēng)為對(duì)象。每一對(duì)象需要被確定為簡(jiǎn)單的,中等的,困難的三個(gè)層次。對(duì)象點(diǎn)ObjectPoints起源于紐約大學(xué)的Leonar38對(duì)象點(diǎn)方法對(duì)象點(diǎn)方法39對(duì)象點(diǎn)轉(zhuǎn)換為工作量首先考慮已經(jīng)存在的對(duì)象應(yīng)該排除在工作量計(jì)算內(nèi)。即計(jì)算新的對(duì)象點(diǎn)(NOP)根據(jù)原來(lái)從事過(guò)的項(xiàng)目計(jì)算在不同情況下的項(xiàng)目的生產(chǎn)率,例如下表:假定有672個(gè)對(duì)象點(diǎn)要開(kāi)發(fā),開(kāi)發(fā)者的經(jīng)驗(yàn)和工具使用都是一般性的,則需要672/13=52個(gè)月對(duì)象點(diǎn)轉(zhuǎn)換為工作量首先考慮已經(jīng)存在的對(duì)象應(yīng)該排除在工作量計(jì)算40軟件項(xiàng)目工作量估算概述課件41COCOMO:參數(shù)化模型COCOMO:ConstructiveCostModelBoehm在二十世紀(jì)70年代采用他的模型對(duì)63個(gè)項(xiàng)目進(jìn)行了研究,由于其中只有7個(gè)是商務(wù)系統(tǒng),因而它們不僅僅能被用于信息系統(tǒng)?;镜墓綖椋篍ffort=c×sizek其中effort采用“人月(152個(gè)工作小時(shí))”pm來(lái)度量,size采用kdsi即千行交付源代碼指令(thousandsofdeliveredsourcecodeinstructions)COCOMO:參數(shù)化模型COCOMO:Constructi42COCOMO系數(shù)C,k的取值根據(jù)系統(tǒng)的分類(lèi)而定:根據(jù)系統(tǒng)的技術(shù)特性和開(kāi)發(fā)環(huán)境可以分為:有機(jī)模式(organicmode):相對(duì)小的團(tuán)隊(duì)在一個(gè)高度熟悉的內(nèi)部環(huán)境中開(kāi)發(fā)規(guī)模較小,接口需求較靈活的系統(tǒng)。嵌入式模式(EmbeddedMode)開(kāi)發(fā)的產(chǎn)品在高度約束的條件下進(jìn)行,對(duì)系統(tǒng)改變的成本很高。半分離模式(Semi-detachedMode)兩者之間信息系統(tǒng)是有機(jī)模式,而實(shí)時(shí)系統(tǒng)是嵌入式模式。COCOMO系數(shù)C,k的取值根據(jù)系統(tǒng)的分類(lèi)而定:43COCOMO系數(shù)系數(shù)表:K的值反映了項(xiàng)目越大,則工作量成指數(shù)增加,因?yàn)榇箜?xiàng)目需要更多的協(xié)調(diào)和安排。COCOMO系數(shù)系數(shù)表:44COCOMO修正事實(shí)上,基本COCOMO模型對(duì)工作量的衡量不穩(wěn)定,Boehm本人也發(fā)現(xiàn)了此問(wèn)題,因而提出名義成本估算的概念。首先從基本模型得到名義成本,然后采用開(kāi)發(fā)成本乘法算子(developmenteffortmultiplier,dem)進(jìn)行修正,即:Pm=Pmnom×demCOCOMO修正事實(shí)上,基本COCOMO模型對(duì)工作量的衡量不45COCOMO成本因素dem的計(jì)算COCOMO成本因素dem的計(jì)算46練習(xí)在某企業(yè)中,絕大多數(shù)系統(tǒng)技術(shù)上,產(chǎn)品,計(jì)算機(jī)和項(xiàng)目等屬性都是類(lèi)似的。只有人員的屬性有所差異。該企業(yè)制定了下表:分析員非常優(yōu)秀,編程人員也很優(yōu)秀但是對(duì)該項(xiàng)目面向的領(lǐng)域不熟悉并準(zhǔn)備用新的編程語(yǔ)言。他們對(duì)操作系統(tǒng)很熟悉。請(qǐng)計(jì)算dem。如果名義工作量是4人月,則估算的工作量是多少?練習(xí)在某企業(yè)中,絕大多數(shù)系統(tǒng)技術(shù)上,產(chǎn)品,計(jì)算機(jī)和項(xiàng)目等屬性47練習(xí)練習(xí)48COCOMOii針對(duì)COCOMO的不足,Boehm開(kāi)始和其合作者發(fā)展了新的模型。該方法利用多種乘法算子和指數(shù)。一個(gè)明顯的特點(diǎn)是該模型適應(yīng)了項(xiàng)目在執(zhí)行過(guò)程中變得越來(lái)越確定的狀態(tài),因而是一種漸進(jìn)性評(píng)估。COCOMOii針對(duì)COCOMO的不足,Boehm開(kāi)始和其合49COCOMOIICOCOMOII被分為三個(gè)階段性模型:應(yīng)用構(gòu)成階段(ApplicationComposition):系統(tǒng)的外部特征被設(shè)計(jì)。在該階段經(jīng)??梢圆捎迷?。早期設(shè)計(jì)(EarlyDesign):基本的軟件結(jié)構(gòu)被設(shè)計(jì)。構(gòu)造階段(Postarchitecture):構(gòu)造滿(mǎn)足要求的系統(tǒng)。COCOMOIICOCOMOII被分為三個(gè)階段性模型:50COCOMOII在應(yīng)用構(gòu)成階段,采用對(duì)象點(diǎn)計(jì)算的方法在早期設(shè)計(jì)階段,采用功能點(diǎn)計(jì)算的方法。功能點(diǎn)可以轉(zhuǎn)換為SLOC。Pm=A×sizesf×em1×em2×……emnPm為“人月”工作量,A是一個(gè)常數(shù),size以SLOC為單位,sf是規(guī)模指數(shù)。Sf=1.01+0.01×因素指數(shù)的和COCOMOII在應(yīng)用構(gòu)成階段,采用對(duì)象點(diǎn)計(jì)算的方法51COCOMOII計(jì)算規(guī)模因素的質(zhì)量:先前經(jīng)驗(yàn)(Precedentedness):是否有先前的經(jīng)驗(yàn)開(kāi)發(fā)的靈活性(DevelopmentFlexibility):是否需求能夠以多種方式來(lái)滿(mǎn)足;體系結(jié)構(gòu)/風(fēng)險(xiǎn)解決(Architecture/RiskResolution):是否方案已經(jīng)被確定和解決的程度團(tuán)隊(duì)的凝聚性(Teamcohesion)過(guò)程的成熟性(ProcessMaturity)COCOMOII計(jì)算規(guī)模因素的質(zhì)量:52練習(xí)對(duì)于某一個(gè)軟件企業(yè),一個(gè)新的項(xiàng)目的新穎性一般,因而在先前經(jīng)驗(yàn)方面給3分,開(kāi)發(fā)靈活性方面很低,因而給以0分,但是需求可能會(huì)變化得比較厲害,因而風(fēng)險(xiǎn)解決指數(shù)給4分,團(tuán)隊(duì)很融洽,給1分,但是過(guò)程不標(biāo)準(zhǔn),因而過(guò)程成熟性給4分,請(qǐng)計(jì)算規(guī)模因素sf:練習(xí)對(duì)于某一個(gè)軟件企業(yè),一個(gè)新的項(xiàng)目的新穎性一般,因而在先前53COCOMOII計(jì)算工作量乘法算子em類(lèi)似于dem的計(jì)算在不同的階段有不同的em如果每一項(xiàng)對(duì)于項(xiàng)目而言無(wú)特別影響,則取1COCOMOII計(jì)算工作量乘法算子em54大致進(jìn)度估算方法大致的(Bullpark)進(jìn)度估算軟件估算方程和系數(shù)一定程度上比較難掌握軟件工作量估算軟件比較昂貴大致的估算簡(jiǎn)單宜行三個(gè)進(jìn)度表可能的最短進(jìn)度有效的進(jìn)度普通進(jìn)度大致進(jìn)度估算方法大致的(Bullpark)進(jìn)度估算55可能的最短進(jìn)度非常樂(lè)觀的假設(shè)(員工10%頂尖人才,管理,工具,方法)兩個(gè)事實(shí):存在一個(gè)最短的進(jìn)度,而且不可能突破一個(gè)人5天內(nèi)能寫(xiě)出1000行程序,5個(gè)人一天內(nèi)能完成嗎?40個(gè)人1小時(shí)內(nèi)能完成嗎?當(dāng)你把進(jìn)度縮短得比普通進(jìn)度短時(shí),費(fèi)用將迅速上漲。有效進(jìn)度可能得最短進(jìn)度費(fèi)用交付時(shí)間可能的最短進(jìn)度非常樂(lè)觀的假設(shè)(員工10%頂尖人才,管理,工具56軟件項(xiàng)目工作量估算概述課件57有效進(jìn)度與普通進(jìn)度有效進(jìn)度假定人才:頂尖的前25%的人才人員調(diào)整每年小于6%可能的最短進(jìn)度與有效進(jìn)度的關(guān)系進(jìn)度變長(zhǎng)了,但是工作量也許減少了壓縮進(jìn)度是要付出代價(jià)的普通進(jìn)度(具體表格參考《快速軟件開(kāi)發(fā)》一書(shū))有效進(jìn)度與普通進(jìn)度有效進(jìn)度58估算修正經(jīng)理和客戶(hù)常問(wèn)的一個(gè)問(wèn)題“如果我給你額外一個(gè)星期做估算,你能修正它以減少不確定性嗎?”答應(yīng)這種要求最后將給自己帶來(lái)麻煩,因?yàn)闇p少不確定性必須在軟件開(kāi)發(fā)過(guò)程本身中進(jìn)行。許多項(xiàng)目中要求給出單點(diǎn)估計(jì),這種方法的結(jié)果是估算永遠(yuǎn)不準(zhǔn)確理智的方法是先給出大的區(qū)間,逐步縮小區(qū)間。估算修正經(jīng)理和客戶(hù)常問(wèn)的一個(gè)問(wèn)題“如果我給你額外一個(gè)星期做估59估算的再修正假定有一個(gè)6個(gè)月的進(jìn)度計(jì)劃,計(jì)劃4周內(nèi)達(dá)到第一個(gè)里程碑,而實(shí)際上花了5周,如何修正進(jìn)度:在后續(xù)進(jìn)度中彌補(bǔ)損失的一周把這一周加到進(jìn)度中整個(gè)進(jìn)度乘以拖延的數(shù)量,本例乘以25%估算的再修正假定有一個(gè)6個(gè)月的進(jìn)度計(jì)劃,計(jì)劃4周內(nèi)達(dá)到第一個(gè)60估算的再修正1991年對(duì)300多個(gè)項(xiàng)目的調(diào)查表明,項(xiàng)目幾乎不能彌補(bǔ)損失的時(shí)間(VanGenuchten,1991)第一階段估算不準(zhǔn)確的原因一般會(huì)分布再整個(gè)項(xiàng)目中估算的再修正1991年對(duì)300多個(gè)項(xiàng)目的調(diào)查表明,項(xiàng)目幾乎不61估算的技巧避免無(wú)準(zhǔn)備的估算不要隨口說(shuō)出一個(gè)估算留出估算的時(shí)間,并做好計(jì)劃估算本身也是一個(gè)項(xiàng)目開(kāi)發(fā)人員參與估算不要忽略普通任務(wù)使用幾種不同的估算技術(shù),并比較它們的結(jié)果估算的群體討論估算的技巧避免無(wú)準(zhǔn)備的估算62過(guò)于樂(lè)觀的進(jìn)度計(jì)劃M(mǎn)icrosoftWordforWindows1.0開(kāi)發(fā)包含249,000行代碼,投入660人月,前后歷時(shí)5年,實(shí)際花費(fèi)時(shí)間為預(yù)期時(shí)間的5倍過(guò)于樂(lè)觀的進(jìn)度計(jì)劃M(mǎn)icrosoftWordforWi63過(guò)于樂(lè)觀的進(jìn)度計(jì)劃導(dǎo)致WinWord1.0開(kāi)發(fā)延遲的幾個(gè)主要因素:項(xiàng)目初期制定的開(kāi)發(fā)目標(biāo)是不可實(shí)現(xiàn)的。蓋茨下達(dá)的指示是用最快的速度開(kāi)發(fā)最好的字處理軟件,爭(zhēng)取在12月內(nèi)完成。實(shí)現(xiàn)這兩個(gè)目標(biāo)中的任何一個(gè)都是困難的,同時(shí)達(dá)到則是不可能的。過(guò)緊的進(jìn)度計(jì)劃降低了計(jì)劃的精確度。開(kāi)發(fā)過(guò)程中頻繁換人。5年中共換了4個(gè)組長(zhǎng),其中有2人因進(jìn)度壓力離職,1人是出于健康的原因而離職。迫于進(jìn)度壓力,開(kāi)發(fā)人員匆忙寫(xiě)出一些低質(zhì)量的和不完整的代碼,然后宣稱(chēng)已實(shí)現(xiàn)某些性能。這造成了WinWord不得不將用于提高軟件穩(wěn)定性的時(shí)間由預(yù)計(jì)的3個(gè)月增加到12個(gè)月。由于該項(xiàng)目中,創(chuàng)新比速度更重要,因而試圖縮短開(kāi)發(fā)周期,反而使周期變長(zhǎng)過(guò)于樂(lè)觀的進(jìn)度計(jì)劃導(dǎo)致WinWord1.0開(kāi)發(fā)延遲的幾個(gè)主要64產(chǎn)生過(guò)于樂(lè)觀的進(jìn)度計(jì)劃的根源為了趕在某些特定時(shí)間前展示或出售產(chǎn)品。如計(jì)算機(jī)交易展示會(huì)。管理人員和客戶(hù)拒絕接受僅給出范圍的估算,而是按照他們認(rèn)為的“最佳”估算來(lái)制定進(jìn)度計(jì)劃。項(xiàng)目管理人員和開(kāi)發(fā)人員為了享受挑戰(zhàn)的樂(lè)趣或在壓力下工作的刺激,而故意縮短進(jìn)度計(jì)劃。管理部門(mén)和市場(chǎng)部門(mén)為了迎合客戶(hù)而縮短進(jìn)度計(jì)劃。項(xiàng)目管理人員認(rèn)為較緊的進(jìn)度計(jì)劃能夠使員工勤奮工作。原先的估計(jì)是合理的,但是在項(xiàng)目進(jìn)行過(guò)程中又加進(jìn)了很多新特性,從而變成了過(guò)于樂(lè)觀的進(jìn)度。……產(chǎn)生過(guò)于樂(lè)觀的進(jìn)度計(jì)劃的根源為了趕在某些特定時(shí)間前展示或出售65過(guò)于樂(lè)觀的進(jìn)度計(jì)劃的后果進(jìn)度計(jì)劃準(zhǔn)確性進(jìn)度完成日期按期完成概率開(kāi)發(fā)人員一般采用的較樂(lè)觀的進(jìn)度計(jì)劃典型的過(guò)分樂(lè)觀的進(jìn)度計(jì)劃過(guò)于樂(lè)觀的進(jìn)度計(jì)劃的后果進(jìn)度計(jì)劃準(zhǔn)確性進(jìn)度完成日期按期完成概66過(guò)于樂(lè)觀的進(jìn)度計(jì)劃的后果計(jì)劃的質(zhì)量:錯(cuò)誤的假設(shè)必將導(dǎo)致無(wú)效的項(xiàng)目規(guī)劃。拋棄計(jì)劃:當(dāng)面臨進(jìn)度壓力時(shí),大多數(shù)開(kāi)發(fā)組織會(huì)拋棄原有規(guī)劃,而走入盲目開(kāi)發(fā)的歧途。如果試圖在關(guān)鍵階段節(jié)省時(shí)間,必將在后續(xù)階段加倍補(bǔ)償。分散了管理者的注意力:管理者將分散經(jīng)歷在不斷調(diào)整計(jì)劃上。客戶(hù)關(guān)系:項(xiàng)目一拖再拖,客戶(hù)將失去耐心。過(guò)于樂(lè)觀的進(jìn)度計(jì)劃的后果計(jì)劃的質(zhì)量:錯(cuò)誤的假設(shè)必將導(dǎo)致無(wú)效的67過(guò)于樂(lè)觀的進(jìn)度計(jì)劃的后果倉(cāng)卒收尾要排錯(cuò)只能將系統(tǒng)拆分后再進(jìn)行,一個(gè)小的變動(dòng)要花很長(zhǎng)時(shí)間。開(kāi)發(fā)人員清楚地知道系統(tǒng)中存在一些應(yīng)作修改卻未做的地方。測(cè)試人員發(fā)現(xiàn)錯(cuò)誤的速度大于開(kāi)發(fā)人員排錯(cuò)的速度。排除已發(fā)現(xiàn)錯(cuò)誤的同時(shí),產(chǎn)生了大量新的錯(cuò)誤。由于軟件變化頻繁,難以保證用戶(hù)文檔的同步更新。項(xiàng)目估算多次調(diào)整,軟件交付日期一拖再拖。過(guò)于樂(lè)觀的進(jìn)度計(jì)劃的后果倉(cāng)卒收尾68超負(fù)荷的進(jìn)度壓力產(chǎn)品質(zhì)量的降低賭博心理導(dǎo)致風(fēng)險(xiǎn)管理的忽略激勵(lì)效應(yīng)不再起作用創(chuàng)造性思維受損精疲力竭:在后面的項(xiàng)目中難以提起熱情中途退出:這些人通常是有能力的人長(zhǎng)期地進(jìn)行快速開(kāi)發(fā):難以補(bǔ)充新知識(shí)開(kāi)發(fā)人員與管理人員的關(guān)系:不切實(shí)際的進(jìn)度壓力會(huì)使開(kāi)發(fā)人員喪失對(duì)管理人員的尊重。超負(fù)荷的進(jìn)度壓力產(chǎn)品質(zhì)量的降低69有原則的談判該談判的策略的中心是致力于探求一種雙贏的解決方案。將人從困境中解脫站在他人的立場(chǎng)上加以考慮(各人有各人的煩惱)以合作的態(tài)度來(lái)努力改善與管理人員和客戶(hù)的關(guān)系,制定比較現(xiàn)實(shí)的進(jìn)度估算,盡量使各方都能理解進(jìn)度估算的意義。不要針?shù)h相對(duì)有原則的談判該談判的策略的中心是致力于探求一種雙贏的解決方案70有原則的談判關(guān)注共同利益,不要過(guò)分堅(jiān)持立場(chǎng)有時(shí)候必須作出讓步可以從下列幾個(gè)方面加以說(shuō)服:真正提高開(kāi)發(fā)速度增加成功的機(jī)會(huì)引用以前類(lèi)似項(xiàng)目的失敗教訓(xùn)有原則的談判關(guān)注共同利益,不要過(guò)分堅(jiān)持立場(chǎng)71有原則的談判提出多種備選方案1、與產(chǎn)品有關(guān)的靈活變通:將一些設(shè)計(jì)功能放到下一版本實(shí)現(xiàn),大多數(shù)人在提出需求時(shí),并不清楚這些需求是否必須全部在當(dāng)前版本被滿(mǎn)足。分階段交付產(chǎn)品。如版本0.7.0.8,0.9,1.0,每版實(shí)現(xiàn)最迫切的功能??橙ツ承?shí)現(xiàn)起來(lái)費(fèi)時(shí)或者需要談判后才能確定的特性,包括與其它系統(tǒng)的整合能力。與舊版本兼容的能力,以及產(chǎn)品性能等。對(duì)某些特性不必精雕細(xì)琢,只需實(shí)現(xiàn)到某種程度即可。盡量輕松地實(shí)現(xiàn)各特性地詳細(xì)功能需求??梢酝ㄟ^(guò)一些商業(yè)組件來(lái)實(shí)現(xiàn)。有原則的談判提出多種備選方案72有原則的談判2.與項(xiàng)目資源有關(guān)的靈活變通如果處于項(xiàng)目初期,則增加更多的開(kāi)發(fā)人員增加高層次的開(kāi)放人員(如領(lǐng)域?qū)<遥┰黾痈嗟臏y(cè)試人員在管理方面給予更多的支持提高開(kāi)發(fā)的支持力度,如更安靜,更獨(dú)立的工作間,速度更快的計(jì)算機(jī),技術(shù)人員隨時(shí)維護(hù)環(huán)境提高最終用戶(hù)的參與度,最好在項(xiàng)目組中配備一個(gè)能夠?qū)μ匦栽O(shè)置最終拍板的用戶(hù)提高主管人員的參與度有原則的談判2.與項(xiàng)目資源有關(guān)的靈活變通73有原則的談判3.與進(jìn)度計(jì)劃有關(guān)的靈活變通在詳細(xì)設(shè)計(jì),產(chǎn)品設(shè)計(jì),或至少是需求分析完成之前,只提出一個(gè)進(jìn)度目標(biāo),但不設(shè)定一個(gè)確切期限如果是在項(xiàng)目初期,則在提煉產(chǎn)品概念,功能要求合詳細(xì)設(shè)計(jì)時(shí),可以探求縮短開(kāi)發(fā)時(shí)間的方法先給出進(jìn)度估算范圍或大概的進(jìn)度估算值,然后隨著項(xiàng)目的進(jìn)展逐步精確4.其他為開(kāi)發(fā)人員提供額外的支持,以保證他們能集中精力于項(xiàng)目的開(kāi)發(fā),例如購(gòu)物服務(wù),供餐,洗衣,清洗住所等采取更多的激勵(lì)措施,如休假旅游,加班工資等有原則的談判3.與進(jìn)度計(jì)劃有關(guān)的靈活變通74有原則的談判堅(jiān)持客觀標(biāo)準(zhǔn)只能向原則低頭,而不能向壓力屈服談判不要局限于估算本身,即可以考慮項(xiàng)目的輸入條件有條件的話(huà),可以由專(zhuān)業(yè)估算機(jī)構(gòu)進(jìn)行估算堅(jiān)持科學(xué)的估算過(guò)程頂住壓力有原則的談判堅(jiān)持客觀標(biāo)準(zhǔn)75講座5軟件項(xiàng)目工作量估算講座5軟件項(xiàng)目工作量估算76軟件工作量估算

有些估算做得很仔細(xì),而有些卻只是憑直覺(jué)的猜測(cè)。大多數(shù)項(xiàng)目超過(guò)估算進(jìn)度的25%到100%,但也有少數(shù)一些組織的進(jìn)度估算精確到了10%以?xún)?nèi),能控制在5%以?xún)?nèi)的還沒(méi)有聽(tīng)說(shuō)?!狫ones,1994軟件工作量估算77軟件工作量估算“大多數(shù)IS人士,無(wú)論是否為管理者,從來(lái)都無(wú)權(quán)控制他們自己的進(jìn)度計(jì)劃。進(jìn)度計(jì)劃通常由市場(chǎng)部或高層管理部門(mén)直接下達(dá),就像飛石從天而降(也有人稱(chēng)之為鳥(niǎo)糞)”“就此問(wèn)題,我曾與IS領(lǐng)域中許多人士進(jìn)行過(guò)交流。大家一致認(rèn)為當(dāng)前IS領(lǐng)域面臨的最大難題,既不是掌握快速更新的技術(shù),也不是探求新型的管理哲學(xué),而是被迫接受根本無(wú)法達(dá)到的進(jìn)度計(jì)劃?!保≧obert.L.Glass)軟件工作量估算“大多數(shù)IS人士,無(wú)論是否為管理者,從來(lái)都無(wú)權(quán)78一個(gè)月的時(shí)間造這樣一棟房子?沒(méi)問(wèn)題太好了,那我們開(kāi)工吧!你當(dāng)初計(jì)劃10萬(wàn)元造的房屋可能最終的實(shí)際造價(jià)為50萬(wàn)元。一個(gè)月的時(shí)間造這樣一棟房子?沒(méi)問(wèn)題太好了,那我們開(kāi)工吧!你當(dāng)79從造房子中學(xué)到的除非你確切知道“它”是什么?否則無(wú)法說(shuō)明它的確切花費(fèi)。蓋房子時(shí),可以蓋夢(mèng)想中的房子(不考慮花費(fèi)),也可以按估算蓋,但是功能必須具有一定的靈活性從造房子中學(xué)到的除非你確切知道“它”是什么?否則無(wú)法說(shuō)明它的80不確定性問(wèn)題客戶(hù)會(huì)要求X功能嗎?客戶(hù)要的是X功能的便宜版本還是昂貴版本呢?同一功能的不同版本的實(shí)施難度至少有10%左右的差別。如果實(shí)施了X功能的便宜版本,客戶(hù)會(huì)不會(huì)以后又想要昂貴的版本。X功能如何設(shè)計(jì)?同一功能的不同設(shè)計(jì),在復(fù)雜度方面會(huì)有10%左右的差別。X功能的質(zhì)量級(jí)別是什么?依據(jù)實(shí)施過(guò)程的不同,首次提交的X功能的缺陷數(shù)量會(huì)有10%的差異。調(diào)試和糾正X功能實(shí)施過(guò)程中的錯(cuò)誤要花多少時(shí)間?研究發(fā)現(xiàn)調(diào)試和糾正同樣的錯(cuò)誤,不同程序員所花時(shí)間會(huì)有10%左右的差異。把X功能和其它功能結(jié)合起來(lái)要花多少時(shí)間?……不確定性問(wèn)題客戶(hù)會(huì)要求X功能嗎?81軟件工作量估算的漸進(jìn)性

軟件工作量估算的漸進(jìn)性

82估算的準(zhǔn)確性和精確性準(zhǔn)確(accuracy)是結(jié)果與目標(biāo)之間有多近,用3代表圓周率比用4更準(zhǔn)確精確(precision)是結(jié)果有多少有意義的位數(shù),3.14比3代表圓周率更精確一個(gè)結(jié)果可以不準(zhǔn)確而精確,不精確而準(zhǔn)確,軟件估算中錯(cuò)誤的精確是準(zhǔn)確的敵人,40~70個(gè)人月的工作量估算可能是最準(zhǔn)確又最精確的估算,而精確到55個(gè)人月看起來(lái)更精確,但不準(zhǔn)確。估算的準(zhǔn)確性和精確性準(zhǔn)確(accuracy)是結(jié)果與目標(biāo)之間83軟件工作量估算困難的原因估算困難是由于軟件的本質(zhì)帶來(lái)的,特別是其復(fù)雜性和不可見(jiàn)性。軟件開(kāi)發(fā)是人力密集型工作的,因而不能以機(jī)械的觀點(diǎn)來(lái)看待傳統(tǒng)的工程項(xiàng)目經(jīng)常會(huì)議相近的項(xiàng)目做參考,不同的只是客戶(hù)和地點(diǎn),而絕大部分軟件項(xiàng)目是獨(dú)一無(wú)二的。新技術(shù)的不斷出現(xiàn)和應(yīng)用。缺少項(xiàng)目經(jīng)驗(yàn)數(shù)據(jù),許多組織無(wú)法提供原有項(xiàng)目數(shù)據(jù),而即使提供了這些項(xiàng)目數(shù)據(jù),也未必非常有用。軟件工作量估算困難的原因估算困難是由于軟件的本質(zhì)帶來(lái)的,特別84例子結(jié)論:很難用這些數(shù)據(jù)去估算項(xiàng)目例子85工作量估算的其它困難某些人試圖建立一個(gè)過(guò)去項(xiàng)目的全軟件業(yè)的數(shù)據(jù)庫(kù),但是許多詞匯意義的不明確使得這種努力沒(méi)有效果,例如“測(cè)試”階段究竟包括哪些活動(dòng)就不明確。估計(jì)的主觀性:人們?nèi)菀椎凸佬№?xiàng)目的工作量,而過(guò)分夸大大項(xiàng)目的工作量估計(jì)的政治因素:不同的人有不同的目標(biāo),如項(xiàng)目經(jīng)理會(huì)高估項(xiàng)目工作量,許多機(jī)構(gòu)采用獨(dú)立的估算小組,但是將項(xiàng)目經(jīng)理和項(xiàng)目成員吸收進(jìn)估算小組,能夠增強(qiáng)他們的責(zé)任感。工作量估算的其它困難某些人試圖建立一個(gè)過(guò)去項(xiàng)目的全軟件業(yè)的數(shù)86何時(shí)需要度量策略計(jì)劃:選擇合適的項(xiàng)目可行性分析系統(tǒng)描述:實(shí)現(xiàn)各個(gè)需求的工作量需要被衡量評(píng)估供應(yīng)商的建議項(xiàng)目計(jì)劃:項(xiàng)目進(jìn)行過(guò)程中,估算越來(lái)越準(zhǔn)確在項(xiàng)目開(kāi)始階段考慮的是用戶(hù)需求,不考慮實(shí)現(xiàn),但是為了估算,有時(shí)需要考慮一些實(shí)現(xiàn)方法何時(shí)需要度量策略計(jì)劃:選擇合適的項(xiàng)目87過(guò)高估計(jì)和過(guò)低估計(jì)的問(wèn)題過(guò)高估計(jì)的問(wèn)題Parkinson法則:給的時(shí)間越多,工作花費(fèi)的時(shí)間也越多Brook法則:當(dāng)人數(shù)增加后,項(xiàng)目所需的工作量將不成比例的增加。當(dāng)團(tuán)隊(duì)規(guī)模變大后,由于管理,協(xié)調(diào)和通信的增加,將造成工作量的增加。因而“投入更多的人將使延期的工作更加延期”過(guò)低估計(jì)的問(wèn)題質(zhì)量降低Weinberg的可靠性零法則“如果系統(tǒng)不必可靠,那么它可以滿(mǎn)足任何目標(biāo)”。過(guò)高估計(jì)和過(guò)低估計(jì)的問(wèn)題過(guò)高估計(jì)的問(wèn)題88工作量估算對(duì)職員的影響如果職員能夠完成目標(biāo),那么他們將受到鼓舞如果他們發(fā)現(xiàn)目標(biāo)根本不能完成,那么他們的激情將受到極大損害因而,估計(jì)不是一種簡(jiǎn)單的預(yù)測(cè)行為,而是一種管理目標(biāo)工作量估算對(duì)職員的影響如果職員能夠完成目標(biāo),那么他們將受到鼓89軟件估算的基礎(chǔ)(1)歷史數(shù)據(jù)的需要在參考?xì)v史數(shù)據(jù)時(shí)需要考慮不同的環(huán)境,如編程語(yǔ)言,軟件工具,標(biāo)準(zhǔn)和人員的經(jīng)驗(yàn)。工作度量直接計(jì)算真正的成本或時(shí)間是不可能的。編寫(xiě)程序的時(shí)間不同的人將有顯著的區(qū)別。通常將工作量表達(dá)為如源代碼的數(shù)量(sourcelineofcode,SLOC),或者千行代碼量(KLOC)軟件估算的基礎(chǔ)(1)歷史數(shù)據(jù)的需要90軟件估算的基礎(chǔ)(2)復(fù)雜性相同KLOC的兩個(gè)程序花費(fèi)的時(shí)間將會(huì)不同。因而不能簡(jiǎn)單地應(yīng)用KLOC或SLOC,而要根據(jù)復(fù)雜性進(jìn)行修正,但是復(fù)雜性的度量通常是主觀而定的。軟件估算的基礎(chǔ)(2)復(fù)雜性91基于承諾的估計(jì)一些組織直接從需求出發(fā)安排進(jìn)度而不進(jìn)行中間的工作量估算。他們要求每個(gè)開(kāi)發(fā)者作出進(jìn)度承諾而非進(jìn)度估算。有利于開(kāi)發(fā)者對(duì)進(jìn)度的關(guān)注,開(kāi)發(fā)者在接受承諾后士氣高昂,自愿加班加點(diǎn)問(wèn)題在于開(kāi)發(fā)者的估算比現(xiàn)實(shí)要樂(lè)觀,大約低20至30個(gè)百分點(diǎn)(VanGenuchten,1991)承諾應(yīng)該現(xiàn)實(shí)可行,以使你的團(tuán)隊(duì)會(huì)不斷成功而不是不斷失敗。基于承諾的估計(jì)一些組織直接從需求出發(fā)安排進(jìn)度而不進(jìn)行中間的工92軟件工作量估計(jì)技術(shù)自下而上:各個(gè)部分的工作量先估算出來(lái),然后進(jìn)行合成自頂向下:首先定義整個(gè)項(xiàng)目的工作量,然后分解到各個(gè)部分專(zhuān)家判斷對(duì)比法算術(shù)模型Parkinson:能夠使用的參與該項(xiàng)目的人力贏利價(jià)格:贏得合同的價(jià)格軟件工作量估計(jì)技術(shù)自下而上:各個(gè)部分的工作量先估算出來(lái),然后93自底向上方法該方法首先將項(xiàng)目分成部件任務(wù),然后估算每個(gè)任務(wù)所需的工作量。在大型的項(xiàng)目中,分解任務(wù)的過(guò)程是一個(gè)疊代的過(guò)程,直到最下面的任務(wù)不可分解,產(chǎn)生WBS。該方法適合于項(xiàng)目規(guī)劃的后期。如果應(yīng)用在前期,那么必須對(duì)最終的系統(tǒng)作出一些假設(shè),例如對(duì)軟件模塊的數(shù)量和大小進(jìn)行假設(shè)。如果項(xiàng)目是全新的或者沒(méi)有歷史數(shù)據(jù),建議用該方法自底向上方法該方法首先將項(xiàng)目分成部件任務(wù),然后估算每個(gè)任務(wù)所94練習(xí)工資系統(tǒng)已經(jīng)被安裝在Brightmouth學(xué)院,目前有一個(gè)新的需求,需要在系統(tǒng)中添加一個(gè)子系統(tǒng),該系統(tǒng)分析每節(jié)課時(shí)老師的成本。每個(gè)老師的工資可以從系統(tǒng)中獲得,每個(gè)老師花在每個(gè)課程上的時(shí)間也可以從系統(tǒng)中獲得。為了實(shí)現(xiàn)該系統(tǒng),需要哪些任務(wù),哪些任務(wù)的工作量比較難計(jì)算。練習(xí)工資系統(tǒng)已經(jīng)被安裝在Brightmouth學(xué)院,目前有一95練習(xí)答案獲取用戶(hù)需求分析系統(tǒng)中已有數(shù)據(jù)設(shè)計(jì)報(bào)表和編寫(xiě)用戶(hù)建議編寫(xiě)測(cè)試計(jì)劃編寫(xiě)技術(shù)描述設(shè)計(jì)軟件寫(xiě)軟件測(cè)試軟件寫(xiě)說(shuō)明書(shū)執(zhí)行接受測(cè)試設(shè)計(jì),寫(xiě),測(cè)試軟件將最難估算工作量練習(xí)答案96自頂向下方法自頂向下的方法和參數(shù)化模型一般采用對(duì)比方法確定總的工作量對(duì)比是建立在一系列參數(shù)的基礎(chǔ)上的,通過(guò)這些參數(shù)可以計(jì)算出新系統(tǒng)的工作量形式:effort=(系統(tǒng)規(guī)模)*(生產(chǎn)率)例如系統(tǒng)規(guī)??梢杂肒LOC來(lái)計(jì)算,生產(chǎn)率以40天/KLOC預(yù)測(cè)軟件開(kāi)發(fā)工作量的模型有兩個(gè)部分,第一部分為估算軟件大小,第二部分為估算工作效率自頂向下方法自頂向下的方法和參數(shù)化模型97練習(xí)學(xué)生要求每學(xué)期寫(xiě)一篇有關(guān)IT的報(bào)告,如果你想建立一個(gè)估算學(xué)生完成這樣一份報(bào)告的模型,你用什么來(lái)衡量報(bào)告的大小,什么因素會(huì)影響學(xué)生完成報(bào)告的難度?字?jǐn)?shù)材料能否獲取對(duì)主題的熟悉程度寬度/深度技術(shù)難度練習(xí)學(xué)生要求每學(xué)期寫(xiě)一篇有關(guān)IT的報(bào)告,如果你想建立一個(gè)估算98專(zhuān)家判斷具有應(yīng)用領(lǐng)域或者開(kāi)發(fā)環(huán)境知識(shí)的人員對(duì)任務(wù)的評(píng)估該方法特別是在對(duì)原有系統(tǒng)進(jìn)行替換時(shí)有用,評(píng)估者對(duì)影響的代碼的比例進(jìn)行分析,從而得到工作量評(píng)估。專(zhuān)家判斷具有應(yīng)用領(lǐng)域或者開(kāi)發(fā)環(huán)境知識(shí)的人員對(duì)任務(wù)的評(píng)估99類(lèi)比估計(jì)類(lèi)比方法又被稱(chēng)為基于案例的推理(Case-basedreasoning)評(píng)估者尋找已經(jīng)完成的項(xiàng)目,這些項(xiàng)目與需要開(kāi)發(fā)的新項(xiàng)目在許多特征上必須是類(lèi)似的。如何選擇與待預(yù)測(cè)的項(xiàng)目相近的項(xiàng)目?歐幾里的距離(EuclideanDistance)公式distance=((目標(biāo)系統(tǒng)參數(shù)1-原系統(tǒng)參數(shù)1)2+(目標(biāo)系統(tǒng)參數(shù)2-原系統(tǒng)參數(shù)2)2+……)的平方根類(lèi)比估計(jì)類(lèi)比方法又被稱(chēng)為基于案例的推理(Case-based100練習(xí)假定將要構(gòu)造的系統(tǒng)有7個(gè)輸入,15個(gè)輸出,過(guò)去有一個(gè)項(xiàng)目有8個(gè)輸入,17個(gè)輸出,這兩個(gè)項(xiàng)目的歐幾里的距離是多少?答案:2.24練習(xí)假定將要構(gòu)造的系統(tǒng)有7個(gè)輸入,15個(gè)輸出,過(guò)去有一個(gè)項(xiàng)目101Albrecht功能點(diǎn)分析該方法是由AllanAlbrecht在IBM工作時(shí)發(fā)明的自頂向下方法。功能點(diǎn)法(FunctionPoints)的基本點(diǎn)是計(jì)算機(jī)信息系統(tǒng)包括五個(gè)主要部件或者外部用戶(hù)類(lèi)型,它們是:外部輸入:應(yīng)用數(shù)據(jù)外部輸出:提供給用戶(hù)的面向應(yīng)用的信息內(nèi)部邏輯文件:邏輯主文件外部接口文件:與其它系統(tǒng)交換信息外部查詢(xún):在線(xiàn)的輸入以獲得立即的結(jié)果Albrecht功能點(diǎn)分析該方法是由AllanAlbrec102功能點(diǎn)方法加權(quán)因子的確定功能點(diǎn)方法加權(quán)因子的確定103練習(xí)在學(xué)院工資系統(tǒng)項(xiàng)目中需要開(kāi)發(fā)一個(gè)程序,該程序?qū)臅?huì)計(jì)系統(tǒng)中提取每年的工資額,并從兩個(gè)文件中分別提取課程情況和每個(gè)老師教的每一門(mén)課的時(shí)間,該程序?qū)⒂?jì)算每一門(mén)課的老師的成本并將結(jié)果存成一個(gè)文件,該文件可以輸出給會(huì)計(jì)系統(tǒng),同時(shí)該程序也將產(chǎn)生一個(gè)報(bào)表,以顯示對(duì)于每一門(mén)課,每個(gè)老師教學(xué)的時(shí)間和這些工時(shí)的成本。假定報(bào)表是具有高度復(fù)雜性的,其它具有一般復(fù)雜性練習(xí)在學(xué)院工資系統(tǒng)項(xiàng)目中需要開(kāi)發(fā)一個(gè)程序,該程序?qū)臅?huì)計(jì)系統(tǒng)104練習(xí)外部輸入:無(wú)外部輸出:報(bào)告,1內(nèi)部邏輯文件:財(cái)務(wù)輸入文件,1外部接口文件:工資文件,人員文件,課程文件,財(cái)務(wù)輸入文件,4外部查詢(xún):無(wú)考慮加權(quán):外部輸入:無(wú);外部輸出:1×7=7;內(nèi)部邏輯文件:1×10=10;外部接口文件:4×7=28;外部查詢(xún):無(wú);共:45練習(xí)外部輸入:無(wú)105功能點(diǎn)方法:復(fù)雜性判定如何判定功能的復(fù)雜性?國(guó)際功能點(diǎn)用戶(hù)小組(IFPUG)內(nèi)部邏輯文件、外部接口文件外部輸入文件功能點(diǎn)方法:復(fù)雜性判定如何判定功能的復(fù)雜性?106功能點(diǎn)方法:復(fù)雜性判定外部輸出文件如何確定記錄個(gè)數(shù)和數(shù)據(jù)個(gè)數(shù)如某系統(tǒng)內(nèi)部邏輯文件:訂單文件,包含訂單信息(包括訂單號(hào),供應(yīng)商名稱(chēng),訂單日期)和訂單項(xiàng)(包括商品號(hào),價(jià)格和數(shù)目),則記錄個(gè)數(shù)為2,數(shù)據(jù)個(gè)數(shù)為6,在表中可以確定該功能點(diǎn)復(fù)雜性為低。功能點(diǎn)方法:復(fù)雜性判定外部輸出文件107功能點(diǎn)方法:轉(zhuǎn)換為代碼行通過(guò)定義各個(gè)功能點(diǎn)對(duì)應(yīng)各種語(yǔ)言的代碼行數(shù),則功能點(diǎn)可以轉(zhuǎn)化為代碼行一些數(shù)據(jù):Cobol:91C:128QuickBasic:64ObjectOrientedLanguages:30功能點(diǎn)方法:轉(zhuǎn)換為代碼行通過(guò)定義各個(gè)功能點(diǎn)對(duì)應(yīng)各種語(yǔ)言的代碼108MarkII功能點(diǎn)該方法被作為英國(guó)政府項(xiàng)目實(shí)施中采用的標(biāo)準(zhǔn)基本原理:對(duì)于一個(gè)處理事務(wù)計(jì)算方法:wi×輸入數(shù)據(jù)元素+we×實(shí)體+wo×輸出數(shù)據(jù)元素系數(shù)總和為2.5,標(biāo)準(zhǔn)設(shè)置為0.58,1.66,0.26MarkII功能點(diǎn)該方法被作為英國(guó)政府項(xiàng)目實(shí)施中采用的標(biāo)準(zhǔn)109MarkII功能點(diǎn)系數(shù)調(diào)整,考慮因素:與其它應(yīng)用的接口特殊的安全特征與第三方的直接交互用戶(hù)訓(xùn)練特征文檔需求MarkII功能點(diǎn)系數(shù)調(diào)整,考慮因素:110功能點(diǎn)的其它擴(kuò)展功能點(diǎn)方法起源于業(yè)務(wù)信息系統(tǒng)應(yīng)用,因而強(qiáng)調(diào)了數(shù)據(jù)方面的因素而沒(méi)有考慮功能和行為(控制)方面的因素。特征點(diǎn)(FeaturePoints):除了考慮普通功能點(diǎn)的內(nèi)容外,還考慮了算法的特征(矩陣轉(zhuǎn)換,字符串解析,處理中斷等都是算法的例子)Boeing提出了一個(gè)三維功能點(diǎn)方法(3D)其中三維為數(shù)據(jù)維,功能維(輸入轉(zhuǎn)化為輸出的步驟)和控制維(狀態(tài)之間的轉(zhuǎn)換數(shù))。功能點(diǎn)的其它擴(kuò)展功能點(diǎn)方法起源于業(yè)務(wù)信息系統(tǒng)應(yīng)用,因而強(qiáng)調(diào)了111功能點(diǎn)轉(zhuǎn)化為工作量對(duì)于原來(lái)的項(xiàng)目,計(jì)算生產(chǎn)率:生產(chǎn)率=功能點(diǎn)數(shù)目/工作量(人日)則,對(duì)于新項(xiàng)目,功能點(diǎn)計(jì)算出來(lái)后,工作量為:工作量=功能點(diǎn)數(shù)目/生產(chǎn)率更復(fù)雜的方法:最小二乘法即工作量=系數(shù)1+功能點(diǎn)數(shù)×系數(shù)2功能點(diǎn)轉(zhuǎn)化為工作量對(duì)于原來(lái)的項(xiàng)目,計(jì)算生產(chǎn)率:112對(duì)象點(diǎn)ObjectPoints起源于紐約大學(xué)的LeonardN.Stern商學(xué)院,它類(lèi)似于功能點(diǎn)方法,但是更容易計(jì)算。對(duì)象點(diǎn)方法與面向?qū)ο蠓椒úo(wú)直接聯(lián)系。該方法計(jì)算應(yīng)用所需要處理的屏幕,報(bào)告和部件,這些都被稱(chēng)為對(duì)象。每一對(duì)象需要被確定為簡(jiǎn)單的,中等的,困難的三個(gè)層次。對(duì)象點(diǎn)ObjectPoints起源于紐約大學(xué)的Leonar113對(duì)象點(diǎn)方法對(duì)象點(diǎn)方法114對(duì)象點(diǎn)轉(zhuǎn)換為工作量首先考慮已經(jīng)存在的對(duì)象應(yīng)該排除在工作量計(jì)算內(nèi)。即計(jì)算新的對(duì)象點(diǎn)(NOP)根據(jù)原來(lái)從事過(guò)的項(xiàng)目計(jì)算在不同情況下的項(xiàng)目的生產(chǎn)率,例如下表:假定有672個(gè)對(duì)象點(diǎn)要開(kāi)發(fā),開(kāi)發(fā)者的經(jīng)驗(yàn)和工具使用都是一般性的,則需要672/13=52個(gè)月對(duì)象點(diǎn)轉(zhuǎn)換為工作量首先考慮已經(jīng)存在的對(duì)象應(yīng)該排除在工作量計(jì)算115軟件項(xiàng)目工作量估算概述課件116COCOMO:參數(shù)化模型COCOMO:ConstructiveCostModelBoehm在二十世紀(jì)70年代采用他的模型對(duì)63個(gè)項(xiàng)目進(jìn)行了研究,由于其中只有7個(gè)是商務(wù)系統(tǒng),因而它們不僅僅能被用于信息系統(tǒng)?;镜墓綖椋篍ffort=c×sizek其中effort采用“人月(152個(gè)工作小時(shí))”pm來(lái)度量,size采用kdsi即千行交付源代碼指令(thousandsofdeliveredsourcecodeinstructions)COCOMO:參數(shù)化模型COCOMO:Constructi117COCOMO系數(shù)C,k的取值根據(jù)系統(tǒng)的分類(lèi)而定:根據(jù)系統(tǒng)的技術(shù)特性和開(kāi)發(fā)環(huán)境可以分為:有機(jī)模式(organicmode):相對(duì)小的團(tuán)隊(duì)在一個(gè)高度熟悉的內(nèi)部環(huán)境中開(kāi)發(fā)規(guī)模較小,接口需求較靈活的系統(tǒng)。嵌入式模式(EmbeddedMode)開(kāi)發(fā)的產(chǎn)品在高度約束的條件下進(jìn)行,對(duì)系統(tǒng)改變的成本很高。半分離模式(Semi-detachedMode)兩者之間信息系統(tǒng)是有機(jī)模式,而實(shí)時(shí)系統(tǒng)是嵌入式模式。COCOMO系數(shù)C,k的取值根據(jù)系統(tǒng)的分類(lèi)而定:118COCOMO系數(shù)系數(shù)表:K的值反映了項(xiàng)目越大,則工作量成指數(shù)增加,因?yàn)榇箜?xiàng)目需要更多的協(xié)調(diào)和安排。COCOMO系數(shù)系數(shù)表:119COCOMO修正事實(shí)上,基本COCOMO模型對(duì)工作量的衡量不穩(wěn)定,Boehm本人也發(fā)現(xiàn)了此問(wèn)題,因而提出名義成本估算的概念。首先從基本模型得到名義成本,然后采用開(kāi)發(fā)成本乘法算子(developmenteffortmultiplier,dem)進(jìn)行修正,即:Pm=Pmnom×demCOCOMO修正事實(shí)上,基本COCOMO模型對(duì)工作量的衡量不120COCOMO成本因素dem的計(jì)算COCOMO成本因素dem的計(jì)算121練習(xí)在某企業(yè)中,絕大多數(shù)系統(tǒng)技術(shù)上,產(chǎn)品,計(jì)算機(jī)和項(xiàng)目等屬性都是類(lèi)似的。只有人員的屬性有所差異。該企業(yè)制定了下表:分析員非常優(yōu)秀,編程人員也很優(yōu)秀但是對(duì)該項(xiàng)目面向的領(lǐng)域不熟悉并準(zhǔn)備用新的編程語(yǔ)言。他們對(duì)操作系統(tǒng)很熟悉。請(qǐng)計(jì)算dem。如果名義工作量是4人月,則估算的工作量是多少?練習(xí)在某企業(yè)中,絕大多數(shù)系統(tǒng)技術(shù)上,產(chǎn)品,計(jì)算機(jī)和項(xiàng)目等屬性122練習(xí)練習(xí)123COCOMOii針對(duì)COCOMO的不足,Boehm開(kāi)始和其合作者發(fā)展了新的模型。該方法利用多種乘法算子和指數(shù)。一個(gè)明顯的特點(diǎn)是該模型適應(yīng)了項(xiàng)目在執(zhí)行過(guò)程中變得越來(lái)越確定的狀態(tài),因而是一種漸進(jìn)性評(píng)估。COCOMOii針對(duì)COCOMO的不足,Boehm開(kāi)始和其合124COCOMOIICOCOMOII被分為三個(gè)階段性模型:應(yīng)用構(gòu)成階段(ApplicationComposition):系統(tǒng)的外部特征被設(shè)計(jì)。在該階段經(jīng)??梢圆捎迷汀T缙谠O(shè)計(jì)(EarlyDesign):基本的軟件結(jié)構(gòu)被設(shè)計(jì)。構(gòu)造階段(Postarchitecture):構(gòu)造滿(mǎn)足要求的系統(tǒng)。COCOMOIICOCOMOII被分為三個(gè)階段性模型:125COCOMOII在應(yīng)用構(gòu)成階段,采用對(duì)象點(diǎn)計(jì)算的方法在早期設(shè)計(jì)階段,采用功能點(diǎn)計(jì)算的方法。功能點(diǎn)可以轉(zhuǎn)換為SLOC。Pm=A×sizesf×em1×em2×……emnPm為“人月”工作量,A是一個(gè)常數(shù),size以SLOC為單位,sf是規(guī)模指數(shù)。Sf=1.01+0.01×因素指數(shù)的和COCOMOII在應(yīng)用構(gòu)成階段,采用對(duì)象點(diǎn)計(jì)算的方法126COCOMOII計(jì)算規(guī)模因素的質(zhì)量:先前經(jīng)驗(yàn)(Precedentedness):是否有先前的經(jīng)驗(yàn)開(kāi)發(fā)的靈活性(DevelopmentFlexibility):是否需求能夠以多種方式來(lái)滿(mǎn)足;體系結(jié)構(gòu)/風(fēng)險(xiǎn)解決(Architecture/RiskResolution):是否方案已經(jīng)被確定和解決的程度團(tuán)隊(duì)的凝聚性(Teamcohesion)過(guò)程的成熟性(ProcessMaturity)COCOMOII計(jì)算規(guī)模因素的質(zhì)量:127練習(xí)對(duì)于某一個(gè)軟件企業(yè),一個(gè)新的項(xiàng)目的新穎性一般,因而在先前經(jīng)驗(yàn)方面給3分,開(kāi)發(fā)靈活性方面很低,因而給以0分,但是需求可能會(huì)變化得比較厲害,因而風(fēng)險(xiǎn)解決指數(shù)給4分,團(tuán)隊(duì)很融洽,給1分,但是過(guò)程不標(biāo)準(zhǔn),因而過(guò)程成熟性給4分,請(qǐng)計(jì)算規(guī)模因素sf:練習(xí)對(duì)于某一個(gè)軟件企業(yè),一個(gè)新的項(xiàng)目的新穎性一般,因而在先前128COCOMOII計(jì)算工作量乘法算子em類(lèi)似于dem的計(jì)算在不同的階段有不同的em如果每一項(xiàng)對(duì)于項(xiàng)目而言無(wú)特別影響,則取1COCOMOII計(jì)算工作量乘法算子em129大致進(jìn)度估算方法大致的(Bullpark)進(jìn)度估算軟件估算方程和系數(shù)一定程度上比較難掌握軟件工作量估算軟件比較昂貴大致的估算簡(jiǎn)單宜行三個(gè)進(jìn)度表可能的最短進(jìn)度有效的進(jìn)度普通進(jìn)度大致進(jìn)度估算方法大致的(Bullpark)進(jìn)度估算130可能的最短進(jìn)度非常樂(lè)觀的假設(shè)(員工10%頂尖人才,管理,工具,方法)兩個(gè)事實(shí):存在一個(gè)最短的進(jìn)度,而且不可能突破一個(gè)人5天內(nèi)能寫(xiě)出1000行程序,5個(gè)人一天內(nèi)能完成嗎?40個(gè)人1小時(shí)內(nèi)能完成嗎?當(dāng)你把進(jìn)度縮短得比普通進(jìn)度短時(shí),費(fèi)用將迅速上漲。有效進(jìn)度可能得最短進(jìn)度費(fèi)用交付時(shí)間可能的最短進(jìn)度非常樂(lè)觀的假設(shè)(員工10%頂尖人才,管理,工具131軟件項(xiàng)目工作量估算概述課件132有效進(jìn)度與普通進(jìn)度有效進(jìn)度假定人才:頂尖的前25%的人才人員調(diào)整每年小于6%可能的最短進(jìn)度與有效進(jìn)度的關(guān)系進(jìn)度變長(zhǎng)了,但是工作量也許減少了壓縮進(jìn)度是要付出代價(jià)的普通進(jìn)度(具體表格參考《快速軟件開(kāi)發(fā)》一書(shū))有效進(jìn)度與普通進(jìn)度有效進(jìn)度133估算修正經(jīng)理和客戶(hù)常問(wèn)的一個(gè)問(wèn)題“如果我給你額外一個(gè)星期做估算,你能修正它以減少不確定性嗎?”答應(yīng)這種要求最后將給自己帶來(lái)麻煩,因?yàn)闇p少不確定性必須在軟件開(kāi)發(fā)過(guò)程本身中進(jìn)行。許多項(xiàng)目中要求給出單點(diǎn)估計(jì),這種方法的結(jié)果是估算永遠(yuǎn)不準(zhǔn)確理智的方法是先給出大的區(qū)間,逐步縮小區(qū)間。估算修正經(jīng)理和客戶(hù)常問(wèn)的一個(gè)問(wèn)題“如果我給你額外一個(gè)星期做估134估算的再修正假定有一個(gè)6個(gè)月的進(jìn)度計(jì)劃,計(jì)劃4周內(nèi)達(dá)到第一個(gè)里程碑,而實(shí)際上花了5周,如何修正進(jìn)度:在后續(xù)進(jìn)度中彌補(bǔ)損失的一周把這一周加到進(jìn)度中整個(gè)進(jìn)度乘以拖延的數(shù)量,本例乘以25%估算的再修正假定有一個(gè)6個(gè)月的進(jìn)度計(jì)劃,計(jì)劃4周內(nèi)達(dá)到第一個(gè)135估算的再修正1991年對(duì)300多個(gè)項(xiàng)目的調(diào)查表明,項(xiàng)目幾乎不能彌補(bǔ)損失的時(shí)間(VanGenuchten,1991)第一階段估算不準(zhǔn)確的原因一般會(huì)分布再整個(gè)項(xiàng)目中估算的再修正1991年對(duì)300多個(gè)項(xiàng)目的調(diào)查表明,項(xiàng)目幾乎不136估算的技巧避免無(wú)準(zhǔn)備的估算不要隨口說(shuō)出一個(gè)估算留出估算的時(shí)間,并做好計(jì)劃估算本身也是一個(gè)項(xiàng)目開(kāi)發(fā)人員參與估算不要忽略普通任務(wù)使用幾種不同的估算技術(shù),并比較它們的結(jié)果估算的群體討論估算的技巧避免無(wú)準(zhǔn)備的估算137過(guò)于樂(lè)觀的進(jìn)度計(jì)劃M(mǎn)icrosoftWordforWindows1.0開(kāi)發(fā)包含249,000行代碼,投入660人月,前后歷時(shí)5年,實(shí)際花費(fèi)時(shí)間為預(yù)期時(shí)間的5倍過(guò)于樂(lè)觀的進(jìn)度計(jì)劃M(mǎn)icrosoftWordforWi138過(guò)于樂(lè)觀的進(jìn)度計(jì)劃導(dǎo)致WinWord1.0開(kāi)發(fā)延遲的幾個(gè)主要因素:項(xiàng)目初期制定的開(kāi)發(fā)目標(biāo)是不可實(shí)現(xiàn)的。蓋茨下達(dá)的

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論