董曉剛,楊孟飛
(1.北京控制工程研究所,北京100190;2.中國空間技術(shù)研究院,北京100094)
航天嵌入式軟件缺陷的分類方法
董曉剛1,楊孟飛2
(1.北京控制工程研究所,北京100190;2.中國空間技術(shù)研究院,北京100094)
軟件缺陷分類是軟件缺陷管理的基礎(chǔ).介紹了軟件缺陷的概念,對幾種軟件缺陷分類方法進(jìn)行了分析和比較.結(jié)合航天嵌入式軟件研制流程和缺陷類型分析,提出了一種航天器嵌入式軟件缺陷的分類方法,對于缺陷類型和實(shí)現(xiàn)與編碼錯(cuò)誤子類型給出了詳細(xì)的分類方法.
軟件缺陷;航天嵌入式軟件;缺陷分類
軟件缺陷(software defect)的一般定義指軟件中存在的未滿足與用戶期望或者規(guī)定用途有關(guān)的要求[1].軟件缺陷是軟件本身存在的一種固有狀態(tài),不同的軟件開發(fā)階段可能引入各種類型的軟件缺陷,在軟件運(yùn)行中遇到有缺陷的軟件代碼被執(zhí)行,軟件運(yùn)行就會(huì)表現(xiàn)出和預(yù)期不一致的執(zhí)行效果,導(dǎo)致系統(tǒng)或系統(tǒng)功能無法滿足任務(wù)要求.軟件缺陷是軟件故障和失效的源頭,不同的軟件缺陷會(huì)產(chǎn)生不同的后果,對于航天嵌入式軟件,如果不能在測試階段充分發(fā)現(xiàn)和暴露軟件中的缺陷,一旦軟件交付在軌運(yùn)行,可能導(dǎo)致嚴(yán)重的后果.
研究軟件缺陷的分類方法,特別是航天嵌入式軟件的缺陷分類方法,是為了形成一套對軟件缺陷的引入、發(fā)現(xiàn)、定位、危害和根源進(jìn)行分析的有效方法,之后在軟件缺陷管理中有針對性的對問題最多、危害最大的幾類缺陷進(jìn)行增強(qiáng)的測試,或者研究開發(fā)專項(xiàng)分析工具,力爭盡早和盡量完整的發(fā)現(xiàn)缺陷并修復(fù)缺陷.
軟件缺陷的分類方法有很多,各種分類方法的目的不同,觀察問題的角度和復(fù)雜程度也不一樣,幾個(gè)有代表性的軟件分類方法如下.
1.1 Putnam分類法
Putnam和Myers將軟件缺陷分為6類:需求缺陷、設(shè)計(jì)缺陷、算法缺陷、界面缺陷、性能缺陷和文檔缺陷[2].同時(shí),還對軟件的缺陷嚴(yán)重等級做出了劃分,根據(jù)缺陷造成的后果和所需采取的行動(dòng),分為重大的、嚴(yán)重的、中等的和表面的4個(gè)等級.該分類法主要覆蓋軟件研制的需求分析、軟件設(shè)計(jì)和軟件實(shí)現(xiàn)3個(gè)階段,類型比較簡單,對目前軟件缺陷的分析和排除作用有限.
1.2 Thayer分類法
Thayer[3]分類法按照錯(cuò)誤性質(zhì)分類,它利用測試人員在軟件測試過程填寫的問題報(bào)告和用戶使用軟件過程反饋的問題報(bào)告作為錯(cuò)誤分類的信息.它包括16個(gè)大類,分別是:計(jì)算錯(cuò)誤、邏輯錯(cuò)誤、I/O錯(cuò)誤、數(shù)據(jù)加工錯(cuò)誤、操作系統(tǒng)和支持軟件錯(cuò)誤、配置錯(cuò)誤、接口錯(cuò)誤、用戶需求改變、預(yù)制數(shù)據(jù)庫錯(cuò)誤、全局變量錯(cuò)誤、重復(fù)的錯(cuò)誤、文檔錯(cuò)誤、需求實(shí)現(xiàn)錯(cuò)誤、不明性質(zhì)錯(cuò)誤、人員操作錯(cuò)誤、問題.
Thayer分類法主要用于軟件測試過程中的問題報(bào)告,主要是指示開發(fā)人員的缺陷定位和消除工作,沒有考慮到軟件整個(gè)研制過程中可能引入缺陷的其他因素,對缺陷的引入階段和缺陷根源的分析也不充分.
1.3 缺陷正交分類ODC
缺陷正交分類ODC(orthogonal defects classification)是IBM公司提出的缺陷分類方法,包括7類:賦值、檢驗(yàn)、算法、時(shí)序、接口、功能、關(guān)聯(lián)[4].
分類過程分兩步進(jìn)行.第一步,缺陷發(fā)現(xiàn)時(shí),導(dǎo)致缺陷發(fā)現(xiàn)的環(huán)境和缺陷對用戶可能的影響,此時(shí)可以確定缺陷的3個(gè)屬性:發(fā)現(xiàn)缺陷的活動(dòng)、缺陷引發(fā)事件和缺陷影響.第二步,缺陷修復(fù)關(guān)閉時(shí),可以確定缺陷的其余5個(gè)屬性:缺陷載體、缺陷類型、缺陷限定詞、缺陷年齡和缺陷來源.這8個(gè)屬性對于缺陷的消除和預(yù)防起到關(guān)鍵作用.
該分類方法分類細(xì)致,適用于缺陷的定位、排除、缺陷原因分析和缺陷預(yù)防活動(dòng).缺陷特征提供的豐富信息為缺陷的消除、預(yù)防和軟件過程的改進(jìn)創(chuàng)造了條件.ODC的缺點(diǎn)在于分類復(fù)雜,難以把握分類標(biāo)準(zhǔn).
1.4 IEEE異常分類方法
IEEE異常分類方法[5]認(rèn)為分類過程由識別、調(diào)查、行動(dòng)計(jì)劃和實(shí)施處理4個(gè)步驟組成,其中調(diào)查步驟將異常類型分為:邏輯問題、計(jì)算問題、接口/定時(shí)錯(cuò)誤、數(shù)據(jù)處理問題、數(shù)據(jù)問題、文檔問題、文檔質(zhì)量問題和增強(qiáng)問題共8類.
IEEE分類方法對軟件異常進(jìn)行了全面分類,給出了整個(gè)缺陷分類的完整屬性框架.但是,IEEE分類過程復(fù)雜,通常需根據(jù)項(xiàng)目實(shí)際情況進(jìn)行裁減,不利于快速地對缺陷進(jìn)行分類和度量.
傳統(tǒng)的軟件缺陷分類方法,有的分類方法簡單,缺陷信息量不足,無法有效幫助進(jìn)行缺陷的修復(fù);有的沒有考慮缺陷發(fā)生的過程原因,不適用于軟件過程改進(jìn)活動(dòng);有的分類又過于復(fù)雜,導(dǎo)致難以把握分類標(biāo)準(zhǔn).因此,需要結(jié)合上述軟件缺陷分類方法的優(yōu)缺點(diǎn),同時(shí)結(jié)合航天嵌入式軟件研制流程,特別是軟件缺陷的發(fā)現(xiàn)、定位、排除和預(yù)防過程,提出航天嵌入式軟件缺陷分類方法,指導(dǎo)軟件缺陷的分類,為軟件缺陷定位和修復(fù),為軟件缺陷的預(yù)防提供準(zhǔn)確的完整的信息.
進(jìn)行航天嵌入式軟件缺陷分類的目的是對軟件缺陷進(jìn)行度量,分析軟件缺陷產(chǎn)生的過程和產(chǎn)生原因,改進(jìn)軟件研制過程,預(yù)防軟件缺陷,提高組織的軟件能力成熟度.航天嵌入式軟件缺陷分類方法,從方法上應(yīng)滿足以下要求:
1)準(zhǔn)確地對發(fā)現(xiàn)的缺陷進(jìn)行分類;
2)分類之間應(yīng)無重疊,分類體系應(yīng)覆蓋所有的缺陷類型;
3)分類應(yīng)該與軟件生命周期有機(jī)結(jié)合;
4)分類應(yīng)滿足航天嵌入式軟件研制流程和缺陷的發(fā)現(xiàn)、定位、排除和預(yù)防過程的要求.
可以定義下面這個(gè)6元組模型來描述航天嵌入式軟件缺陷屬性,即 <引入階段、發(fā)現(xiàn)階段、缺陷類型、編程語言、缺陷根源、缺陷嚴(yán)重等級>,表1說明了每個(gè)缺陷屬性的具體含義.
表1 缺陷屬性及含義Tab.1 Defect’s attributes and definitions
根據(jù)航天軟件研制階段的定義,軟件生命周期一般包括10個(gè)階段,則定義下面這個(gè)10元組來描述軟件缺陷的引入階段和發(fā)現(xiàn)階段,即“引入階段”=“發(fā)現(xiàn)階段”=<系統(tǒng)需求分析與設(shè)計(jì)、軟件需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、軟件實(shí)現(xiàn)、組裝測試、確認(rèn)測試、系統(tǒng)聯(lián)試、驗(yàn)收交付、運(yùn)行維護(hù)>.一般上來說,軟件缺陷的引入階段應(yīng)不包括開始軟件測試之后的研制階段,但為方便統(tǒng)一表述,這里把引入階段和發(fā)現(xiàn)階段定義一致.
“缺陷類型”是定義缺陷類型的屬性,可以通過描述對缺陷所作的實(shí)際修復(fù)工作的類型來確定缺陷類型的屬性值.傳統(tǒng)的軟件缺陷分類主要是從軟件本身存在問題的角度來區(qū)分軟件的缺陷,但是在實(shí)際軟件測試中,往往需要記錄和分析許多本身可能并非軟件缺陷的問題,這些問題可能是測試人員在理解上的誤會(huì),可能是由于測試人員誤操作導(dǎo)致,還可能是測試設(shè)備、測試軟件等缺陷導(dǎo)致的軟件執(zhí)行異?,F(xiàn)象.為全面反映航天嵌入式軟件測試過程的真實(shí)信息,從軟件研制過程改進(jìn)的角度,應(yīng)把由于測試過程導(dǎo)致的軟件異?,F(xiàn)象納入軟件缺陷的分類中,見表2所示.
表2 缺陷類型及主要表現(xiàn)Tab.2 Defects types and forms
需求分析缺陷主要是軟件需求分析階段引入的,可以通過完善需求分析工作以消除缺陷.設(shè)計(jì)階段缺陷主要指軟件設(shè)計(jì)文檔方面的缺陷,可以通過完善設(shè)計(jì)文檔的方式消除缺陷.功能、性能、數(shù)據(jù)、結(jié)構(gòu)、接口和集成錯(cuò)誤主要反映因?yàn)檐浖枨蠓治龌蛟O(shè)計(jì)的不到位導(dǎo)致的真實(shí)軟件缺陷,可以通過完善需求分析,或者完善軟件設(shè)計(jì),通過重新修改軟件代碼消除缺陷.測試設(shè)備、測試軟件和測試執(zhí)行缺陷主要反映了軟件測試階段,因?yàn)闇y試硬件、軟件或者測試活動(dòng)的錯(cuò)誤導(dǎo)致的軟件執(zhí)行不符合預(yù)期希望結(jié)果的現(xiàn)象,通過重新設(shè)計(jì)測試的軟硬件測試平臺,重新設(shè)計(jì)測試方法和測試用例,可以消除這幾類缺陷.
實(shí)現(xiàn)與編碼錯(cuò)誤是因?yàn)檐浖?shí)現(xiàn)人員對軟件編程語言、軟件使用環(huán)境、軟件執(zhí)行過程、軟件執(zhí)行異常、軟件編程規(guī)范等方面的認(rèn)識和理解不正確或者不準(zhǔn)確導(dǎo)致的軟件代碼缺陷.程序由源代碼符號序列組成,源代碼經(jīng)過編譯器的詞法分析、語法分析、語義分析和中間代碼生成、代碼優(yōu)化,最后生成目標(biāo)代碼.在對軟件缺陷類別中的“實(shí)現(xiàn)與編程錯(cuò)誤”繼續(xù)分類,可以按照軟件編譯過程的不同階段進(jìn)行分類,這種方法不會(huì)導(dǎo)致分類的模糊,也明確了可以在編譯的哪個(gè)階段發(fā)現(xiàn)該類缺陷,如果結(jié)合靜態(tài)分析的方法,可以明確在編譯過程的哪個(gè)階段通過修改編譯器可以部分的發(fā)現(xiàn)這類缺陷,增加軟件缺陷排除的準(zhǔn)確性.
詞法分析的任務(wù)是對構(gòu)成源程序的字符串進(jìn)行掃描和分解,識別出一個(gè)個(gè)的單詞,詞法缺陷即考察符號序列在組成程序時(shí)可能出現(xiàn)的問題.語法分析的任務(wù)是在詞法分析的基礎(chǔ)上,根據(jù)語言的語法規(guī)則,把單詞符號串分解成各類語法單元.如果編碼錯(cuò)誤都不是上述兩類缺陷,程序仍然可能與實(shí)現(xiàn)者想表達(dá)的含義不一致,則產(chǎn)生語義缺陷[6].可維護(hù)性缺陷是專門考察程序注釋問題和變量、語句多余的缺陷類型.在此基礎(chǔ)上,試給出“實(shí)現(xiàn)與編碼錯(cuò)誤”缺陷分類,為缺陷預(yù)防提供依據(jù).
編程語言是航天嵌入式軟件源程序的實(shí)現(xiàn)語言,可以用以下的3元組來定義,即 <C語言、匯編語言、Ada語言>.
缺陷根源是軟件缺陷產(chǎn)生的根原因,通過考察近3年航天嵌入式控制軟件的缺陷產(chǎn)生原因,按照缺陷修復(fù)的方式進(jìn)行分類,可用以下10元組定義缺陷根源,即<用戶需求理解不完整、用戶需求理解錯(cuò)誤、功能設(shè)計(jì)不完整、功能設(shè)計(jì)錯(cuò)誤、性能設(shè)計(jì)不完整、編碼疏漏、對編程語言認(rèn)識不準(zhǔn)確、對使用環(huán)境認(rèn)識不準(zhǔn)確、對規(guī)范理解不準(zhǔn)確、操作錯(cuò)誤>.
表3 實(shí)現(xiàn)與編程錯(cuò)誤類型細(xì)化分類Tab.3 Implementation and coding error
缺陷嚴(yán)重等級是根據(jù)如果軟件缺陷一直存在,對航天任務(wù)造成的不利影響的嚴(yán)重程度來分類,如表4所示.
表4 缺陷嚴(yán)重等級Tab.4 Severity level of defects
通過給出航天嵌入式軟件缺陷分類方法,進(jìn)而分析產(chǎn)生各類缺陷的軟件過程原因,獲取不同軟件缺陷出現(xiàn)的頻度數(shù)據(jù),并以此為依據(jù)制定對應(yīng)的軟件過程管理與技術(shù)改進(jìn)兩方面的改進(jìn)措施,才能進(jìn)一步提高軟件質(zhì)量,提高軟件組織的生產(chǎn)能力.在未來的型號軟件研制中,可以結(jié)合本文給出的軟件缺陷分類方法進(jìn)行缺陷的統(tǒng)計(jì)分類和故障定位,并可有針對性的在不同的軟件測試階段采取不同的測試方法和測試工具,重點(diǎn)發(fā)現(xiàn)和暴露某一類別的軟件缺陷,提高測試的有效性.
[1] W ilfredo T P.Software fault tolerance a tutorial[R]. Langley Research Center,NASA,2000
[2] Putnam L H,Myers W.Measures for excellence:reliable software on time,within budget[M].New Jersey: Prentice Hall,1992
[3] 黃錫滋.軟件可靠性、安全性與質(zhì)量保證[M].北京:電子工業(yè)出版社,2002 Huang Z X.Software reliability and safety with quality assurance[M].Beijing:Publishing house of electronic industry,2002
[4] Ram C,Inderpal S B,Jarir K C,et al.Orthogonal defect classification-a concept for in-process measurements[J].IEEE transactions on software engineering,1992,18(11):943-956
[5] IEEE Std 1044-1993.IEEE standard classification for anomalies[S].The Institute of Electrical and Electronics Engineers,1993
[6] 胡璇,劉斌,陸民燕.軟件代碼缺陷分類及其應(yīng)用[J].計(jì)算機(jī)工程,2009,35(2):30-33 Hu X,Liu B,Lu M Y.Classification of software code errors and its application[J].Computer Engineering,2009,35(2):30-33
A C lassification M ethod for Spacecraft Em bedded Software Defects
DONG Xiaogang1,YANG Mengfei2
(1.Beijing Institute of Control Engineering,Beijing 100190,China; 2.China Academy of Space Technology,Beijing 100094,China)
Classification of software defects is the basis of software defect management.The concept of software defects,is presented in this paper,and some kinds of software defect classification methods and their merit and flaw are analyzed in detail.According to analysis of spacecraft embedded software development process and its defective types,a classification method is proposed for spacecraft embedded software defects,particular for defects types and its subclass of“implementation and coding errors”.
software defect;spacecraft embedded software;defect classification
V4
A
1674-1579(2012)05-0049-04
董曉剛(1974—),男,高級工程師,研究方向?yàn)楹教炱髑度胧杰浖_發(fā),軟件可靠性與安全性;楊孟飛(1962—),男,研究員,研究方向?yàn)榭臻g控制計(jì)算機(jī)系統(tǒng)和航天器控制系統(tǒng).
2012-02-03
DO I:10.3969/j.issn.1674-1579.2012.05.009