第13章-軟件項(xiàng)目管理_第1頁(yè)
第13章-軟件項(xiàng)目管理_第2頁(yè)
第13章-軟件項(xiàng)目管理_第3頁(yè)
第13章-軟件項(xiàng)目管理_第4頁(yè)
第13章-軟件項(xiàng)目管理_第5頁(yè)
已閱讀5頁(yè),還剩82頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第十章軟件項(xiàng)目管理10.1估算軟件規(guī)模10.2工作量估算10.3進(jìn)度計(jì)劃10.4人員組織10.5軟件配置管理10.6能力成熟度模型CMM第10章軟件項(xiàng)目管理項(xiàng)目管理就是通過(guò)計(jì)劃、組織和控制等一系列活動(dòng),合理地配置和使用各種資源,以達(dá)到項(xiàng)目既定目標(biāo)的過(guò)程。軟件項(xiàng)目管理先于任何技術(shù)活動(dòng)之前開(kāi)始,并且貫穿于軟件的整個(gè)生命周期之中。軟件項(xiàng)目管理過(guò)程源于項(xiàng)目計(jì)劃,主要活動(dòng)是“估算”。軟件計(jì)劃詳盡地描述了軟件過(guò)程,包括采用的生命周期模型、開(kāi)發(fā)組織結(jié)構(gòu)、責(zé)任分配、管理目標(biāo)和優(yōu)先級(jí)、所用技術(shù)和CASE工具,以及詳細(xì)的進(jìn)度、預(yù)算和資源分配。整個(gè)計(jì)劃的基礎(chǔ)是工作量估算和完成期限估算。PSP訓(xùn)練軟件度量技術(shù)代碼行技術(shù):是一種比較簡(jiǎn)單的定量估算軟件規(guī)模的方法。根據(jù)以往開(kāi)發(fā)類似產(chǎn)品的經(jīng)驗(yàn)和歷史數(shù)據(jù),估計(jì)實(shí)現(xiàn)一個(gè)功能需要的源程序行數(shù)。把實(shí)現(xiàn)每個(gè)功能需要的源程序行數(shù)累加起來(lái),就得到實(shí)現(xiàn)整個(gè)軟件需要的源程序行數(shù)。用代碼行技術(shù)度量軟件規(guī)模時(shí),當(dāng)程序較小時(shí)常用的單位是代碼行數(shù)(LOC),當(dāng)程序較大時(shí)常用的單位是千行代碼數(shù)(KLOC)。為了使得對(duì)程序規(guī)模的估計(jì)值更接近實(shí)際值,可以由多名有經(jīng)驗(yàn)的軟件工程師分別作出估計(jì)。每個(gè)人都估計(jì)程序的最小規(guī)模(a)、最大規(guī)模(b)和最可能的規(guī)模(m),分別算出這三種規(guī)模的平均值a,b,和m之后,再用下式計(jì)算程序規(guī)模的估計(jì)值:----PERT技術(shù)優(yōu)點(diǎn):主要是代碼是所有軟件開(kāi)發(fā)項(xiàng)目都有的“產(chǎn)品”,而且很容易計(jì)算代碼行數(shù)。缺點(diǎn)是:源程序僅是軟件配置的一個(gè)成分,用不同語(yǔ)言實(shí)現(xiàn)同一個(gè)軟件所需要的代碼行數(shù)并不相同;用它的規(guī)模代表整個(gè)軟件的規(guī)模似乎不太合理;這種方法不適用于非過(guò)程語(yǔ)言。為了克服代碼行技術(shù)的缺點(diǎn),人們又提出了功能點(diǎn)技術(shù)。——用功能點(diǎn)(FP)為單位度量軟件規(guī)模1.信息域特性功能點(diǎn)技術(shù)定義了信息域的5個(gè)特性,分別是輸入項(xiàng)數(shù)(Inp)、輸出項(xiàng)數(shù)(Out)、查詢數(shù)(Inq)、主文件數(shù)(Maf)和外部接口數(shù)(Inf)。功能點(diǎn)技術(shù):依據(jù)對(duì)軟件信息域特性和軟件復(fù)雜性的評(píng)估結(jié)果,估算軟件規(guī)模。(1)輸入項(xiàng)數(shù):用戶向軟件輸入的項(xiàng)數(shù),這些輸入給軟件提供面向應(yīng)用的數(shù)據(jù)。輸入不同于查詢,后者單獨(dú)計(jì)數(shù),不計(jì)入輸入項(xiàng)數(shù)中。(2)輸出項(xiàng)數(shù):軟件向用戶輸出的項(xiàng)數(shù),它們向用戶提供面向應(yīng)用的信息,例如,報(bào)表和出錯(cuò)信息等。報(bào)表內(nèi)的數(shù)據(jù)項(xiàng)不單獨(dú)計(jì)數(shù)。(3)查詢數(shù):查詢即是一次聯(lián)機(jī)輸入,它導(dǎo)致軟件以聯(lián)機(jī)輸出方式產(chǎn)生某種即時(shí)響應(yīng)。(4)主文件數(shù):邏輯主文件(即數(shù)據(jù)的一個(gè)邏輯組合,它可能是大型數(shù)據(jù)庫(kù)的一部分或是一個(gè)獨(dú)立的文件)的數(shù)目。(5)外部接口數(shù):機(jī)器可讀的全部接口(例如磁盤(pán)或磁帶上的數(shù)據(jù)文件)的數(shù)量,用這些接口把信息傳送給另一個(gè)系統(tǒng)。2.估算功能點(diǎn)的步驟估算出一個(gè)軟件的功能點(diǎn)數(shù)(即軟件規(guī)模):(1)計(jì)算未調(diào)整的功能點(diǎn)數(shù)CT把產(chǎn)品信息域的每個(gè)特性(即Inp、Out、Inq、Maf和Inf)都分類為簡(jiǎn)單級(jí)、平均級(jí)或復(fù)雜級(jí),并根據(jù)其等級(jí)為每個(gè)特性分配一個(gè)功能點(diǎn)數(shù)(例如,一個(gè)簡(jiǎn)單級(jí)的輸入項(xiàng)分配3個(gè)功能點(diǎn),一個(gè)平均級(jí)的輸入項(xiàng)分配4個(gè)功能點(diǎn),而一個(gè)復(fù)雜級(jí)的輸入項(xiàng)分配6個(gè)功能點(diǎn))。未調(diào)整的功能點(diǎn)數(shù)UFP:CT=a1×Inp+a2×Out+a3×Inq+a4×Maf+a5×Inf其中,ai(1≤i≤5)是信息域特性系數(shù),其值由相應(yīng)特性的復(fù)雜級(jí)別決定。(2)計(jì)算技術(shù)復(fù)雜性因子TCF這一步驟度量14種技術(shù)因素對(duì)軟件規(guī)模的影響程度。這些因素包括高處理率、性能標(biāo)準(zhǔn)(例如,響應(yīng)時(shí)間)、聯(lián)機(jī)更新等,用Fi(1≤i≤14)代表這些因素。根據(jù)軟件的特點(diǎn),為每個(gè)因素分配一個(gè)從0(不存在或?qū)浖?guī)模無(wú)影響)到5(有很大影響)的值。技術(shù)因素對(duì)軟件規(guī)模的綜合影響程度DI:

DI=技術(shù)復(fù)雜性因子TCF由下式計(jì)算:TCF=0.65+0.01×DI因?yàn)镈I的值在0~70之間,所以TCF的值在0.65~1.35之間。(3)計(jì)算功能點(diǎn)數(shù)FPFP=CT×TCF功能點(diǎn)數(shù)與所用的編程語(yǔ)言無(wú)關(guān),看起來(lái)功能點(diǎn)技術(shù)比代碼行技術(shù)更合理一些。但是,在判斷信息域特性復(fù)雜級(jí)別和技術(shù)因素的影響程度時(shí),存在著相當(dāng)大的主觀因素。軟件估算模型使用由經(jīng)驗(yàn)導(dǎo)出的公式來(lái)預(yù)測(cè)軟件開(kāi)發(fā)工作量,工作量是軟件規(guī)模(KLOC或FP)的函數(shù),工作量的單位通常是人月(pm)。由于支持大多數(shù)估算模型的經(jīng)驗(yàn)數(shù)據(jù),都是從有限個(gè)項(xiàng)目的樣本集中總結(jié)出來(lái)的,因此,沒(méi)有一個(gè)估算模型可以適用于所有類型的軟件和開(kāi)發(fā)環(huán)境。10.2工作量估算這類模型的總體結(jié)構(gòu)形式如下:E=A+B×(ev)C其中,A、B和C是由經(jīng)驗(yàn)數(shù)據(jù)導(dǎo)出的常數(shù),E是以人月為單位的工作量,ev是估算變量(KLOC或FP)。下面給出幾個(gè)典型的靜態(tài)單變量模型。面向KLOC的估算模型(1)Walston_Felix模型E=5.2×(KLOC)0.91(2)Bailey_Basili模型E=5.5+0.73×(KLOC)1.1610.2.1靜態(tài)單變量模型可以看出,對(duì)于相同的KLOC或FP值,用不同模型估算將得出不同的結(jié)果。主要原因是,這些模型多數(shù)都是僅根據(jù)若干應(yīng)用領(lǐng)域中有限個(gè)項(xiàng)目的經(jīng)驗(yàn)數(shù)據(jù)推導(dǎo)出來(lái)的,適用范圍有限。因此,必須根據(jù)當(dāng)前項(xiàng)目的特點(diǎn)選擇適用的估算模型,并且根據(jù)需要適當(dāng)?shù)卣{(diào)整(例如,修改模型常數(shù))估算模型。

1981年Boehm在《軟件工程經(jīng)濟(jì)學(xué)》中首次提出了COCOMO模型,COCOMO是構(gòu)造性成本模型(ConstructiveCostModel)的英文縮寫(xiě)。1997年Boehm等人提出的COCOMO2模型,是原COCOMO模型的修訂版,它反映了十多年來(lái)在成本估計(jì)方面所積累的經(jīng)驗(yàn)。COCOMO2給出了3個(gè)層次的軟件開(kāi)發(fā)工作量估算模型,這3個(gè)層次的模型在估算工作量時(shí),對(duì)軟件細(xì)節(jié)考慮的詳盡程度逐級(jí)增加。10.2.2COCOMO2模型這3個(gè)層次的估算模型分別是:(1)應(yīng)用系統(tǒng)組成模型。這個(gè)模型主要用于估算構(gòu)建原型的工作量,模型名字暗示在構(gòu)建原型時(shí)大量使用已有的構(gòu)件。(2)早期設(shè)計(jì)模型。這個(gè)模型適用于體系結(jié)構(gòu)設(shè)計(jì)階段。(3)后體系結(jié)構(gòu)模型。這個(gè)模型適用于完成體系結(jié)構(gòu)設(shè)計(jì)之后的軟件開(kāi)發(fā)階段。下面以后體系結(jié)構(gòu)模型為例,介紹COCOMO2模型。該模型把軟件開(kāi)發(fā)工作量表示成代碼行數(shù)(KLOC)的非線性函數(shù):E= (3)其中,E是開(kāi)發(fā)工作量(以人月為單位),

a是模型系數(shù),KLOC是估計(jì)的源代碼行數(shù),

b是模型指數(shù),

fi(i=1~17)是成本因素。每個(gè)成本因素都根據(jù)它的重要程度和對(duì)工作量影響大小被賦予一定數(shù)值(稱為工作量系數(shù))。Boehm把成本因素劃分成產(chǎn)品因素、平臺(tái)因素、人員因素和項(xiàng)目因素等4類。

與原始的COCOMO模型相比,COCOMO2模型使用的成本因素有下述變化:(1)新增加了4個(gè)成本因素,它們分別是要求的可重用性、需要的文檔量、人員連續(xù)性(即人員穩(wěn)定程度)和多地點(diǎn)開(kāi)發(fā)。這個(gè)變化表明,這些因素對(duì)開(kāi)發(fā)成本的影響日益增加。(2)略去了原始模型中的2個(gè)成本因素(計(jì)算機(jī)切換時(shí)間和使用現(xiàn)代程序設(shè)計(jì)實(shí)踐)。(3)某些成本因素(分析員能力、平臺(tái)經(jīng)驗(yàn)、語(yǔ)言和工具經(jīng)驗(yàn))對(duì)生產(chǎn)率的影響(即工作量系數(shù)最大值與最小值的比率)增加了,另一些成本因素(程序員能力)的影響減小了。為了確定工作量方程中模型指數(shù)b的值,原始的COCOMO模型把軟件開(kāi)發(fā)項(xiàng)目劃分成組織式、半獨(dú)立式和嵌入式這樣3種類型,并指定每種項(xiàng)目類型所對(duì)應(yīng)的b值(分別是1.05,1.12和1.20)。COCOMO2采用了更加精細(xì)得多的b分級(jí)模型,這個(gè)模型使用5個(gè)分級(jí)因素Wi(1≤i≤5),其中每個(gè)因素都劃分成從甚低(Wi=5)到特高(Wi=0)的6個(gè)級(jí)別,然后用下式計(jì)算b的數(shù)值:b= (4)因此,b的取值范圍為1.01~1.26。顯然,這種分級(jí)模式比原始COCOMO模型的分級(jí)模式更精細(xì)、更靈活。COCOMO2使用的5個(gè)分級(jí)因素如下所述:(1)項(xiàng)目先例性。這個(gè)分級(jí)因素指出,對(duì)于開(kāi)發(fā)組織來(lái)說(shuō)該項(xiàng)目的新奇程度。諸如開(kāi)發(fā)類似系統(tǒng)的經(jīng)驗(yàn),需要?jiǎng)?chuàng)新體系結(jié)構(gòu)和算法,以及需要并行開(kāi)發(fā)硬件和軟件等因素的影響,都體現(xiàn)在這個(gè)分級(jí)因素中。(2)開(kāi)發(fā)靈活性。這個(gè)分級(jí)因素反映出,為了實(shí)現(xiàn)預(yù)先確定的外部接口需求及為了及早開(kāi)發(fā)出產(chǎn)品而需要增加的工作量。(3)風(fēng)險(xiǎn)排除度。這個(gè)分級(jí)因素反映了重大風(fēng)險(xiǎn)已被消除的比例。在多數(shù)情況下,這個(gè)比例和指定了重要模塊接口(即選定了體系結(jié)構(gòu))的比例密切相關(guān)。(4)項(xiàng)目組凝聚力。這個(gè)分級(jí)因素表明了開(kāi)發(fā)人員相互協(xié)作時(shí)可能存在的困難。這個(gè)因素反映了開(kāi)發(fā)人員在目標(biāo)和文化背景等方面相一致的程度,以及開(kāi)發(fā)人員組成一個(gè)小組工作的經(jīng)驗(yàn)。(5)過(guò)程成熟度。這個(gè)分級(jí)因素反映了按照能力成熟度模型度量出的項(xiàng)目組織的過(guò)程成熟度。在原始的COCOMO模型中,僅粗略地考慮了前兩個(gè)分級(jí)因素對(duì)指數(shù)b之值的影響。工作量方程中模型系數(shù)a的典型值為3.0,在實(shí)際工作中應(yīng)該根據(jù)歷史經(jīng)驗(yàn)數(shù)據(jù)確定一個(gè)適合本組織當(dāng)前開(kāi)發(fā)的項(xiàng)目類型的數(shù)值。

不論從事哪種技術(shù)性項(xiàng)目,實(shí)際情況都是,在實(shí)現(xiàn)一個(gè)大目標(biāo)之前往往要把它分解成一系列的比較容易管理的子項(xiàng)目(也稱為作業(yè))。這些任務(wù)中有一些是處于“關(guān)鍵路徑”之外的,其完成時(shí)間如果沒(méi)有嚴(yán)重拖后,就不會(huì)影響整個(gè)項(xiàng)目的完成時(shí)間;其他任務(wù)則處于關(guān)鍵路徑之中,如果這些“關(guān)鍵任務(wù)”的進(jìn)度拖后,則整個(gè)項(xiàng)目的完成日期就會(huì)拖后,管理人員應(yīng)該高度關(guān)注關(guān)鍵任務(wù)的進(jìn)展情況。

項(xiàng)目管理者的目標(biāo)是定義全部項(xiàng)目任務(wù),識(shí)別出關(guān)鍵任務(wù),跟蹤關(guān)鍵任務(wù)的進(jìn)展?fàn)顩r,以保證能及時(shí)發(fā)現(xiàn)拖延進(jìn)度的情況。為達(dá)到上述目標(biāo),管理者必須制定一個(gè)足夠詳細(xì)的進(jìn)度表,以便監(jiān)督項(xiàng)目進(jìn)度并控制整個(gè)項(xiàng)目。10.3進(jìn)度計(jì)劃Gantt(甘特)圖是歷史悠久、應(yīng)用廣泛的制定進(jìn)度計(jì)劃的工具,下面通過(guò)一個(gè)非常簡(jiǎn)單的例子介紹這種工具。假設(shè)有一座陳舊的矩形木板房需要重新油漆。這項(xiàng)工作必須分3步完成:首先刮掉舊漆,然后刷上新漆,最后清除濺在窗戶上的油漆。假設(shè)一共分配了15名工人去完成這項(xiàng)工作,然而工具卻很有限:只有5把刮舊漆用的刮板,5把刷漆用的刷子,5把清除濺在窗戶上的油漆用的小刮刀。怎樣安排才能使工作進(jìn)行得更有效呢?10.3.1Gantt圖一種做法是首先刮掉四面墻壁上的舊漆,然后給每面墻壁都刷上新漆,最后清除濺在每個(gè)窗戶上的油漆。顯然這是效率最低的做法,因?yàn)榭偣灿?5名工人,然而每種工具卻只有5件,這樣安排工作在任何時(shí)候都有10名工人閑著沒(méi)活干。讀者可能已經(jīng)想到,應(yīng)該采用“流水作業(yè)法”,也就是說(shuō),首先由5名工人用刮板刮掉第1面墻上的舊漆(這時(shí)其余10名工人休息),當(dāng)?shù)?面墻刮凈后,另外5名工人立即用刷子給這面墻刷新漆(與此同時(shí)拿刮板的5名工人轉(zhuǎn)去刮第2面墻上的舊漆),一旦刮舊漆的工人轉(zhuǎn)到第3面墻而且刷新漆的工人轉(zhuǎn)到第2面墻以后,余下的5名工人立即拿起刮刀去清除濺在第1面墻窗戶上的油漆,……。這樣安排每個(gè)工人都有活干,因此能夠在較短的時(shí)間內(nèi)完成任務(wù)。假設(shè)木板房的第2、4兩面墻的長(zhǎng)度比第1、3兩面墻的長(zhǎng)度長(zhǎng)一倍,此外,不同工作需要用的時(shí)間長(zhǎng)短也不同,刷新漆最費(fèi)時(shí)間,其次是刮舊漆,清理(即清除濺在窗戶上的油漆)需要的時(shí)間最少??梢允褂脠D1中的Gantt圖描繪上述流水作業(yè)過(guò)程:在時(shí)間為零時(shí)開(kāi)始刮第1面墻上的舊漆,兩小時(shí)后刮舊漆的工人轉(zhuǎn)去刮第2面墻,同時(shí)另5名工人開(kāi)始給第1面墻刷新漆,每當(dāng)給一面墻刷完新漆之后,第3組的5名工人立即清除濺在這面墻窗戶上的漆。從圖1可以看出12小時(shí)后刮完所有舊漆,20小時(shí)后完成所有墻壁的刷漆工作,再過(guò)2小時(shí)后清理工作結(jié)束。因此全部工程在22小時(shí)后結(jié)束,如果用前述的第一種做法,則需要36小時(shí)。工序墻面刮舊漆刷新漆清理1或32312或4462圖9.1舊木板房刷漆工程的Gantt圖刮第1面墻柒第1面墻刮第3面墻柒第3面墻刮第2面墻刮第4面墻柒第2面墻柒第4面墻Gantt圖能很形象地描繪任務(wù)分解情況,以及每個(gè)子任務(wù)(作業(yè))的開(kāi)始時(shí)間和結(jié)束時(shí)間,因此,它是進(jìn)度計(jì)劃和進(jìn)度管理的有力工具。它具有直觀簡(jiǎn)明和容易掌握、容易繪制的優(yōu)點(diǎn),但是Gantt圖也有3個(gè)主要缺點(diǎn):(1)不能顯式地描繪各項(xiàng)作業(yè)彼此間的依賴關(guān)系;(2)進(jìn)度計(jì)劃的關(guān)鍵部分不明確,難于判定哪些部分應(yīng)當(dāng)是主攻和主控的對(duì)象;(3)計(jì)劃中有潛力的部分及潛力的大小不明確,往往造成潛力的浪費(fèi)。10.3.3工程網(wǎng)絡(luò)當(dāng)把一個(gè)工程項(xiàng)目分解成許多子任務(wù),它們彼此間的依賴關(guān)系又比較復(fù)雜時(shí),僅僅用Gantt圖作為安排進(jìn)度的工具是不夠的,不僅難于做出既節(jié)省資源又保證進(jìn)度的計(jì)劃,而且還容易發(fā)生差錯(cuò)。工程網(wǎng)絡(luò)是制定進(jìn)度計(jì)劃時(shí)另一種常用的圖形工具,它同樣能描繪任務(wù)分解情況以及每項(xiàng)作業(yè)的開(kāi)始時(shí)間和結(jié)束時(shí)間,此外,它還顯式地描繪各個(gè)作業(yè)彼此間的依賴關(guān)系。因此,工程網(wǎng)絡(luò)是系統(tǒng)分析和系統(tǒng)設(shè)計(jì)的強(qiáng)有力的工具。圖9.2舊木板房刷漆工程的工程網(wǎng)絡(luò)畫(huà)出類似圖2那樣的工程網(wǎng)絡(luò)之后,系統(tǒng)分析員就可以借助它的幫助估算工程進(jìn)度了。為此需要在工程網(wǎng)絡(luò)上增加一些必要的信息。首先,把每個(gè)作業(yè)估計(jì)需要使用的時(shí)間寫(xiě)在表示該項(xiàng)作業(yè)的箭頭上方。注意,箭頭長(zhǎng)度和它代表的作業(yè)持續(xù)時(shí)間沒(méi)有關(guān)系,箭頭僅表示依賴關(guān)系,它上方的數(shù)字才表示作業(yè)的持續(xù)時(shí)間。10.3.4估算工程進(jìn)度其次,為每個(gè)事件計(jì)算下述兩個(gè)統(tǒng)計(jì)數(shù)字:最早時(shí)刻EET和最遲時(shí)刻LET。這兩個(gè)數(shù)字將分別寫(xiě)在表示事件的圓圈的右上角和右下角,如圖3左下角的符號(hào)所示。事件的最早時(shí)刻是該事件可以發(fā)生的最早時(shí)間。通常工程網(wǎng)絡(luò)中第一個(gè)事件的最早時(shí)刻定義為零,其他事件的最早時(shí)刻在工程網(wǎng)絡(luò)上從左至右按事件發(fā)生順序計(jì)算。計(jì)算最早時(shí)刻EET使用下述3條簡(jiǎn)單規(guī)則:圖13.3舊木板房刷漆工程的完整的工程網(wǎng)絡(luò)(1)考慮進(jìn)入該事件的所有作業(yè);(2)對(duì)于每個(gè)作業(yè)都計(jì)算它的持續(xù)時(shí)間與起始事件的EET之和;(3)選取上述和數(shù)中的最大值作為該事件的最早時(shí)刻EET按照這種方法,不難沿著工程網(wǎng)絡(luò)從左至右順序算出每個(gè)事件的最早時(shí)刻,計(jì)算結(jié)果標(biāo)在圖3的工程網(wǎng)絡(luò)中(每個(gè)圓圈內(nèi)右上角的數(shù)字)。事件的最遲時(shí)刻是在不影響工程竣工時(shí)間的前提下,該事件最晚可以發(fā)生的時(shí)刻。按慣例,最后一個(gè)事件(工程結(jié)束)的最遲時(shí)刻就是它的最早時(shí)刻。其他事件的最遲時(shí)刻在工程網(wǎng)絡(luò)上從右至左按逆作業(yè)流的方向計(jì)算。計(jì)算最遲時(shí)刻LET使用下述3條規(guī)則:(1)考慮離開(kāi)該事件的所有作業(yè);(2)從每個(gè)作業(yè)的結(jié)束事件的最遲時(shí)刻中減去該作業(yè)的持續(xù)時(shí)間;(3)選取上述差數(shù)中的最小值作為該事件的最遲時(shí)刻LET。圖10.3中有幾個(gè)事件的最早時(shí)刻和最遲時(shí)刻相同,這些事件即為關(guān)鍵路徑,在圖中關(guān)鍵路徑用粗線箭頭表示。關(guān)鍵路徑上的事件(關(guān)鍵事件)必須準(zhǔn)時(shí)發(fā)生,組成關(guān)鍵路徑的作業(yè)(關(guān)鍵作業(yè))的實(shí)際持續(xù)時(shí)間不能超過(guò)估計(jì)的持續(xù)時(shí)間,否則工程就不能準(zhǔn)時(shí)結(jié)束。工程項(xiàng)目的管理人員應(yīng)該密切注視關(guān)鍵作業(yè)的進(jìn)展情況,如果關(guān)鍵事件出現(xiàn)的時(shí)間比預(yù)計(jì)的時(shí)間晚,則會(huì)使最終完成項(xiàng)目的時(shí)間拖后;如果希望縮短工期,只有往關(guān)鍵作業(yè)中增加資源才會(huì)有效果。10.3.5關(guān)鍵路徑不在關(guān)鍵路徑上的作業(yè)有一定程度的機(jī)動(dòng)余地——實(shí)際開(kāi)始時(shí)間可以比預(yù)定時(shí)間晚一些,或者實(shí)際持續(xù)時(shí)間可以比預(yù)定的持續(xù)時(shí)間長(zhǎng)一些,而并不影響工程的結(jié)束時(shí)間。

一個(gè)作業(yè)可以有的全部機(jī)動(dòng)時(shí)間等于它的結(jié)束事件的最遲時(shí)刻減去它的開(kāi)始事件的最早時(shí)刻,再減去這個(gè)作業(yè)的持續(xù)時(shí)間:

機(jī)動(dòng)時(shí)間=(LET)結(jié)束-持續(xù)時(shí)間-(EET)開(kāi)始10.3.6機(jī)動(dòng)時(shí)間圖13.4舊木板房刷漆工程改進(jìn)的Gantt圖之一工程網(wǎng)絡(luò)比Gantt圖優(yōu)越的地方:它顯式地定義事件及作業(yè)之間的依賴關(guān)系,Gantt圖只能隱含地表示這種關(guān)系。但是Gantt圖的形式比工程網(wǎng)絡(luò)更簡(jiǎn)單更直觀,為更多的人所熟悉,因此,應(yīng)該同時(shí)使用這兩種工具制訂和管理進(jìn)度計(jì)劃,使它們互相補(bǔ)充取長(zhǎng)補(bǔ)短。

總之,工作量估計(jì)技術(shù)可以幫助我們估計(jì)每項(xiàng)任務(wù)的工作量,根據(jù)人力分配情況,可以進(jìn)一步確定每項(xiàng)任務(wù)的持續(xù)時(shí)間。從這些基本數(shù)據(jù)出發(fā),根據(jù)作業(yè)之間的依賴關(guān)系,利用工程網(wǎng)絡(luò)和Gantt圖可以制定出合理的進(jìn)度計(jì)劃,并且能夠科學(xué)地管理軟件開(kāi)發(fā)工程的進(jìn)展情況。軟件項(xiàng)目成功的關(guān)鍵是有高素質(zhì)的軟件開(kāi)發(fā)人員。然而大多數(shù)軟件的規(guī)模都很大,單個(gè)軟件開(kāi)發(fā)人員無(wú)法在給定期限內(nèi)完成開(kāi)發(fā)工作,因此,必須把多名軟件開(kāi)發(fā)人員合理地組織起來(lái),使他們有效地分工協(xié)作共同完成開(kāi)發(fā)工作。經(jīng)驗(yàn)表明,項(xiàng)目組組織得越好,其生產(chǎn)率越高,而且產(chǎn)品質(zhì)量也越好。除了追求更好的組織方式之外,每個(gè)管理者的目標(biāo)都是建立有凝聚力的項(xiàng)目組。一個(gè)有高度凝聚力的小組,由一批團(tuán)結(jié)得非常緊密的人組成,他們的整體力量大于個(gè)體力量的總和。一旦項(xiàng)目組具有了凝聚力,成功的可能性就大大增加了。10.4人員組織其特點(diǎn)是,小組成員完全平等,享有充分民主,通過(guò)協(xié)商做出技術(shù)決策。因此,小組成員之間的通信是平行的,如果小組內(nèi)有n個(gè)成員,則可能的通信信道共有n(n-1)/2條。

程序設(shè)計(jì)小組的人數(shù)不能太多,否則組員間彼此通信的時(shí)間將多于程序設(shè)計(jì)時(shí)間。此外,通常不能把一個(gè)軟件系統(tǒng)劃分成大量獨(dú)立的單元,因此,如果程序設(shè)計(jì)小組人數(shù)太多,則每個(gè)組員所負(fù)責(zé)開(kāi)發(fā)的程序單元與系統(tǒng)其他部分的界面將是復(fù)雜的,不僅出現(xiàn)接口錯(cuò)誤的可能性增加,而且軟件測(cè)試將既困難又費(fèi)時(shí)間。10.4.1民主制程序員組優(yōu)點(diǎn):組員們對(duì)發(fā)現(xiàn)程序錯(cuò)誤持積極的態(tài)度,這種態(tài)度有助于更快速地發(fā)現(xiàn)錯(cuò)誤,從而導(dǎo)致高質(zhì)量的代碼。組員們享有充分民主,小組有高度凝聚力,組內(nèi)學(xué)術(shù)空氣濃厚,有利于攻克技術(shù)難關(guān)。因此,當(dāng)有難題需要解決時(shí),也就是說(shuō),當(dāng)所要開(kāi)發(fā)的軟件的技術(shù)難度較高時(shí),采用民主制程序員組是適宜的。缺點(diǎn):

由于沒(méi)有明確的權(quán)威指導(dǎo)開(kāi)發(fā)工程的進(jìn)行,組員間將缺乏必要的協(xié)調(diào),最終可能導(dǎo)致工程失敗。為了使少數(shù)經(jīng)驗(yàn)豐富、技術(shù)高超的程序員在軟件開(kāi)發(fā)過(guò)程中能夠發(fā)揮更大作用,程序設(shè)計(jì)小組也可以采用下一小節(jié)中介紹的另外一種組織形式。美國(guó)IBM公司在20世紀(jì)70年代初期開(kāi)始采用主程序員組的組織方式。采用這種組織方式主要出于下述幾點(diǎn)考慮:(1)軟件開(kāi)發(fā)人員多數(shù)比較缺乏經(jīng)驗(yàn);(2)程序設(shè)計(jì)過(guò)程中有許多事務(wù)性的工作,例如大量信息的存儲(chǔ)和更新;(3)多渠道通信很費(fèi)時(shí)間,將降低程序員的生產(chǎn)率。10.4.2主程序員組主程序員組用經(jīng)驗(yàn)多、技術(shù)好、能力強(qiáng)的程序員作為主程序員,同時(shí),利用人和計(jì)算機(jī)在事務(wù)性工作方面給主程序員提供充分支持,而且所有通信都通過(guò)一兩個(gè)人進(jìn)行。這種組織方式類似于外科手術(shù)小組組織:主刀大夫?qū)κ中g(shù)全面負(fù)責(zé),并且完成制訂手術(shù)方案、開(kāi)刀等關(guān)鍵工作,同時(shí)又有麻醉師、護(hù)士長(zhǎng)等技術(shù)熟練的專門(mén)人員協(xié)助和配合他的工作。此外,必要時(shí)手術(shù)組還要請(qǐng)其他領(lǐng)域的專家(例如,心臟科醫(yī)生或婦產(chǎn)科醫(yī)生)協(xié)助。主程序員組的兩個(gè)重要特性:(1)專業(yè)化,該組每名成員僅完成他們受過(guò)專業(yè)訓(xùn)練的那些工作。(2)層次性,主刀大夫指揮每名組員工作,并對(duì)手術(shù)全面負(fù)責(zé)。典型的主程序員組的組織形式如圖9.5所示。該組由主程序員、后備程序員、編程秘書(shū)以及1~3名程序員組成。在必要的時(shí)候,該組還有其他領(lǐng)域的專家協(xié)助。圖11.1主程序員組的結(jié)構(gòu)主程序員組核心人員的分工如下所述:(1)主程序員既是成功的管理人員又是經(jīng)驗(yàn)豐富、技術(shù)好、能力強(qiáng)的高級(jí)程序員,負(fù)責(zé)體系結(jié)構(gòu)設(shè)計(jì)和關(guān)鍵部分(或復(fù)雜部分)的詳細(xì)設(shè)計(jì),并且負(fù)責(zé)指導(dǎo)其他程序員完成詳細(xì)設(shè)計(jì)和編碼工作。所有接口問(wèn)題都由主程序員處理。主程序員對(duì)每行代碼的質(zhì)量負(fù)責(zé),因此,他還要對(duì)組內(nèi)其他成員的工作成果進(jìn)行復(fù)查。

(2)后備程序員也應(yīng)該技術(shù)熟練而且富于經(jīng)驗(yàn),他協(xié)助主程序員工作并且在必要時(shí)(例如,主程序員生病、出差或“跳槽”)接替主程序員的工作。因此,后備程序員必須在各方面都和主程序員一樣優(yōu)秀,并且對(duì)本項(xiàng)目的了解也應(yīng)該和主程序員一樣深入。平時(shí),后備程序員的工作主要是,設(shè)計(jì)測(cè)試方案、分析測(cè)試結(jié)果及獨(dú)立于設(shè)計(jì)過(guò)程的其他工作。(3)編程秘書(shū)負(fù)責(zé)完成與項(xiàng)目有關(guān)的全部事務(wù)性工作,例如,維護(hù)項(xiàng)目資料庫(kù)和項(xiàng)目文檔,編譯、鏈接、執(zhí)行源程序和測(cè)試用例。主程序員應(yīng)該是高級(jí)程序員和優(yōu)秀管理者的結(jié)合體,承擔(dān)主程序員工作需要同時(shí)具備這兩方面的才能。其次后備程序員更難找。人們期望后備程序員像主程序員一樣優(yōu)秀,但是,他們必須坐在“替補(bǔ)席”上,拿著較低的工資等待隨時(shí)接替主程序員的工作。幾乎沒(méi)有一個(gè)高級(jí)程序員或高級(jí)管理人員愿意接受這樣的工作。第三,編程秘書(shū)也很難找到。專業(yè)的軟件技術(shù)人員一般都厭煩日常的事務(wù)性工作,但是,人們卻期望編程秘書(shū)整天只干這類工作。我們需要一種更合理、更現(xiàn)實(shí)的組織程序員組的方法,這種方法應(yīng)該能充分結(jié)合民主制程序員組和主程序員組的優(yōu)點(diǎn),并且能用于實(shí)現(xiàn)更大規(guī)模的軟件產(chǎn)品。優(yōu)點(diǎn):小組成員都對(duì)發(fā)現(xiàn)程序錯(cuò)誤持積極、主動(dòng)的態(tài)度。但是,使用主程序員組的組織方式時(shí),主程序員對(duì)每行代碼的質(zhì)量負(fù)責(zé),因此,他必須參與所有代碼審查工作。由于主程序員同時(shí)又是負(fù)責(zé)對(duì)小組成員進(jìn)行評(píng)價(jià)的管理員,他參與代碼審查工作就會(huì)把所發(fā)現(xiàn)的程序錯(cuò)誤與小組成員的工作業(yè)績(jī)聯(lián)系起來(lái),從而造成小組成員出現(xiàn)不愿意發(fā)現(xiàn)錯(cuò)誤的心理。10.4.3現(xiàn)代程序員組解決方法:取消主程序員的大部分行政管理工作。前面已經(jīng)指出,很難找到既是高度熟練的程序員又是成功的管理員的人,取消主程序員的行政管理工作,不僅解決了小組成員不愿意發(fā)現(xiàn)程序錯(cuò)誤的心理問(wèn)題,也使得尋找主程序員的人選不再那么困難。于是,實(shí)際的“主程序員”應(yīng)該由兩個(gè)人共同擔(dān)任:一個(gè)技術(shù)負(fù)責(zé)人,負(fù)責(zé)小組的技術(shù)活動(dòng);一個(gè)行政負(fù)責(zé)人,負(fù)責(zé)所有非技術(shù)性事務(wù)的管理決策。這樣的組織結(jié)構(gòu)如圖9.6所示。技術(shù)組長(zhǎng)自然要參與全部代碼審查工作,因?yàn)樗獙?duì)代碼的各方面質(zhì)量負(fù)責(zé);相反,行政組長(zhǎng)不可以參與代碼審查工作,因?yàn)樗穆氊?zé)是對(duì)程序員的業(yè)績(jī)進(jìn)行評(píng)價(jià)。行政組長(zhǎng)應(yīng)該在常規(guī)調(diào)度會(huì)議上了解每名組員的技術(shù)能力和工作業(yè)績(jī)。圖11.2現(xiàn)代程序員組的結(jié)構(gòu)

在開(kāi)始工作之前明確劃分技術(shù)組長(zhǎng)和行政組長(zhǎng)的管理權(quán)限是很重要的。但是,即使已經(jīng)做了明確分工,有時(shí)也會(huì)出現(xiàn)職責(zé)不清的矛盾。例如,考慮年度休假問(wèn)題,行政組長(zhǎng)有權(quán)批準(zhǔn)某個(gè)程序員休年假的申請(qǐng),因?yàn)檫@是一個(gè)非技術(shù)性問(wèn)題,但是技術(shù)組長(zhǎng)可能馬上否決了這個(gè)申請(qǐng),因?yàn)橐呀?jīng)接近預(yù)定的項(xiàng)目結(jié)束日期,目前人手非常緊張。解決這類問(wèn)題的辦法是求助于更高層的管理人員w為行政組長(zhǎng)和技術(shù)組長(zhǎng)都認(rèn)為是屬于自己職責(zé)范圍內(nèi)的事務(wù),制定一個(gè)處理方案。圖11.3大型項(xiàng)目的技術(shù)管理組織結(jié)構(gòu)程序員組成員人數(shù)不宜過(guò)多,當(dāng)軟件項(xiàng)目規(guī)模較大時(shí),應(yīng)該把程序員分成若干個(gè)小組,采用圖11.3所示的組織結(jié)構(gòu),描繪的是技術(shù)管理組織的結(jié)構(gòu),非技術(shù)管理組織的結(jié)構(gòu)與此類似。在項(xiàng)目經(jīng)理的指導(dǎo)下進(jìn)行的,程序員向他們的組長(zhǎng)匯報(bào)工作,而組長(zhǎng)向項(xiàng)目經(jīng)理匯報(bào)工作。把民主制程序員組和主程序員組的優(yōu)點(diǎn)結(jié)合起來(lái)的另一種方法,是在合適的地方采用分散做決定的方法。這樣做有利于形成暢通的通信渠道,以便充分發(fā)揮每個(gè)程序員的積極性和主動(dòng)性,集思廣益攻克技術(shù)難關(guān)。這種組織方式對(duì)于適合采用民主方法的那類問(wèn)題(例如,研究性項(xiàng)目或遇到技術(shù)難題需要用集體智慧攻關(guān))非常有效。盡管這種組織方式適當(dāng)?shù)匕l(fā)揚(yáng)了民主,但是上下級(jí)之間的箭頭(即管理關(guān)系)仍然是向下的,也就是說(shuō),是在集中指導(dǎo)下發(fā)揚(yáng)民主。顯然,如果程序員可以指揮項(xiàng)目經(jīng)理,則只會(huì)引起混亂。圖13.4包含分散決策的組織方式

任何軟件開(kāi)發(fā)都是迭代過(guò)程,也就是說(shuō),在設(shè)計(jì)過(guò)程會(huì)發(fā)現(xiàn)需求說(shuō)明書(shū)中的問(wèn)題,在實(shí)現(xiàn)過(guò)程又會(huì)暴露出設(shè)計(jì)中的錯(cuò)誤,……。此外,隨著時(shí)間推移客戶的需求也會(huì)或多或少發(fā)生變化。因此,在開(kāi)發(fā)軟件的過(guò)程中,變化(或稱為變動(dòng))既是必要的,又是不可避免的。但是,變化也很容易失去控制,如果不能適當(dāng)?shù)乜刂坪凸芾碜兓?,?shì)必造成混亂并產(chǎn)生許多嚴(yán)重的錯(cuò)誤。10.5軟件配置管理

軟件配置管理是在軟件的整個(gè)生命期內(nèi)管理變化的一組活動(dòng)。具體地說(shuō),這組活動(dòng)用來(lái):①標(biāo)識(shí)變化;②控制變化;③確保適當(dāng)?shù)貙?shí)現(xiàn)了變化;④向需要知道這類信息的人報(bào)告變化。軟件配置管理不同于軟件維護(hù)。維護(hù)是在軟件交付給用戶使用后才發(fā)生的,而配置管理是在軟件項(xiàng)目啟動(dòng)時(shí)就開(kāi)始,一直持續(xù)到軟件退役后才終止的一組跟蹤和控制活動(dòng)。軟件配置管理的目標(biāo)是,使變化更正確且更容易被適應(yīng),在必須變化時(shí)減少所需花費(fèi)的工作量。1.軟件配置項(xiàng)軟件過(guò)程的輸出信息可以分為3類:①計(jì)算機(jī)程序(源代碼和可執(zhí)行程序);②描述計(jì)算機(jī)程序的文檔(供技術(shù)人員或用戶使用);③數(shù)據(jù)(程序內(nèi)包含的或在程序外的)。這些項(xiàng)組成了在軟件過(guò)程中產(chǎn)生的全部信息,我們把它們統(tǒng)稱為軟件配置,而這些項(xiàng)就是軟件配置項(xiàng)。10.5.1軟件配置為了開(kāi)發(fā)出高質(zhì)量的軟件產(chǎn)品,軟件開(kāi)發(fā)人員不僅要努力保證每個(gè)軟件配置項(xiàng)正確,而且必須保證一個(gè)軟件的所有配置項(xiàng)是完全一致的。可以把軟件配置管理看作是應(yīng)用于整個(gè)軟件過(guò)程的軟件質(zhì)量保證活動(dòng),是專門(mén)用于管理變化的軟件質(zhì)量保證活動(dòng)。2.基線

基線是一個(gè)軟件配置管理概念,它有助于我們?cè)诓粐?yán)重妨礙合理變化的前提下來(lái)控制變化。IEEE把基線定義為:已經(jīng)通過(guò)了正式復(fù)審的規(guī)格說(shuō)明或中間產(chǎn)品,它可以作為進(jìn)一步開(kāi)發(fā)的基礎(chǔ),并且只有通過(guò)正式的變化控制過(guò)程才能改變它。簡(jiǎn)而言之,基線就是通過(guò)了正式復(fù)審的軟件配置項(xiàng)。在軟件配置項(xiàng)變成基線之前,可以迅速而非正式地修改它。一旦建立了基線之后,雖然仍然可以實(shí)現(xiàn)變化,但是,必須應(yīng)用特定的、正式的過(guò)程(稱為規(guī)程)來(lái)評(píng)估、實(shí)現(xiàn)和驗(yàn)證每個(gè)變化。

除了軟件配置項(xiàng)之外,許多軟件工程組織也把軟件工具置于配置管理之下,也就是說(shuō),把特定版本的編輯器、編譯器和其他CASE工具,作為軟件配置的一部分“固定”下來(lái)。因?yàn)楫?dāng)修改軟件配置項(xiàng)時(shí)必然要用到這些工具,為防止不同版本的工具產(chǎn)生的結(jié)果不同,應(yīng)該把軟件工具也基線化,并且列入到綜合的配置管理過(guò)程之中。軟件配置管理是軟件質(zhì)量保證的重要一環(huán),它的主要任務(wù)是控制變化,同時(shí)也負(fù)責(zé)各個(gè)軟件配置項(xiàng)和軟件各種版本的標(biāo)識(shí)、軟件配置審計(jì)以及對(duì)軟件配置發(fā)生的任何變化的報(bào)告。具體來(lái)說(shuō),軟件配置管理主要有5項(xiàng)任務(wù):

標(biāo)識(shí)版本控制變化控制配置審計(jì)報(bào)告10.5.2軟件配置管理過(guò)程1.標(biāo)識(shí)軟件配置中的對(duì)象可以標(biāo)識(shí)出兩類對(duì)象:基本對(duì)象和聚集對(duì)象(可以把聚集對(duì)象作為代表軟件配置完整版本的一種機(jī)制)。基本對(duì)象是軟件工程師在分析、設(shè)計(jì)、編碼或測(cè)試過(guò)程中創(chuàng)建出來(lái)的“文本單元”,例如,需求規(guī)格說(shuō)明的一個(gè)段落、一個(gè)模塊的源程序清單或一組測(cè)試用例。聚集對(duì)象是基本對(duì)象和其他聚集對(duì)象的集合。對(duì)象名是無(wú)二義性地標(biāo)識(shí)該對(duì)象的一個(gè)字符串。所設(shè)計(jì)的標(biāo)識(shí)模式必須能無(wú)歧義地標(biāo)識(shí)每個(gè)對(duì)象的不同版本。2.版本控制版本控制聯(lián)合使用規(guī)程和工具,以管理在軟件工程過(guò)程中所創(chuàng)建的配置對(duì)象的不同版本。借助于版本控制技術(shù),用戶能夠通過(guò)選擇適當(dāng)?shù)陌姹緛?lái)指定軟件系統(tǒng)的配置。實(shí)現(xiàn)方法:把屬性和軟件的每個(gè)版本關(guān)聯(lián)起來(lái),然后通過(guò)描述一組所期望的屬性來(lái)指定和構(gòu)造所需要的配置。這些“屬性”,既可以簡(jiǎn)單到僅是賦給每個(gè)配置對(duì)象的具體版本號(hào),也可以復(fù)雜到是一個(gè)布爾變量串,其指明施加到系統(tǒng)上的功能變化的具體類型。3.變化控制對(duì)于大型軟件開(kāi)發(fā)項(xiàng)目來(lái)說(shuō),無(wú)控制的變化將迅速導(dǎo)致混亂。變化控制把人的規(guī)程和自動(dòng)工具結(jié)合起來(lái),以提供一個(gè)控制變化的機(jī)制。典型的變化控制過(guò)程如下:接到變化請(qǐng)求之后,首先評(píng)估該變化在技術(shù)方面的得失、可能產(chǎn)生的副作用、對(duì)其他配置對(duì)象和系統(tǒng)功能的整體影響以及估算出的修改成本。評(píng)估的結(jié)果形成“變化報(bào)告”,該報(bào)告供“變化控制審批者”審閱。變化控制審批者既可以是一個(gè)人也可以由一組人組成。為每個(gè)被批準(zhǔn)的變化都生成一個(gè)“工程變化命令”,其描述將要實(shí)現(xiàn)的變化,必須遵守的約束以及復(fù)審和審計(jì)的標(biāo)準(zhǔn)。把要修改的對(duì)象從項(xiàng)目數(shù)據(jù)庫(kù)中“提?。╟heckout)”出來(lái),進(jìn)行修改并應(yīng)用適當(dāng)?shù)腟QA活動(dòng)。最后,把修改后的對(duì)象“提交(checkin)”進(jìn)數(shù)據(jù)庫(kù),并用適當(dāng)?shù)陌姹究刂茩C(jī)制創(chuàng)建該軟件的下一個(gè)版本?!疤峤弧焙汀疤崛 边^(guò)程實(shí)現(xiàn)了變化控制的兩個(gè)主要功能——訪問(wèn)控制和同步控制。訪問(wèn)控制決定哪個(gè)軟件工程師有權(quán)訪問(wèn)和修改一個(gè)特定的配置對(duì)象,同步控制有助于保證由兩名不同的軟件工程師完成的并行修改不會(huì)相互覆蓋。在一個(gè)軟件配置項(xiàng)變成基線之前,僅需應(yīng)用非正式的變化控制,該配置對(duì)象的開(kāi)發(fā)者可以對(duì)它進(jìn)行任何合理的修改。一旦該對(duì)象經(jīng)過(guò)了正式技術(shù)復(fù)審并獲得批準(zhǔn),就創(chuàng)建了一個(gè)基線,而一旦一個(gè)軟件配置項(xiàng)變成了基線,就開(kāi)始實(shí)施項(xiàng)目級(jí)的變化控制。這時(shí),為了進(jìn)行修改開(kāi)發(fā)者必須獲得項(xiàng)目管理者的批準(zhǔn)(如果變化是“局部的”),如果變化影響到其他軟件配置項(xiàng),還必須得到變化控制審批者的批準(zhǔn)。每個(gè)變化必須再次評(píng)估,并且要跟蹤和復(fù)審所有變化。4.配置審計(jì)為了確保實(shí)現(xiàn)所需要的變化,通常從下述兩方面采取措施:①正式的技術(shù)復(fù)審;②軟件配置審計(jì)。正式的技術(shù)復(fù)審關(guān)注被修改后的配置對(duì)象的技術(shù)正確性。復(fù)審者審查該對(duì)象以確定它與其他軟件配置項(xiàng)的一致性,并檢查是否有遺漏或副作用。軟件配置審計(jì)通過(guò)評(píng)估配置對(duì)象的那些通常不在復(fù)審過(guò)程中考慮的特征(例如,修改時(shí)是否遵循了軟件工程標(biāo)準(zhǔn),是否在該配置項(xiàng)中顯著地標(biāo)明了所做的修改,是否注明了修改日期和修改者,是否適當(dāng)?shù)馗铝怂邢嚓P(guān)的軟件配置項(xiàng),是否遵循了標(biāo)注變化、記錄變化和報(bào)告變化的規(guī)程),而成為對(duì)正式技術(shù)復(fù)審的補(bǔ)充。5.狀態(tài)報(bào)告配置狀態(tài)報(bào)告它回答下述問(wèn)題:①發(fā)生了什么事?②誰(shuí)做的這件事?③這件事是什么時(shí)候發(fā)生的?④它將影響哪些其他事物?配置狀態(tài)變化對(duì)大型軟件開(kāi)發(fā)項(xiàng)目的成功有重大影響。如兩名開(kāi)發(fā)人員可能試圖按照相互沖突的想法去修改同一個(gè)軟件配置項(xiàng);軟件工程隊(duì)伍可能耗費(fèi)幾個(gè)人月的工作量根據(jù)過(guò)時(shí)的硬件規(guī)格說(shuō)明開(kāi)發(fā)軟件;察覺(jué)到所建議的修改有嚴(yán)重副作用的人可能還不知道該項(xiàng)修改正在進(jìn)行。配置狀態(tài)報(bào)告通過(guò)改善所有相關(guān)人員之間的通信,幫助消除這些問(wèn)題。10.6國(guó)際標(biāo)準(zhǔn)--能力成熟度模型ISO9000質(zhì)量標(biāo)準(zhǔn)強(qiáng)調(diào)質(zhì)量并不是在產(chǎn)品檢驗(yàn)中得到的,而是在生產(chǎn)的全過(guò)程中形成的。ISO9000-3的全稱是“質(zhì)量管理和質(zhì)量保證標(biāo)準(zhǔn)第三部分:在軟件開(kāi)發(fā)、供應(yīng)和維護(hù)中的使用指南”。ISO9000-3要求軟件開(kāi)發(fā)機(jī)構(gòu)建立質(zhì)量管理體系ISO9000-3闡述了供方和需方應(yīng)該怎樣進(jìn)行有組織的質(zhì)量管理活動(dòng),才能得到較為滿意的軟件產(chǎn)品;規(guī)定了從雙方簽訂開(kāi)發(fā)合同到設(shè)計(jì)、實(shí)現(xiàn)和維護(hù)的整個(gè)軟件生命周期中應(yīng)該實(shí)施的質(zhì)量管理活動(dòng),但是,并沒(méi)有規(guī)定具體的質(zhì)量管理和質(zhì)量檢驗(yàn)的方法和步驟。13.6國(guó)際標(biāo)準(zhǔn)--能力成熟度模型ISO/IEC12207軟件生命周期過(guò)程標(biāo)準(zhǔn)指導(dǎo)軟件過(guò)程實(shí)施的一個(gè)標(biāo)準(zhǔn),從多個(gè)角度闡述了軟件生命周期各個(gè)過(guò)程中的活動(dòng),對(duì)規(guī)范軟件開(kāi)發(fā)過(guò)程,協(xié)調(diào)各類人員之間的關(guān)系,都具有指導(dǎo)作用。建立了一個(gè)最高層次的軟件生命周期體系結(jié)構(gòu)生命周期從一個(gè)設(shè)想或需求開(kāi)始,直至軟件被廢棄(退役)時(shí)終止。體系結(jié)構(gòu)由一組相互關(guān)聯(lián)的過(guò)程集組成,所有過(guò)程都遵守了兩條基本原則:模塊化和責(zé)任。標(biāo)準(zhǔn)中的過(guò)程被分成三大類:主要過(guò)程,支持過(guò)程和組織過(guò)程。主要過(guò)程是生命周期中的原動(dòng)力,它們是:獲取、供應(yīng)、開(kāi)發(fā)、運(yùn)行和維護(hù)。ISO/IEC12207是從過(guò)程實(shí)施的角度對(duì)軟件生命周期過(guò)程進(jìn)行規(guī)范的標(biāo)準(zhǔn)10.6國(guó)際標(biāo)準(zhǔn)--能力成熟度模型ISO/IECTR15504軟件過(guò)程評(píng)估標(biāo)準(zhǔn)是從過(guò)程評(píng)估的角度對(duì)軟件過(guò)程進(jìn)行規(guī)范的標(biāo)準(zhǔn)。為軟件過(guò)程評(píng)估提供了一個(gè)框架,并為實(shí)施評(píng)估以確保各種級(jí)別的一致性和可重復(fù)性提出了一個(gè)最小需求。具有兩維結(jié)構(gòu):一個(gè)是過(guò)程維(客戶——供應(yīng)者、工程過(guò)程、支持過(guò)程、管理過(guò)程、組織過(guò)程),另一個(gè)是能力維(第0級(jí)——不完全級(jí)、可實(shí)施級(jí)、有管理級(jí)、可創(chuàng)建級(jí)、可預(yù)測(cè)級(jí)、優(yōu)化級(jí))。融合進(jìn)了能力成熟度模型(CMM)類似的能力等級(jí)。用戶可以通過(guò)不斷提高能力等級(jí)的方法,提高自己的軟件過(guò)程能力。10.6國(guó)際標(biāo)準(zhǔn)--能力成熟度模型能力成熟度模型軟件質(zhì)量問(wèn)題是由我們管理軟件過(guò)程的方法不當(dāng)引起的。新軟件技術(shù)的運(yùn)用并不會(huì)自動(dòng)提高生產(chǎn)率和軟件質(zhì)量。有助于軟件開(kāi)發(fā)組織建立一個(gè)有規(guī)律的、成熟的軟件過(guò)程。軟件過(guò)程既包括了軟件生產(chǎn)的技術(shù)方面又包括了管理方面。CMM策略力圖改進(jìn)軟件過(guò)程的管理,而在技術(shù)方面的改進(jìn)是其必然的結(jié)果。對(duì)軟件過(guò)程的改進(jìn)不可能在一夜之間完成,CMM是以增量方式逐步引入變化的。CMM明確地定義了5個(gè)不同的成熟度等級(jí),一個(gè)軟件開(kāi)發(fā)組織可用一系列小的改良性步驟向更高的成熟度等級(jí)邁進(jìn)。10.6國(guó)際標(biāo)準(zhǔn)--能力成熟度模型能力成熟度模型的結(jié)構(gòu)成熟度等級(jí)(MaturityLevels):五個(gè)成熟度等級(jí)構(gòu)成了CMM的頂層結(jié)構(gòu)。過(guò)程能力(ProcessCapability):軟件過(guò)程能力描述,通過(guò)遵循軟件過(guò)程能實(shí)現(xiàn)預(yù)期結(jié)果的程度。關(guān)鍵過(guò)程域(KeyProcessAreas,KPA):每個(gè)成熟度等級(jí)由若干關(guān)鍵過(guò)程域組成。每個(gè)關(guān)鍵過(guò)程域都標(biāo)識(shí)出一串相關(guān)的活動(dòng),當(dāng)把這些活動(dòng)都完成時(shí)所達(dá)到的一組目標(biāo),對(duì)建立該過(guò)程成熟度等級(jí)是至關(guān)重要的。目標(biāo)(Goals):目標(biāo)概括了關(guān)鍵過(guò)程域中的關(guān)鍵實(shí)踐,并可用于確定一個(gè)組織或項(xiàng)目是否已有效地實(shí)施了該關(guān)鍵過(guò)程域。目標(biāo)表示每個(gè)關(guān)鍵過(guò)程域的范圍、邊界和意圖。公共特性(CommonFeatures):能指示一個(gè)關(guān)鍵過(guò)程域的實(shí)施和規(guī)范化是否是有效的、可重復(fù)的和持久的屬性。關(guān)鍵實(shí)踐(KeyPractices):每個(gè)關(guān)鍵過(guò)程域都用若干關(guān)鍵實(shí)踐描述,關(guān)鍵實(shí)踐描述是對(duì)關(guān)鍵過(guò)程域的有效實(shí)施和規(guī)范化貢獻(xiàn)最大的基礎(chǔ)設(shè)施和活動(dòng)。圖13.4CMM結(jié)構(gòu)能力成熟度等級(jí)1.初始級(jí):軟件過(guò)程的特征是無(wú)序的,有時(shí)甚至是混亂的。幾乎沒(méi)有什么過(guò)程是經(jīng)過(guò)定義的,項(xiàng)目能否成功完全取決于個(gè)人能力。2.可重復(fù)級(jí):建立了基本的項(xiàng)目管理過(guò)程,以追蹤成本、進(jìn)度和功能性。已建立必要的過(guò)程規(guī)范,可以重復(fù)以前類似項(xiàng)目所取得的成功。3.定義級(jí):用于管理工程活動(dòng)的軟件過(guò)程已經(jīng)文檔化和標(biāo)準(zhǔn)化,并且已經(jīng)集成到整個(gè)組織的軟件過(guò)程中。這一級(jí)包含了第2級(jí)的所有特征。4.管理級(jí):已收集了軟件過(guò)程和產(chǎn)品質(zhì)量的詳細(xì)度量數(shù)據(jù),使用這些詳細(xì)的度量數(shù)據(jù),能夠定量地理解和控制軟件過(guò)程和產(chǎn)品。這一級(jí)包含了第3級(jí)的所有特征。5.優(yōu)化級(jí):通過(guò)定量的反饋能夠?qū)崿F(xiàn)持續(xù)的過(guò)程改進(jìn),這些反饋是從過(guò)程及對(duì)新想法和技術(shù)的測(cè)試中獲得的。這一級(jí)包含了第4級(jí)的所有特征。軟件過(guò)程成熟度模型的關(guān)鍵子過(guò)程域*表示個(gè)體軟件過(guò)程PSP的關(guān)鍵子過(guò)程域。軟件過(guò)程能力描述遵循一個(gè)軟件過(guò)程所能達(dá)到的期望結(jié)果的范圍。軟件過(guò)程性能是指遵循一個(gè)軟件過(guò)程所能得到的實(shí)際結(jié)果。軟件過(guò)程成熟度是指一個(gè)特定的過(guò)程被明確定義、管理、度量、控制以及有效的程度。1級(jí)-初始層2級(jí)-可重復(fù)層軟件配置管理軟件質(zhì)量保證軟件子同合管理*軟件項(xiàng)目追蹤與監(jiān)控*軟件項(xiàng)目計(jì)劃需求管理3級(jí)-定義層*同級(jí)評(píng)審組間協(xié)作*軟件產(chǎn)品工程*軟件集成管理培訓(xùn)計(jì)劃*軟件過(guò)程定義*軟件過(guò)程要點(diǎn)5級(jí)-優(yōu)化層*過(guò)程更改管理*技術(shù)更改管理*缺陷預(yù)防4級(jí)-管理層*質(zhì)量管理*過(guò)程量化管理個(gè)體軟件過(guò)程PSPPSP是由美國(guó)CMU/SEI的WattsHumphrey領(lǐng)導(dǎo)開(kāi)發(fā)的。他對(duì)104位參與PSP培訓(xùn)的軟件人員的統(tǒng)計(jì)數(shù)據(jù)表明(程序規(guī)模從50至5000行不等),在應(yīng)用PSP后:總的差錯(cuò)減少58.0%,在測(cè)試階段發(fā)現(xiàn)的差錯(cuò)減少71.9%,生產(chǎn)效率提高20.8%。PSP的結(jié)果表明,軟件缺陷絕大多數(shù)是由于對(duì)問(wèn)題的錯(cuò)誤理解或簡(jiǎn)單的失誤所造成,只有很少一部分是由于復(fù)雜的邏輯關(guān)系所產(chǎn)生。PSP的結(jié)果還表明,在編程階段的缺陷引入率是設(shè)計(jì)階段的3.5倍。因此,保障軟件產(chǎn)品質(zhì)量的一個(gè)重要途徑是提高設(shè)計(jì)質(zhì)量。在軟件設(shè)計(jì)階段,PSP的著眼點(diǎn)在于軟件缺陷的預(yù)防。具體的途徑是強(qiáng)化設(shè)計(jì)結(jié)束準(zhǔn)則,而不是設(shè)計(jì)方法的選擇。個(gè)體軟件過(guò)程的成熟度與關(guān)鍵子過(guò)程域個(gè)體管理基線PSP0當(dāng)前的過(guò)程工作時(shí)間記錄程序差錯(cuò)記錄程序差錯(cuò)類型標(biāo)準(zhǔn)PSP0.1編碼標(biāo)準(zhǔn)軟件規(guī)模度量過(guò)程改善建議個(gè)體過(guò)程循環(huán)PSP3循環(huán)開(kāi)發(fā)個(gè)體質(zhì)量管理個(gè)體規(guī)劃過(guò)程PSP1程序規(guī)模估計(jì)測(cè)試報(bào)告PSP1.1任務(wù)規(guī)劃

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論