為什麼需要軟體度量

NO IMAGE

  在軟體開發中,軟體度量的根本目的是為了管理的需要。利用度量來改進軟體過程。人們是無法管理不能度量的事物。在軟體開發的歷史中,我們可以意識到,在60年代末期的大型軟體所面臨的軟體危機反映了軟體開發中管理的重要性。而對於管理層人員來說:沒有對軟體過程的可見度就無法管理;而沒有對見到的事物有適當的度量或適當的準則去判斷、評估和決策,也無法進行優秀的管理。我們說軟體工程的方法論主要在提供可見度方面下工夫。但僅僅是方法論的提高並不能使其成為工程學科。這就需要使用度量。度量是一種可用於決策的可比較的物件。度量已知的事物是為了進行跟蹤和評估。對於未知的事物,度量則用於預測。本專題將討論軟體度量的一些基本問題。但應認識到軟體度量的成果是非常初步的,還需要大量工作才可能真正地做到實用化,但它的實用化成就將對軟體的高質量和高速發展有不可估量的影響。那麼, 一、什麼是度量呢? 1、度量概念:度量存在於左右我們生活的很多系統的核心之中。在經濟領域,度量決定著價格和付款的增加;在雷達系統中,度量使我們能透過雲層探測到飛機;在醫療系統中,度量使得能夠診斷某些特殊疾病;在天氣預測系統中,度量是天氣預報的基礎;沒有度量,技術的發展根本無法進行。度量的正式定義是: 度量 是指在現實的世界中,把數字或符號指定給實體的某一屬性,
  以便以這種方式來根據已明確的規則來描述它們.
  因此,度量關注的是獲取關於實體屬性的資訊。一個實體可以是一個實物,如人或房間;或者是一個事件,如旅行;或軟體專案的測試階段。屬性是我們所關注的實體的特徵或特性,如血壓的高度(人)、時間(測試階段)、範圍或顏色(房間)、花銷(旅行) 等。因此,說”度量事物”或”度量屬性”的說法是不完全正確的;應該說”度量事物的屬性”。”度量房間”的說法是模糊的;我們可以說度量它的長度、範圍和溫度等。同樣說”度量溫度”的說法也是模糊的,應該說:我們度量的是某一特定地理位置和特定情況下的溫度。===> 2
2、工程學科需要度量軟體工程要的是有模型和理論支援的方法。
  如在設計電路的時候我們應用歐姆定律。這個定律描述了電路中電阻、電流和電壓三者之間的關係。但是這些理論已超出了一般意義上的科學方法的範疇,在這種範疇裡最基本的東西是度量。度量除了在發展一個理論的過程中起作用外,我們使用度量並應用它們。因此設計一個特定電流和電阻的電路時我們就知道需要多大的電壓。
  如果沒有度量,我們很難想象關於電子、機械、及普通工程的定律能得到發展。但事實上現在在軟體工程的主流裡度量卻被忽略了。
  現在的情況是:
  ■當我們在設計和開發軟體產品的時候,我們並未能制定出度量的目標。例如:我們保證說我們將使使用者介面友好、可靠、易於維護;而並未使用度量的術語來詳細說明它們的具體含義。Gilb曾經說過:所謂模糊目標定理,就是沒有明確目標的專案將不能明確地達到它的目標。
  ■我們未能對構成軟體專案實際費用的各個不同的部分進行有效的度量。譬如:通常我們並不知道,和測試階段相比,設計階段花費時間多大。
  ■我們並未試圖使我們開發的產品的各種質量合格。因此我們未能使用術語(如:在一段時間裡使用故障的可能性、把產品安裝到新環境中需花費的工作量等)向潛在的使用者說明產品的可靠性很高。
  ■我們總是試圖說服自己使用另一種新的革新的開發技術和方法進行軟體開發
事實上,我們在軟體度量方面做的工作很少很少,而且所作的度量方面的工作也與一般科學意義上的度量相分離。我們經常會看到諸如此類的話:”軟體的費用有80%花費在維護上。”或”軟體每一千行程式中平均有55個Bugs。”。但是這些話並沒有告訴我們這樣的結果是怎樣產生的、試驗是怎樣設計、執行的、度量的是那個實體、及錯誤的框架是什麼等等。沒有這些東西,我們就不能在我們自己的環境中客觀地進行反覆度量,重現度量的結果以獲得與工業標準的真實比較。因此,歸因於度量不充分的問題的產生是由於缺乏嚴格的度量方法造成的。
  除了傳統的對計算機硬體的效能進行度量外,對演算法的複雜性的度量一直是電腦科學的重要組成部分。但是,這種度量方法只適用於小程式,而對大型、複雜的軟體來說它卻無能為力了。這就屬於軟體工程的範疇了。如果我們不承認度量將會一個更重要的作用的話,軟體危機將在隨後的幾年裡依然存在

三、軟體度量研究的範疇
  現在我們已經知道軟體工程需要度量。如何進行度量是的重要性是顯而易見的。首先我們必須弄清楚”軟體度量”是一個包含很多完全不同的活動的術語。它主要包括:
  費用和工作量估計模型和度量
  生產率度量模型和標準
  質量控制和保證
  資料收集
  質量模型和度量
  可靠性模型
  效能評價和模型
  演算法/計算複雜性度量
  結構和複雜性度量
  GQM法(Goal/Question/Metric)
其他等
  在本專題中,我們將對上面這幾個方面進行簡要介紹以便使讀者對當前正在使用的方法和技術有一個大致瞭解。這些方面排列的順序不是任意的。它反映了進行軟體度量時從高層次、高目標到它們所依賴的最基本的東西的順序