摘 要: 提出了基于軟件開發(fā)過程數(shù)據(jù),,構(gòu)造用于可靠性預(yù)測的過程數(shù)據(jù)庫,,并分析了此數(shù)據(jù)庫的內(nèi)容與運作模型,以期得到更加可信,、準確的軟件可靠性預(yù)測結(jié)果,,為后續(xù)的研究奠定數(shù)據(jù)基礎(chǔ)。
關(guān)鍵詞: 軟件過程,; 軟件可靠性,; 過程數(shù)據(jù)庫
從20世紀70年代起,軟件可靠性預(yù)測技術(shù)大體上分為靜態(tài)和動態(tài)兩種,。早期的靜態(tài)預(yù)測主要研究可靠性和軟件規(guī)模,、程序復(fù)雜度等基本屬性之間的關(guān)系,以此預(yù)測軟件的可靠性。20世紀90年代初,,人們發(fā)現(xiàn)缺陷在軟件中是隨機分布的,,既而出現(xiàn)了針對缺陷分布的預(yù)測技術(shù),也有一些取得了比較好的成果和應(yīng)用,。例如基于軟件規(guī)模的Halstead模型以及Lipow在此模型機上改進所得到的軟件缺陷與可執(zhí)行代碼行之間的關(guān)系模型,;Takahashi將代碼與具體的文檔數(shù)量對應(yīng)起來,給出了缺陷密度的估計,;Malaiya等在假設(shè)模塊規(guī)模符合指數(shù)分布的情況下,,提出了缺陷估算的公式:缺陷密度D(s)=a/s+b+cs,指出軟件缺陷取決于程序員能力、過程成熟度以及測試程度等,。20世紀90年代,,隨著軟件規(guī)模和復(fù)雜度的不斷增長,同時由于面向?qū)ο蠹夹g(shù)的出現(xiàn),,許多基于面向?qū)ο蠖攘吭娜毕蓊A(yù)測技術(shù)涌現(xiàn)出來,。而隨著軟件過程技術(shù)的發(fā)展,人們逐漸認識到了軟件過程對于軟件可靠性的影響[1-6],。不難發(fā)現(xiàn),,靜態(tài)預(yù)測主要是基于缺陷相關(guān)的度量數(shù)據(jù),對缺陷的數(shù)量或者分布進行預(yù)測的技術(shù);而動態(tài)預(yù)測則是基于缺陷或者失效產(chǎn)生的時間,,對系統(tǒng)缺陷隨時間的分布進行預(yù)測的技術(shù),。這些現(xiàn)有的軟件可靠性預(yù)測模型一般只是對與缺陷有關(guān)的度量數(shù)據(jù)和對軟件可靠性測試后的失效數(shù)據(jù)進行分析,而忽略了軟件開發(fā)過程中大量有用信息。因此,,筆者提出了基于軟件過程數(shù)據(jù),,構(gòu)造用于可靠性預(yù)測的過程數(shù)據(jù)庫,并分析了此數(shù)據(jù)庫的內(nèi)容與運作模型,以期得到更加可信,、準確的軟件可靠性預(yù)測結(jié)果,為后續(xù)的研究奠定數(shù)據(jù)基礎(chǔ),。
1 軟件過程與軟件可靠性
軟件過程可以定義為人們用來開發(fā)和維護軟件以及相關(guān)產(chǎn)品(如工程計劃、設(shè)計文檔,、規(guī)章,、檢測事例及用戶手冊)的一組活動、方法,、實踐及轉(zhuǎn)換[7],。軟件可靠性是軟件系統(tǒng)在規(guī)定時間內(nèi)及規(guī)定的環(huán)境條件下,完成規(guī)定功能的能力,。在ISO/IEC 9126的軟件質(zhì)量特性表述中,,軟件可靠性(Software Reliability)是軟件質(zhì)量的一個重要特性。而軟件產(chǎn)品是軟件過程的產(chǎn)物,,軟件過程的好壞決定了軟件產(chǎn)品的好壞,,軟件過程的穩(wěn)定也決定了軟件產(chǎn)品質(zhì)量的穩(wěn)定,。軟件產(chǎn)品質(zhì)量的穩(wěn)定直接反映了軟件可靠性的穩(wěn)定。SEI提出的CMM以及CMMI里也指出,,軟件過程能力成熟度反映了一個軟件企業(yè)的過程能力以及開發(fā)能力,,過程穩(wěn)定的企業(yè)或者團隊,其軟件產(chǎn)品的質(zhì)量也是相對穩(wěn)定的,。據(jù)此,,不難得到這樣的結(jié)論:穩(wěn)定的軟件過程,其軟件產(chǎn)品的可靠性也是穩(wěn)定的[8],。
2 影響軟件可靠性的因素
在對13個公司的調(diào)查結(jié)果進行分析后,參考文獻[9]提出了基于經(jīng)驗數(shù)據(jù)的影響軟件可靠性的32個因素,。這32個因素貫穿了軟件開發(fā)的各個階段,其中最重要的是軟件復(fù)雜度、程序員的技能,、測試工作量,、測試覆蓋率、測試環(huán)境和程序規(guī)格說明書的改動頻率6個因素[9],。參考文獻[10]指出了影響軟件可靠性的主要因素包括: 需求的變更,、開發(fā)團隊的經(jīng)驗、設(shè)計的變更,、編碼和測試,、新技術(shù)、開發(fā)語言以及工具的使用,、管理經(jīng)驗,、高層管理的支持力度、度量和模型的使用情況[10],。參考文獻[11]認為開發(fā)的復(fù)雜程度,、代碼重用的比率以及軟件開發(fā)團隊的經(jīng)驗和受教育程度是影響軟件可靠性的主要因素。參考文獻[12]指出影響軟件可靠性的因素可分為兩大類:缺陷引入和缺陷檢測,。缺陷引入又由16個因素決定,,而缺陷檢測由17個因素決定。這些因素中,,與過程有關(guān)的因素包括開發(fā)人員的能力,、領(lǐng)域知識、團隊協(xié)作,、團隊結(jié)構(gòu),、管理能力,、程序復(fù)雜度,、溝通能力、項目管理,、過程管理,、變更控制,、文檔質(zhì)量、需求質(zhì)量,、開發(fā)環(huán)境,、計劃偏移度、開發(fā)過程成熟度,、產(chǎn)品調(diào)研等[12],。軟件過程度量的三大類基本內(nèi)容分別是質(zhì)量、時間和資源,,質(zhì)量表示在不同的過程運作階段過程產(chǎn)品和過程執(zhí)行有關(guān)的質(zhì)量信息(例如軟件問題及其生命周期,,過程執(zhí)行的偏離度等),時間表示過程運作中各項活動的計劃時間和實際時間,,資源表示在過程運作中不同階段活動消耗的物資資源和人力資源,。綜合分析這些文獻提出的影響軟件可靠性的因素,不難發(fā)現(xiàn),,其中,,很多因素也是軟件過程度量所關(guān)注的信息。
3 軟件可靠性預(yù)測度量體系
在已有的調(diào)查研究基礎(chǔ)之上[13-15],,筆者構(gòu)建了基于軟件過程的軟件可靠性預(yù)測度量體系,。該體系模型共劃分為6個層次:影響軟件可靠性因素、影響軟件可靠性因子,、特性,、子特性、度量以及度量元,。其層次結(jié)構(gòu)如圖1所示,。其中,軟件可靠性取決于影響軟件可靠性因素的性能如何,,而對軟件可靠性因素的評價表現(xiàn)在多個可靠性因子,,不同的可靠性因子的影響基于不同的性能特性,特性可能有子特性,,通過度量來評價可靠性因子的特性和子特性,,同時度量又有多種數(shù)據(jù)表現(xiàn)形式,即多個度量元,。
對軟件可靠性的預(yù)測,,筆者確定了6個影響軟件可靠性的主要因素,分別是:一般性因素,、穩(wěn)定性因素,、過程依從性、開發(fā)文檔,、編碼和人力資源因素,。軟件測試因其產(chǎn)生的數(shù)據(jù)是軟件失效后的數(shù)據(jù),,更多的用于軟件可靠性的動態(tài)預(yù)測,故此處不予以考慮,。對這6個可靠性因素的評價,,筆者建立了如表1所示的度量和度量元,并據(jù)此來構(gòu)建基于軟件過程的軟件可靠性預(yù)測度量體系,。
4 基于軟件過程的軟件可靠性預(yù)測
一個過程穩(wěn)定的軟件企業(yè),,其軟件產(chǎn)品的可靠性也是穩(wěn)定的。通過對影響軟件可靠性的過程因素的分析,,筆者確定了上述的度量和度量元,。而軟件企業(yè)若考慮從歷史數(shù)據(jù)中得到關(guān)于以前項目的過程等信息,就必須擁有過程數(shù)據(jù)庫,。過程數(shù)據(jù)庫的建設(shè)需要人員和軟件工具的支撐,,如圖2所示。該過程數(shù)據(jù)庫建設(shè)模型結(jié)合前述分析,,并綜合考慮了軟件度量技術(shù)和CMM/CMMI中的度量技術(shù)后抽象而成,。
根據(jù)企業(yè)的測量定義,工作人員可以知道應(yīng)該采集什么數(shù)據(jù),,并通過數(shù)據(jù)采集工具包使測量數(shù)據(jù)進入過程數(shù)據(jù)庫系統(tǒng),;另外工作人員也可以通過問題跟蹤軟件包(例如需求跟蹤系統(tǒng))直接使測量數(shù)據(jù)進入過程數(shù)據(jù)庫。過程數(shù)據(jù)庫中除存儲了影響軟件可靠性的因素的度量值外,,還應(yīng)包含理解和解釋實際度量數(shù)據(jù),、評價其合理性和適用性所需要的信息和索引,以及可靠性分析的標(biāo)準,、模型和基線值,、優(yōu)先級等。
通過對過程數(shù)據(jù)庫里的基本測量項數(shù)據(jù)進行分析計算,,得到關(guān)于以往項目的軟件可靠性相關(guān)的度量,,此度量數(shù)據(jù)經(jīng)過評估標(biāo)準和預(yù)測模型分析,形成當(dāng)前軟件產(chǎn)品的可靠性分析預(yù)測報告,。
基于知識和數(shù)據(jù)挖掘的軟件可靠性預(yù)測是現(xiàn)在和未來幾年研究的方向,。本文首先分析討論了軟件過程與軟件可靠性的關(guān)系,然后分析了影響軟件可靠性的因素,最后討論了建立基于軟件過程數(shù)據(jù)的過程數(shù)據(jù)庫,,并抽象出運作模型,,為后續(xù)的基于知識和數(shù)據(jù)挖掘的軟件可靠性研究奠定數(shù)據(jù)基礎(chǔ)。軟件可靠性預(yù)測中一些其他重要問題,,如軟件可靠性預(yù)測環(huán)境的構(gòu)建,、軟件可靠性預(yù)測模型的選擇以及定量評價數(shù)據(jù)的驗證等問題,還有待進一步探討,。
參考文獻
[1] HALSTEAD M H. Elements of software science. New York: Elsevier, North-Holland, 1977.
[2] OTTENSTEIN L. Predicting numbers of errors using software science. ACM SIGMETRICS Performance Evaluation Review, 1981, 10(1):157-167.
[3] OTTENSTEIN L. Quantitative estimates of debugging requirements. IEEE Trans. on Software Engineering,1979, SE-5(5):504-514.
[4] LIPOW M. Number of faults per line of code. IEEE Trans. on Software Engineering, 1982,8(4):437-439.
[5] TAKAHASHI M, KAMAYACHI Y. An empirical study of a model for program error prediction. IEEE Trans. on Software Engineering, 1989,15(1):82-86.
[6] MALAYIA Y, DENTON J. Module size distribution and defect density. In:Proc.of the 11th Int’l Symp. on Software Reliability Engineering. New York: IEEE Computer Society Press, 2000. 62-71.
[7] ZAHRAN S著.軟件過程改進[M]. 陳新,譯. 北京:中信出版社,,2002.
[8] 吳洪麗. 支持軟件過程改進的軟件過程度量研究[D]. 重慶:重慶大學(xué)計算機學(xué)院,2004.
[9] ZHANG X, PHAM H.An analysis of factors affecting software reliability. The Journal of Systems & Software,2000, 50(1):43-56.
[10] SCHNEBERGER S L. Distributed computing environments: effects on software maintenance difficulty. Journal of Systems and Software,1997,37(2):101-116.
[11] EVANCO W M, LACOVARA R. A model-based framework for the integration of software metrics. Journal of Systems and Software,1994,26(1):77-86.
[12] JACOBS J J. MOLL V. Identification of factors that influence defect injection and detection in development of software intensive products. Information and Software Technology,2007,49(7):774-789.
[13] 王鐵江,酈萌.軟件可靠性的模糊綜合評估模型[J].計算機工程與應(yīng)用,2002,,38(20):23-26.
[14] 田濤,王昕. 一種基于模糊綜合評判的軟件可靠性模型選擇方法[J]. 空軍工程大學(xué)學(xué)報:自然科學(xué)版,,2002,3(2):56-59.
[15] 馬颯颯, 陳自力.軟件可靠性定量評估過程研究[J]. 計算機測量與控制, 2005,,13(5):503-505.