《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 其他 > 設(shè)計(jì)應(yīng)用 > 基于軟件過(guò)程的軟件可靠性預(yù)測(cè)運(yùn)作模型
基于軟件過(guò)程的軟件可靠性預(yù)測(cè)運(yùn)作模型
蔣永輝 1,2, 吳洪麗2,3, 王政霞4
1. 海南大學(xué) 信息科學(xué)技術(shù)學(xué)院, 海南 ???70228 ;2. 海南師范大學(xué) 信息科學(xué)技術(shù)學(xué)院,
摘要: 提出了基于軟件開(kāi)發(fā)過(guò)程數(shù)據(jù),構(gòu)造用于可靠性預(yù)測(cè)的過(guò)程數(shù)據(jù)庫(kù),并分析了此數(shù)據(jù)庫(kù)的內(nèi)容與運(yùn)作模型,以期得到更加可信、準(zhǔn)確的軟件可靠性預(yù)測(cè)結(jié)果,為后續(xù)的研究奠定數(shù)據(jù)基礎(chǔ)。
Abstract:
Key words :

摘   要: 提出了基于軟件開(kāi)發(fā)過(guò)程數(shù)據(jù),構(gòu)造用于可靠性預(yù)測(cè)的過(guò)程數(shù)據(jù)庫(kù),并分析了此數(shù)據(jù)庫(kù)的內(nèi)容與運(yùn)作模型,以期得到更加可信、準(zhǔn)確的軟件可靠性預(yù)測(cè)結(jié)果,為后續(xù)的研究奠定數(shù)據(jù)基礎(chǔ)。
關(guān)鍵詞: 軟件過(guò)程; 軟件可靠性; 過(guò)程數(shù)據(jù)庫(kù)

    從20世紀(jì)70年代起,軟件可靠性預(yù)測(cè)技術(shù)大體上分為靜態(tài)和動(dòng)態(tài)兩種。早期的靜態(tài)預(yù)測(cè)主要研究可靠性和軟件規(guī)模、程序復(fù)雜度等基本屬性之間的關(guān)系,以此預(yù)測(cè)軟件的可靠性。20世紀(jì)90年代初,人們發(fā)現(xiàn)缺陷在軟件中是隨機(jī)分布的,既而出現(xiàn)了針對(duì)缺陷分布的預(yù)測(cè)技術(shù),也有一些取得了比較好的成果和應(yīng)用。例如基于軟件規(guī)模的Halstead模型以及Lipow在此模型機(jī)上改進(jìn)所得到的軟件缺陷與可執(zhí)行代碼行之間的關(guān)系模型;Takahashi將代碼與具體的文檔數(shù)量對(duì)應(yīng)起來(lái),給出了缺陷密度的估計(jì);Malaiya等在假設(shè)模塊規(guī)模符合指數(shù)分布的情況下,提出了缺陷估算的公式:缺陷密度D(s)=a/s+b+cs,指出軟件缺陷取決于程序員能力、過(guò)程成熟度以及測(cè)試程度等。20世紀(jì)90年代,隨著軟件規(guī)模和復(fù)雜度的不斷增長(zhǎng),同時(shí)由于面向?qū)ο蠹夹g(shù)的出現(xiàn),許多基于面向?qū)ο蠖攘吭娜毕蓊A(yù)測(cè)技術(shù)涌現(xiàn)出來(lái)。而隨著軟件過(guò)程技術(shù)的發(fā)展,人們逐漸認(rèn)識(shí)到了軟件過(guò)程對(duì)于軟件可靠性的影響[1-6]。不難發(fā)現(xiàn),靜態(tài)預(yù)測(cè)主要是基于缺陷相關(guān)的度量數(shù)據(jù),對(duì)缺陷的數(shù)量或者分布進(jìn)行預(yù)測(cè)的技術(shù);而動(dòng)態(tài)預(yù)測(cè)則是基于缺陷或者失效產(chǎn)生的時(shí)間,對(duì)系統(tǒng)缺陷隨時(shí)間的分布進(jìn)行預(yù)測(cè)的技術(shù)。這些現(xiàn)有的軟件可靠性預(yù)測(cè)模型一般只是對(duì)與缺陷有關(guān)的度量數(shù)據(jù)和對(duì)軟件可靠性測(cè)試后的失效數(shù)據(jù)進(jìn)行分析,而忽略了軟件開(kāi)發(fā)過(guò)程中大量有用信息。因此,筆者提出了基于軟件過(guò)程數(shù)據(jù),構(gòu)造用于可靠性預(yù)測(cè)的過(guò)程數(shù)據(jù)庫(kù),并分析了此數(shù)據(jù)庫(kù)的內(nèi)容與運(yùn)作模型,以期得到更加可信、準(zhǔn)確的軟件可靠性預(yù)測(cè)結(jié)果,為后續(xù)的研究奠定數(shù)據(jù)基礎(chǔ)。
1 軟件過(guò)程與軟件可靠性
    軟件過(guò)程可以定義為人們用來(lái)開(kāi)發(fā)和維護(hù)軟件以及相關(guān)產(chǎn)品(如工程計(jì)劃、設(shè)計(jì)文檔、規(guī)章、檢測(cè)事例及用戶手冊(cè))的一組活動(dòng)、方法、實(shí)踐及轉(zhuǎn)換[7]。軟件可靠性是軟件系統(tǒng)在規(guī)定時(shí)間內(nèi)及規(guī)定的環(huán)境條件下,完成規(guī)定功能的能力。在ISO/IEC 9126的軟件質(zhì)量特性表述中,軟件可靠性(Software Reliability)是軟件質(zhì)量的一個(gè)重要特性。而軟件產(chǎn)品是軟件過(guò)程的產(chǎn)物,軟件過(guò)程的好壞決定了軟件產(chǎn)品的好壞,軟件過(guò)程的穩(wěn)定也決定了軟件產(chǎn)品質(zhì)量的穩(wěn)定。軟件產(chǎn)品質(zhì)量的穩(wěn)定直接反映了軟件可靠性的穩(wěn)定。SEI提出的CMM以及CMMI里也指出,軟件過(guò)程能力成熟度反映了一個(gè)軟件企業(yè)的過(guò)程能力以及開(kāi)發(fā)能力,過(guò)程穩(wěn)定的企業(yè)或者團(tuán)隊(duì),其軟件產(chǎn)品的質(zhì)量也是相對(duì)穩(wěn)定的。據(jù)此,不難得到這樣的結(jié)論:穩(wěn)定的軟件過(guò)程,其軟件產(chǎn)品的可靠性也是穩(wěn)定的[8]。
2 影響軟件可靠性的因素
 在對(duì)13個(gè)公司的調(diào)查結(jié)果進(jìn)行分析后,參考文獻(xiàn)[9]提出了基于經(jīng)驗(yàn)數(shù)據(jù)的影響軟件可靠性的32個(gè)因素。這32個(gè)因素貫穿了軟件開(kāi)發(fā)的各個(gè)階段,其中最重要的是軟件復(fù)雜度、程序員的技能、測(cè)試工作量、測(cè)試覆蓋率、測(cè)試環(huán)境和程序規(guī)格說(shuō)明書的改動(dòng)頻率6個(gè)因素[9]。參考文獻(xiàn)[10]指出了影響軟件可靠性的主要因素包括: 需求的變更、開(kāi)發(fā)團(tuán)隊(duì)的經(jīng)驗(yàn)、設(shè)計(jì)的變更、編碼和測(cè)試、新技術(shù)、開(kāi)發(fā)語(yǔ)言以及工具的使用、管理經(jīng)驗(yàn)、高層管理的支持力度、度量和模型的使用情況[10]。參考文獻(xiàn)[11]認(rèn)為開(kāi)發(fā)的復(fù)雜程度、代碼重用的比率以及軟件開(kāi)發(fā)團(tuán)隊(duì)的經(jīng)驗(yàn)和受教育程度是影響軟件可靠性的主要因素。參考文獻(xiàn)[12]指出影響軟件可靠性的因素可分為兩大類:缺陷引入和缺陷檢測(cè)。缺陷引入又由16個(gè)因素決定,而缺陷檢測(cè)由17個(gè)因素決定。這些因素中,與過(guò)程有關(guān)的因素包括開(kāi)發(fā)人員的能力、領(lǐng)域知識(shí)、團(tuán)隊(duì)協(xié)作、團(tuán)隊(duì)結(jié)構(gòu)、管理能力、程序復(fù)雜度、溝通能力、項(xiàng)目管理、過(guò)程管理、變更控制、文檔質(zhì)量、需求質(zhì)量、開(kāi)發(fā)環(huán)境、計(jì)劃偏移度、開(kāi)發(fā)過(guò)程成熟度、產(chǎn)品調(diào)研等[12]。軟件過(guò)程度量的三大類基本內(nèi)容分別是質(zhì)量、時(shí)間和資源,質(zhì)量表示在不同的過(guò)程運(yùn)作階段過(guò)程產(chǎn)品和過(guò)程執(zhí)行有關(guān)的質(zhì)量信息(例如軟件問(wèn)題及其生命周期,過(guò)程執(zhí)行的偏離度等),時(shí)間表示過(guò)程運(yùn)作中各項(xiàng)活動(dòng)的計(jì)劃時(shí)間和實(shí)際時(shí)間,資源表示在過(guò)程運(yùn)作中不同階段活動(dòng)消耗的物資資源和人力資源。綜合分析這些文獻(xiàn)提出的影響軟件可靠性的因素,不難發(fā)現(xiàn),其中,很多因素也是軟件過(guò)程度量所關(guān)注的信息。
3 軟件可靠性預(yù)測(cè)度量體系
    在已有的調(diào)查研究基礎(chǔ)之上[13-15],筆者構(gòu)建了基于軟件過(guò)程的軟件可靠性預(yù)測(cè)度量體系。該體系模型共劃分為6個(gè)層次:影響軟件可靠性因素、影響軟件可靠性因子、特性、子特性、度量以及度量元。其層次結(jié)構(gòu)如圖1所示。其中,軟件可靠性取決于影響軟件可靠性因素的性能如何,而對(duì)軟件可靠性因素的評(píng)價(jià)表現(xiàn)在多個(gè)可靠性因子,不同的可靠性因子的影響基于不同的性能特性,特性可能有子特性,通過(guò)度量來(lái)評(píng)價(jià)可靠性因子的特性和子特性,同時(shí)度量又有多種數(shù)據(jù)表現(xiàn)形式,即多個(gè)度量元。


 對(duì)軟件可靠性的預(yù)測(cè),筆者確定了6個(gè)影響軟件可靠性的主要因素,分別是:一般性因素、穩(wěn)定性因素、過(guò)程依從性、開(kāi)發(fā)文檔、編碼和人力資源因素。軟件測(cè)試因其產(chǎn)生的數(shù)據(jù)是軟件失效后的數(shù)據(jù),更多的用于軟件可靠性的動(dòng)態(tài)預(yù)測(cè),故此處不予以考慮。對(duì)這6個(gè)可靠性因素的評(píng)價(jià),筆者建立了如表1所示的度量和度量元,并據(jù)此來(lái)構(gòu)建基于軟件過(guò)程的軟件可靠性預(yù)測(cè)度量體系。

4 基于軟件過(guò)程的軟件可靠性預(yù)測(cè)
 一個(gè)過(guò)程穩(wěn)定的軟件企業(yè),其軟件產(chǎn)品的可靠性也是穩(wěn)定的。通過(guò)對(duì)影響軟件可靠性的過(guò)程因素的分析,筆者確定了上述的度量和度量元。而軟件企業(yè)若考慮從歷史數(shù)據(jù)中得到關(guān)于以前項(xiàng)目的過(guò)程等信息,就必須擁有過(guò)程數(shù)據(jù)庫(kù)。過(guò)程數(shù)據(jù)庫(kù)的建設(shè)需要人員和軟件工具的支撐,如圖2所示。該過(guò)程數(shù)據(jù)庫(kù)建設(shè)模型結(jié)合前述分析,并綜合考慮了軟件度量技術(shù)和CMM/CMMI中的度量技術(shù)后抽象而成。

   根據(jù)企業(yè)的測(cè)量定義,工作人員可以知道應(yīng)該采集什么數(shù)據(jù),并通過(guò)數(shù)據(jù)采集工具包使測(cè)量數(shù)據(jù)進(jìn)入過(guò)程數(shù)據(jù)庫(kù)系統(tǒng);另外工作人員也可以通過(guò)問(wèn)題跟蹤軟件包(例如需求跟蹤系統(tǒng))直接使測(cè)量數(shù)據(jù)進(jìn)入過(guò)程數(shù)據(jù)庫(kù)。過(guò)程數(shù)據(jù)庫(kù)中除存儲(chǔ)了影響軟件可靠性的因素的度量值外,還應(yīng)包含理解和解釋實(shí)際度量數(shù)據(jù)、評(píng)價(jià)其合理性和適用性所需要的信息和索引,以及可靠性分析的標(biāo)準(zhǔn)、模型和基線值、優(yōu)先級(jí)等。
    通過(guò)對(duì)過(guò)程數(shù)據(jù)庫(kù)里的基本測(cè)量項(xiàng)數(shù)據(jù)進(jìn)行分析計(jì)算,得到關(guān)于以往項(xiàng)目的軟件可靠性相關(guān)的度量,此度量數(shù)據(jù)經(jīng)過(guò)評(píng)估標(biāo)準(zhǔn)和預(yù)測(cè)模型分析,形成當(dāng)前軟件產(chǎn)品的可靠性分析預(yù)測(cè)報(bào)告。
 基于知識(shí)和數(shù)據(jù)挖掘的軟件可靠性預(yù)測(cè)是現(xiàn)在和未來(lái)幾年研究的方向。本文首先分析討論了軟件過(guò)程與軟件可靠性的關(guān)系,然后分析了影響軟件可靠性的因素,最后討論了建立基于軟件過(guò)程數(shù)據(jù)的過(guò)程數(shù)據(jù)庫(kù),并抽象出運(yùn)作模型,為后續(xù)的基于知識(shí)和數(shù)據(jù)挖掘的軟件可靠性研究奠定數(shù)據(jù)基礎(chǔ)。軟件可靠性預(yù)測(cè)中一些其他重要問(wèn)題,如軟件可靠性預(yù)測(cè)環(huán)境的構(gòu)建、軟件可靠性預(yù)測(cè)模型的選擇以及定量評(píng)價(jià)數(shù)據(jù)的驗(yàn)證等問(wèn)題,還有待進(jìn)一步探討。
參考文獻(xiàn)
[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著.軟件過(guò)程改進(jìn)[M]. 陳新,譯. 北京:中信出版社,2002.
[8]  吳洪麗. 支持軟件過(guò)程改進(jìn)的軟件過(guò)程度量研究[D]. 重慶:重慶大學(xué)計(jì)算機(jī)學(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] 王鐵江,酈萌.軟件可靠性的模糊綜合評(píng)估模型[J].計(jì)算機(jī)工程與應(yīng)用,2002,38(20):23-26.    
[14] 田濤,王昕. 一種基于模糊綜合評(píng)判的軟件可靠性模型選擇方法[J]. 空軍工程大學(xué)學(xué)報(bào):自然科學(xué)版,2002,3(2):56-59.
[15] 馬颯颯, 陳自力.軟件可靠性定量評(píng)估過(guò)程研究[J]. 計(jì)算機(jī)測(cè)量與控制, 2005,13(5):503-505.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。