海大計(jì)算機(jī)專業(yè)軟件工程課程資料lge第十三章 軟件項(xiàng)目管理_第1頁
海大計(jì)算機(jī)專業(yè)軟件工程課程資料lge第十三章 軟件項(xiàng)目管理_第2頁
海大計(jì)算機(jī)專業(yè)軟件工程課程資料lge第十三章 軟件項(xiàng)目管理_第3頁
海大計(jì)算機(jī)專業(yè)軟件工程課程資料lge第十三章 軟件項(xiàng)目管理_第4頁
海大計(jì)算機(jī)專業(yè)軟件工程課程資料lge第十三章 軟件項(xiàng)目管理_第5頁
已閱讀5頁,還剩63頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

中國(guó)海洋大學(xué)信息學(xué)院Email:green.lyn@教材:軟件工程導(dǎo)論(第5版)張海藩編著清華大學(xué)出版社軟件工程第13章軟件項(xiàng)目管理

所謂管理就是通過計(jì)劃、組織和控制等一系列活動(dòng),合理地配置和使用各種資源,以達(dá)到既定目標(biāo)的過程。軟件項(xiàng)目管理先于任何技術(shù)活動(dòng)之前開始,并且貫穿于軟件的整個(gè)生命周期之中。

為了使得對(duì)程序規(guī)模的估計(jì)值更接近實(shí)際值,可以由多名有經(jīng)驗(yàn)的軟件工程師分別做出估計(jì)。每個(gè)人都估計(jì)程序的最小規(guī)模(a)最大規(guī)模(b)和最可能的規(guī)模(m),分別算出這3種規(guī)模的平均值a’

,b’和m’之后,再用下式計(jì)算程序規(guī)模的估計(jì)值13.1估算軟件規(guī)模13.1.1代碼行技術(shù)代碼行技術(shù)是比較簡(jiǎn)單的定量估算軟件規(guī)模的方法。這種方法依據(jù)以往開發(fā)類似產(chǎn)品的經(jīng)驗(yàn)和歷史數(shù)據(jù),估計(jì)實(shí)現(xiàn)一個(gè)功能所需要的源程序行數(shù)。

代碼行技術(shù)的主要優(yōu)點(diǎn)是,代碼是所有軟件開發(fā)項(xiàng)目都有的“產(chǎn)品”,而且很容易計(jì)算代碼行數(shù)。代碼行技術(shù)的缺點(diǎn)是:源程序僅是軟件配置的一個(gè)成分,用它的規(guī)模代表整個(gè)軟件的規(guī)模似乎不太合理,用不同語言實(shí)現(xiàn)同一個(gè)軟件所需要的代碼行數(shù)并不相同;這種方法不適用于非過程語言。6a’+4m’+b’L=(13.1)13.1.2功能點(diǎn)技術(shù)功能點(diǎn)技術(shù)依據(jù)對(duì)軟件信息域特性和軟件復(fù)雜性的評(píng)估結(jié)果,估算軟件規(guī)模。1.信息域特性功能點(diǎn)技術(shù)定義了信息域的5個(gè)特性,分別是輸入項(xiàng)數(shù)(Inp)、輸出項(xiàng)數(shù)(Out)、查詢數(shù)(Inq)、主文件數(shù)(Maf)和外部接口數(shù)(Inf)。(1)輸入項(xiàng)數(shù):用戶向軟件輸入的項(xiàng)數(shù),這些輸入給軟件提供面向應(yīng)用的數(shù)據(jù)。輸入不同于查詢,后者單獨(dú)計(jì)數(shù),不記入輸入項(xiàng)數(shù)中。

(2)輸出項(xiàng)數(shù):軟件向用戶輸出的項(xiàng)數(shù),它們向用戶提供面向應(yīng)用的信息,例如,報(bào)表和出錯(cuò)信息等。報(bào)表內(nèi)的數(shù)據(jù)項(xiàng)不單獨(dú)記數(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ī)器可讀的全部接口(例如,磁盤或磁帶上的數(shù)據(jù)文件)的數(shù)量,用這些接口把信息傳送給另一個(gè)系統(tǒng)。2.估算功能點(diǎn)的步驟用下述3個(gè)步驟,可估算出一個(gè)軟件的功能點(diǎn)數(shù)(即軟件規(guī)模)。(1)計(jì)算未調(diào)整的功能點(diǎn)數(shù)UFP

首先,把產(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))。

然后,用下式計(jì)算未調(diào)整的功能點(diǎn)數(shù)UFP:

UFP=a1×Inp+a2×Out+a3×Inq+a4×Maf+a5×Inf其中,ai(1<=i<=5)是信息域特性系數(shù),其值由相應(yīng)特性的復(fù)雜級(jí)別決定,如表13.1所示。表13.1信息域特性系數(shù)值特性系數(shù)復(fù)雜級(jí)別簡(jiǎn)單平均復(fù)雜輸入系數(shù)a13

46輸出系數(shù)a24

57查詢系數(shù)a33

46文件系數(shù)a47

1015接口系數(shù)a55

710(2)計(jì)算技術(shù)復(fù)雜性因子TCF

這一步驟度量14種技術(shù)因素對(duì)軟件規(guī)模的影響程度。這些因素包括高處理率,性能標(biāo)準(zhǔn)(例如,響應(yīng)時(shí)間),聯(lián)機(jī)更新等,在表13.2中列出了全部技術(shù)因素,并用Fi(1<=i<=14)代表這些因素。根據(jù)軟件的特點(diǎn),為每個(gè)因素分配一個(gè)從0(不存在或?qū)浖?guī)模無影響)到5(有很大影響)的值。然后,用下式計(jì)算技術(shù)因素對(duì)軟件規(guī)模的綜合影響程度DI:DI=∑Fi

技術(shù)復(fù)雜性因子TCF由下式計(jì)算:

TCF=0.65+0.01×DI

因?yàn)镈I的值在0-70之間,所以TCF的值在0.65-1.35之間。表13.2技術(shù)因素序號(hào)Fi技術(shù)因素1F1數(shù)據(jù)通信

2F2

分布式數(shù)據(jù)處理3F3

性能標(biāo)準(zhǔn)4F4

高負(fù)荷的硬件5F5

高處理率6F6

聯(lián)機(jī)數(shù)據(jù)處理7F7

終端用戶效率8F8

聯(lián)機(jī)更新9F9

復(fù)雜的計(jì)算10F10

可重用性11F11

安裝方便12F12

操作方便13F13

可移植性14F14

可維護(hù)性(3)計(jì)算功能點(diǎn)數(shù)FP

用下式計(jì)算功能點(diǎn)數(shù)FP:

FP=UFP×TCF

功能點(diǎn)數(shù)與所用的編程語言無關(guān),看起來功能點(diǎn)技術(shù)比代碼行技術(shù)更合理一些。但是,在判斷信息域特性復(fù)雜級(jí)別和技術(shù)因素的影響程度時(shí),存在著相當(dāng)大的主觀因素。13.2工作量估算軟件估算模型使用由經(jīng)驗(yàn)導(dǎo)出的公式來預(yù)測(cè)軟件開發(fā)工作量,工作量是軟件規(guī)模(KLOC或FP)的函數(shù),工作量的單位通常是人月(pm)。13.2.1靜態(tài)單變量模型這類模型的總體結(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)單變量模型。1.面向KLOC的估算模型(1)Walston_Felix模型

E=5.2×(KLOC)0.91(2)Bailey_Basili模型

E=5.5+0.73×(KLOC)1.16(3)Boehm簡(jiǎn)單模型

E=3.2×(KLOC)1.05(4)Doty模型(在KLOC>9時(shí)適用)

E=5.288×(KLOC)1.0472.面向FP的估算模型(1)Albrecht&Gaffney模型

E=-13.39+0.0545FP(2)Maston,Barnnett和Mellichamp模型

E=585.7+15.12FP

從上面列出的模型可以看出,對(duì)于相同的KLOC或FP值,用不同模型估算將得出不同的結(jié)果。主要原因是,這些模型多數(shù)都是僅根據(jù)若干應(yīng)用領(lǐng)域中有限個(gè)項(xiàng)目的經(jīng)驗(yàn)數(shù)據(jù)推導(dǎo)出來的,適用范圍有限。13.2.2動(dòng)態(tài)多變量模型動(dòng)態(tài)多變量模型也稱為軟件方程式,它是根據(jù)從4000多個(gè)當(dāng)代軟件項(xiàng)目中收集的生產(chǎn)率數(shù)據(jù)推導(dǎo)出來的。該模型把工作量看作是軟件規(guī)模和開發(fā)時(shí)間這兩個(gè)變量的函數(shù)。動(dòng)態(tài)多變量估算模型的形式如下:E=(LOC×B0.333/P)3×(1/t)4(13.2)其中,E是以人月或人年為單位的工作量;

t是以月或年為單位的項(xiàng)目持續(xù)時(shí)間;B是特殊技術(shù)因子,它隨著對(duì)測(cè)試,質(zhì)量保證,文檔及管理技術(shù)的需求的增加而緩慢增加,對(duì)于較小的程序(KLOC=5-15),B=0.16,對(duì)于超過70KLOC的程序,B=0.39P是生產(chǎn)率參數(shù),它反映了下述因素對(duì)工作量的影響:

●總體過程成熟度及管理水平;●使用良好的軟件工程實(shí)踐的程度;●使用的程序設(shè)計(jì)語言的級(jí)別;●軟件環(huán)境的狀態(tài);●軟件項(xiàng)目組的技術(shù)及經(jīng)驗(yàn);●應(yīng)用系統(tǒng)的復(fù)雜程度。

開發(fā)實(shí)時(shí)嵌入式軟件時(shí),P的典型值為2000;開發(fā)電信系統(tǒng)和系統(tǒng)軟件時(shí),P=10000;對(duì)于商業(yè)應(yīng)用系統(tǒng)來,P=28000.可以從歷史數(shù)據(jù)導(dǎo)出適用于當(dāng)前項(xiàng)目的生產(chǎn)率參數(shù)值。從(13.2)式可以看出,開發(fā)同一個(gè)軟件(即LOC固定)的時(shí)候,如果把項(xiàng)目持續(xù)時(shí)間延長(zhǎng)一些,則可降低完成項(xiàng)目所需要的工作量。13.2.3COCOMO2模型不講,感興趣的同學(xué)可自學(xué)13.3進(jìn)度計(jì)劃一個(gè)有效的軟件過程應(yīng)該定義一個(gè)適用于當(dāng)前項(xiàng)目的任務(wù)集合。一個(gè)任務(wù)集合包括一組軟件工程工作任務(wù),里程碑和可交付的產(chǎn)品。為一個(gè)項(xiàng)目所定義的任務(wù)集合,必須包括為獲得高質(zhì)量的軟件產(chǎn)品而應(yīng)該完成的所有任務(wù),但是同時(shí)又不能讓項(xiàng)目組承擔(dā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)目。

軟件項(xiàng)目的進(jìn)度安排是這樣一種活動(dòng)。它通過把工作量分配給特定的軟件工程任務(wù)并規(guī)定完成各項(xiàng)任務(wù)的起止日期,從而將估算出的項(xiàng)目工作量分布于計(jì)劃好的項(xiàng)目持續(xù)期內(nèi)。13.3.1估算開發(fā)時(shí)間請(qǐng)自行學(xué)習(xí),并注意開發(fā)時(shí)間與從事開發(fā)工作的人數(shù)并不成反比關(guān)系。存在一個(gè)最佳項(xiàng)目組規(guī)模使得項(xiàng)目組總生產(chǎn)率最高13.3.2Gantt圖

Gantt(甘特)圖是歷史悠久,應(yīng)用廣泛的制定進(jìn)度計(jì)劃的工具,下面通過一個(gè)非常簡(jiǎn)單的例子介紹這種工具。假設(shè)有一座陳舊的矩形木板房需要重新油漆。這項(xiàng)工作必須分3步完成:首先刮掉舊漆,然后刷上新漆,最后清除濺在窗戶上的油漆。假設(shè)一共分配了15名工人去完成這項(xiàng)工作,然而工具卻很有限:只有5把刮舊漆用的刮板,5把刷漆用的刷子,5把清除濺在窗戶上的油漆用的小刮刀。怎樣安排才能使工作進(jìn)行的更有效呢?

假設(shè)木板房的第2、4兩面墻的長(zhǎng)度比第1、3兩面墻的長(zhǎng)度長(zhǎng)一倍,此外,不同工作需要用的時(shí)間也不同,刷新漆最費(fèi)時(shí)間,其次是刮舊漆,清理(即清理濺在窗戶上的油漆)需要的時(shí)間最少。工序墻壁刮舊漆刷新漆清理1或32或4231462表13.5各道工序估計(jì)需用的時(shí)間(小時(shí))

表13.5列出了估計(jì)每道工序需要用的時(shí)間??梢允褂脠D13.1中的Gantt圖描繪上述流水作業(yè)過程:在時(shí)間為零時(shí)開始刮第一面墻上的油漆,兩小時(shí)后刮舊漆的工人轉(zhuǎn)去刮第二面墻,同時(shí)另5名工人開始給第一面墻刷新漆,每當(dāng)給一面墻刷完新漆之后,第三組的5名工人立即清除濺在這面墻窗戶上的漆。從圖13.1可以看出12小時(shí)后刮完所有舊漆,20小時(shí)后完成所有墻壁的刷漆工作,再過2小時(shí)后清理工作結(jié)束。因此全部工程在22小時(shí)后結(jié)束,如果用前述的第一種做法,則須要36小時(shí)。246810121416182022

時(shí)間(小時(shí))作業(yè)刮舊漆刷新漆清理圖13.1舊木板房刷漆工程的Gantt圖13.3.3工程網(wǎng)絡(luò)上一小節(jié)介紹的Gantt圖能很形象地描繪任務(wù)分解情況,以及每個(gè)子任務(wù)(作業(yè))的開始時(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)。

當(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è)的開始時(shí)間和結(jié)束時(shí)間,此外,它還顯示地描繪各個(gè)作業(yè)彼此間的依賴關(guān)系。因此,工程網(wǎng)絡(luò)是系統(tǒng)分析和系統(tǒng)設(shè)計(jì)的強(qiáng)有力的工具。

在工程網(wǎng)絡(luò)中用箭頭表示作業(yè)(例如,刮舊漆,刷新漆,清理等),用圓圈表示事件(一項(xiàng)作業(yè)開始或結(jié)束)。注意,事件僅僅是可以明確定義的時(shí)間點(diǎn),它并不消耗時(shí)間和資源。圖13.2是舊木板房刷漆工程的工程網(wǎng)絡(luò)。在圖13.2中還有一些虛線箭頭,它們表示虛擬作業(yè),引入虛擬作業(yè)是為了顯式地表示作業(yè)之間的依賴關(guān)系。

圖13.2舊木板房刷漆工程的工程網(wǎng)絡(luò)圖中:1-2刮第1面墻上的舊漆;2-3刮第2面墻上的舊漆;2-4給第1面墻刷新漆;3-5刮第3面墻上的舊漆;4-6給第2面墻刷新漆;4-7清理第1面墻窗戶;5-8刮第4面墻上的舊漆;6-8給第3面墻刷新漆;7-9清理第2面墻窗戶;8-10給第4面墻刷新漆;9-10清理第3面墻窗戶;10-11清理第4面墻窗戶;虛擬作業(yè):3-4;5-6;6-7;8-9。

123410987561113.3.4估算工程進(jìn)度首先,把每個(gè)作業(yè)估計(jì)需要使用的時(shí)間寫在表示該項(xiàng)作業(yè)的箭頭上方。注意,箭頭長(zhǎng)度和它代表的作業(yè)持續(xù)時(shí)間沒有關(guān)系,箭頭僅表示依賴關(guān)系,它上方的數(shù)字才表示作業(yè)的持續(xù)時(shí)間。其次,為每個(gè)事件計(jì)算下述兩個(gè)統(tǒng)計(jì)數(shù)字:最早時(shí)刻EET和最遲時(shí)刻LET。這兩個(gè)數(shù)字將分別寫在表示事件的圓圈的右上角和右下角,如圖13.3左下角的符號(hào)所示。

事件的最早時(shí)刻是該事件可以發(fā)生的最早時(shí)間。通常工程網(wǎng)絡(luò)中第一個(gè)事件的最早時(shí)刻定義為零,其他事件的最早時(shí)刻在工程網(wǎng)絡(luò)上從左至右按事件發(fā)生順序計(jì)算。計(jì)算最早時(shí)刻EET使用下述3條簡(jiǎn)單規(guī)則:(1)考慮進(jìn)入該事件的所有作業(yè);(2)對(duì)于每個(gè)作業(yè)都計(jì)算它的持續(xù)時(shí)間與起始事件的EET之和;(3)選取上述和數(shù)中的最大值作為該事件的最早時(shí)刻EET。

事件的最遲時(shí)刻是在不影響工程竣工時(shí)間的前提下,該事件最晚可以發(fā)生的時(shí)刻。按慣例,最后一個(gè)事件(工程結(jié)束)的最遲時(shí)刻就是它的最早時(shí)刻。其他事件的最遲時(shí)刻在工程網(wǎng)絡(luò)上從右至左按逆作業(yè)流的方向計(jì)算。計(jì)算最遲時(shí)刻LET使用下述3條規(guī)則:(1)考慮離開該事件的所有作業(yè);(2)從每個(gè)作業(yè)的結(jié)束事件的最遲時(shí)刻中減去該作業(yè)的持續(xù)時(shí)間;(3)選取上述差數(shù)中的最小值作為該事件的最遲時(shí)刻LET。圖13.3

舊木板房刷漆工程的完整的工程網(wǎng)絡(luò)100222366466612125811815157121891520102121112323242343612162(0)(0)(3)(1)(11)(6)(5)(0)(0)(0)(3)(0)持續(xù)時(shí)間(機(jī)動(dòng)時(shí)間)事件號(hào)最早時(shí)刻EET最遲時(shí)刻LET代表虛線0(4)0(0)0(6)(5)013.3.5關(guān)鍵路徑圖13.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í)間不能超過估計(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ì)有效果。13.3.6機(jī)動(dòng)時(shí)間不在關(guān)鍵路徑上的作業(yè)有一定程度的機(jī)動(dòng)余地----實(shí)際開始時(shí)間可以比預(yù)定時(shí)間晚一些,或者實(shí)際持續(xù)時(shí)間可以比預(yù)定的持續(xù)時(shí)間長(zhǎng)一些,而并不影響工程的結(jié)束時(shí)間。一個(gè)作業(yè)可以有的全部機(jī)動(dòng)時(shí)間等于它的結(jié)束時(shí)間的最遲時(shí)刻減去它的開始事件的最早時(shí)刻,再減去這個(gè)作業(yè)的持續(xù)時(shí)間:

機(jī)動(dòng)時(shí)間=(LET)結(jié)束-(EET)開始-持續(xù)時(shí)間對(duì)于前述油漆舊木板房的例子,計(jì)算得到的非關(guān)鍵作業(yè)的機(jī)動(dòng)時(shí)間列在表13.6中。作業(yè)LET(結(jié)束)持續(xù)時(shí)間表13.6各道工序估計(jì)需用的時(shí)間(小時(shí))EET(開始)機(jī)動(dòng)時(shí)間2-462313-5116234-71861115-6128045-8158436-71812067-92012268-92015059-10211515

在工程網(wǎng)絡(luò)中每個(gè)作業(yè)的機(jī)動(dòng)時(shí)間寫在代表該項(xiàng)作業(yè)的箭頭下面的括弧里。在制定進(jìn)度計(jì)劃時(shí)仔細(xì)考慮和利用工程網(wǎng)絡(luò)中的機(jī)動(dòng)時(shí)間,往往能夠安排出既節(jié)省資源又不影響最終竣工時(shí)間的進(jìn)度表。例如:可能僅用10名工人在相同時(shí)間內(nèi)完成舊木板房的刷漆工作。如圖13.4注意:圖13.4還改正了圖13.1中的一個(gè)錯(cuò)誤:因?yàn)榻o第二面墻刷漆的前提不僅是第一面墻刷完,而且要求第二面墻舊漆刮凈,因此全部工程需要23小時(shí)13.4人員組織13.4.1民主制程序員組民主制程序員組的一個(gè)重要特點(diǎn)是,小組成員完全平等,享有充分民主,通過協(xié)商做出技術(shù)決策。因此,小組成員之間的通信是平行的,如果小組內(nèi)有n個(gè)成員,則可能的通信信道共有n(n-1)/2條。程序設(shè)計(jì)小組的人數(shù)不能太多,否則組員間彼此通信的時(shí)間將多于程序設(shè)計(jì)時(shí)間。一般來說,程序設(shè)計(jì)小組的規(guī)模應(yīng)該比較小,以2-8名成員為宜。

民主制程序員組的主要優(yōu)點(diǎn)是,組員們對(duì)發(fā)現(xiàn)程序錯(cuò)誤持積極的態(tài)度,這種態(tài)度有助于更快速地發(fā)現(xiàn)錯(cuò)誤,從而導(dǎo)致高質(zhì)量的代碼。民主制程序員組的另一個(gè)優(yōu)點(diǎn)是,組員們享有充分民主,小組有高度凝聚力,組內(nèi)學(xué)術(shù)空氣濃厚,有利于攻克技術(shù)難關(guān)。13.4.2主程序員組美國(guó)IBM公司在20世紀(jì)70年代初期開始采用主程序員組的組織方式。采用這種組織方式主要出于下述幾點(diǎn)考慮:(1)軟件開發(fā)人員多數(shù)比較缺乏經(jīng)驗(yàn);(2)程序設(shè)計(jì)過程中有許多事務(wù)性的工作,例如,大量信息的存儲(chǔ)和更新;(3)多渠道通信很費(fèi)時(shí)間,將降低程序員的生產(chǎn)率。

主程序員組用經(jīng)驗(yàn)多,技術(shù)好,能力強(qiáng)的程序員作為主程序員,同時(shí),利用人和計(jì)算機(jī)在事務(wù)性工作方面給主程序員提供充分支持,而且所有通信都通過一兩個(gè)人進(jìn)行。主程序員組的兩個(gè)重要特性:(1)專業(yè)化。該組每名成員僅完成他們受過專業(yè)訓(xùn)練的那些工作。(2)層次化。主程序員指揮每名組員工作,并對(duì)程序全部負(fù)責(zé)。編程秘書后備程序員程序員程序員程序員

圖13.5主程序員組的結(jié)構(gòu)主程序員技術(shù)組長(zhǎng)行政組長(zhǎng)程序員程序員程序員圖例:技術(shù)管理非技術(shù)管理

圖13.6現(xiàn)代程序員組的結(jié)構(gòu)13.4.3現(xiàn)代程序員組一個(gè)技術(shù)負(fù)責(zé)人,負(fù)責(zé)小組的技術(shù)活動(dòng);一個(gè)行政負(fù)責(zé)人,負(fù)責(zé)所有非技術(shù)性事務(wù)的管理決策。這樣的組織結(jié)構(gòu)如圖13.6所示

由于程序員組成員人數(shù)不宜過多,當(dāng)軟件項(xiàng)目規(guī)模較大時(shí),應(yīng)該把程序員分成若干個(gè)小組,采用圖13.7所示的組織結(jié)構(gòu)。項(xiàng)目經(jīng)理組長(zhǎng)組長(zhǎng)組長(zhǎng)程序員程序員程序員程序員程序員程序員程序員程序員技術(shù)管理圖例:圖13.7大型項(xiàng)目的技術(shù)管理組織結(jié)構(gòu)

把民主制程序組和主程序員組的優(yōu)點(diǎn)結(jié)合起來的另一種方法,是在合適的地方采用分散做決定的方法,如圖13.8所示。項(xiàng)目經(jīng)理組長(zhǎng)組長(zhǎng)組長(zhǎng)程序員程序員程序員程序員程序員程序員程序員程序員技術(shù)管理圖例:圖13.8包含分散決策的組織方式13.5質(zhì)量保證13.5.1軟件質(zhì)量概括地說,軟件質(zhì)量就是“軟件與明確地和隱含地定義的需求相一致的程度”。更具體地說,軟件質(zhì)量是軟件與明確地?cái)⑹龅墓δ芎托阅苄枨?,文檔中明確描述的開發(fā)標(biāo)準(zhǔn)以及任何專業(yè)開發(fā)的軟件產(chǎn)品都應(yīng)該具有的隱含特征相一致的程度。上述定義強(qiáng)調(diào)了下述的3個(gè)要點(diǎn):(1)軟件需求是度量軟件質(zhì)量的基礎(chǔ),與需求不一致就是質(zhì)量不高;(2)指定的開發(fā)標(biāo)準(zhǔn)定義了一組指導(dǎo)軟件開發(fā)的準(zhǔn)則,如果沒有遵守這些準(zhǔn)則,幾乎肯定會(huì)導(dǎo)致軟件質(zhì)量不高;(3)通常,有一組沒有顯示描述的隱含需求(例如,軟件應(yīng)該是容易維護(hù)的)。如果軟件滿足明確描述的需求,但卻不滿足隱含的需求,那么軟件的質(zhì)量仍然是值得懷疑的。

本節(jié)介紹影響軟件質(zhì)量的主要因素,這些因素是從管理角度對(duì)軟件質(zhì)量的度量??梢园堰@些質(zhì)量因素分成3組,分別反映用戶在使用軟件產(chǎn)品時(shí)的3種不同傾向或觀點(diǎn)。這3種傾向是:產(chǎn)品運(yùn)行,產(chǎn)品修改和產(chǎn)品轉(zhuǎn)移。圖13.9描繪了軟件質(zhì)量因素和上述3種傾向(或產(chǎn)品活動(dòng))之間的關(guān)系,表13.7列出了軟件質(zhì)量因素的簡(jiǎn)明定義。產(chǎn)品修改產(chǎn)品運(yùn)行產(chǎn)品轉(zhuǎn)移可理解性(我能理解它嗎?)可維修性(我能修復(fù)它嗎?)靈活性(我能改變它嗎?)可測(cè)試性(我能測(cè)試它嗎?)可移植性(我能在另一臺(tái)機(jī)器上使用它嗎?)可再用性(我能再用它的某些部分嗎?)互運(yùn)行性(我能把它和另一個(gè)系統(tǒng)結(jié)合嗎?)正確性(它按我的需要工作嗎?)健壯性(對(duì)意外環(huán)境它能適當(dāng)?shù)仨憫?yīng)嗎?)效率(完成預(yù)定功能時(shí)它需要的計(jì)算機(jī)資源多嗎?)完整性(它是安全的嗎?)可用性(我能使用它嗎?)風(fēng)險(xiǎn)(能按預(yù)定計(jì)劃完成它嗎?)

圖13.9軟件質(zhì)量因素與產(chǎn)品活動(dòng)的關(guān)系13.5.2軟件質(zhì)量保證措施軟件質(zhì)量保證(softwarequalityassurance,SQA)的措施主要有:基于非執(zhí)行的測(cè)試(也稱為復(fù)審或評(píng)審),基于執(zhí)行的測(cè)試(即以前講過的軟件測(cè)試)和程序正確性證明。復(fù)審主要用來保證在編碼之前各階段產(chǎn)生的文檔的質(zhì)量;基于執(zhí)行的測(cè)試需要在程序編寫出來之后進(jìn)行,它是保證軟件質(zhì)量的最后一道防線;程序正確性證明使用數(shù)學(xué)方法嚴(yán)格驗(yàn)證程序是否與對(duì)它的說明完全一致。

參加軟件質(zhì)量保證工作的人員,可以劃分成下述兩類:(1)軟件工程師通過采用先進(jìn)的技術(shù)方法和度量,進(jìn)行正式的技術(shù)復(fù)審以及完成計(jì)劃周密的軟件測(cè)試來保證軟件質(zhì)量。(2)SQA小組的職責(zé),是輔助軟件工程師以獲得高質(zhì)量的軟件產(chǎn)品。其從事的軟件質(zhì)量保證活動(dòng)主要是:計(jì)劃,監(jiān)督,記錄,分析和報(bào)告。簡(jiǎn)而言之,SQA小組的作用是,通過確保軟件過程的質(zhì)量來保證軟件產(chǎn)品的質(zhì)量。1.技術(shù)復(fù)審的必要性正式技術(shù)復(fù)審的顯著優(yōu)點(diǎn)是,能夠較早發(fā)現(xiàn)軟件錯(cuò)誤,從而可防止錯(cuò)誤被傳播到軟件過程的后續(xù)階段。正式技術(shù)復(fù)審是軟件質(zhì)量保證措施的一種,包括走查(walkthrough)和審查(inspection)等具體方法。2.走查:參與者驅(qū)動(dòng)法,文檔驅(qū)動(dòng)法3.審查審查的范圍比走查廣泛的多,它的步驟也比較多。通常,審查過程包括下述5個(gè)基本步驟:(1)綜述。由負(fù)責(zé)編寫文檔的一名成員向?qū)彶榻M綜述該文檔。在綜述會(huì)結(jié)束時(shí)把文檔分發(fā)給每位與會(huì)者;(2)準(zhǔn)備。評(píng)審員仔細(xì)閱讀文檔。最好列出在審查中發(fā)現(xiàn)的錯(cuò)誤的類型,并按發(fā)生頻率把錯(cuò)誤類型分級(jí),以輔助審查工作。這些列表有助于評(píng)審員們把注意力集中到最常發(fā)生錯(cuò)誤的區(qū)域;(3)審查。評(píng)審組仔細(xì)走查整個(gè)文檔。和走查一樣,這一步的目的也是發(fā)現(xiàn)文檔中的錯(cuò)誤,而不是改正它們。通常每次審查會(huì)不超過90分鐘,審查組組長(zhǎng)應(yīng)該在一天之內(nèi)寫出一份關(guān)于審查的報(bào)告;(4)返工。文檔的作者負(fù)責(zé)解決在審查報(bào)告中列出的所有錯(cuò)誤及問題;(5)跟蹤。組長(zhǎng)必須確保所提出的每個(gè)問題都得到了圓滿的解決(要么修正了文檔,要么澄清了被誤認(rèn)為是錯(cuò)誤的條目)。必須仔細(xì)檢查對(duì)文檔所做的每個(gè)修正,以確保沒有引入新的錯(cuò)誤。如果在審查過程中返工量超過5%,則應(yīng)該由審查組再對(duì)文檔全面地審查一遍。4.程序正確性證明測(cè)試可以暴露程序中的錯(cuò)誤,因此是保證軟件可靠性的重要手段;但是,測(cè)試只能證明程序中有錯(cuò)誤,并不能證明程序中沒有錯(cuò)誤。因此,對(duì)于保證軟件可靠性來說,測(cè)試是一種不完善的技術(shù)。一旦研究出實(shí)用的正確性證明程序(即,能自動(dòng)證明其他程序的正確性的程序),軟件可靠性將更有保證,測(cè)試工作量將大大減少。正確性證明的基本思想是證明程序能完成預(yù)定的功能。因此,應(yīng)該提供對(duì)程序功能的嚴(yán)格數(shù)學(xué)說明,然后根據(jù)程序代碼證明程序確實(shí)能實(shí)現(xiàn)它的功能說明。

13.6軟件配置管理

軟件配置管理是在軟件的整個(gè)生命期內(nèi)管理變化的一組活動(dòng)。具體地說,這組活動(dòng)用來:①標(biāo)識(shí)變化;②控制變化;③確保適當(dāng)?shù)貙?shí)現(xiàn)了變化;④向需要知道這類信息的人報(bào)告變化。軟件配置管理不同于軟件維護(hù)。維護(hù)是在軟件交付給用戶使用后才發(fā)生的,而配置管理是在軟件項(xiàng)目啟動(dòng)時(shí)就開始,并且一直持續(xù)到軟件退役后才終止的一組跟蹤和控制活動(dòng)。軟件配置管理的目標(biāo)是,使變化更正確且更容易被適應(yīng),在必須變化時(shí)減少所需花費(fèi)的工作量。13.6.1軟件配置1.軟件配置項(xiàng)軟件過程的輸出信息可以分為3類:①計(jì)算機(jī)程序(源代碼和可執(zhí)行程序);②描述計(jì)算機(jī)程序的文檔(供技術(shù)人員或用戶使用);③數(shù)據(jù)(程序內(nèi)包含的或在程序外的)。上述這些項(xiàng)組成了在軟件過程中產(chǎn)生的全部信息,我們把它們統(tǒng)稱為軟件配置,而這些項(xiàng)就是軟件配置項(xiàng)。2.基線基線是一個(gè)軟件配置管理概念,IEEE把基線定義為:已經(jīng)通過了正式復(fù)審的規(guī)格說明或中間產(chǎn)品,它可以作為進(jìn)一步開發(fā)的基礎(chǔ),并且只有通過正式的變化控制過程才能改變它。簡(jiǎn)而言之,基線就是通過了正式復(fù)審的軟件配置項(xiàng)。在軟件配置項(xiàng)變成基線之前,可以迅速而非正式地修改它。一旦建立了基線之后,雖然仍然可以實(shí)現(xiàn)變化,但是,必須應(yīng)用特定的、正式的過程(稱為規(guī)程)來評(píng)估、實(shí)現(xiàn)和驗(yàn)證每個(gè)變化。13.6.2軟件配置管理過程軟件配置管理是軟件質(zhì)量保證的重要一環(huán),它的主要任務(wù)是控制變化,同時(shí)也負(fù)責(zé)各個(gè)軟件配置項(xiàng)和軟件各種版本的標(biāo)識(shí)、軟件配置審計(jì)以及對(duì)軟件配置發(fā)生的任何變化的報(bào)告。具體來說,軟件配置管理主要有5項(xiàng)任務(wù):

1.標(biāo)識(shí)軟件配置中的對(duì)象

2.版本控制

3.變化控制:訪問控制,同步控制。

4.配置審計(jì)

5.狀態(tài)報(bào)告

13.7能力成熟度模型美國(guó)卡內(nèi)基梅隆大學(xué)軟件工程研究所在美國(guó)國(guó)防部資助下于20世紀(jì)80年代末建立的能力成熟度模型(capabilitymaturitymodelCMM),是用于評(píng)價(jià)軟件機(jī)構(gòu)的軟件過程能力成熟度的模型。最初,建立此模型的目的主要是,為大型軟件項(xiàng)目的招投標(biāo)活動(dòng)提供一種全面而客觀的評(píng)審依據(jù),發(fā)展到后來,此模型又同時(shí)被應(yīng)用于許多軟件機(jī)構(gòu)內(nèi)部的過程改進(jìn)活動(dòng)中。

能力成熟度模型的基本思想是,由于問題是由我們管理軟件過程的方法不當(dāng)引起的,所以新軟件技術(shù)的運(yùn)用并不會(huì)自動(dòng)提高軟件的生產(chǎn)率和質(zhì)量。能力成熟度模型有助于軟件開發(fā)機(jī)構(gòu)建立一個(gè)有規(guī)律的,成熟的軟件過程。改進(jìn)后的軟件過程將開發(fā)出質(zhì)量更好的軟件,使更多的軟件項(xiàng)目免受時(shí)間和費(fèi)用超支之苦。

軟件過程包括各種活動(dòng)、技術(shù)和工具,因此,它實(shí)際上即包括了軟件開發(fā)的技術(shù)方面又包括了管理方面。CMM的策略是,力圖改進(jìn)對(duì)軟件過程的管理,而在技術(shù)方面的改進(jìn)是其必然的結(jié)果。CMM在改進(jìn)軟件過程中所起的作用主要是,指導(dǎo)軟件機(jī)構(gòu)通過確定當(dāng)前的過程成熟度并識(shí)別出對(duì)過程改進(jìn)起關(guān)鍵作用的問題,從而明確過程改進(jìn)的方向和策略。通過集中開展與過程改進(jìn)的方向和策略相一致的一組過程改進(jìn)活動(dòng),軟件機(jī)構(gòu)便能穩(wěn)步而有效地改進(jìn)其軟件過程,使其軟件過程能力得循序漸進(jìn)的提高。

對(duì)軟件過程的改進(jìn),是在完

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論