原文位置1 ZDSD零缺陷軟件開發(fā)
原文位置圖1描述了被提議的針對確認(rèn)解決方案的層次模型。在
嵌入式系統(tǒng)開發(fā)項目中,模型包含了五個基本級別,雖然隨著對過程和項目/團(tuán)隊的目標(biāo)、中間產(chǎn)品和整體生產(chǎn)率的關(guān)注的不同,這些級別可以進(jìn)行調(diào)整。
原文位置1.1級別1
原文位置級別1應(yīng)該是對一個將要開發(fā)的系統(tǒng)的確定性的描述和必須要滿足的功能性的標(biāo)準(zhǔn),這被稱為高級需求。這個級別可以是詳細(xì)描述的,也可以不進(jìn)行詳細(xì)的描述,它的精確的定義可以推遲到第二級由設(shè)計人員,或者甚至是第三級的系統(tǒng)概要設(shè)計階段由實現(xiàn)人員去描述。級別1,高級需求也可以被叫做系統(tǒng)需求、用戶需求、產(chǎn)品需求,或者其他相同含義的稱謂。這些需求可以以數(shù)據(jù)庫方式保存,比如Telelogic DOORS或者以文本方式存在,比如Microsoft Word文檔。
原文位置1.2級別2
原文位置級別2,設(shè)計,包含對級別1所描述的系統(tǒng)進(jìn)行設(shè)計的一種表示方法。這一級,在大多情況下被稱為低層需求,低層需求必須首先建立起和級別1的聯(lián)接或者追蹤關(guān)系。這個聯(lián)接關(guān)系被稱為需求追蹤矩陣(RTM)。圖1的層次模型中的所有級別都直接或者間接的參與到這個RTM中。
原文位置級別2一般采用典型的三種設(shè)計過程中的一種來表示。通常,級別2可以用如下設(shè)計模型進(jìn)行描述,諸如統(tǒng)一建模語言(UML)或者一些專用的建模工具如Mathworks的Simulink和NI的Lab View等。或者作為選擇,級別2可以用設(shè)計規(guī)格說明進(jìn)行描述,該設(shè)計規(guī)格說明既描述了被開發(fā)軟件的自身特性,也包括了軟件系統(tǒng)的詳細(xì)接口信息。同樣,在快速原型或者特定情況下,可以采用體系架構(gòu)概念來達(dá)到項目中的關(guān)鍵要求,而不用采用一些更加詳細(xì)的正式的描述方式。
原文位置圖1:ZDSD模型
原文位置原文位置1.3級別3
原文位置 級別3,實現(xiàn),包含與級別2的描述保持一致的源代碼或匯編代碼的生成。在采用建模工具的自動代碼生成的情況下,級別2和級別3之間的聯(lián)接可以自動實現(xiàn),確保兩個級別之間的需求可追蹤性。然而,通常情況,是在
嵌入式操作系統(tǒng)供應(yīng)商,例如Green Hills或者Wind River或者LynxOS,提供的集成開發(fā)環(huán)境(IDE)中進(jìn)行“手工編碼”。
原文位置確認(rèn)行為典型情況下是從級別3開始。防止運(yùn)行時錯誤的最有效的方法就是提前排除他們。排除運(yùn)行時錯誤的第一步,也包括其它的實現(xiàn)的缺陷,就是系統(tǒng)的運(yùn)用代碼規(guī)則檢查。比如MISRA或者High Integrity C++這些由行業(yè)領(lǐng)導(dǎo)者開發(fā)出來的代碼規(guī)則,它們對源代碼實現(xiàn)的的很多方面,比如指針使用,
內(nèi)存管理和語法等進(jìn)行分析。這些代碼評審的結(jié)果,同時也包括苛刻性質(zhì)量檢查例如代碼復(fù)雜度和可維護(hù)性、以及包括全面的數(shù)據(jù)流分析,都必須在進(jìn)行級別4和級別5的驗證進(jìn)行之前完成。此外,為了對確認(rèn)行為的第一級進(jìn)行有效管理,必須要使用一個和整體的RTM集成的缺陷追蹤系統(tǒng)來實現(xiàn)對非一致性(不符合代碼規(guī)則和項目特定的質(zhì)量模型)的記錄,追蹤和解決。
原文位置在級別3,一個艱巨的挑戰(zhàn)是實現(xiàn)代碼和高層需求或者低層需求之間的映射。這個聯(lián)接要求理解代碼,至少是到函數(shù)級別,同時也需要文檔來描述和證明相應(yīng)的聯(lián)接關(guān)系。同時,為了有效的進(jìn)行第4級和第5級的確認(rèn)任務(wù),需求到源代碼的聯(lián)接必須要集成到RTM中。
1.4級別4
級別4是專注于確認(rèn)的第一級別。在這一級別,將對
嵌入式軟件進(jìn)行針對功能和針對結(jié)構(gòu)的測試??梢圆捎?,自頂而下,自底而上,或者兩種策略相結(jié)合的測試策略。這一級別可以采用模擬器,軟件仿真技術(shù),測試驅(qū)動自動生成器以及測試用例自動生成器。如果要進(jìn)行實際路徑測試,那么結(jié)構(gòu)測試中需要擴(kuò)展使用在第三級中應(yīng)用過分析和斷言方式的形式方法。不采用這些分析技術(shù),缺陷的因果關(guān)系是不能被有效的揭示出來。
至于功能測試,確認(rèn)任務(wù)是否被成功執(zhí)行的一個關(guān)鍵依據(jù)就是在第4級進(jìn)行的功能測試,能否在第5級(也就是目標(biāo)環(huán)境)進(jìn)行成功復(fù)現(xiàn)。不考慮主機(jī)和目標(biāo)機(jī)的兼容問題,確認(rèn)追蹤工作也是更加難以進(jìn)行的。
在第4級,RTM得到全面的擴(kuò)展,將包含比如測試用例標(biāo)識,測試規(guī)格說明書和測試結(jié)果在內(nèi)的相關(guān)確認(rèn)產(chǎn)品項。如果不一致被更正,那么測試結(jié)果中必須包括相應(yīng)的缺陷報告。第4級別的重點是在進(jìn)行目標(biāo)機(jī)測試和系統(tǒng)集成測試之前更正缺陷?;谥鳈C(jī)的測試是非常典型的一種節(jié)約費用的選擇,因為它很好的提供了早期測試手段,并且它是不依賴于目標(biāo)平臺實現(xiàn)最低層功能的最佳手段。
1.5級別5
對
嵌入式軟件的確認(rèn),特別是安全苛刻性軟件,最有代表性的是在第5級進(jìn)行。然而,在這一級,由于功能頻繁的鑒于硬件/軟件之間,使得缺陷的確定比第4級更加的困難。許多基于主機(jī)的測試手段,比如運(yùn)行時庫是不切實的,在多分區(qū)操作系統(tǒng)中是不可行的。另外一個層面的追蹤,從源代碼到目標(biāo)碼的追蹤也必須被覆蓋。
功能測試是第5級中的核心工作。另外,結(jié)構(gòu)覆蓋被用來度量功能需求和實現(xiàn)的最終追蹤關(guān)系。(也就是通過功能測試,是否還有未被覆蓋的代碼?如果有,為什么會存在沒有被覆蓋的代碼?)。在第4級中使用的所有測試產(chǎn)品項都會在第5級中涉及到。
2 ZDSD解決方案
LDRA公司提供的ZDSD解決方案完全適合在前面章節(jié)描述的ZDSD模型的要求。在下面圖2的中描述了ZDSD解決方案在V型軟件開發(fā)中的應(yīng)用。
圖2—軟件開發(fā)的V模型
3 LDRA產(chǎn)品介紹
只有LDRA工具套件主要包括Testbed/TBrun,TBreq以及RTInsight能夠能夠輔助客戶高效的實現(xiàn)ZDSD的軟件開發(fā)流程
3.1 Testbed功能介紹
LDRA開發(fā)的工具套件在達(dá)到團(tuán)隊軟件開發(fā)和維護(hù)的目標(biāo)的過程中,對六大活動提供幫助。
• 代碼評審(使用編碼規(guī)則)
• 質(zhì)量評審(分析代碼的復(fù)雜度,密度以及可測試性)
• 設(shè)計評審(分析接口,變量使用,控制流等)
• 單元測試(自動創(chuàng)建測試驅(qū)動和測試向量)
• 測試驗證(追蹤測試執(zhí)行并且分析代碼覆蓋率)
• 測試管理(測試用例管理,文檔管理)
1. 代碼評審
原文位置通過使用工具提供的強(qiáng)大的包括編碼規(guī)則檢查在內(nèi)的分析功能以及工具提供的全面的報告,可以實現(xiàn)對傳統(tǒng)代碼評審工作的擴(kuò)展。用戶可以選擇編程規(guī)則的最大的集合(Set),也可以配置用戶自己的規(guī)則集合,或使用行業(yè)認(rèn)可的標(biāo)準(zhǔn),例如:MISRA C/MISRA-C:2004??焖僮R別出違反規(guī)則的代碼并幫助開發(fā)人員快速的進(jìn)行修正。
原文位置原文位置原文位置因此,工具提供的代碼評審功能的一個主要特點是,提供了一個自動化的、有效的、可重復(fù)的過程,這個過程既節(jié)省了時間和資源又為開發(fā)者提供了詳細(xì)全面的標(biāo)準(zhǔn),這些是傳統(tǒng)的手工技術(shù)不能與之相比的。
原文位置2. 質(zhì)量評審
原文位置該功能是使用質(zhì)量度量可以使你快速確定您的軟件的質(zhì)量。
原文位置LDRA公司努力使質(zhì)量評審過程自動化:
原文位置其主要特征包括:
原文位置• 代碼度量提供對軟件質(zhì)量的度量,可以快速的以可視化的方式了解系統(tǒng)的復(fù)雜性。該特征是衡量軟件的清晰性、可維護(hù)性和可測試 性的元素;
原文位置• 提供詳細(xì)的、彩色的函數(shù)調(diào)用關(guān)系圖和程序控制流程圖;
原文位置• 自動生成報告,提供軟件質(zhì)量文檔;
原文位置原文位置工具的質(zhì)量評審一個主要特點是全面的代碼可視化、系統(tǒng)級的質(zhì)量度量和代碼的結(jié)構(gòu)化化簡指定,這些可以幫助提高對整個代碼的信心。
原文位置3. 設(shè)計評審
原文位置對源代碼(可以被編譯的)與最初的設(shè)計需求之間的一致性進(jìn)行評估是很重要的。
原文位置LDRA實現(xiàn)了對這項采用傳統(tǒng)手段需要花費大量時間和資源的工作的自動化。
原文位置一些主要特征包括:
原文位置• 接口分析、識別潛藏錯誤程序變量。工具對所有過程的參數(shù)以及函數(shù)的全局變量和返回值進(jìn)行全面分析;
原文位置• 工具全面深入理解代碼,代碼解析提供的代碼分析結(jié)果沒有“誤報”;
原文位置工具的設(shè)計評審幫助驗證設(shè)計規(guī)格說明是否被正確實現(xiàn)。
原文位置4. 單元測試
原文位置在軟件生命周期中隨著軟件開發(fā)的進(jìn)行,發(fā)現(xiàn)錯誤以及修正錯誤的成本是越來越大的,這個是一個大家公認(rèn)的事實。經(jīng)驗證明代碼開發(fā)早期的集中測試可以減少相關(guān)的成本。
原文位置單元測試在初始編碼階段提供了識別和改正錯誤的方法,幫助確認(rèn)和維護(hù)軟件單元/
模塊的一致性。
原文位置原文位置LDRA單元測試的主要優(yōu)點有:
原文位置• 自動生成測試驅(qū)動,不需添加腳本;
原文位置• 隨著源代碼的改變,對需要修改的測試數(shù)據(jù)進(jìn)行跟蹤和報告;
原文位置• 測試數(shù)據(jù)和結(jié)果很容易被保存,以便回歸測試;
原文位置• 通過直觀的圖形/命令行接口選項可以達(dá)到極高的測試效率;
原文位置• 交互式的測試工具可以直接進(jìn)行測試結(jié)果驗證和覆蓋率度量;
原文位置• 自動化的功能使測試人員不必詳細(xì)地了解被測試的代碼;
原文位置LDRA單元測試工具使測試過程自動化,解決了傳統(tǒng)的單元測試大量消耗時間和資源的問題。
5. 測試驗證
原文位置開發(fā)安全,商業(yè)和任務(wù)苛刻性軟件的過程必須堅持最嚴(yán)格的標(biāo)準(zhǔn)。在這些標(biāo)準(zhǔn)中一個重要的標(biāo)準(zhǔn),如DO-178B要求直觀的,管理和檢驗軟件覆蓋率,該標(biāo)準(zhǔn)在航空和防務(wù)工程中被廣泛應(yīng)用。
原文位置原文位置代碼的分析、測試和維護(hù)占了軟件開發(fā)生命周期的70%。LDRA的策略和技術(shù)可以應(yīng)用到這些相關(guān)工作中。
原文位置快速查明被測試軟件中不適當(dāng)?shù)牟糠?,并且按照一個高的標(biāo)準(zhǔn)來測試并減少回歸測試的成本,這是及其重要的。主要的目的是節(jié)省資源,提高產(chǎn)品質(zhì)量,縮短上市時間。
原文位置工具提供的測試驗證的主要特點是對測試進(jìn)行度量的可行性,詳細(xì)的語句、分支、測試路徑覆蓋率達(dá)到測試標(biāo)準(zhǔn)要求。
原文位置6. 測試管理
原文位置因為充分理解一個系統(tǒng)可能需要花費很長的時間和大量的人力、物力。LDRA工具套件幫助開發(fā)者和測試工程師理解、歸檔、維護(hù)大的復(fù)雜的系統(tǒng)。
原文位置原文位置文檔編制幫助達(dá)到質(zhì)量標(biāo)準(zhǔn)的過程,如ISO 9001:2000。
原文位置測試管理的一個主要特點是為評審提供整個系統(tǒng)的文檔和版本控制,也幫助減少維護(hù)的成本。
原文位置3.2 TBreq功能介紹
原文位置1.需求測試和驗證
原文位置TBreq通過和包含了LDRA Testbed和TBrun(單元測試工具)的LDRA工具包的集成, 能夠提供一套完整的解決方案來幫助測試團(tuán)隊實現(xiàn)測試規(guī)格說明,單元測試場景,測試數(shù)據(jù)以及代碼覆蓋率驗證與您的高層次的設(shè)計規(guī)格說明之間的映射。TBreq直接和你的管理工具(DOORS,ReqPro,Word,Excel)接口來保證在整個軟件生命周期中實現(xiàn)需求跟蹤以及保證對于需求覆蓋的完整性。
原文位置在LDRA工具包里,TBreq根據(jù)需求直接生成測試規(guī)格說明和可執(zhí)行的測試用例。測試結(jié)果直接自動的返回到需求管理工具,從而實現(xiàn)“round-trip的需求跟蹤驗證”。
原文位置TBreq的一個主要的特點是它從任一需求管理工具和數(shù)據(jù)源中獲取需求(高層的需求,派生出來的需求,低層的需求)的能力;同時它提供一個直觀的接口進(jìn)行跟蹤,產(chǎn)生測試用例和需求驗證。所有的這些特點使得TBreq成為當(dāng)今市場上最有效的針對需求管理的解決方案。
原文位置2.主要優(yōu)點
原文位置TBreq提供了質(zhì)量和驗證標(biāo)準(zhǔn)對于實現(xiàn)多層次,雙向需求追蹤和沖突分析所必須的特性:
原文位置• 和大多數(shù)主流的第三方需求管理工具實現(xiàn)集成來增加需求的可見性,并且實現(xiàn)從設(shè)計,編碼到測試的追蹤
原文位置• 生成需求測試追蹤矩陣
原文位置• 從源代碼和需求中生成測試規(guī)格說明,同時自動生成測試用例
原文位置• 和LDRA Testbed(實現(xiàn)代碼評審,質(zhì)量評審,設(shè)計評審和覆蓋率分析),TBrun(實現(xiàn)自動單元測試,包括測試驅(qū)動生成,測試用例生成,測試報告生成,主機(jī)/目標(biāo)機(jī)測試和回歸測試)無縫集成
原文位置• 需求的測試覆蓋分析和沖突分析
原文位置• 自動偵測需求,源代碼和測試數(shù)據(jù)的變更
原文位置• Upstream和Downstream的沖突分析能夠進(jìn)行回歸風(fēng)險管理
原文位置 原文位置3.接口
原文位置TBreq是將需求,設(shè)計,開發(fā),測試和驗證工作與您的需求管理工具和設(shè)計開發(fā)工具鏈連接起來的最簡單的解決方案:
原文位置• 文本處理工具:Word, Excel, Access, PowerPoint, PDF, . . .
原文位置• 需求管理工具:DOORS, RequisitePro, or any published XML interface
原文位置• 項目管理工具:Microsoft Project
原文位置• UML 工具:Rhapsody, Artisan, Rose, . . .
原文位置• 建模和設(shè)計工具:Simulink, Statemate, Scade, Stood, . . .
原文位置• 源代碼文件:C, C++, C#, Ada, . . .
原文位置• 配置管理工具:Clearcase, CVS, PVCS, Dimensions, SYNERGY/CM, . . .
原文位置3.3 RTInsightPro
嵌入式測試系統(tǒng)
原文位置隨著嵌入式實時系統(tǒng)的廣泛應(yīng)用,嵌入式軟件可靠性越來越成為系統(tǒng)能否正常運(yùn)行的關(guān)鍵,由于傳統(tǒng)主機(jī)平臺軟件測試工具的局限性,給
嵌入式平臺軟件測試帶來很大的困難。
原文位置RTInsightPro充分考慮到
嵌入式軟件實時性特點,結(jié)合使用LDRA公司靜態(tài)分析與代碼自動插裝技術(shù),可成功用于實時
嵌入式系統(tǒng)集成與系統(tǒng)測試,提供代碼覆蓋率分析、涵數(shù)性能分析、
內(nèi)存泄露分析,任務(wù)性能分析,變量監(jiān)控、堆棧監(jiān)控及系統(tǒng)跟蹤功能。
原文位置原文位置RTInsightPro技術(shù)特點
原文位置通過采用LDRA公司Testbed軟件測試工具靜態(tài)分析與代碼插裝技術(shù),及RTInsightPro硬件可實時地
嵌入式系統(tǒng)進(jìn)行代碼覆蓋率分析與性能分析。由于采用代碼插裝可準(zhǔn)確的判斷代碼執(zhí)行情況,同時由于采用RTInsightPro高速虛擬端口技術(shù)使得代碼插裝量可控制在每個特征點(即函數(shù)入口、出口,程序分支點)一到兩條指令或語句(代碼增加量可控制在10%之內(nèi)),大大減少插裝代碼增加對被測系統(tǒng)的影響。
原文位置RTInsightPro功能
原文位置RTInsighPro提供代碼覆蓋率分析、函數(shù)性能分析、變量監(jiān)控、堆棧使用監(jiān)控、
內(nèi)存泄露分析、任務(wù)性能分析及系統(tǒng)跟蹤等功能。
原文位置• 覆蓋率分析
原文位置RTInsightPro結(jié)合Testbed針對硬件輔助方式專用的插裝,可以在對系統(tǒng)影響最小的情況下提供下列覆蓋率指標(biāo):
原文位置• 語句覆蓋率;
原文位置• 分支覆蓋率;
原文位置• 調(diào)用覆蓋率;
原文位置• 外部中斷使用記數(shù);
原文位置原文位置• 函數(shù)性能分析
原文位置采用和覆蓋率分析不同的專門的性能插裝方式,RTInsightPro可以在對系統(tǒng)實時性能幾乎沒有影響的情況下,提供以下時間性能指標(biāo):
原文位置• 系統(tǒng)總體執(zhí)行時間;
原文位置• 每個程序最大執(zhí)行時間;
原文位置• 每個程序最小執(zhí)行時間;
原文位置• 每個程序累計執(zhí)行時間;
原文位置• 每個程序執(zhí)行次數(shù);
原文位置• 中斷服務(wù)程序響應(yīng)時間;
原文位置原文位置•任務(wù)性能分析
原文位置對于采用實時多任務(wù)操作系統(tǒng)的被測試系統(tǒng),可以提供下列和任務(wù)相關(guān)的性能指標(biāo):
原文位置• 任務(wù)執(zhí)行的最大時間;
原文位置• 任務(wù)執(zhí)行的最小時間;
原文位置• 任務(wù)執(zhí)行的累計時間;
原文位置原文位置• 變量監(jiān)控分析
原文位置可以實時對系統(tǒng)中的變量使用情況進(jìn)行監(jiān)控和記錄,可同時實時監(jiān)控8個系統(tǒng)變量和2個數(shù)組,提供下列功能:
原文位置• 記錄變量的最大值;
原文位置• 記錄變量的最小值;
原文位置• 記錄變量的被寫操作次數(shù);
原文位置• 堆棧監(jiān)控分析
原文位置對于堆棧設(shè)置在
內(nèi)存中的系統(tǒng),可以對堆棧的使用情況進(jìn)行實時監(jiān)控,提供下列功能:
原文位置• 設(shè)置堆棧使用溢出報警上限;
原文位置• 設(shè)置堆棧使用溢出報警下限;
原文位置• 給出堆棧當(dāng)前實時使用情況
原文位置原文位置原文位置•
內(nèi)存泄露分析
原文位置對于采用了動態(tài)內(nèi)存分配的系統(tǒng),RTInsightPro可以實時監(jiān)控動態(tài)
內(nèi)存的使用情況,可以輔助用戶發(fā)現(xiàn)以下問題:
原文位置•
內(nèi)存分配了未釋放;
原文位置•
內(nèi)存重復(fù)釋放;
原文位置• 釋放未分配的
內(nèi)存;
原文位置原文位置等
內(nèi)存使用方面的異常,同時幫助用戶定位問題;
原文位置• 跟蹤分析
原文位置RTInsightPro可以對系統(tǒng)的總線狀態(tài)進(jìn)行實時追蹤,結(jié)合對源代碼的分析信息,可以提供源代碼級的追蹤分析,具體功能包括:
原文位置• 提供128K的總線跟蹤分析功能;
原文位置• 提供大概100萬行源代碼級追蹤;
原文位置• 可實時跟蹤記錄系統(tǒng)執(zhí)行狀態(tài);
原文位置• 可設(shè)置靈活的觸發(fā)條件與記錄條件;
原文位置• 可以和外部硬件觸發(fā)進(jìn)行配合;
原文位置原文位置原文位置參考文獻(xiàn):
原文位置LDRA 公司 Zero Defect Software Development (ZDSD)_Manifesto Version 2.12