隨著軟件規(guī)模的日益龐大,軟件的質(zhì)量也越來越難以控制與管理,成為長期以來困擾著軟件產(chǎn)品開發(fā)的主要問題。如何提高軟件產(chǎn)品的質(zhì)量及降低后續(xù)類似系統(tǒng)的開發(fā)代價已成為一個亟待解決的熱點(diǎn)問題,而軟件度量是解決該問題的一個有效手段。
一、軟件度量的主要活動
本文所定義的“軟件度量”一詞是指:可由人工或自動化工具定量測量或區(qū)分有關(guān)軟件項(xiàng)目、軟件產(chǎn)品、軟件生產(chǎn)過程及其支持過程等諸多軟件屬性的度量方法,主要包括兩個方面:
一是有助于開發(fā)過程的控制或管理的度量;二是軟件產(chǎn)品質(zhì)量的控制或管理的度量。
軟件度量的主要活動有:
1.度量計(jì)劃。度量軟件過程從制定計(jì)劃開始。制定度量計(jì)劃的過程分為三個階段:確定過程管理問題;選擇和定義相應(yīng)的產(chǎn)品和過程度量;把最終的度量活動集成到組織當(dāng)前的軟件過程中。
2.數(shù)據(jù)收集。數(shù)據(jù)采集是一個過程,包括采集數(shù)據(jù)、驗(yàn)證數(shù)據(jù)和保存數(shù)據(jù)等活動。
3.實(shí)施度量。數(shù)據(jù)收集過程規(guī)定從數(shù)據(jù)收集點(diǎn)到度量評價的數(shù)據(jù)流程,確定有關(guān)數(shù)據(jù)的收集條件,給出工具的使用說明及數(shù)據(jù)存放規(guī)程。
4.度量分析。用戶可以根據(jù)需要生成散布圖、趨勢圖、直方圖、條形圖、控制圖、Pareto圖等,通過這些圖表可以直觀地反映過程的穩(wěn)定性、變化趨勢、影響過程性能的因素之間的關(guān)聯(lián)等。
二、系統(tǒng)功能模塊設(shè)計(jì)
系統(tǒng)主要包括項(xiàng)目和權(quán)限管理模塊、度量計(jì)劃、數(shù)據(jù)采集、度量分析和顯示等幾個部分。
1.項(xiàng)目權(quán)限管理模塊:建立系統(tǒng)中的度量項(xiàng)目與實(shí)際的軟件項(xiàng)目之間的對應(yīng)關(guān)系,收集、管理和維護(hù)軟件項(xiàng)目的度量數(shù)據(jù)。
2.度量計(jì)劃模塊:目標(biāo)驅(qū)動度量,一旦明確了目標(biāo),項(xiàng)目經(jīng)理就要分析出達(dá)成目標(biāo)所要執(zhí)行的度量,并識別出生成這些度量要采集的數(shù)據(jù)以及數(shù)據(jù)的來源,例如工作量數(shù)據(jù)可以來自個人的周報(bào),進(jìn)度數(shù)據(jù)可以來自周報(bào)也可來自MS Project,缺陷數(shù)據(jù)來自評審報(bào)告、測試報(bào)告,規(guī)模數(shù)據(jù)來自個人的規(guī)模統(tǒng)計(jì)報(bào)告等等,將這些內(nèi)容記錄到度量計(jì)劃中。系統(tǒng)提供度量計(jì)劃模板,用戶可以對度量計(jì)劃模板進(jìn)行修改,制定度量計(jì)劃。系統(tǒng)在用戶定制的基礎(chǔ)上,生成XML格式保存的度量計(jì)劃文檔。
3.?dāng)?shù)據(jù)采集模塊:準(zhǔn)確地收集度量數(shù)據(jù)是有效進(jìn)行度量分析的基礎(chǔ)。系統(tǒng)以XML為數(shù)據(jù)交換格式的標(biāo)準(zhǔn)接口,幫助用戶導(dǎo)入在項(xiàng)目管理工具中所記錄的過程數(shù)據(jù)。在軟件開發(fā)過程中使用的項(xiàng)目管理工具如需求管理工具、配置管理工具、文檔管理工具、軟件問題報(bào)告工具等,在這些工具中已經(jīng)記錄了很多關(guān)于軟件過程運(yùn)行中的數(shù)據(jù),將這些數(shù)據(jù)通過接口導(dǎo)入度量數(shù)據(jù)庫,可以節(jié)省大量的數(shù)據(jù)采集工作。
4.度量分析模塊:該模塊用各種圖表和表格的形式給出分析結(jié)果。在給出圖表的同時,對圖表進(jìn)行分析,把分析結(jié)果提供給用戶,幫助用戶對軟件過程進(jìn)行判斷,找出可歸屬的原因,進(jìn)而改進(jìn)過程。
為了在瀏覽器中動態(tài)顯示各種圖表,系統(tǒng)主要使用開放源代碼站點(diǎn)SourceForge.net上的JAVA圖表引擎JfreeChart來產(chǎn)生基于web的圖表,并利用JavaBean作為對JfreeChart的補(bǔ)充,生成系統(tǒng)所需要的各種圖表。其基本原理是直接在web服務(wù)器端生成好各種圖表、圖片文件后發(fā)送給瀏覽器。
JFreeChart中幾個核心的對象類:
JFreeChart:圖表對象,任何類型的圖表的最終表現(xiàn)形式都是在該對象進(jìn)行一些屬性的定制。JFreeChart引擎本身提供了一個類用于創(chuàng)建不同類型的圖表對象。
JfreeDataset:數(shù)據(jù)集對象,用于提供顯示圖表所用的數(shù)據(jù)。根據(jù)不同類型的圖表對應(yīng)著很多類型的數(shù)據(jù)集對象類。
JfreePlot:圖表區(qū)域?qū)ο?,基本上這個對象決定著什么樣式的圖表,創(chuàng)建該對象的時候需要Axis、Renderer以及數(shù)據(jù)集對象的支持。
JfreeAxis:用于處理圖表的兩個軸:橫軸和縱軸。
JfreeRenderer:負(fù)責(zé)如何顯示一個圖表對象。
JFreeURLGenerator:用于生成Web圖表中每個項(xiàng)目的鼠標(biāo)點(diǎn)擊鏈接。
JfreeToolTipGenerator:用于生成圖象的幫助提示,不同類圖表對應(yīng)不同類型的工具提示類。
5.報(bào)告生成模塊:根據(jù)用戶的需要,系統(tǒng)為用戶生成項(xiàng)目的度量分析報(bào)告。
三、系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)
圖 數(shù)據(jù)表的關(guān)聯(lián)關(guān)系
該原型系統(tǒng)的數(shù)據(jù)庫使用SQL Server2000。系統(tǒng)將軟件過程中的主要元素,如項(xiàng)目、活動、任務(wù)及相關(guān)產(chǎn)品的信息全部使用數(shù)據(jù)庫進(jìn)行保存,主要表有過程模型表、項(xiàng)目表、任務(wù)表、活動表、度量計(jì)劃表、產(chǎn)品表等。每一個表描述一個實(shí)體,每一個實(shí)體有多個屬性。例如度量活動表(Metrics_Activity)的屬性有度量編號、度量名稱、描述、度量時間、度量類型編號、度量計(jì)劃編號、度量模板編號、任務(wù)編號、執(zhí)行度量人員編號、項(xiàng)目編號,其中表的主鍵是度量編號屬性,表的外鍵是度量模板編號屬性、任務(wù)編號屬性、執(zhí)行度量人員編號屬性、項(xiàng)目編號屬性。數(shù)據(jù)表的關(guān)聯(lián)關(guān)系及關(guān)鍵屬性字段如上圖所示。
參考文獻(xiàn):
[1]John McGarry等著吳超英廖彬山譯:實(shí)用軟件度量.北京:機(jī)械工業(yè)出版社,2003
[2]Norman E.Fenton,Shari Lawrence Pfleeger著楊海燕趙巍張力譯:軟件度量(原書第二版).北京:機(jī)械工業(yè)出版社,2004
[3]Daniel Galin.軟件質(zhì)量保證(英文版).北京:機(jī)械工業(yè)出版社,2005
注:本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文。