項(xiàng)目度量
項(xiàng)目度量是針對軟件開發(fā)項(xiàng)目的特定度量,目的在于度量項(xiàng)目規(guī)模、項(xiàng)目成本、項(xiàng)目進(jìn)度、顧客滿意度等,輔助項(xiàng)目管理進(jìn)行項(xiàng)目控制。
規(guī)模度量
軟件開發(fā)項(xiàng)目規(guī)模度量(size measurement)是估算軟件項(xiàng)目工作量、編制成本預(yù)算、策劃合理項(xiàng)目進(jìn)度的基礎(chǔ)。規(guī)模度量是軟件項(xiàng)目失敗的重要原因之一。一個好的規(guī)模度量模型可以解決這一問題。有效的軟件規(guī)模度量是成功項(xiàng)目的核心要素:基于有效的軟件規(guī)模度量可以策劃合理的項(xiàng)目計(jì)劃,合理的項(xiàng)目計(jì)劃有助于有效地管理項(xiàng)目。規(guī)模度量的要點(diǎn)在于:由開發(fā)現(xiàn)場的項(xiàng)目成員進(jìn)行估算;靈活運(yùn)用實(shí)際開發(fā)作業(yè)數(shù)據(jù);杜絕盲目迎合顧客需求的“交期逆推法”。
軟件規(guī)模度量有助于軟件開發(fā)團(tuán)隊(duì)準(zhǔn)確把握開發(fā)時間、費(fèi)用分布以及缺陷密度等等。軟件規(guī)模的估算方法有很多種,如:功能點(diǎn)分析(FPA:function points analysis)、代碼行(LOC:lines of code)、德爾菲法(Delphi technique)、COCOMO模型、特征點(diǎn)(feature point)、對象點(diǎn)(object point)、3-D功能點(diǎn)(3-D function points)、Bang度量(DeMarco's bang metric)、模糊邏輯(fuzzy logic)、標(biāo)準(zhǔn)構(gòu)件法(standard component)等,這些方法不斷細(xì)化為更多具體的方法。
1. 功能點(diǎn)分析法
(1) 功能點(diǎn)分析法概述
功能點(diǎn)分析法(FPA:function point analysis)是在需求分析階段基于系統(tǒng)功能的一種規(guī)模估算方法,是基于應(yīng)用軟件的外部、內(nèi)部特性以及軟件性能的一種間接的規(guī)模測量。FPA法由IBM的工程師艾倫·艾爾布策(Allan Albrech)于20世紀(jì)70年代提出,隨后被國際功能點(diǎn)用戶協(xié)會(IFPUG:The International Function Point Users' Group)提出的IFPUG方法繼承,從系統(tǒng)的復(fù)雜性和系統(tǒng)的特性這兩個角度來度量系統(tǒng)的規(guī)模,其特征是:“在外部式樣確定的情況下可以度量系統(tǒng)的規(guī)?!?,“可以對從用戶角度把握的系統(tǒng)規(guī)模進(jìn)行度量”。功能點(diǎn)可以用于“需求文檔”、“設(shè)計(jì)文檔”、“源代碼”、“測試用例”度量,根據(jù)具體方法和編程語言的不同,功能點(diǎn)可以轉(zhuǎn)換為代碼行。經(jīng)由ISO組織已經(jīng)有多種功能點(diǎn)估算方法成為國際標(biāo)準(zhǔn),如:①加拿大人艾倫·艾布恩(Alain Abran)等人提出的全面功能點(diǎn)法(full function points);②英國軟件度量協(xié)會(UKSMA:United Kingdom Software Metrics Association)提出的IFPUG 功能點(diǎn)法(IFPUG function points);③英國軟件度量協(xié)會提出的Mark II FPA功能點(diǎn)法(Mark II function points);④荷蘭功能點(diǎn)用戶協(xié)會(NEFPUG:Netherlands Function Point Users Group)提出的NESMA 功能點(diǎn)法,以及軟件度量共同協(xié)會(COSMIC:the COmmon Software Metrics Consortium)提出的COSMIC-FFP方法,這些方法都屬于艾爾布策功能點(diǎn)方法的發(fā)展和細(xì)化。
(2) 功能點(diǎn)分析法的基本計(jì)數(shù)
功能點(diǎn)分析的基本計(jì)數(shù)就是依據(jù)標(biāo)準(zhǔn)計(jì)算出的系統(tǒng)(或模塊)中所含每一種元素的數(shù)目:①外部輸入數(shù)(EI:external input):計(jì)算每個用戶輸入,它們向軟件提供面向應(yīng)用的數(shù)據(jù)。輸入應(yīng)該與查詢區(qū)分開來,分別計(jì)算。②外部輸出數(shù)(EO:external output):計(jì)算每個用戶輸出,它們向軟件提供面向應(yīng)用的信息。這里,輸出是指報(bào)表、屏幕、出錯信息,等等。一個報(bào)表中的單個數(shù)據(jù)項(xiàng)不單獨(dú)計(jì)算。③外部查詢數(shù)(EQ:external query):一個查詢被定義為一次聯(lián)機(jī)輸入,它導(dǎo)致軟件以聯(lián)機(jī)輸出的方式產(chǎn)生實(shí)時的響應(yīng)。每一個不同的查詢都要計(jì)算。④內(nèi)部邏輯文件(ILF:internal logical file):計(jì)算每個邏輯的主文件,如數(shù)據(jù)的一個邏輯組合,它可能是某個大型數(shù)據(jù)庫的一部分或是一個獨(dú)立的文件。⑤外部接口文件(EIF:external interface file):計(jì)算所有機(jī)器可讀的接口,如磁帶或磁盤上的數(shù)據(jù)文件,利用這些接口可以將信息從一個系統(tǒng)傳送到另一個系統(tǒng)。
【CSK株式會社的CSFPA概述】
在實(shí)施CSFPA之前,CSK以Step數(shù)方法來估算開發(fā)規(guī)模。但是在利用VB、C++、Java、SQL等語言的項(xiàng)目開發(fā)中,用Step數(shù)方法進(jìn)行規(guī)模估算比較困難。為了以定量化手段降低甚至消除估算錯誤,CSK在IFPUG(International Function Point Users Group)的FP法的基礎(chǔ)上加以改良開發(fā)出自身的CSFPA(CSK Simplified Function Point Analysis)法,并在企業(yè)內(nèi)加以實(shí)施。CSK于1995年加入IFPUG組織,并于1998年開始正式開展活動。CSFPA改良的兩點(diǎn)是:增加了度量要件定義等上游工程的簡易測量功能;避免使用人為因素太強(qiáng)的調(diào)整系數(shù)。CSFPA法適用體制在項(xiàng)目估算時的FP度量、項(xiàng)目完成時的FP度量、實(shí)際數(shù)據(jù)的收集、統(tǒng)計(jì)分析、工數(shù)模型化、質(zhì)量指標(biāo)化等方面具有CSK特有的方式,CSK在該方法的教育與培訓(xùn)、模型構(gòu)筑、估算·質(zhì)量計(jì)劃的適用、結(jié)果評價·差異分析等方面取得了良好的績效。
【CSFPA法的估算步驟】
CSFPA法與IFPUG法的估算步驟有所不同,二者的相似點(diǎn)以及不同點(diǎn)
【CSFPA法的推廣運(yùn)用】
為了普及和適用CSFPA,CSK在企業(yè)內(nèi)設(shè)立由多名專任人員組成的事務(wù)局,推進(jìn)方法的定義以及維護(hù)、管理、員工教育、度量支援、數(shù)據(jù)收集、統(tǒng)計(jì)分析、數(shù)據(jù)利用等。下面對CSFPA的適用體制加以介紹。
項(xiàng)目估算時的FP度量。在估算時度量軟件規(guī)模,通過適用相應(yīng)的工數(shù)模型測算預(yù)計(jì)工數(shù),以此作為制定日程的根據(jù)。CSFPA的工數(shù)模型以開發(fā)的全過程為對象,按照項(xiàng)目的開發(fā)范圍進(jìn)行估算,將式樣、品質(zhì)、技術(shù)的對應(yīng)要件作為變動要素對此加以調(diào)整。
項(xiàng)目完成時的FP度量。在項(xiàng)目完成階段對FP數(shù)、使用環(huán)境、技術(shù)、工數(shù)以及質(zhì)量信息等幾十個項(xiàng)目加以記錄,比較估算時的FP數(shù)并進(jìn)行差異分析,以提升度量精度和模型有效性。
實(shí)際數(shù)據(jù)的收集。將度量的實(shí)際數(shù)據(jù)剃除異常點(diǎn)后納入數(shù)據(jù)庫,并加以分析,然后向全企業(yè)公開。這種標(biāo)本數(shù)據(jù)已經(jīng)超過400件。由于FP度量過程中由于度量者的不同可能導(dǎo)致較大的誤差,事務(wù)局還面向經(jīng)驗(yàn)甚淺的度量者提供現(xiàn)場支持,驗(yàn)證度量結(jié)果的妥當(dāng)性,提高度量的精度。另外,還與其他企業(yè)所提供的數(shù)據(jù)進(jìn)行比較驗(yàn)證,持續(xù)收集數(shù)據(jù)。
統(tǒng)計(jì)分析。對于收集起來的數(shù)據(jù),還需要考慮到項(xiàng)目特性的差異并加以分析。作為分析的界限,CSK建立了包括約50種類型(可視化工具類開發(fā)、Web類開發(fā)、維護(hù)的主框架開發(fā)等)的數(shù)據(jù)庫,并對各自包括工數(shù)在內(nèi)的10種以上的項(xiàng)目和FP值實(shí)施相關(guān)分析。
工數(shù)模型化。CSK將FP數(shù)和工數(shù)的關(guān)系稱之為“工數(shù)模型”,現(xiàn)在已經(jīng)擁有可適用的6種工數(shù)模型。這些模型與實(shí)際數(shù)據(jù)的收集相配合,實(shí)施差異分析,持續(xù)提升估算精度。
質(zhì)量指標(biāo)化。與工數(shù)模型一樣,CSK將FP數(shù)和質(zhì)量數(shù)據(jù)(缺陷、問題等)之間的相關(guān)關(guān)系作為質(zhì)量模型加以提供。通過定義經(jīng)由質(zhì)量模型獲得的指標(biāo),并與現(xiàn)存的指標(biāo)相結(jié)合,構(gòu)筑綜合性的質(zhì)量指標(biāo)。
【CSK推進(jìn)FP法的經(jīng)驗(yàn)總結(jié)】
度量方法的教育與滲透—— 啟蒙。要使用FP法進(jìn)行度量,當(dāng)然需要了解度量規(guī)則。CSK在其“項(xiàng)目管理研修”這一體制中,對企業(yè)員工實(shí)施教育,講解FP法的定位、概要、使用方法,進(jìn)行度量演習(xí),讓企業(yè)員工掌握FP法。
模型構(gòu)筑—— 提升估算精度的路徑。要使用各種模型提升估算的精度,需要度量項(xiàng)目特性以及仔細(xì)檢查數(shù)據(jù)。CSK通過現(xiàn)場調(diào)研和支援活動,積累起專業(yè)知識和技能,并對技術(shù)、式樣、質(zhì)量方面的特性信息加以整理,構(gòu)筑適合CSK的估算模型,提高估算精度。
估算·質(zhì)量計(jì)劃的適用—— 制定適當(dāng)而正確的計(jì)劃。構(gòu)筑起來的模型在實(shí)際提案的時候作為估算的根據(jù)或者在產(chǎn)品的質(zhì)量計(jì)劃制定過程中適用。在模型不斷適用的情況下,這些模型的適用實(shí)例也就逐漸豐富起來。
結(jié)果評價·差異分析—— 取得反饋信息至更高水平的運(yùn)用。項(xiàng)目開發(fā)過程中,變更點(diǎn)管理以及計(jì)劃與實(shí)績的差異分析非常重要。在這個過程中,需要獲得適當(dāng)?shù)姆答佇畔?,在把握?fù)雜的項(xiàng)目狀況的同時需要靈活應(yīng)對這些變更和反饋。CSK在這方面也在積極運(yùn)作并在整個企業(yè)內(nèi)展開。
【CSK功能點(diǎn)法今后的展開】
將FP作為商務(wù)活動中的共通尺度是CSK導(dǎo)入FP法的主要目的之一。為了提高CSK與顧客之間將之作為共通尺度的認(rèn)知度,CSK認(rèn)為需要實(shí)施如下事項(xiàng):一是提高方法本身的認(rèn)知度和信賴性;二是客觀地驗(yàn)證度量數(shù)據(jù)的精度。FP是度量軟件規(guī)模的手段,在軟件開發(fā)的商務(wù)活動、項(xiàng)目管理、資產(chǎn)管理等諸多場合中都是切實(shí)把握規(guī)模的依據(jù),是以適當(dāng)?shù)膬r格提供高質(zhì)量軟件的基礎(chǔ),也是客觀性表示CSK的生產(chǎn)性的重要因素。CSK在通信、控制、嵌入式開發(fā)中正在試用COSMIC-FFP。
2. 代碼行
代碼行(line of code)指所有的可執(zhí)行的源代碼行數(shù),包括可交付的工作控制語言(JCL:job control language)語句、數(shù)據(jù)定義、數(shù)據(jù)類型聲明、等價聲明、輸入/輸出格式聲明等。一代碼行(1LOC)的價值和人月均代碼行數(shù)可以體現(xiàn)一個軟件組織的生產(chǎn)能力。組織可以根據(jù)對歷史項(xiàng)目的審計(jì)來核算組織的單行代碼價值。代碼行LOC常用于源代碼的規(guī)模估算,常使用的單位有:SLOC(single line of code)、KLOC(thousand lines of code)、LLOC(logical line of code)、PLOC(physical line of code)、NCLOC (non-commented line of code)、DSI(delivered source instruction)。
3. 德爾菲法
德爾菲法(Delphi technique)是最流行的專家評估技術(shù),在沒有歷史數(shù)據(jù)的情況下,這種方式適用于評定過去與將來、新技術(shù)與特定程序之間的差別,但專家“?!钡某潭燃皩?xiàng)目的理解程度是工作中的難點(diǎn),盡管德爾菲技術(shù)可以減輕這種偏差,在評定一個新軟件實(shí)際成本時通常用得不多,但是,這種方式對決定其他模型的輸入時特別有用。德爾菲法鼓勵參加者就問題相互討論。德爾菲法的步驟是:(1)協(xié)調(diào)人向各專家提供項(xiàng)目規(guī)格和估算表格;(2)協(xié)調(diào)人召集小組會和各專家討論與規(guī)模相關(guān)的因素;(3)各專家匿名填寫迭代表格;(4)協(xié)調(diào)人整理出一個估算總結(jié),以迭代表的形式返回給專家;(5)協(xié)調(diào)人召集小組會,討論較大的估算差異;(6)專家復(fù)查估算總結(jié)并在迭代表上提交另一個匿名估算;(7)重復(fù)4~6,直到最低估算和最高估算一致。
4. 構(gòu)造性成本模型
構(gòu)造性成本模型(COCOMO:constructive cost model)是一種精確、易于使用的基于模型的成本估算方法,最早由勃姆(Boehm)于1981年提出。該模型按其詳細(xì)程度分為3級:基本COCOMO模型、中間COCOMO模型和詳細(xì)COCOMO模型?;綜OCOMO模型是一個靜態(tài)單變量模型,它用一個以已估算出來的源代碼行數(shù)(LOC)為自變量的函數(shù)來計(jì)算軟件開發(fā)工作量。中間COCOMO模型則在用LOC為自變量的函數(shù)計(jì)算軟件開發(fā)工作量的基礎(chǔ)上,再用涉及產(chǎn)品、硬件、人員、項(xiàng)目等方面屬性的影響因素來調(diào)整工作量的估算。詳細(xì)COCOMO模型包括中間COCOMO模型的所有特性,但用上述各種影響因素調(diào)整工作量估算時,還要考慮對軟件工程過程中分析、設(shè)計(jì)等各步驟的影響。COCOMO模型具有估算精確、易于使用的特點(diǎn)。在該模型中使用的基本量有以下幾個:(1)DSI(源指令條數(shù)),定義為代碼行數(shù),包括除注釋行以外的全部代碼。若一行有兩個語句,則算做一條指令。(2)MM(度量單位為人月)表示開發(fā)工作量。(3)TDEV(度量單位為月)表示開發(fā)進(jìn)度,由工作量決定。(4)COCOMO模型重點(diǎn)考慮15種影響軟件工作量的因素,并通過定義乘法因子,從而準(zhǔn)確、合理地估算軟件的工作量。
成本度量
軟件開發(fā)成本度量主要指軟件開發(fā)項(xiàng)目所需的財(cái)務(wù)性成本的估算。主要方法如下:
類比估算法。類比估算法是通過比較已完成的類似項(xiàng)目系統(tǒng)來估算成本,適合評估一些與歷史項(xiàng)目在應(yīng)用領(lǐng)域、環(huán)境和復(fù)雜度方面相似的項(xiàng)目。其約束條件在于必須存在類似的具有可比性的軟件開發(fā)系統(tǒng),估算結(jié)果的精確度依賴于歷史項(xiàng)目數(shù)據(jù)的完整性、準(zhǔn)確度以及現(xiàn)行項(xiàng)目與歷史項(xiàng)目的近似程度。
細(xì)分估算法。細(xì)分估算法是將整個項(xiàng)目系統(tǒng)分解成若干個小系統(tǒng),逐個估算成本,然后合計(jì)起來作為整個項(xiàng)目的估算成本。細(xì)分估算法通過逐漸細(xì)化的方式對每個小系統(tǒng)進(jìn)行詳細(xì)的估算,可能獲得貼近實(shí)際的估算成本。其難點(diǎn)在于,難以把握各小系統(tǒng)整合為大系統(tǒng)的整合成本。
周期估算法。周期估算法是按軟件開發(fā)周期進(jìn)行劃分,估算各個階段的成本,然后進(jìn)行匯總合計(jì)。周期估算法基于軟件工程理論對軟件開發(fā)的各個階段進(jìn)行估算,很適合瀑布型軟件開發(fā)方法,但是需要估算者對軟件工程各個階段的作業(yè)量和相互間的比例具有相當(dāng)?shù)牧私狻?
顧客滿意度度量
顧客滿意是軟件開發(fā)項(xiàng)目的主要目的之一,而顧客滿意目標(biāo)要得以實(shí)現(xiàn),需要建立顧客滿意度度量體系和指標(biāo)對顧客滿意度進(jìn)行度量。顧客滿意度指標(biāo)(CSI:customer satisfaction index)以顧客滿意研究為基礎(chǔ),對顧客滿意度加以界定和描述。項(xiàng)目顧客滿意度量的要點(diǎn)在于:確定各類信息、數(shù)據(jù)、資料來源的準(zhǔn)確性、客觀性、合理性、有效性,并以此建立產(chǎn)品、服務(wù)質(zhì)量的衡量指標(biāo)和標(biāo)準(zhǔn)。企業(yè)顧客滿意度度量的標(biāo)準(zhǔn)會因?yàn)楦髌髽I(yè)的經(jīng)營理念、經(jīng)營戰(zhàn)略、經(jīng)營重點(diǎn)、價值取向、顧客滿意度調(diào)查結(jié)果等因素而有所不同。比如:NEC于2002年12月開始實(shí)施的CSMP 活動的度量尺度包括共感性、誠實(shí)性、革新性、確實(shí)性和迅速性,其中,將共感性和誠實(shí)性作為CS活動的核心姿態(tài),而將革新性、確實(shí)性和迅速性作為提供商品和服務(wù)中不可或缺的尺度。每個尺度包括兩個要素,各要素包括兩個項(xiàng)目,共計(jì)5大尺度、10個要素和20個項(xiàng)目。例如,共感性這一尺度包括“了解顧客的期待”、“從顧客的立場考慮問題”這兩個要素;“了解顧客的期待”這一要素又包括“不僅僅能勝任目前的工作還能意識到為顧客提供價值而專心投入”、“對顧客的期望不是囫圇吞棗而是根據(jù)顧客的立場和狀況來思考‘顧客到底需要什么’并加以應(yīng)對”這兩個項(xiàng)目。
美國專家斯蒂芬(Stephen H.Kan)在《軟件質(zhì)量工程的度量與模型》(Metrics and Models in Software Quality Engineering)中認(rèn)為,企業(yè)的顧客滿意度要素如表5-11所示:
表5-11 顧客滿意度要素及其內(nèi)容
顧客滿意度要素 | 顧客滿意度要素的內(nèi)容 |
技術(shù)解決方案 | 質(zhì)量、可靠性、有效性、易用性、價格、安裝、新技術(shù) |
支持與維護(hù) | 靈活性、易達(dá)性、產(chǎn)品知識 |
市場營銷 | 解決方案、接觸點(diǎn)、信息 |
管理 | 購買流程、請求手續(xù)、保證期限、注意事項(xiàng) |
交付 | 準(zhǔn)時、準(zhǔn)確、交付后過程 |
企業(yè)形象 | 技術(shù)領(lǐng)導(dǎo)、財(cái)務(wù)穩(wěn)定性、執(zhí)行印象 |
顧客滿意度項(xiàng)目 | 顧客滿意度度量要素 |
軟件產(chǎn)品 | 功能性、可靠性、易用性、效率性、可維護(hù)性、可移植性 |
開發(fā)文檔 | 文檔的構(gòu)成、質(zhì)量、外觀、圖表以及索引、用語 |
項(xiàng)目進(jìn)度以及交期 | 交期的根據(jù)、進(jìn)度遲延情況下的應(yīng)對、進(jìn)展報(bào)告 |
技術(shù)水平 | 項(xiàng)目組的技術(shù)水平、項(xiàng)目組的提案能力、項(xiàng)目組的問題解決能力 |
溝通能力 | 事件記錄、式樣確認(rèn)、Q&A |
運(yùn)用維護(hù) | 支持、問題發(fā)生時的應(yīng)對速度、問題解決能力 |
層 級 | 名 稱 | 內(nèi) 容 |
第一層 | 質(zhì)量要素:描述和評價軟件質(zhì)量的一組屬性 | 功能性、可靠性、易用性、效率性、可維護(hù)性、可移植性等質(zhì)量特性以及將質(zhì)量特性細(xì)化產(chǎn)生的副特性 |
第二層 | 衡量標(biāo)準(zhǔn): 衡量標(biāo)準(zhǔn)的組合反映某一軟件質(zhì)量要素 | 精確性、穩(wěn)健性、安全性、通信有效性、處理有效性、設(shè)備有效性、可操作性、培訓(xùn)性、完備性、一致性、可追蹤性、可見性、硬件系統(tǒng)無關(guān)性、軟件系統(tǒng)無關(guān)性、可擴(kuò)充性、公用性、模塊性、清晰性、自描述性、簡單性、結(jié)構(gòu)性、文件完備性等 |
第三層 | 量度標(biāo)準(zhǔn): 可由各使用單位自定義 |
根據(jù)軟件的需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編碼、測試、確認(rèn)、維護(hù)與使用等階段,針對每一個階段制定問卷表,以此實(shí)現(xiàn)軟件開發(fā)過程的質(zhì)量度量 |
度量標(biāo)準(zhǔn)/目標(biāo) | 麥 考 爾 | 勃 姆 | ISO 9126 |
正確性(Correctness) | X | X | 可維護(hù)性 |
可靠性(Reliability) | X | X | X |
完整性(Integrity) | X | X | |
可用性(Usability) | X | X | X |
效率性(Efficiency) | X | X | X |
可維護(hù)性(Maintainability) | X | X | X |
可測試性(Testability) | X | 可維護(hù)性 | |
互操作性(Interoperability) | X | ||
適應(yīng)性(Flexibility) | X | X | |
可重用性(Reusability) | X | X | |
可移植性(Portability) | X | X | X |
明確性(Clarity) | X | ||
可變更性(Modifiability) | X | 可維護(hù)性 | |
文檔化(Documentation) | X | ||
恢復(fù)力(Resilience) | X | ||
易懂性(Understandability) | X | ||
有效性(Validity) | X | 可維護(hù)性 | |
功能性(Functionality) | X | ||
普遍性(Generality) | X | ||
經(jīng)濟(jì)性(Economy) | X |
本頁關(guān)鍵詞:軟件度量的方法體系