|
軟件度量(software measurement)是對(duì)軟件開(kāi)發(fā)項(xiàng)目、過(guò)程及其產(chǎn)品進(jìn)行數(shù)據(jù)定義、收集以及分析的持續(xù)性定量化過(guò)程,目的在于對(duì)此加以理解、預(yù)測(cè)、評(píng)估、控制和改善。沒(méi)有軟件度量,就不能從軟件開(kāi)發(fā)的暗箱中跳將出來(lái)。通過(guò)軟件度量可以改進(jìn)軟件開(kāi)發(fā)過(guò)程,促進(jìn)項(xiàng)目成功,開(kāi)發(fā)高質(zhì)量的軟件產(chǎn)品。度量取向是軟件開(kāi)發(fā)諸多事項(xiàng)的橫斷面,包括顧客滿意度度量、質(zhì)量度量、項(xiàng)目度量、以及品牌資產(chǎn)度量、知識(shí)產(chǎn)權(quán)價(jià)值度量,等等。度量取向要依靠事實(shí)、數(shù)據(jù)、原理、法則;其方法是測(cè)試、審核、調(diào)查;其工具是統(tǒng)計(jì)、圖表、數(shù)字、模型;其標(biāo)準(zhǔn)是量化的指標(biāo)。 一、軟件度量的發(fā)展歷程 如Lemmerich所言, 測(cè)量在科學(xué)領(lǐng)域有悠久的歷史[116]。相對(duì)早在1889年就定義好了度量單位~米的長(zhǎng)度測(cè)量[116],溫度的度量復(fù)雜的多。 今天,計(jì)算機(jī)在我們生活的每個(gè)領(lǐng)域幾乎都扮演了非常重要的角色。在計(jì)算機(jī)上運(yùn)行的軟件也越來(lái)越重要。因此,可預(yù)測(cè)、可重復(fù)、準(zhǔn)確地控制軟件開(kāi)發(fā)過(guò)程和軟件產(chǎn)品已經(jīng)非常重要。軟件度量就是衡量軟件品質(zhì)的一種手段。 軟件度量研究主要分為兩個(gè)陣營(yíng):一部分認(rèn)為軟件可以度量,一部分認(rèn)為軟件無(wú)法通過(guò)度量分析。無(wú)論如何,研究主流是關(guān)心軟件的品質(zhì)和認(rèn)為軟件需要定量化度量。目前有超過(guò)上千種軟件度量方法被軟件研究人員及從業(yè)人員提出,并且到今天有超過(guò)5000份論文出版發(fā)表。 二、簡(jiǎn)單軟件度量流程圖
軟件度量能夠?yàn)?a href="http://www./phrase/200604240825565.html" target="_new">項(xiàng)目管理者提供有關(guān)項(xiàng)目的各種重要信息,其實(shí)質(zhì)是根據(jù)一定規(guī)則,將數(shù)字或符號(hào)賦予系統(tǒng)、構(gòu)件、過(guò)程或者質(zhì)量等實(shí)體的特定屬性,即對(duì)實(shí)體屬性的量化表示,從而能夠清楚地理解該實(shí)體。軟件度量貫穿整個(gè)軟件開(kāi)發(fā)生命周期,是軟件開(kāi)發(fā)過(guò)程中進(jìn)行理解、預(yù)測(cè)、評(píng)估、控制和改善的重要載體。軟件質(zhì)量度量建立在度量數(shù)學(xué)理論基礎(chǔ)之上。軟件度量包括3個(gè)維度,即項(xiàng)目度量、產(chǎn)品度量和過(guò)程度量,具體情況如表-1所示。
四、為什么需要軟件度量 在軟件開(kāi)發(fā)中,軟件度量的根本目的是為了管理的需要。利用度量來(lái)改進(jìn)軟件過(guò)程。人們是無(wú)法管理不能度量的事物。在軟件開(kāi)發(fā)的歷史中,我們可以意識(shí)到,在60年代末期的大型軟件所面臨的軟件危機(jī)反映了軟件開(kāi)發(fā)中管理的重要性。而對(duì)于管理層人員來(lái)說(shuō):沒(méi)有對(duì)軟件過(guò)程的可見(jiàn)度就無(wú)法管理;而沒(méi)有對(duì)見(jiàn)到的事物有適當(dāng)?shù)亩攘炕蜻m當(dāng)?shù)臏?zhǔn)則去判斷、評(píng)估和決策,也無(wú)法進(jìn)行優(yōu)秀的管理。我們說(shuō)軟件工程的方法論主要在提供可見(jiàn)度方面下工夫。但僅僅是方法論的提高并不能使其成為工程學(xué)科。這就需要使用度量。度量是一種可用于決策的可比較的對(duì)象。度量已知的事物是為了進(jìn)行跟蹤和評(píng)估。對(duì)于未知的事物,度量則用于預(yù)測(cè)。本專題將討論軟件度量的一些基本問(wèn)題。但應(yīng)認(rèn)識(shí)到軟件度量的成果是非常初步的,還需要大量工作才可能真正地做到實(shí)用化,但它的實(shí)用化成就將對(duì)軟件的高質(zhì)量和高速發(fā)展有不可估量的影響。那么, 一、什么是度量呢? 1、度量概念:度量存在于左右我們生活的很多系統(tǒng)的核心之中。在經(jīng)濟(jì)領(lǐng)域,度量決定著價(jià)格和付款的增加;在雷達(dá)系統(tǒng)中,度量使我們能透過(guò)云層探測(cè)到飛機(jī);在醫(yī)療系統(tǒng)中,度量使得能夠診斷某些特殊疾病;在天氣預(yù)測(cè)系統(tǒng)中,度量是天氣預(yù)報(bào)的基礎(chǔ);沒(méi)有度量,技術(shù)的發(fā)展根本無(wú)法進(jìn)行。度量的正式定義是: 度量 是指在現(xiàn)實(shí)的世界中,把數(shù)字或符號(hào)指定給實(shí)體的某一屬性, 以便以這種方式來(lái)根據(jù)已明確的規(guī)則來(lái)描述它們. 因此,度量關(guān)注的是獲取關(guān)于實(shí)體屬性的信息。一個(gè)實(shí)體可以是一個(gè)實(shí)物,如人或房間;或者是一個(gè)事件,如旅行;或軟件項(xiàng)目的測(cè)試階段。屬性是我們所關(guān)注的實(shí)體的特征或特性,如血壓的高度(人)、時(shí)間(測(cè)試階段)、范圍或顏色(房間)、花銷(旅行) 等。因此,說(shuō)"度量事物"或"度量屬性"的說(shuō)法是不完全正確的;應(yīng)該說(shuō)"度量事物的屬性"。"度量房間"的說(shuō)法是模糊的;我們可以說(shuō)度量它的長(zhǎng)度、范圍和溫度等。同樣說(shuō)"度量溫度"的說(shuō)法也是模糊的,應(yīng)該說(shuō):我們度量的是某一特定地理位置和特定情況下的溫度。 2、工程學(xué)科需要度量軟件工程要的是有模型和理論支持的方法。 如果沒(méi)有度量,我們很難想象關(guān)于電子、機(jī)械、及普通工程的定律能得到發(fā)展。但事實(shí)上現(xiàn)在在軟件工程的主流里度量卻被忽略了。 現(xiàn)在的情況是: 事實(shí)上,我們?cè)谲浖攘糠矫孀龅墓ぷ骱苌俸苌?,而且所作的度量方面的工作也與一般科學(xué)意義上的度量相分離。我們經(jīng)常會(huì)看到諸如此類的話:"軟件的費(fèi)用有80%花費(fèi)在維護(hù)上。"或"軟件每一千行程序中平均有55個(gè)Bugs。"。但是這些話并沒(méi)有告訴我們這樣的結(jié)果是怎樣產(chǎn)生的、試驗(yàn)是怎樣設(shè)計(jì)、執(zhí)行的、度量的是那個(gè)實(shí)體、及錯(cuò)誤的框架是什么等等。沒(méi)有這些東西,我們就不能在我們自己的環(huán)境中客觀地進(jìn)行反復(fù)度量,重現(xiàn)度量的結(jié)果以獲得與工業(yè)標(biāo)準(zhǔn)的真實(shí)比較。因此,歸因于度量不充分的問(wèn)題的產(chǎn)生是由于缺乏嚴(yán)格的度量方法造成的。 隨著軟件定量方法(如:軟件度量)的重要性不斷增加,市場(chǎng)上出現(xiàn)了許多度量工具。然而,度量工具目前還是很混亂。因?yàn)闆](méi)有統(tǒng)一的度量標(biāo)準(zhǔn)規(guī)范,每種工具發(fā)明商家都是按照他們自己的軟件度量規(guī)范。文獻(xiàn)[44]對(duì)度量工具做了好的綜述。DAIch等根據(jù)分類學(xué)把度量工具分成了以下幾種: ● 通用度量工具; 六、軟件度量的目標(biāo) 軟件開(kāi)發(fā)正在經(jīng)受一場(chǎng)危機(jī)。費(fèi)用超支(特別是在維護(hù)階段的花費(fèi)太大)、生產(chǎn)率低下、 以及質(zhì)量不高等問(wèn)題正困擾著它。簡(jiǎn)言之,軟件開(kāi)發(fā)經(jīng)常處于失控狀態(tài)。軟件之所以失控是因?yàn)闆](méi)有度量。Tom DEMarco曾經(jīng)說(shuō)過(guò):"沒(méi)有度量就不能控制。"這種說(shuō)法是好的,但不完全。并不能說(shuō)為了獲得控制必須進(jìn)行度量。度量活動(dòng)必須有明確的目標(biāo)或目的,而正是這決定著我們選擇哪種屬性和實(shí)體進(jìn)行度量。這個(gè)目標(biāo)與軟件開(kāi)發(fā)、使用時(shí)所涉及的人的層次有關(guān)。 ●對(duì)管理者而言:
2.為了決定付給不同的開(kāi)發(fā)小組的費(fèi)用,需要度量不同小組職員的生產(chǎn)率。 4.需要決定項(xiàng)目的度量目標(biāo)。例如:應(yīng)達(dá)到多大的測(cè)試覆蓋率、系統(tǒng)最后的可靠性應(yīng)有多大等。 5.為了找出是什么因素影響著費(fèi)用和生產(chǎn)率,需要反復(fù)測(cè)試某一特定過(guò)程和資源的屬性。 6.需要度量和估計(jì)不同軟件工程方法和工具的效用,以便決定是否有必要把它們引入到公司中。 ●對(duì)軟件工程師而言: 1.需要制定過(guò)程度量以監(jiān)視不斷演進(jìn)的系統(tǒng)。這包括設(shè)計(jì)過(guò)程中的改動(dòng)、在不同的回顧或測(cè)試階段發(fā)現(xiàn)的錯(cuò)誤等等。 2.需使用嚴(yán)格的度量的術(shù)語(yǔ)來(lái)指定對(duì)軟件質(zhì)量和性能的要求,以便使這些要求是可測(cè)試的。例如:系統(tǒng)必須"可靠",可用如下的更具體 的文字加以描述:"平均錯(cuò)誤時(shí)間必須大于15個(gè)CPU時(shí)間片。" 3.為了合格需要度量產(chǎn)品和過(guò)程的屬性。例如:看一個(gè)產(chǎn)品是否合格要看產(chǎn)品的一些可度量的特性如"β測(cè)試階段少于20個(gè)錯(cuò)誤。","每個(gè)模塊的代碼行不超過(guò)100行。",和開(kāi)發(fā)過(guò)程的一些屬性如"單元測(cè)試必須覆蓋90%以上的用例。"等。 4.需要度量當(dāng)前已存在的產(chǎn)品和過(guò)程的屬性以便預(yù)測(cè)將來(lái)的產(chǎn)品。例如: (1).通過(guò)度量軟件規(guī)格說(shuō)明書的大小來(lái)預(yù)測(cè)目標(biāo)? 的大小。 研究上面我們列出的度量的目標(biāo)和活動(dòng)我們可以發(fā)現(xiàn):軟件度量的目標(biāo)可大致 概括為兩類。 其一,我們使用度量來(lái)進(jìn)行估計(jì)。這使得我們可以同步地跟蹤一個(gè)特定的軟件項(xiàng)目 。 七、軟件度量的方法體系 ◆ 項(xiàng)目度量 項(xiàng)目度量是針對(duì)軟件開(kāi)發(fā)項(xiàng)目的特定度量,目的在于度量項(xiàng)目規(guī)模、項(xiàng)目成本、項(xiàng)目進(jìn)度、顧客滿意度等,輔助項(xiàng)目管理進(jìn)行項(xiàng)目控制。 ◆ 規(guī)模度量 軟件開(kāi)發(fā)項(xiàng)目規(guī)模度量(size measurement)是估算軟件項(xiàng)目工作量、編制成本預(yù)算、策劃合理項(xiàng)目進(jìn)度的基礎(chǔ)。規(guī)模度量是軟件項(xiàng)目失敗的重要原因之一。一個(gè)好的規(guī)模度量模型可以解決這一問(wèn)題。有效的軟件規(guī)模度量是成功項(xiàng)目的核心要素:基于有效的軟件規(guī)模度量可以策劃合理的項(xiàng)目計(jì)劃,合理的項(xiàng)目計(jì)劃有助于有效地管理項(xiàng)目。規(guī)模度量的要點(diǎn)在于:由開(kāi)發(fā)現(xiàn)場(chǎng)的項(xiàng)目成員進(jìn)行估算;靈活運(yùn)用實(shí)際開(kāi)發(fā)作業(yè)數(shù)據(jù);杜絕盲目迎合顧客需求的“交期逆推法”。 軟件規(guī)模度量有助于軟件開(kāi)發(fā)團(tuán)隊(duì)準(zhǔn)確把握開(kāi)發(fā)時(shí)間、費(fèi)用分布以及缺陷密度等等。軟件規(guī)模的估算方法有很多種,如:功能點(diǎn)分析(FPA:function points analysis)、代碼行(LOC:linES of code)、德?tīng)柗品?Delphi tEChnique)、COCOMO模型、特征點(diǎn)(feature point)、對(duì)象點(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ì)化為更多具體的方法。 ◆ 成本度量 軟件開(kāi)發(fā)成本度量主要指軟件開(kāi)發(fā)項(xiàng)目所需的財(cái)務(wù)性成本的估算。主要方法如下: 類比估算法。類比估算法是通過(guò)比較已完成的類似項(xiàng)目系統(tǒng)來(lái)估算成本,適合評(píng)估一些與歷史項(xiàng)目在應(yīng)用領(lǐng)域、環(huán)境和復(fù)雜度方面相似的項(xiàng)目。其約束條件在于必須存在類似的具有可比性的軟件開(kāi)發(fā)系統(tǒng),估算結(jié)果的精確度依賴于歷史項(xiàng)目數(shù)據(jù)的完整性、準(zhǔn)確度以及現(xiàn)行項(xiàng)目與歷史項(xiàng)目的近似程度。 細(xì)分估算法。細(xì)分估算法是將整個(gè)項(xiàng)目系統(tǒng)分解成若干個(gè)小系統(tǒng),逐個(gè)估算成本,然后合計(jì)起來(lái)作為整個(gè)項(xiàng)目的估算成本。細(xì)分估算法通過(guò)逐漸細(xì)化的方式對(duì)每個(gè)小系統(tǒng)進(jìn)行詳細(xì)的估算,可能獲得貼近實(shí)際的估算成本。其難點(diǎn)在于,難以把握各小系統(tǒng)整合為大系統(tǒng)的整合成本。 周期估算法。周期估算法是按軟件開(kāi)發(fā)周期進(jìn)行劃分,估算各個(gè)階段的成本,然后進(jìn)行匯總合計(jì)。周期估算法基于軟件工程理論對(duì)軟件開(kāi)發(fā)的各個(gè)階段進(jìn)行估算,很適合瀑布型軟件開(kāi)發(fā)方法,但是需要估算者對(duì)軟件工程各個(gè)階段的作業(yè)量和相互間的比例具有相當(dāng)?shù)牧私狻? ◆ 顧客滿意度度量 顧客滿意是軟件開(kāi)發(fā)項(xiàng)目的主要目的之一,而顧客滿意目標(biāo)要得以實(shí)現(xiàn),需要建立顧客滿意度度量體系和指標(biāo)對(duì)顧客滿意度進(jìn)行度量。顧客滿意度指標(biāo)(CSI:customer SAtisfaction index)以顧客滿意研究為基礎(chǔ),對(duì)顧客滿意度加以界定和描述。項(xiàng)目顧客滿意度量的要點(diǎn)在于:確定各類信息、數(shù)據(jù)、資料來(lái)源的準(zhǔn)確性、客觀性、合理性、有效性,并以此建立產(chǎn)品、服務(wù)質(zhì)量的衡量指標(biāo)和標(biāo)準(zhǔn)。企業(yè)顧客滿意度度量的標(biāo)準(zhǔn)會(huì)因?yàn)楦髌髽I(yè)的經(jīng)營(yíng)理念、經(jīng)營(yíng)戰(zhàn)略、經(jīng)營(yíng)重點(diǎn)、價(jià)值取向、顧客滿意度調(diào)查結(jié)果等因素而有所不同。比如:NEC于2002年12月開(kāi)始實(shí)施的CSMP 活動(dòng)的度量尺度包括共感性、誠(chéng)實(shí)性、革新性、確實(shí)性和迅速性,其中,將共感性和誠(chéng)實(shí)性作為CS活動(dòng)的核心姿態(tài),而將革新性、確實(shí)性和迅速性作為提供商品和服務(wù)中不可或缺的尺度。每個(gè)尺度包括兩個(gè)要素,各要素包括兩個(gè)項(xiàng)目,共計(jì)5大尺度、10個(gè)要素和20個(gè)項(xiàng)目。例如,共感性這一尺度包括“了解顧客的期待”、“從顧客的立場(chǎng)考慮問(wèn)題”這兩個(gè)要素;“了解顧客的期待”這一要素又包括“不僅僅能勝任目前的工作還能意識(shí)到為顧客提供價(jià)值而專心投入”、“對(duì)顧客的期望不是囫圇吞棗而是根據(jù)顧客的立場(chǎng)和狀況來(lái)思考‘顧客到底需要什么’并加以應(yīng)對(duì)”這兩個(gè)項(xiàng)目。 美國(guó)專家斯蒂芬(Stephen H.Kan)在《軟件質(zhì)量工程的度量與模型》(Metrics and Models in Software Quality Engineering)中認(rèn)為,企業(yè)的顧客滿意度要素如表7-1所示:
表7-1 顧客滿意度要素及其內(nèi)容 作為企業(yè)的顧客滿意度的基本構(gòu)成單位,項(xiàng)目的顧客滿意度會(huì)受到項(xiàng)目要素的影響,主要包括:開(kāi)發(fā)的軟件產(chǎn)品、開(kāi)發(fā)文檔、項(xiàng)目進(jìn)度以及交期、技術(shù)水平、溝通能力、運(yùn)用維護(hù)等等。具體而言,可以細(xì)分為如表7-2所示的度量要素,并根據(jù)這些要素進(jìn)行度量。
表7-2顧客滿意度項(xiàng)目度量要素 ◆ 產(chǎn)品度量 軟件質(zhì)量的生命周期及其度量
軟件質(zhì)量度量模型 軟件產(chǎn)品的度量主要針對(duì)作為軟件開(kāi)發(fā)成果的軟件產(chǎn)品的質(zhì)量而言,獨(dú)立于其過(guò)程。軟件的質(zhì)量由一系列質(zhì)量要素組成,每一個(gè)質(zhì)量要素又由一些衡量標(biāo)準(zhǔn)組成,每個(gè)衡量標(biāo)準(zhǔn)又由一些量度標(biāo)準(zhǔn)加以定量刻劃。質(zhì)量度量貫穿于軟件工程的全過(guò)程以及軟件交付之后,在軟件交付之前的度量主要包括程序復(fù)雜性、模塊的有效性和總的程序規(guī)模,在軟件交付之后的度量則主要包括殘存的缺陷數(shù)和系統(tǒng)的可維護(hù)性方面。一般情況下,可以將軟件質(zhì)量特性定義成分層模型。勃姆(Barry W. BOehm)在《軟件風(fēng)險(xiǎn)管理》(Software Risk Management)中第一次提出了軟件質(zhì)量度量的層次模型。而麥考爾(McCall)等人將軟件質(zhì)量分解至能夠度量的層次,提出FCM 3層模型(參見(jiàn)表5-13):軟件質(zhì)量要素(factor)、衡量標(biāo)準(zhǔn)(CRiteria)和量度標(biāo)準(zhǔn)(metrics),包括11個(gè)標(biāo)準(zhǔn),分為產(chǎn)品操作(product operation)、產(chǎn)品修正(product revision)和產(chǎn)品轉(zhuǎn)移(product transition)。ISO 9126將軟件質(zhì)量總結(jié)為6大特性,每個(gè)特性包括一系列副特性,其軟件質(zhì)量模型包括3層,即高層:軟件質(zhì)量需求評(píng)價(jià)準(zhǔn)則(SQRC);中層:軟件質(zhì)量設(shè)計(jì)評(píng)價(jià)準(zhǔn)則(SQDC);低層:軟件質(zhì)量度量評(píng)價(jià)準(zhǔn)則(SQMC)。
表7-3 軟件質(zhì)量度量FCM模型 凱悅(Lawrence E. Hyatt)和羅森貝克(Linda H. ROSenberg)在《識(shí)別項(xiàng)目風(fēng)險(xiǎn)以及評(píng)價(jià)軟件質(zhì)量的軟件質(zhì)量模型與度量》(A Software Quality Model and Metrics for IDEntifying Project Risks and Assessing Software Quality)中比較了這3種最常用的軟件質(zhì)量模型,其基本情況如表5-14所示。
軟件質(zhì)量度量方法 ◆ 過(guò)程度量 軟件過(guò)程性能
圖7-2 軟件過(guò)程性能的度量模型 軟件過(guò)程管理中的過(guò)程度量 軟件過(guò)程管理包括定義過(guò)程、計(jì)劃度量、執(zhí)行軟件過(guò)程、應(yīng)用度量、控制過(guò)程和改善過(guò)程,其中計(jì)劃度量和應(yīng)用度量是軟件過(guò)程管理中的重要步驟,也是軟件過(guò)程度量的核心內(nèi)容。計(jì)劃度量建立在對(duì)已定義軟件過(guò)程的理解之上,產(chǎn)品、過(guò)程、資源的相關(guān)事項(xiàng)和屬性已經(jīng)被識(shí)別,收集和使用度量以進(jìn)行過(guò)程性能跟蹤的規(guī)定都被集成到軟件過(guò)程之中。應(yīng)用度量通過(guò)過(guò)程度量將執(zhí)行軟件過(guò)程所獲得的數(shù)據(jù),以及通過(guò)產(chǎn)品度量將產(chǎn)品相關(guān)數(shù)據(jù)用來(lái)控制和改善軟件過(guò)程。 軟件過(guò)程度量的內(nèi)容 軟件過(guò)程度量流程 |
|
|