信息工程監理的中心任務是對信息工程項目的進度目標、質量目標和風險防范,實施有效的監督、協調與控制。為了監督、控制軟件項目開發過程的性能等,引入定量監理十分必要。為此,本期將首先介紹進度的定量監理過程,在下一期將介紹質量和風險的定量監理。
應用軟件系統開發過程中,不僅存在著信息不對稱的風險,還存在著各方信息處理能力不對稱引起的風險;不但有項目的特殊風險,還有項目管理風險;不但有經濟風險,還有時間風險、心理風險等。
定量過程監理的目的是定量監督、控制軟件項目的開發過程性能,軟件開發過程性能決定了實施軟件過程所獲得的實際結果。
應用軟件開發是非常專業的,而且是講究分工的。需求分析、總體設計、概要和詳細設計、編碼、測試、安裝及維護等,每一個過程都有自己的精深之處,涉及的專業面廣、業務和技術性強、可見性差、風險大、可預見性小。即使應用軟件承建方按規范開發模式的要求一步步進行,也會遇到許多不可預見的問題,更不用說承建方可能有不規范行為的情況。信息化系統的核心是軟件,由于難以對軟件工程的質量和進度等進行有效的監控,因此,若承建方不按規范進行設計、實施、測試,也不易察覺。
凡此種種,造成許多信息化系統工程項目不成功,不完善,長期收不了口,“豆腐渣”工程層出不窮,嚴重地影響了信息化系統工程的質量和進度,不僅損害了合同雙方的利益,還給國家和社會造成了許多不應有的損失。因此,在軟件開發監理過程中,引入定量的方法、手段對應用軟件開發過程的某些方面進行定量計算、分析和驗證,或通過定量的方法對可能出現的故障、風險進行分析判斷,或為執行者提供數據進行核實,從而降低工程建設的風險,使投資的信息化系統發揮應有的作用是非常必要的。
軟件開發定量監理的兩個基本“點”
通過中國軟件評測中心大量的監理實踐,我們體會到應用軟件開發過程的定量監理可以從以下三個方面展開,即:軟件開發進度的監理、軟件開發的質量監理和軟件開發的風險監理。在進度、質量和風險的定量監理中,又分別按照度量、估算兩個步驟進行定量分析、監理。
度量:根據一定的度量標準對軟件開發過程中所產生的數據進行收集和整理,如代碼行(LOC)和功能點(FP)的數量。它為估計不準、進度緩慢、可見性差等普遍問題提供了矯正的方法。
軟件度量的主要作用有兩個,一是使用軟件度量建立項目基線;二是收集項目當前的生產率和質量狀態,利用基線對項目當前狀態進行評價,并確定軟件工程過程的改進目標。
估算:通常的定義是,對未來事實非零可能性的最樂觀的預測。軟件項目估算是項目計劃活動的基礎,估算是一門科學,也是一門藝術,應當認識到,軟件評估永遠也不會是一門精確的科學。
對進度定量監理的四步法
軟件項目的規模、進度估算歷來是比較復雜的事,因為軟件本身的復雜性、歷史經驗的缺乏、估算工具缺乏以及一些人為錯誤,導致軟件項目的規模估算往往和實際情況相差甚遠。因此,是監理工作的重點之一。
為了可靠地對軟件項目進行估算,我們采取如下4個步驟:第一步是對軟件規模進行估算。一般是通過計算LOC(源代碼行數)或功能點數(FP)完成的,也可以基于過程進行估算;第二步是估算軟件項目所需的工作量,以人月或人小時為單位;第三步是以自然月為單位,估算項目的進度;第四步是估算項目成本。下面來具體介紹。
1、估算項目的規模
對軟件項目進行有效的估算,取決于掌握多少有關項目范圍的原始資料。通常,應當根據正式的需求描述進行估算。正式的需求描述可以是需求說明書、系統規格說明書或軟件需求說明書等。如果開始時缺乏一些正式的資料,也可以采用口頭描述或草稿的方式開始估算工作。在得到項目范圍的正式資料后,必須進行再估算。估算的兩個主要方法是:
第一種方法是根據項目特征和算法進行估算。
例如,根據軟件系統的輸入、輸出、查詢、文件及外部接口等信息,使用功能點法估算出系統的規模;诠δ茳c估算是按照用例(Use case)來做的,而不是軟件功能來做。通過研究初始應用需求來確定各種輸入、輸出、計算和數據庫需求的數量和特性。通常的步驟是:
A、計算輸入、輸出、查詢、主控文件和接口需求的數目。
B、將這些數據進行加權乘。下表為一個典型的權值表。
C、估計者根據對復雜度的判斷,總數可以用樂觀值、可能值或悲觀值調整。
D、采用下面的方式計算功能點:
FP=總計數值×[0.65+0.01×ΣFi]
其中,“總計數值”是所有功能點條目的總和。
Fi(i=1到14)是基于對表2中問題的回答而得到的“復雜度調整值”(0~5)。等式中的常數和信息域值的加權因子是根據經驗確定的。
下面將以某個計算機輔助設計(CAD)應用為例,估算開發的軟件包的輸入、輸出、查詢、文件及外部接口。為了達到這個估算目的,我們假設復雜度加權因子都是平均的。根據對軟件范圍的敘述,對軟件功能進行分解,識別出主要的幾個功能:用戶界面和控制功能、二維幾何分析、三維幾何分析、數據庫管理、計算機圖形顯示功能、外設控制以及設計分析模塊。最后可得到如表2所示的估算表。
由表2得到總計數值為318。
接著,估算14個復雜度加權因子(Fi,根據問題對項目的影響取值范圍是0~5),表3給出了因子值。
FP=總計數值×[0.65+0.01×ΣFi]=366
第二種方法是采用類比的方法,根據歷史數據來進行估算。
如果有一個以前做過的類似項目并且掌握它的規模,就可以把新項目的各個主要部分與原有項目的相應部分進行比較,得出一個比例關系,將各部分相對于原項目規模比例相加,計算出新項目的規模。如果估算者的經驗豐富并且新項目與老項目具有足夠的相似性,就能夠得到合理的估算值。
但是采用類比法,往往還要解決可重用代碼的估算問題。估計可重用代碼量的最好辦法就是由程序員或系統分析員詳細地考查已存在的代碼,估算出新項目可重用的代碼中需重新設計的代碼百分比、需重新編碼或修改的代碼百分比以及需重新測試的代碼百分比。根據這三個百分比,可用下面的計算公式計算等價新代碼行:
等價代碼行 = [(重新設計% +重新編碼% +重新測試%)/3]× 已有代碼行
比如:有10,000行代碼,假定35%需要重新設計,55%需要重新編碼,75%需要重新測試,那么其等價的代碼行可以計算為:
[(30% + 50% + 70%)/3]×10,000= 5,500 等價代碼行。即:重用這10000代碼相當于編寫5500代碼行的工作量。
2、工作量估算
估算出軟件規模并且對軟件的開發周期進行定義后,開始估算軟件項目的工作量。軟件規模的估算結果是代碼量,但是軟件項目的開發、實施過程并不是只有編碼的工作,實際上編碼的工作量在這個過程中是最小的。編寫文檔、架構設計、系統設計、測試以及實施發布等將占用大量的工作時間。因此,對軟件項目工作量的估算就是確定、估算這樣一個代碼量的項目所需的各種工作,相加得到項目的工作量。從軟件規模(代碼量)估算出項目工作量主要采用下述的兩個方法:
(1)最好的方法是利用歷史數據,根據以前做過的類似項目規模與新項目規模的比例關系,對照以前項目的工作量求出新項目的工作量。
采用這個方法的前提是:a.對以前項目規模和工作量的計量是正確的;b.至少有一個以前的項目的規模和新項目類似;c.新項目的開發周期、使用的開發方法、開發工具與以前項目的類似,而且開發人員的技能和經驗也不能與原來的人員相差太大。
(2)如果沒有歷史數據可用,或者新項目與以前做過的項目差別較大,那么可以使用一個成熟的估算模型,如采用IBM模型、COCOMO模型或Putnam方法論,將軟件項目規模轉換成工作量。
文章來源于領測軟件測試網 http://www.kjueaiud.com/