軟件度量用于對(duì)產(chǎn)品及開發(fā)產(chǎn)品的過程進(jìn)行度量。
軟件產(chǎn)品、軟件過程、資源都具有外部屬性和內(nèi)部屬性。
- 外部屬性(指面向管理者和用戶的屬性,體現(xiàn)了軟件產(chǎn)品/軟件過程與相關(guān)資源和環(huán)境的關(guān)系)
- 內(nèi)部屬性(指軟件產(chǎn)品或軟件過程本身的屬性,如可靠性、可維護(hù)性等,只能用間接測(cè)量的方法度量)
(一)軟件度量分類
軟件度量有兩種分類方法,第一種分類是將軟件度量分為面向規(guī)模的度量、面向功能的度量和面向人的度量;第二種分類是將軟件度量分為生產(chǎn)率度量、質(zhì)量度量和技術(shù)度量。
- 面向規(guī)模的度量用于收集與軟件規(guī)模相關(guān)的軟件工程輸出信息和質(zhì)量信息。
- 面向功能的度量集中在程序的“功能性”和“實(shí)用性”。
- 面向人的度量收集有關(guān)人們開發(fā)軟件所用方式的信息和人員理解有關(guān)工具的方法和效率的信息。
- 軟件生產(chǎn)率度量主要關(guān)注于軟件工程活動(dòng)的制品。
- 軟件質(zhì)量度量可指明軟件滿足明確的和隱含的用戶需求的程度。
- 技術(shù)度量主要集中在軟件產(chǎn)品的某些特征上,而不是軟件開發(fā)的全過程。
1.面向規(guī)模的度量
面向規(guī)模的度量通過對(duì)質(zhì)量和生產(chǎn)率的測(cè)量進(jìn)行規(guī)范得到的,這些量都是根據(jù)開發(fā)過的軟件的規(guī)模得到的。
軟件規(guī)模通常用程序的代碼行(LOC)或千行代碼(KLOC)來衡量。
計(jì)算出軟件項(xiàng)目的代碼行后,可方便地度量其他的軟件屬性,如軟件開發(fā)的生產(chǎn)率、每行代碼的平均開發(fā)成本、文檔數(shù)量(頁(yè)數(shù))與代碼量的比例關(guān)系、每千行代碼中包含的軟件錯(cuò)誤數(shù)等。

對(duì)于同一軟件、采用不同程序語(yǔ)言編寫的程序,還有一些因良好的設(shè)計(jì)而導(dǎo)致代碼量小的軟件來說,這種度量不夠客觀。
2.面向功能的度量
面向功能的度量以功能測(cè)量數(shù)據(jù)作為規(guī)范化值。應(yīng)用最廣泛的面向功能的度量是功能點(diǎn)。功能點(diǎn)是根據(jù)軟件信息域的特性及復(fù)雜度來計(jì)算的。
信息域的值用下列方式定義:
- 外部輸入數(shù)(
EI) - 外部輸出數(shù)(
EO) - 外部查詢數(shù)(
EQ) - 內(nèi)部邏輯文件數(shù)(
ILF) - 外部接口文件數(shù)(
EIF)
(二)軟件復(fù)雜性度量
軟件復(fù)雜性是指理解和處理軟件的難易程度。
軟件復(fù)雜性度量的參數(shù):
- 規(guī)模(總共的指令數(shù)或源程序行數(shù))
- 難度(通常由程序中出現(xiàn)的操作數(shù)的數(shù)目所決定的量來表示)
- 結(jié)構(gòu)(用與程序結(jié)構(gòu)有關(guān)的度量來表示)
- 智能度(算法的難易程度)
1.程序復(fù)雜性度量原則
程序復(fù)雜性度量模型應(yīng)遵循以下基本原則:
- 程序復(fù)雜性與程序大小的關(guān)系不是線性的
- 控制結(jié)構(gòu)復(fù)雜的程序較復(fù)雜
- 數(shù)據(jù)結(jié)構(gòu)復(fù)雜的程序較復(fù)雜
- 轉(zhuǎn)向語(yǔ)句使用不當(dāng)?shù)某绦蜉^復(fù)雜
- 循環(huán)結(jié)構(gòu)比選擇結(jié)構(gòu)復(fù)雜,選擇結(jié)構(gòu)又比順序結(jié)構(gòu)復(fù)雜
- 語(yǔ)句、數(shù)據(jù)、子程序和模塊在程序中的次序?qū)?fù)雜性有影響
- 全局變量、非局部變量較多時(shí)程序較復(fù)雜
- 函數(shù)的隱式副作用相對(duì)于顯示參數(shù)傳遞而言更加難以理解
- 具有不同作用的變量公用一個(gè)名字時(shí)較難理解
- 模塊間、過程間聯(lián)系密切的程序較復(fù)雜
- 嵌套程序越深、程序越復(fù)雜
2.McCabe度量法
McCabe度量法又稱為環(huán)路度量,它認(rèn)為程序的復(fù)雜性在很大程度上取決于控制的復(fù)雜性。
該方法以圖論為工具,先畫出程序圖,然后用該圖的環(huán)路數(shù)作為程序復(fù)雜性的度量值。
把程序流程圖中每個(gè)處理符號(hào)都退化成一個(gè)結(jié)點(diǎn),原來連接不同處理符號(hào)的流線變成連接不同點(diǎn)的有向弧。在圖的入口點(diǎn)到出口點(diǎn)加一條用虛線表示的有向邊,使圖成為強(qiáng)連通圖。然后利用公式計(jì)算環(huán)路復(fù)雜性。
當(dāng)環(huán)路復(fù)雜度的度量值超過10時(shí),要充分測(cè)試這個(gè)模塊變得特別困難。