基本介紹 (software measurement)對
軟體開發 項目、過程及其產品進行數據定義、收集以及分析的持續性定量化過程,目的在於對此加以理解、預測、
評估 、控制和改善。沒有
軟體 度量 ,就不能從
軟體開發 的暗箱中跳將出來。通過
軟體度量 可以改進
軟體開發 過程,促進項目成功,開發高質量的軟體產品。
度量 取向是
軟體開發 諸多事項的橫斷面,包括
顧客滿意度 度量、質量度量、項目度量、以及品牌資產度量、智慧財產權價值度量,等等。
度量 取向要依靠事實、數據、原理、法則;其方法是測試、審核、調查;其工具是統計、圖表、數字、模型;其標準是量化的指標。
發展歷程 如Lemmerich所言, 測量在科學領域有悠久的歷史。相對早在1889年就定義好了
度量 單位~米的長度測量,溫度的
度量 複雜的多。Fahrenheit和Celsius分別在1714年和1742年提出了基於某固定點間隔遞增等級的溫度
度量 方法。Celsius將100度和0度之間分為100個等份。但問題是一直不能唯一確定50攝氏度。而且長度的測量總是一個比例尺度,但是溫度可能用間隔( 攝氏/華氏溫度表) 或者比例尺度(開氏溫度)來衡量。
軟體度量流程圖 今天,計算機在我們生活的每個領域幾乎都扮演了非常重要的角色。在計算機上運行的
軟體 也越來越重要。因此,可預測、可重複、準確地控制
軟體 開發過程和軟體產品已經非常重要。
軟體度量 就是衡量軟體品質的一種手段。
軟體度量 或者說軟體工程度量領域是一個在過去30多年研究非常活躍的軟體工程領域。
軟體度量 (software measurement)和軟體量度(software metrics)一樣非常有名(譯者註:為了區分,譯者將software measurement和software metrics分別譯成軟體度量和軟體量度,其實他們都可以表示軟體度量)。但學界還沒有明確這兩個術語的區別。參照測量理論的相關術語,我們採用
軟體度量 (software measurement)。從文獻上看,這兩個術語是同義詞。量度(metric)在這裡不作
度量 空間理解,它理解為:度量是客觀對象到數字對象的同態映射。同態映射包括所有關係和結構映射。用另一句話說,軟體品質和
軟體度量 成直對關係。這是度量和
軟體度量 的根本理念。
研究陣營 軟體度量 研究主要分為兩個陣營:一部分認為軟體可以度量,一部分認為軟體無法通過度量分析。無論如何,研究主流是關心
軟體 的品質和認為軟體需要定量化
度量 。目前有超過上千種
軟體度量 方法被軟體研究人員及從業人員提出,並且到今天有超過5000份論文出版發表。
三維度 軟體度量 能夠為項目
管理者 提供有關項目的各種重要信息,其實質是根據一定規則,將數字或符號賦予系統、構件、過程或者質量等實體的特定屬性,即對實體屬性的量化表示,從而能夠清楚地理解該實體。
軟體度量 貫穿整個
軟體開發 生命周期,是軟體開發過程中進行理解、預測、評估、控制和改善的重要載體。
軟體質量 度量 建立在度量數學理論基礎之上。
軟體度量 包括3個維度,即項目度量、產品度量和過程度量,具體情況如表-1所示。
軟體度量 四、為什麼需要
軟體度量 在
軟體開發 中,軟體度量的根本目的是為了管理的需要。利用度量來改進
軟體過程 。人們是無法管理不能
度量 的事物。在
軟體開發 的歷史中,我們可以意識到,在60年代末期的大型軟體所面臨的
軟體危機 反映了軟體開發中管理的重要性
管理功能 沒有對
軟體過程 的可見度就無法管理;而沒有對見到的事物有適當的
度量 或適當的準則去判斷、評估和
決策 ,也無法進行優秀的管理。我們說
軟體 工程的方法論主要在提供可見度方面下工夫。但僅僅是方法論的提高並不能使其成為工程學科。這就需要使用
度量 。
度量 是一種可用於
決策 的可比較的對象。
度量 已知的事物是為了進行跟蹤和
評估 。對於未知的事物,
度量 則用於預測。本專題將討論
軟體度量 的一些基本問題。但應認識到
軟體度量 的成果是非常初步的,還需要大量工作才可能真正地做到實用化,但它的實用化成就將對軟體的高質量和高速發展有不可估量的影響。那么, 一、什麼是
度量 呢? 1、度量概念:度量存在於左右我們生活的很多系統的核心之中。在
經濟 領域,
度量 決定著價格和付款的增加;在雷達系統中,度量使我們能透過雲層探測到飛機;在
醫療系統 中,
度量 使得能夠診斷某些特殊疾病;在天氣預測系統中,度量是天氣預報的基礎;沒有度量,技術的發展根本無法進行。
度量 的正式定義是: 度量 是指在現實的世界中,把數字或符號指定給實體的某一屬性, 以便以這種方式來根據已明確的規則來描述它們.
因此,
度量 關注的是獲取關於實體屬性的信息。一個實體可以是一個實物,如人或房間;或者是一個事件,如旅行;或
軟體 項目的測試階段。屬性是我們所關注的實體的特徵或特性,如血壓的高度(人)、時間(測試階段)、範圍或顏色(房間)、花銷(旅行) 等。因此,說"度量事物"或"度量屬性"的說法是不完全正確的;應該說"度量事物的屬性"。"度量房間"的說法是模糊的;我們可以說度量它的長度、範圍和溫度等。同樣說"度量溫度"的說法也是模糊的,應該說:我們度量的是某一特定地理位置和特定情況下的溫度。2、工程學科需要度量
軟體 工程要的是有模型和理論支持的方法。
如在設計電路的時候我們套用歐姆定律。這個定律描述了電路中電阻、電流和電壓三者之間的關係。但是這些理論已超出了一般意義上的科學方法的範疇,在這種範疇里最基本的東西是
度量 。
度量 除了在發展一個理論的過程中起作用外,我們使用度量並套用它們。因此設計一個特定電流和電阻的電路時我們就知道需要多大的電壓。
如果沒有
度量 ,我們很難想像關於電子、機械、及普通工程的定律能得到發展。但事實上在
軟體 工程的主流里
度量 卻被忽略了。
現在的情況是:
■當我們在設計和開發
軟體 產品的時候,我們並未能制定出
度量 的目標。例如:我們保證說我們將使用戶界面友好、可靠、易於維護;而並未使用
度量 的術語來詳細說明它們的具體含義。Gilb曾經說過:所謂模糊目標定理,就是沒有明確目標的項目將不能明確地達到它的目標。
■我們未能對構成
軟體 項目實際
費用 的各個不同的部分進行有效的
度量 。譬如:通常我們並不知道,和測試階段相比,設計階段花費時間多大。
■我們並未試圖使我們開發的產品的各種質量合格。因此我們未能使用術語(如:在一段時間裡使用故障的可能性、把產品安裝到新環境中需花費的工作量等)向潛在的用戶說明產品的可靠性很高。
■我們總是試圖說服自己使用另一種新的革新的開發技術和方法進行
軟體開發 事實上,我們在
軟體度量 方面做的工作很少很少,而且所作的度量方面的工作也與一般科學意義上的度量相分離。我們經常會看到諸如此類的話:"軟體的費用有80%花費在維護上。"或"軟體每一千行程式中平均有55個Bugs。"。但是這些話並沒有告訴我們這樣的結果是怎樣產生的、試驗是怎樣設計、執行的、
度量 的是那個實體、及錯誤的框架是什麼等等。沒有這些東西,我們就不能在我們自己的環境中客觀地進行反覆
度量 ,重現度量的結果以獲得與工業標準的真實比較。因此,歸因於
度量 不充分的問題的產生是由於缺乏嚴格的度量方法造成的。
除了傳統的對計算機硬體的性能進行度量外,對
算法的複雜性 的度量一直是計算機科學的重要組成部分。但是,這種
度量 方法只適用於小程式,而對大型、複雜的
軟體 來說它卻無能為力了。這就屬於
軟體 工程的範疇了。如果我們不承認
度量 將會一個更重要的作用的話,
軟體危機 將在隨後的幾年裡依然存在 五、軟體
度量工具 種類劃分 ● 小生境
度量工具 (Niche Metrics Tool);
● 靜態分析;
管理目標 軟體開發 正在經受一場危機。
費用 超支(特別是在維護階段的花費太大)、生產率低下、 以及質量不高等問題正困擾著它。簡言之,
軟體開發 經常處於失控狀態。
軟體 之所以失控是因為沒有
度量 。Tom Demarco曾經說過:"沒有度量就不能控制。"這種說法是好的,但不完全。並不能說為了獲得控制必須進行
度量 。
度量 活動必須有明確的目標或目的,而正是這決定著我們選擇哪種屬性和實體進行度量。這個目標與
軟體開發 、使用時所涉及的人的層次有關。以下主要從
管理者 和
軟體 工程師兩種角度來考慮,為了達到各種目標所要進行的
度量 工作。
對管理者 而言 1.需要
度量 軟體 開發過程中的不同階段的
費用 。例如:
度量 開發整個軟體系統的
費用 (包括從需求分析階段到發布之後的維護階段)。必須清楚這個
費用 以決定在保證一定的利潤的情況下的價格。
2.為了決定付給不同的開發小組的費用,需要
度量 不同小組職員的生產率。
3.為了對不同的項目進行比較、對將來的項目進行預測、建立基線以及設定合理的改進目標等,需要
度量 開發的產品的質量。
4.需要決定項目的
度量 目標。例如:應達到多大的測試覆蓋率、系統最後的可靠性應有多大等。
5.為了找出是什麼因素影響著費用和生產率,需要反覆測試某一特定過程和資源的屬性。
6.需要
度量 和估計不同
軟體工程方法 和工具的效用,以便決定是否有必要把它們引入到公司中。
1.需要制定過程
度量 以監視不斷演進的系統。這包括設計過程中的改動、在不同的回顧或測試階段發現的錯誤等等。
2.需使用嚴格的
度量 的術語來指定對
軟體質量 和性能的要求,以便使這些要求是可測試的。例如:系統必須"可靠",可用如下的更具體 的文字加以描述:"平均錯誤時間必須大於15個CPU時間片。"
3.為了合格需要
度量 產品和過程的屬性。例如:看一個產品是否合格要看產品的一些可
度量 的特性如"β測試階段少於20個錯誤。","每個模組的代碼行不超過100行。",和開發過程的一些屬性如"單元測試必須覆蓋90%以上的
用例 。"等。
4.需要
度量 當前已存在的產品和過程的屬性以便預測將來的產品。例如:
(1).通過度量
軟體規格 說明書的大小來預測目標的大小。
(2).通過
度量 設計文檔的結構特性來預測將來維護的"盲點"。
(3).通過
度量 測試階段的
軟體 的可靠性來預測軟體今後操作、運行的可靠性。
研究上面我們列出的
度量 的目標和活動我們可以發現:
軟體度量 的目標可大致 概括為兩類。
其一,我們使用
度量 來進行估計。這使得我們可以同步地跟蹤一個特定的
軟體 項目 。
其二,我們套用
度量 來預測項目的一些重要的特性。但是,值得指出的是我們不能過分誇大這些預測。有些人甚至認為只要使用合適的模型和工具,所獲得的預測可以精確到只需使用極少的其他
度量 (甚至根本就不用使用度量)。
事實上,這種期望是不現實的。
項目度量 項目
度量 是針對
軟體開發 項目的特定度量,目的在於度量項目規模、項目成本、項目進度、顧客滿意度等,輔助項目管理進行項目控制。
規
規模度量 軟體 開發項目規模
度量 (size measurement)是估算軟體項目工作量、編制
成本預算 、策劃合理項目進度的基礎。規模
度量 是
軟體 項目失敗的重要原因之一。一個好的規模度量模型可以解決這一問題。有效的軟體規模
度量 是成功項目的核心要素:基於有效的
軟體 規模度量可以策劃合理的
項目計畫 ,合理的項目計畫有助於有效地管理項目。規模
度量 的要點在於:由開發現場的項目成員進行估算;靈活運用實際開發作業數據;杜絕盲目迎合
顧客需求 的“
交期 逆推法”。
軟體質量度量模型 軟體規模
度量 有助於
軟體開發 團隊準確把握開發時間、
費用 分布以及缺陷密度等等。
軟體 規模的估算方法有很多種,如:功能點分析(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)、標準構件法(standard component)等,這些方法不斷細化為更多具體的方法。
主要方法 軟體開發成本
度量 主要指軟體開發項目所需的財務性成本的估算。
類比估算法是通過比較已完成的類似項目系統來估算成本,適合
評估 一些與歷史項目在套用領域、環境和複雜度方面相似的項目。其約束條件在於必須存在類似的具有可比性的
軟體開發 系統,估算結果的精確度依賴於歷史項目數據的完整性、準確度以及現行項目與歷史項目的近似程度。
細分估算法。細分估算法是將整個項目系統分解成若干個小系統,逐個估算
成本 ,然後合計起來作為整個項目的估算成本。細分估算法通過逐漸細化的方式對每個小系統進行詳細的估算,可能獲得貼近實際的估算
成本 。其難點在於,難以把握各小
系統整合 為大系統的整合
成本 。
周期估算法。周期估算法是按
軟體開發 周期進行劃分,估算各個階段的成本,然後進行匯總合計。周期估算法基於
軟體 工程理論對
軟體開發 的各個階段進行估算,很適合瀑布型
軟體開發方法 ,但是需要估算者對軟體工程各個階段的作業量和相互間的比例具有相當的了解。
顧客滿意是
軟體開發 項目的主要目的之一,而顧客滿意目標要得以實現,需要建立
顧客滿意度 度量體系和指標對顧客滿意度進行度量。顧客滿意度指標(CSI:customer satisfaction index)以顧客滿意研究為基礎,對顧客滿意度加以界定和描述。項目顧客滿意度量的要點在於:確定各類信息、數據、資料來源的準確性、
客觀性 、合理性、有效性,並以此建立產品、
服務質量 的衡量指標和標準。企業
顧客滿意度 度量的標準會因為各企業的
經營理念 、
經營戰略 、經營重點、價值取向、顧客滿意度調查結果等因素而有所不同。比如:NEC於2002年12月開始實施的CSMP 活動的
度量 尺度包括共感性、誠實性、革新性、確實性和迅速性,其中,將共感性和誠實性作為CS活動的核心姿態,而將革新性、確實性和迅速性作為提供商品和服務中不可或缺的尺度。每個尺度包括兩個要素,各要素包括兩個項目,總計5大尺度、10個要素和20個項目。例如,共感性這一尺度包括“了解
顧客 的期待”、“從顧客的立場考慮問題”這兩個要素;“了解顧客的期待”這一要素又包括“不僅僅能勝任目前的工作還能意識到為顧客提供價值而專心投入”、“對顧客的期望不是囫圇吞棗而是根據顧客的立場和狀況來思考‘顧客到底需要什麼’並加以應對”這兩個項目。
美國 專家史蒂芬(Stephen H.Kan)在《
軟體質量 工程的
度量 與模型》(Metrics and Models in Software Quality Engineering)中認為,企業的
顧客滿意度 要素:
顧客
顧客滿意度要素
技術解決方案質量、可靠性、有效性、易用性、價格、安裝、新技術支持與維護
靈活性 、易達性、產品
知識市場 行銷解決方案、接觸
技術解決方案 管理購買流程、請求手續、保證期限、注意事項交付準時、準確、交付後過程企業形象技術領導、
財務 穩定性、執行印象表7-1
顧客滿意度 要素及其內容 作為企業的顧客滿意度的基本構成單位,項目的顧客滿意度會受到項目要素的影響,主要包括:開發的
軟體 產品、開發文檔、項目進度以及
交期 、技術水平、溝通能力、運用維護等等。具體而言,可以細分為如表7-2所示的
度量 要素,並根據這些要素進行度量。 顧客滿意度項目顧客滿意度
度量 要素
軟體 產品功能性、可靠性、易用性、效率性、可維護性、可移植性開發文檔文檔的構成、質量、外觀、圖表以及索引、用語項目進度以及
交期 交期的根據、進度遲延情況下的應對、進展報告技術水平項目組的技術水平、項目組的提案能力、項目組的
問題解決 能力溝通能力事件記錄、式樣確認、Q&A
運用維護支持、問題發生時的應對速度、
問題解決 能力表7-2顧客滿意度項目
度量 要素
產品度量 軟體 產品
度量 用於對
軟體 產品進行評價,並在此基礎之上推進產品設計、產品製造和產品服務最佳化。
軟體 產品的
度量 實質上是
軟體質量 的度量,而
軟體 的質量度量與其質量的周期密切相關。
軟體產品的
度量 主要針對作為
軟體開發 成果的軟體產品的質量而言,獨立於其過程。
軟體 的質量由一系列質量要素組成,每一個質量要素又由一些衡量標準組成,每個衡量標準又由一些量度標準加以定量刻劃。質量度量貫穿於
軟體 工程的全過程以及軟體交付之後,在軟體交付之前的度量主要包括程式複雜性、模組的有效性和總的程式規模,在軟體交付之後的度量則主要包括殘存的缺陷數和系統的可維護性方面。一般情況下,可以將
軟體質量 特性定義成分層模型。勃姆(Barry W. Boehm)在《
軟體 風險管理》(Software Risk Management)中第一次提出了
軟體質量 度量的層次模型。而麥考爾(McCall)等人將
軟體質量 分解至能夠
度量 的層次,提出FCM 3層模型(參見表5-13):軟體質量要素(factor)、衡量標準(criteria)和量度標準(metrics),包括11個標準,分為產品操作(product operation)、產品修正(product revision)和產品轉移(product transition)。ISO 9126將
軟體質量 總結為6大特性,每個特性包括一系列副特性,其軟體質量模型包括3層,即高層:軟體質量需求評價準則(SQRC);中層:軟體質量設計評價準則(SQDC);低層:軟體質量度量評價準則(SQMC)。
層 級名 稱內 容
第一層質量要素:
描述和評價
軟體質量 的一組屬性功能性、可靠性、易用性、效率性、可維護性、可移植性等
質量特性 以及將質量特性細化產生的副特性
第二層衡量標準:
衡量標準的組合反映某一
軟體質量 要素精確性、穩健性、安全性、通信有效性、處理有效性、設備有效性、可操作性、
培訓 性、完備性、一致性、可追蹤性、
可見性 、硬體系統無關性、軟體系統無關性、可擴充性、公用性、模組性、清晰性、自描述性、簡單性、結構性、檔案完備性等
第三層量度標準:
可由各使用單位自定義根據
軟體 的需求分析、概要設計、詳細設計、編碼、測試、確認、維護與使用等階段,針對每一個階段制定問卷表,以此實現
軟體開發 過程的質量
度量 表7-3
軟體質量 度量FCM模型 凱悅(Lawrence E. Hyatt)和
羅森 貝克(Linda H. Rosenberg)在《識別項目風險以及評價軟體質量的軟體質量模型與度量》(A Software Quality Model and Metrics for Identifying Project Risks and Assessing Software Quality)中比較了這3種最常用的軟體質量模型,其基本情況如表5-14所示。
正確性(Correctness)
可維護性
可靠性(Reliability)
完整性(Integrity)
可用性(Usability)
效率性(Efficiency)
可維護性(Maintainability)
度量標準 可測試性(Testability)
可維護性
互操作性(Interoperability)
適應性(Flexibility)
可重用性(Reusability)
可移植性(Portability)
明確性(Clarity)
可變更性(Modifiability)
可維護性
文檔化(Documentation)
恢復力(Resilience)
易懂性(Understandability)
有效性(Validity)
可維護性
功能性(Functionality)
普遍性(Generality)
軟體質量 度量 方法比較多,例如:(1)Halstead複雜性度量法,基本思路是根據程式中可執行代碼行的操作符和運算元的數量來計算程式的複雜性。操作符和運算元的量越大,程式結構就越複雜。(2)McCabe複雜性
度量 法,其基本思想是程式的複雜性很大程度上取決於程式控制流的複雜性,單一的順序程式結構最簡單,循環和選擇所構成的環路越多,程式就越複雜。
軟體度量標準 《軟體研發成本度量規範》
1.軟體研發成本度量規範簡介
本標準規定了軟體研發成本度量方法、過程及原則,包括軟體研發成本的構成、軟體研發成本度量過程、軟體研發成本度量的套用。本標準適用於度量成本與功能規模密切相關的軟體研發項目的成本。本標準不涉及軟體定價,但相關各方可依據本標準明確研發成本,從而為軟體定價提供重要依據。
2.標準研製背景
長期以來,如何度量和評估軟體研發項目的成本一直是產業界的難題。目前我國尚無科學統一的軟體研發項目成本度量標準體系以指導、規範、管理軟體項目的研發成本,較大程度導致做預算時無據可依,造成極大浪費;在軟體項目招評標過程中,由於無法界定軟體工程項目的合理成本範圍,常常出現惡意低價或超高價格競標現象;軟體開發商在項目實施過程中,由於缺乏成本控制的科學依據,也經常出現時間滯後、費用遠遠超出最初估算水平的情況。
3.標準研製過程
在國家工業和信息化部軟體服務業司領導下,從2010年開始啟動我國軟體成本度量標準體系的研製工作。中國軟體行業協會系統與軟體過程改進分會(以下簡稱 “過程改進分會”)和
中國電子技術標準化研究院 (以下簡稱“電子四所”)圍繞軟體研發成本度量標準體系建設開展了基礎性研究工作,梳理了標準體系。核心標準《軟體研發成本度量規範》於2010年12月正式立項,計畫號為2010-3194T-SJ,由過程改進分會和電子四所共同牽頭起草,組織產、學、研、 用約40家單位共同參與,歷時3年,為軟體項目預算、立項審批、招投標、項目計畫、變更管理等工作提供“科學依據”。
4.標準的價值
1、倡導使用統一的國際功能點方法度量軟體規模,使度量結果可比對;
2、倡導使用基準數據估算軟體工期和成本,使估算結果更科學;
3、倡導使用一致的估算過程和公式,使估算過程透明化、估算結果可追溯。
5.標準試點套用
《軟體研發成本度量規範》從2012年開始試點套用。海關總署、中國人民銀行、東軟集團等單位都參與了試點工作,分別在預算審批、項目立項、招投標、項目計畫等場景進行套用,取得了很好的效果。截至2013年年底,共有約2000人參加CCEP培訓,近1500人通過考試並成為國內首批CCEP(軟體成本估算專家)。採用標準規定的方法後,極大的解決了試點企業長期以來面臨的問題。
6.標準發布
行業標準《軟體研發成本度量規範》(SJ/T11463-2013)由中華人民共和國工業和信息化部於2013年10月17日正式發布,並於2013年12月1日開始正式實施。
7.最新進展
經推薦,該標準由中關村智聯軟體服務業質量創新聯盟牽頭,正在申請升級為國家標準,於2015年7月31日正式下達計畫號:20151553-T-469
8.標準套用配套書籍
隨著工信部行業標準《軟體研發成本度量規範》的正式發布,越來越多的軟體企業、政府機關及各大行業(如金融、電信、能源、製造等)的軟體開發及信息化建設部門開始採用該標準用於指導軟體研發成本的度量工作,並廣泛套用於預算、招投標、項目策劃、變更管理、過程改進及項目後評價等場景。而能否正確理解《軟體研發成本度量規範》並了解標準涉及方法的背景與原理,成為該標準是否可以在行業內深化套用的關鍵。
《軟體研發成本度量規範釋義》(第2版)、《軟體成本度量標準實施指南》
《信息化項目軟體開發費用測算規範》
1.規範研製背景
北京作為全國軟體與信息服務業之都,產業規模一直位居全國前列,並且保持著較快的增長水平,軟體和信息服務業在全市經濟發展中也占有越來越重要的地位。隨著十二五規劃的逐步實施,北京市各行各業信息化建設投資也不斷加大,僅全市每年屬於市級財政撥款範疇的信息化項目就可達700至800個,金額總量可達三十多億元,涉及上千家企事業單位。然而本市一直沒有科學統一的標準以支撐、規範、管理信息化項目軟體開發費用的測算,這大大制約了北京軟體產業的健康可持續發展。由於相關標準的缺失,如何測算信息化項目軟體開發的合理費用一直都是北京軟體產業發展中的難點,因而常常導致軟體項目預算審批無依據、惡意競標等問題的發生。
2.規範的價值
由北京市經濟和信息化委員會歸口指導,北京軟體和信息服務交易所、北京軟體行業協會過程改進分會聯合制訂的北京市首個軟體成本度量地方標準《信息化項目軟體開發費用測算規範》將於今年11月起正式實施,這標誌著我市信息化項目軟體開發工作擁有了科學、標準的費用評估方法,有助於規範行業市場、推動軟體企業提升生產效率,提升產業增長質量。
《行標套用指南(預算場景)》
1.編制背景
長期以來,如何度量軟體研發成本一直是產業界的難題,尤其是在預算、招投標、項目計畫等活動中因為缺失科學統一的軟體研發成本度量標準,較大程度導致項目做預算時無據可依,進而造成預算浪費或預算不足;在軟體項目招投標過程中,因為缺乏軟體研發成本度量依據,惡意競標、低價中標現象頻頻發生;開發方在項目實施過程中,由於缺乏成本控制的科學依據,也經常出現時間滯後,費用遠遠超出最初預算的情況。科學統一的軟體研發成本度量標準既是有效進行軟體項目管理的重要依據,也是當前軟體產業發展的迫切需要。
為此,工業與信息化部軟體服務業司委託中國軟體行業協會系統與軟體過程改進分會牽頭組織編制了《軟體研發成本度量規範》。標準中規定了軟體研發成本度量的方法及過程,包括軟體研發成本的構成、軟體研發成本度量的過程、軟體研發成本度量的套用。其目的是幫助軟體研發涉及各方科學、一致地進行成本度量。但標準中沒有包含軟體研發成本度量過程中所需要的估算模型、行業基準數據及其在不同場景進行成本估算的詳細步驟和方法,因此需要制訂標準的套用指南,以便相關各方針對不同的套用場景、正確使用行業數據和模型,有效開展軟體研發成本度量相關工作。
2.編制目的與範圍
本指南是《軟體研發成本度量規範》系列套用指南之一,針對預算場景。
《軟體研發成本度量規範》中的成本度量,特指對軟體研發成本的預計值進行估算或對實際值進行測量、分析的過程。而《軟體研發成本度量規範》中,預算是指根據項目成本估算的結果確定預計項目費用的過程。因此,本指南主要描述在預算場景下如何開展成本估算工作,而不涉及編制預算的其他方面。
在《軟體研發成本度量規範》及本指南中,軟體研發過程包括從項目立項開始到項目完成驗收之間的需求分析、設計、編碼、集成、測試、驗收交付活動及相關的項目管理、支持活動。因此,本指南中軟體研發成本僅包括軟體研發過程中的所有直接成本和間接成本,但不包括數據遷移、軟體維護等成本。本指南中所涉及工作量、工期也僅為軟體研發過程所用工作量、工期。
本指南編制的主要目的是指導預算活動相關各方,基於《軟體研發成本度量規範》有效開展成本估算工作,並為確定軟體項目預算提供科學依據。
本指南明確了基於《軟體研發成本度量規範》和基準數據開展成本估算相關活動的步驟與方法,並通過示例,明確了典型情況的估算及調整方法;對於其他特殊情況,相關人員應根據本指南及《軟體研發成本度量規範》中的相關原則,結合項目特點,選擇適當的估算方法或對估算結果進行合理調整。
對於與預算類似的其他早期估算套用場景,相關人員也可參照本指南的相關原則與方法,開展項目估算活動。
過程度量 軟體過程 性能 過程
度量 是對
軟體開發 過程的各個方面進行度量,目的在於預測過程的未來性能,減少過程結果的偏差,對軟體過程的行為進行
目標管理 ,為過程控制、過程評價
持續改善 提供定量性基礎。過程
度量 與
軟體開發流程 密切相關,具有戰略性意義。軟體過程質量的好壞會直接影響軟體產品質量的好壞,
度量 並評估過程、提高過程成熟度可以改進產品質量。相反,度量並評估
軟體 產品質量會為提高軟體過程質量提供必要的反饋和依據。過程
度量 與
軟體過程 的成熟度密切相關,其度量模型如圖7-2所示:
軟體過程性能的度量模型 弗羅
哈克 (William A.Florac)、
帕克 (Robert E.Park)和
卡爾頓 (Anita D.Carleton)在《實用
軟體度量 :過程管理和改善之度量》(Practical Software Measurement:Measuring for Process Management and Improvement)中描述了過程管理和項目管理的關係。認為
軟體 項目團隊 生產產品基於三大要素:產品需求、項目計畫和已定義
軟體過程 。
度量 數據在項目管理中將被用來:(1)識別和描述需求,(2)準備能夠實現目標的
計畫 ,(3)執行計畫,(4)跟蹤基於
項目計畫 目標的工作執行狀態和進展。而過程管理也能使用相同的數據和相關
度量 來控制和改善
軟體過程 本身。這就意味著,
軟體 組織能使用建構和維持
度量 活動的共同框架來為過程管理和項目管理兩大
管理功能 提供數據。
軟體過程 管理包括定義過程、計畫
度量 、執行軟體過程、套用度量、控制過程和改善過程,其中計畫度量和套用度量是軟體過程管理中的重要步驟,也是軟體過程度量的核心內容。計畫
度量 建立在對已定義
軟體過程 的理解之上,產品、過程、資源的相關事項和屬性已經被識別,收集和使用度量以進行過程性能跟蹤的規定都被集成到軟體過程之中。套用
度量 通過過程度量將執行
軟體過程 所獲得的數據,以及通過產品度量將產品相關數據用來控制和改善軟體過程。
軟體過程 度量 的內容一是成熟度
度量 (maturity metrics),主要包括組織度量、資源度量、
培訓 度量、文檔標準化度量、數據管理與分析度量、
過程質量 度量等等;
二是管理
度量 (management metrics),主要包括項目管理度量(如里程碑管理度量、風險度量、作業流程度量、控制度量、管理資料庫度量等)、質量管理度量(如質量審查度量、質量測試度量、
質量保證 度量等)、配置管理度量(如式樣變更控制度量、
版本管理 控制度量等);
三是生命周期
度量 (life cycle metrics),主要包括問題定義度量、需求分析度量、設計度量、製造度量、維護度量等。
軟體過程 度量 流程軟體過程 的
度量 ,需要按照已經明確定義的度量流程加以實施,這樣能使軟體過程度量作業具有可控制性和可跟蹤性,從而提高度量的有效性。
軟體過程 度量的一般流程主要包括:確認過程問題;收集過程數據;分析過程數據;解釋過程數據;匯報過程分析;提出過程建議;實施過程行動;實施監督和控制。這一
度量 過程的流程質量能保證
軟體過程 度量獲得有關軟體過程的數據和問題,並進而對軟體過程實施改善。