軟件度量(software measurement)是對軟件開發(fā)項目、過程及其產(chǎn)品進行數(shù)據(jù)定義、收集以及分析的持續(xù)性定量化過程,目的在于對此加以理解、預(yù)測、評估、控制和改善。沒有軟件度量,就不能從軟件開發(fā)的暗箱中跳將出來。通過軟件度量可以改進軟件開發(fā)過程,促進項目成功,開發(fā)高質(zhì)量的軟件產(chǎn)品。度量取向是軟件開發(fā)諸多事項的橫斷面,包括顧客滿意度度量、質(zhì)量度量、項目度量、以及品牌資產(chǎn)度量、知識產(chǎn)權(quán)價值度量,等等。度量取向要依靠事實、數(shù)據(jù)、原理、法則;其方法是測試、審核、調(diào)查;其工具是統(tǒng)計、圖表、數(shù)字、模型;其標(biāo)準(zhǔn)是量化的指標(biāo)。
一、軟件度量的發(fā)展歷程
如Lemmerich所言, 測量在科學(xué)領(lǐng)域有悠久的歷史[116]。相對早在1889年就定義好了度量單位~米的長度測量[116],溫度的度量復(fù)雜的多。
Fahrenheit和Celsius分別在1714年和1742年提出了基于某固定點間隔遞增等級的溫度度量方法。Celsius將100度和0度之間分為100個等份。但問題是一直不能唯一確定50攝氏度。而且長度的測量總是一個比例尺度,但是溫度可能用間隔( 攝氏/華氏溫度表) 或者比例尺度(開氏溫度)來衡量。
今天,計算機在我們生活的每個領(lǐng)域幾乎都扮演了非常重要的角色。在計算機上運行的軟件也越來越重要。因此,可預(yù)測、可重復(fù)、準(zhǔn)確地控制軟件開發(fā)過程和軟件產(chǎn)品已經(jīng)非常重要。軟件度量就是衡量軟件品質(zhì)的一種手段。
軟件度量或者說軟件工程度量領(lǐng)域是一個在過去30多年研究非常活躍的軟件工程領(lǐng)域。軟件度量(software meASurement)和軟件量度(software metrics)一樣非常有名(譯者注:為了區(qū)分,譯者將software measurement和software metrics分別譯成軟件度量和軟件量度,其實他們都可以表示軟件度量)。但目前學(xué)界還沒有明確這兩個術(shù)語的區(qū)別。參照測量理論[159]的相關(guān)術(shù)語,我們采用軟件度量(software measurement)。從文獻(xiàn)上看,這兩個術(shù)語是同義詞。量度(metric)在這里不作度量空間理解,它理解為:度量是客觀對象到數(shù)字對象的同態(tài)映射。同態(tài)映射包括所有關(guān)系和結(jié)構(gòu)映射。用另一句話說,軟件品質(zhì)和軟件度量成直對關(guān)系。這是度量和軟件度量的根本理念。
軟件度量研究主要分為兩個陣營:一部分認(rèn)為軟件可以度量,一部分認(rèn)為軟件無法通過度量分析。無論如何,研究主流是關(guān)心軟件的品質(zhì)和認(rèn)為軟件需要定量化度量。目前有超過上千種軟件度量方法被軟件研究人員及從業(yè)人員提出,并且到今天有超過5000份論文出版發(fā)表。
二、簡單軟件度量流程圖
三、軟件度量三維度
軟件度量能夠為項目管理者提供有關(guān)項目的各種重要信息,其實質(zhì)是根據(jù)一定規(guī)則,將數(shù)字或符號賦予系統(tǒng)、構(gòu)件、過程或者質(zhì)量等實體的特定屬性,即對實體屬性的量化表示,從而能夠清楚地理解該實體。軟件度量貫穿整個軟件開發(fā)生命周期,是軟件開發(fā)過程中進行理解、預(yù)測、評估、控制和改善的重要載體。軟件質(zhì)量度量建立在度量數(shù)學(xué)理論基礎(chǔ)之上。軟件度量包括3個維度,即項目度量、產(chǎn)品度量和過程度量,具體情況如表-1所示。
四、為什么需要軟件度量
在軟件開發(fā)中,軟件度量的根本目的是為了管理的需要。利用度量來改進軟件過程。人們是無法管理不能度量的事物。在軟件開發(fā)的歷史中,我們可以意識到,在60年代末期的大型軟件所面臨的軟件危機反映了軟件開發(fā)中管理的重要性。而對于管理層人員來說:沒有對軟件過程的可見度就無法管理;而沒有對見到的事物有適當(dāng)?shù)亩攘炕蜻m當(dāng)?shù)臏?zhǔn)則去判斷、評估和決策,也無法進行優(yōu)秀的管理。我們說軟件工程的方法論主要在提供可見度方面下工夫。但僅僅是方法論的提高并不能使其成為工程學(xué)科。這就需要使用度量。度量是一種可用于決策的可比較的對象。度量已知的事物是為了進行跟蹤和評估。對于未知的事物,度量則用于預(yù)測。本專題將討論軟件度量的一些基本問題。但應(yīng)認(rèn)識到軟件度量的成果是非常初步的,還需要大量工作才可能真正地做到實用化,但它的實用化成就將對軟件的高質(zhì)量和高速發(fā)展有不可估量的影響。那么, 一、什么是度量呢? 1、度量概念:度量存在于左右我們生活的很多系統(tǒng)的核心之中。在經(jīng)濟領(lǐng)域,度量決定著價格和付款的增加;在雷達(dá)系統(tǒng)中,度量使我們能透過云層探測到飛機;在醫(yī)療系統(tǒng)中,度量使得能夠診斷某些特殊疾病;在天氣預(yù)測系統(tǒng)中,度量是天氣預(yù)報的基礎(chǔ);沒有度量,技術(shù)的發(fā)展根本無法進行。度量的正式定義是: 度量 是指在現(xiàn)實的世界中,把數(shù)字或符號指定給實體的某一屬性, 以便以這種方式來根據(jù)已明確的規(guī)則來描述它們.
因此,度量關(guān)注的是獲取關(guān)于實體屬性的信息。一個實體可以是一個實物,如人或房間;或者是一個事件,如旅行;或軟件項目的測試階段。屬性是我們所關(guān)注的實體的特征或特性,如血壓的高度(人)、時間(測試階段)、范圍或顏色(房間)、花銷(旅行) 等。因此,說"度量事物"或"度量屬性"的說法是不完全正確的;應(yīng)該說"度量事物的屬性"。"度量房間"的說法是模糊的;我們可以說度量它的長度、范圍和溫度等。同樣說"度量溫度"的說法也是模糊的,應(yīng)該說:我們度量的是某一特定地理位置和特定情況下的溫度。
2、工程學(xué)科需要度量軟件工程要的是有模型和理論支持的方法。
如在設(shè)計電路的時候我們應(yīng)用歐姆定律。這個定律描述了電路中電阻、電流和電壓三者之間的關(guān)系。但是這些理論已超出了一般意義上的科學(xué)方法的范疇,在這種范疇里最基本的東西是度量。度量除了在發(fā)展一個理論的過程中起作用外,我們使用度量并應(yīng)用它們。因此設(shè)計一個特定電流和電阻的電路時我們就知道需要多大的電壓。
如果沒有度量,我們很難想象關(guān)于電子、機械、及普通工程的定律能得到發(fā)展。但事實上現(xiàn)在在軟件工程的主流里度量卻被忽略了。
現(xiàn)在的情況是:
■當(dāng)我們在設(shè)計和開發(fā)軟件產(chǎn)品的時候,我們并未能制定出度量的目標(biāo)。例如:我們保證說我們將使用戶界面友好、可靠、易于維護;而并未使用度量的術(shù)語來詳細(xì)說明它們的具體含義。Gilb曾經(jīng)說過:所謂模糊目標(biāo)定理,就是沒有明確目標(biāo)的項目將不能明確地達(dá)到它的目標(biāo)。
■我們未能對構(gòu)成軟件項目實際費用的各個不同的部分進行有效的度量。譬如:通常我們并不知道,和測試階段相比,設(shè)計階段花費時間多大。
■我們并未試圖使我們開發(fā)的產(chǎn)品的各種質(zhì)量合格。因此我們未能使用術(shù)語(如:在一段時間里使用故障的可能性、把產(chǎn)品安裝到新環(huán)境中需花費的工作量等)向潛在的用戶說明產(chǎn)品的可靠性很高。
■我們總是試圖說服自己使用另一種新的革新的開發(fā)技術(shù)和方法進行軟件開發(fā)
事實上,我們在軟件度量方面做的工作很少很少,而且所作的度量方面的工作也與一般科學(xué)意義上的度量相分離。我們經(jīng)常會看到諸如此類的話:"軟件的費用有80%花費在維護上。"或"軟件每一千行程序中平均有55個Bugs。"。但是這些話并沒有告訴我們這樣的結(jié)果是怎樣產(chǎn)生的、試驗是怎樣設(shè)計、執(zhí)行的、度量的是那個實體、及錯誤的框架是什么等等。沒有這些東西,我們就不能在我們自己的環(huán)境中客觀地進行反復(fù)度量,重現(xiàn)度量的結(jié)果以獲得與工業(yè)標(biāo)準(zhǔn)的真實比較。因此,歸因于度量不充分的問題的產(chǎn)生是由于缺乏嚴(yán)格的度量方法造成的。
除了傳統(tǒng)的對計算機硬件的性能進行度量外,對算法的復(fù)雜性的度量一直是計算機科學(xué)的重要組成部分。但是,這種度量方法只適用于小程序,而對大型、復(fù)雜的軟件來說它卻無能為力了。這就屬于軟件工程的范疇了。如果我們不承認(rèn)度量將會一個更重要的作用的話,軟件危機將在隨后的幾年里依然存在
五、軟件度量工具
隨著軟件定量方法(如:軟件度量)的重要性不斷增加,市場上出現(xiàn)了許多度量工具。然而,度量工具目前還是很混亂。因為沒有統(tǒng)一的度量標(biāo)準(zhǔn)規(guī)范,每種工具發(fā)明商家都是按照他們自己的軟件度量規(guī)范。文獻(xiàn)[44]對度量工具做了好的綜述。DAIch等根據(jù)分類學(xué)把度量工具分成了以下幾種:
● 通用度量工具;
● 小生境度量工具(Niche Metrics TOOl);
● 靜態(tài)分析;
● 源代碼靜態(tài)分析;
● 規(guī)模度量
六、軟件度量的目標(biāo)
軟件開發(fā)正在經(jīng)受一場危機。費用超支(特別是在維護階段的花費太大)、生產(chǎn)率低下、 以及質(zhì)量不高等問題正困擾著它。簡言之,軟件開發(fā)經(jīng)常處于失控狀態(tài)。軟件之所以失控是因為沒有度量。Tom DEMarco曾經(jīng)說過:"沒有度量就不能控制。"這種說法是好的,但不完全。并不能說為了獲得控制必須進行度量。度量活動必須有明確的目標(biāo)或目的,而正是這決定著我們選擇哪種屬性和實體進行度量。這個目標(biāo)與軟件開發(fā)、使用時所涉及的人的層次有關(guān)。
以下主要從管理者和軟件工程師兩種角度來考慮,為了達(dá)到各種目標(biāo)所要進行的度量工作。
●對管理者而言:
1.需要度量軟件開發(fā)過程中的不同階段的費用。
例如:度量開發(fā)整個軟件系統(tǒng)的費用(包括從需求分析階段到發(fā)布之后的維護階段)。必須清楚這個費用以決定在保證一定的利潤的情況下的價格。
2.為了決定付給不同的開發(fā)小組的費用,需要度量不同小組職員的生產(chǎn)率。
3.為了對不同的項目進行比較、對將來的項目進行預(yù)測、建立基線以及設(shè)定合理的改進目標(biāo)等,需要度量開發(fā)的產(chǎn)品的質(zhì)量。
4.需要決定項目的度量目標(biāo)。例如:應(yīng)達(dá)到多大的測試覆蓋率、系統(tǒng)最后的可靠性應(yīng)有多大等。
5.為了找出是什么因素影響著費用和生產(chǎn)率,需要反復(fù)測試某一特定過程和資源的屬性。
6.需要度量和估計不同軟件工程方法和工具的效用,以便決定是否有必要把它們引入到公司中。
●對軟件工程師而言:
1.需要制定過程度量以監(jiān)視不斷演進的系統(tǒng)。這包括設(shè)計過程中的改動、在不同的回顧或測試階段發(fā)現(xiàn)的錯誤等等。
2.需使用嚴(yán)格的度量的術(shù)語來指定對軟件質(zhì)量和性能的要求,以便使這些要求是可測試的。例如:系統(tǒng)必須"可靠",可用如下的更具體 的文字加以描述:"平均錯誤時間必須大于15個CPU時間片。"
3.為了合格需要度量產(chǎn)品和過程的屬性。例如:看一個產(chǎn)品是否合格要看產(chǎn)品的一些可度量的特性如"β測試階段少于20個錯誤。","每個模塊的代碼行不超過100行。",和開發(fā)過程的一些屬性如"單元測試必須覆蓋90%以上的用例。"等。
4.需要度量當(dāng)前已存在的產(chǎn)品和過程的屬性以便預(yù)測將來的產(chǎn)品。例如:
(1).通過度量軟件規(guī)格說明書的大小來預(yù)測目標(biāo)? 的大小。
(2).通過度量設(shè)計文檔的結(jié)構(gòu)特性來預(yù)測將來維護的"盲點"。
(3).通過度量測試階段的軟件的可靠性來預(yù)測軟件今后操作、運行的可靠性。
研究上面我們列出的度量的目標(biāo)和活動我們可以發(fā)現(xiàn):軟件度量的目標(biāo)可大致 概括為兩類。
其一,我們使用度量來進行估計。這使得我們可以同步地跟蹤一個特定的軟件項目 。
其二,我們應(yīng)用度量來預(yù)測項目的一些重要的特性。但是,值得指出的是我們不能 過分夸大這些預(yù)測。因為它們并不是完全正確的。軟件度量得到也僅僅是預(yù)測而已。有些人甚至認(rèn)為只要使用合適的模型和工具,所獲得的預(yù)測可以精確到只需使用極少的其他度量(甚至根本就不用使用度量)。事實上,這種期望是不現(xiàn)實的。
七、軟件度量的方法體系
◆ 項目度量
項目度量是針對軟件開發(fā)項目的特定度量,目的在于度量項目規(guī)模、項目成本、項目進度、顧客滿意度等,輔助項目管理進行項目控制。
◆ 規(guī)模度量
軟件開發(fā)項目規(guī)模度量(size measurement)是估算軟件項目工作量、編制成本預(yù)算、策劃合理項目進度的基礎(chǔ)。規(guī)模度量是軟件項目失敗的重要原因之一。一個好的規(guī)模度量模型可以解決這一問題。有效的軟件規(guī)模度量是成功項目的核心要素:基于有效的軟件規(guī)模度量可以策劃合理的項目計劃,合理的項目計劃有助于有效地管理項目。規(guī)模度量的要點在于:由開發(fā)現(xiàn)場的項目成員進行估算;靈活運用實際開發(fā)作業(yè)數(shù)據(jù);杜絕盲目迎合顧客需求的“交期逆推法”。
軟件規(guī)模度量有助于軟件開發(fā)團隊準(zhǔn)確把握開發(fā)時間、費用分布以及缺陷密度等等。軟件規(guī)模的估算方法有很多種,如:功能點分析(FPA:function points analysis)、代碼行(LOC:linES of code)、德爾菲法(Delphi tEChnique)、COCOMO模型、特征點(feature point)、對象點(object point)、3-D功能點(3-D function points)、Bang度量(DeMarco‘s bang metric)、模糊邏輯(fuzzy logic)、標(biāo)準(zhǔn)構(gòu)件法(STandard Component)等,這些方法不斷細(xì)化為更多具體的方法。
◆ 成本度量
軟件開發(fā)成本度量主要指軟件開發(fā)項目所需的財務(wù)性成本的估算。主要方法如下:
類比估算法。類比估算法是通過比較已完成的類似項目系統(tǒng)來估算成本,適合評估一些與歷史項目在應(yīng)用領(lǐng)域、環(huán)境和復(fù)雜度方面相似的項目。其約束條件在于必須存在類似的具有可比性的軟件開發(fā)系統(tǒng),估算結(jié)果的精確度依賴于歷史項目數(shù)據(jù)的完整性、準(zhǔn)確度以及現(xiàn)行項目與歷史項目的近似程度。
細(xì)分估算法。細(xì)分估算法是將整個項目系統(tǒng)分解成若干個小系統(tǒng),逐個估算成本,然后合計起來作為整個項目的估算成本。細(xì)分估算法通過逐漸細(xì)化的方式對每個小系統(tǒng)進行詳細(xì)的估算,可能獲得貼近實際的估算成本。其難點在于,難以把握各小系統(tǒng)整合為大系統(tǒng)的整合成本。
周期估算法。周期估算法是按軟件開發(fā)周期進行劃分,估算各個階段的成本,然后進行匯總合計。周期估算法基于軟件工程理論對軟件開發(fā)的各個階段進行估算,很適合瀑布型軟件開發(fā)方法,但是需要估算者對軟件工程各個階段的作業(yè)量和相互間的比例具有相當(dāng)?shù)牧私狻?
◆ 顧客滿意度度量
顧客滿意是軟件開發(fā)項目的主要目的之一,而顧客滿意目標(biāo)要得以實現(xiàn),需要建立顧客滿意度度量體系和指標(biāo)對顧客滿意度進行度量。顧客滿意度指標(biāo)(CSI:customer SAtisfaction index)以顧客滿意研究為基礎(chǔ),對顧客滿意度加以界定和描述。項目顧客滿意度量的要點在于:確定各類信息、數(shù)據(jù)、資料來源的準(zhǔn)確性、客觀性、合理性、有效性,并以此建立產(chǎn)品、服務(wù)質(zhì)量的衡量指標(biāo)和標(biāo)準(zhǔn)。企業(yè)顧客滿意度度量的標(biāo)準(zhǔn)會因為各企業(yè)的經(jīng)營理念、經(jīng)營戰(zhàn)略、經(jīng)營重點、價值取向、顧客滿意度調(diào)查結(jié)果等因素而有所不同。比如:NEC于2002年12月開始實施的CSMP 活動的度量尺度包括共感性、誠實性、革新性、確實性和迅速性,其中,將共感性和誠實性作為CS活動的核心姿態(tài),而將革新性、確實性和迅速性作為提供商品和服務(wù)中不可或缺的尺度。每個尺度包括兩個要素,各要素包括兩個項目,共計5大尺度、10個要素和20個項目。例如,共感性這一尺度包括“了解顧客的期待”、“從顧客的立場考慮問題”這兩個要素;“了解顧客的期待”這一要素又包括“不僅僅能勝任目前的工作還能意識到為顧客提供價值而專心投入”、“對顧客的期望不是囫圇吞棗而是根據(jù)顧客的立場和狀況來思考‘顧客到底需要什么’并加以應(yīng)對”這兩個項目。
美國專家斯蒂芬(Stephen H.Kan)在《軟件質(zhì)量工程的度量與模型》(Metrics and Models in Software Quality Engineering)中認(rèn)為,企業(yè)的顧客滿意度要素如表7-1所示:
顧客滿意度要素 | 顧客滿意度要素的內(nèi)容 |
技術(shù)解決方案 | 質(zhì)量、可靠性、有效性、易用性、價格、安裝、新技術(shù) |
支持與維護 | 靈活性、易達(dá)性、產(chǎn)品知識 |
市場營銷 | 解決方案、接觸點、信息 |
管理 | 購買流程、請求手續(xù)、保證期限、注意事項 |
交付 | 準(zhǔn)時、準(zhǔn)確、交付后過程 |
企業(yè)形象 | 技術(shù)領(lǐng)導(dǎo)、財務(wù)穩(wěn)定性、執(zhí)行印象 |
作為企業(yè)的顧客滿意度的基本構(gòu)成單位,項目的顧客滿意度會受到項目要素的影響,主要包括:開發(fā)的軟件產(chǎn)品、開發(fā)文檔、項目進度以及交期、技術(shù)水平、溝通能力、運用維護等等。具體而言,可以細(xì)分為如表7-2所示的度量要素,并根據(jù)這些要素進行度量。
顧客滿意度項目 | 顧客滿意度度量要素 |
軟件產(chǎn)品 | 功能性、可靠性、易用性、效率性、可維護性、可移植性 |
開發(fā)文檔 | 文檔的構(gòu)成、質(zhì)量、外觀、圖表以及索引、用語 |
項目進度以及交期 | 交期的根據(jù)、進度遲延情況下的應(yīng)對、進展報告 |
技術(shù)水平 | 項目組的技術(shù)水平、項目組的提案能力、項目組的問題解決能力 |
溝通能力 | 事件記錄、式樣確認(rèn)、Q&A |
運用維護 | 支持、問題發(fā)生時的應(yīng)對速度、問題解決能力 |
表7-2顧客滿意度項目度量要素
◆ 產(chǎn)品度量
軟件質(zhì)量的生命周期及其度量
軟件產(chǎn)品度量用于對軟件產(chǎn)品進行評價,并在此基礎(chǔ)之上推進產(chǎn)品設(shè)計、產(chǎn)品制造和產(chǎn)品服務(wù)優(yōu)化。軟件產(chǎn)品的度量實質(zhì)上是軟件質(zhì)量的度量,而軟件的質(zhì)量度量與其質(zhì)量的周期密切相關(guān),如圖7-1所示:
軟件質(zhì)量度量模型
軟件產(chǎn)品的度量主要針對作為軟件開發(fā)成果的軟件產(chǎn)品的質(zhì)量而言,獨立于其過程。軟件的質(zhì)量由一系列質(zhì)量要素組成,每一個質(zhì)量要素又由一些衡量標(biāo)準(zhǔn)組成,每個衡量標(biāo)準(zhǔn)又由一些量度標(biāo)準(zhǔn)加以定量刻劃。質(zhì)量度量貫穿于軟件工程的全過程以及軟件交付之后,在軟件交付之前的度量主要包括程序復(fù)雜性、模塊的有效性和總的程序規(guī)模,在軟件交付之后的度量則主要包括殘存的缺陷數(shù)和系統(tǒng)的可維護性方面。一般情況下,可以將軟件質(zhì)量特性定義成分層模型。勃姆(Barry W. BOehm)在《軟件風(fēng)險管理》(Software Risk Management)中第一次提出了軟件質(zhì)量度量的層次模型。而麥考爾(McCall)等人將軟件質(zhì)量分解至能夠度量的層次,提出FCM 3層模型(參見表5-13):軟件質(zhì)量要素(factor)、衡量標(biāo)準(zhǔn)(CRiteria)和量度標(biāo)準(zhǔn)(metrics),包括11個標(biāo)準(zhǔn),分為產(chǎn)品操作(product operation)、產(chǎn)品修正(product revision)和產(chǎn)品轉(zhuǎn)移(product transition)。ISO 9126將軟件質(zhì)量總結(jié)為6大特性,每個特性包括一系列副特性,其軟件質(zhì)量模型包括3層,即高層:軟件質(zhì)量需求評價準(zhǔn)則(SQRC);中層:軟件質(zhì)量設(shè)計評價準(zhǔn)則(SQDC);低層:軟件質(zhì)量度量評價準(zhǔn)則(SQMC)。
層 級 名 稱 內(nèi) 容 第一層 質(zhì)量要素:描述和評價軟件質(zhì)量的一組屬性 功能性、可靠性、易用性、效率性、可維護性、可移植性等質(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)性、可擴充性、公用性、模塊性、清晰性、自描述性、簡單性、結(jié)構(gòu)性、文件完備性等 第三層 量度標(biāo)準(zhǔn):
可由各使用單位自定義根據(jù)軟件的需求分析、概要設(shè)計、詳細(xì)設(shè)計、編碼、測試、確認(rèn)、維護與使用等階段,針對每一個階段制定問卷表,以此實現(xiàn)軟件開發(fā)過程的質(zhì)量度量
表7-3 軟件質(zhì)量度量FCM模型
凱悅(Lawrence E. Hyatt)和羅森貝克(Linda H. ROSenberg)在《識別項目風(fēng)險以及評價軟件質(zhì)量的軟件質(zhì)量模型與度量》(A Software Quality Model and Metrics for IDEntifying Project Risks and Assessing Software Quality)中比較了這3種最常用的軟件質(zhì)量模型,其基本情況如表5-14所示。
度量標(biāo)準(zhǔn)/目標(biāo) | 麥 考 爾 | 勃 姆 | ISO 9126 |
正確性(Correctness) | X | X | 可維護性 |
可靠性(ReliaBIlity) | X | X | X |
完整性(Integrity) | X | X | |
可用性(Usability) | X | X | X |
效率性(Efficiency) | X | X | X |
可維護性(Maintainability) | X | X | X |
可測試性(Testability) | X | 可維護性 | |
互操作性(Interoperability) | X | ||
適應(yīng)性(Flexibility) | X | X | |
可重用性(Reusability) | X | X | |
可移植性(Portability) | X | X | X |
明確性(Clarity) | X | ||
可變更性(MoDIfiability) | X | 可維護性 | |
文檔化(Documentation) | X | ||
恢復(fù)力(Resilience) | X | ||
易懂性(Understandability) | X | ||
有效性(Validity) | X | 可維護性 | |
功能性(Functionality) | X | ||
普遍性(Generality) | X | ||
經(jīng)濟性(Economy) | X |
表7-4 3種軟件質(zhì)量模型之比較
軟件質(zhì)量度量方法
軟件質(zhì)量度量方法比較多,例如:(1)Halstead復(fù)雜性度量法,基本思路是根據(jù)程序中可執(zhí)行代碼行的操作符和操作數(shù)的數(shù)量來計算程序的復(fù)雜性。操作符和操作數(shù)的量越大,程序結(jié)構(gòu)就越復(fù)雜。(2)McCabe復(fù)雜性度量法,其基本思想是程序的復(fù)雜性很大程度上取決于程序控制流的復(fù)雜性,單一的順序程序結(jié)構(gòu)最簡單,循環(huán)和選擇所構(gòu)成的環(huán)路越多,程序就越復(fù)雜。
◆ 過程度量
軟件過程性能
過程度量是對軟件開發(fā)過程的各個方面進行度量,目的在于預(yù)測過程的未來性能,減少過程結(jié)果的偏差,對軟件過程的行為進行目標(biāo)管理,為過程控制、過程評價持續(xù)改善提供定量性基礎(chǔ)。過程度量與軟件開發(fā)流程密切相關(guān),具有戰(zhàn)略性意義。軟件過程質(zhì)量的好壞會直接影響軟件產(chǎn)品質(zhì)量的好壞,度量并評估過程、提高過程成熟度可以改進產(chǎn)品質(zhì)量。相反,度量并評估軟件產(chǎn)品質(zhì)量會為提高軟件過程質(zhì)量提供必要的反饋和依據(jù)。過程度量與軟件過程的成熟度密切相關(guān),其度量模型如圖7-2所示:
圖7-2 軟件過程性能的度量模型
軟件過程管理中的過程度量
弗羅哈克(WilliAM A.Florac)、帕克(Robert E.Park)和卡爾頓(Anita D.Carleton)在《實用軟件度量:過程管理和改善之度量》(Practical Software Measurement:Measuring for Process Management and Improvement)中描述了過程管理和項目管理的關(guān)系。認(rèn)為軟件項目團隊生產(chǎn)產(chǎn)品基于三大要素:產(chǎn)品需求、項目計劃和已定義軟件過程。度量數(shù)據(jù)在項目管理中將被用來:(1)識別和描述需求,(2)準(zhǔn)備能夠?qū)崿F(xiàn)目標(biāo)的計劃,(3)執(zhí)行計劃,(4)跟蹤基于項目計劃目標(biāo)的工作執(zhí)行狀態(tài)和進展。而過程管理也能使用相同的數(shù)據(jù)和相關(guān)度量來控制和改善軟件過程本身。這就意味著,軟件組織能使用建構(gòu)和維持度量活動的共同框架來為過程管理和項目管理兩大管理功能提供數(shù)據(jù)。
軟件過程管理包括定義過程、計劃度量、執(zhí)行軟件過程、應(yīng)用度量、控制過程和改善過程,其中計劃度量和應(yīng)用度量是軟件過程管理中的重要步驟,也是軟件過程度量的核心內(nèi)容。計劃度量建立在對已定義軟件過程的理解之上,產(chǎn)品、過程、資源的相關(guān)事項和屬性已經(jīng)被識別,收集和使用度量以進行過程性能跟蹤的規(guī)定都被集成到軟件過程之中。應(yīng)用度量通過過程度量將執(zhí)行軟件過程所獲得的數(shù)據(jù),以及通過產(chǎn)品度量將產(chǎn)品相關(guān)數(shù)據(jù)用來控制和改善軟件過程。
軟件過程度量的內(nèi)容
軟件過程度量主要包括三大方面的內(nèi)容,一是成熟度度量(maturity metrics),主要包括組織度量、資源度量、培訓(xùn)度量、文檔標(biāo)準(zhǔn)化度量、數(shù)據(jù)管理與分析度量、過程質(zhì)量度量等等;二是管理度量(management metrics),主要包括項目管理度量(如里程碑管理度量、風(fēng)險度量、作業(yè)流程度量、控制度量、管理數(shù)據(jù)庫度量等)、質(zhì)量管理度量(如質(zhì)量審查度量、質(zhì)量測試度量、質(zhì)量保證度量等)、配置管理度量(如式樣變更控制度量、版本管理控制度量等);三是生命周期度量(life cycle metrics),主要包括問題定義度量、需求分析度量、設(shè)計度量、制造度量、維護度量等。
軟件過程度量流程
軟件過程的度量,需要按照已經(jīng)明確定義的度量流程加以實施,這樣能使軟件過程度量作業(yè)具有可控制性和可跟蹤性,從而提高度量的有效性。軟件過程度量的一般流程主要包括:確認(rèn)過程問題;收集過程數(shù)據(jù);分析過程數(shù)據(jù);解釋過程數(shù)據(jù);匯報過程分析;提出過程建議;實施過程行動;實施監(jiān)督和控制。這一度量過程的流程質(zhì)量能保證軟件過程度量獲得有關(guān)軟件過程的數(shù)據(jù)和問題,并進而對軟件過程實施改善。