qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請訪問 http://qaseven.github.io/

          實時控制軟件的質(zhì)量

           如何確保嵌入式實時控制軟件的質(zhì)量?對這類軟件的生產(chǎn)過程如何進行有效的質(zhì)量控制?這是一個重要的研究課題。為解決軟件危機而產(chǎn)生和發(fā)展起來的軟件工程成功地解決了軟件開發(fā)中存在的許多問題。它不僅對軟件開發(fā)、設(shè)計和生產(chǎn)有直接影響,而且對提高軟件質(zhì)量有顯著成效。實踐表明,使用軟件工程方法,可達到一般的質(zhì)量要求。但當軟件質(zhì)量要求更高時,則必須在實施軟件工程的同時,采取一些專門的可靠性工程技術(shù)和方法,以保證需求的可靠性。

            軟件工程是指按照工程的規(guī)律來組織軟件的生產(chǎn)與開發(fā)。軟件工程化要求以軟件質(zhì)量控制為核心,緊緊抓住軟件生產(chǎn)方法、需求分析、軟件設(shè)計、軟件生產(chǎn)工具、測試、驗證與確認、評審和管理等8個主要環(huán)節(jié)(圖1)。

            軟件生產(chǎn)方法

            軟件是產(chǎn)品。從產(chǎn)品的意義上說,所謂軟件開發(fā)應(yīng)為軟件生產(chǎn)。軟件應(yīng)采用工程化、結(jié)構(gòu)化和規(guī)范化方法進行生產(chǎn)。軟件工程化是指使用軟件工程的理論、技術(shù)、要求和管理等來規(guī)范軟件開發(fā)過程中的全部活動。硬件生產(chǎn)已有一套成熟的工程化方法,軟件要向硬件學(xué)習(xí),使軟件硬化,把軟件看作是軟件工廠中的產(chǎn)品。

            軟件規(guī)范化是指在軟件生存周期中,軟件的生產(chǎn)活動必須嚴格遵循各項軟件規(guī)范和標準。經(jīng)驗證明,沒有規(guī)范就沒有產(chǎn)品,也就沒有軟件。執(zhí)行規(guī)范必須動真格。執(zhí)行規(guī)范工作量是大些(工作量主要在文檔、審查、驗證、評審和管理上),但受益卻是明顯的。由于軟件開發(fā)過程規(guī)范提高了軟件質(zhì)量,這樣不僅減輕了損失,而且還促進了軟件的生產(chǎn)進度,提高了軟件的生產(chǎn)率。

            軟件結(jié)構(gòu)化是指軟件生產(chǎn)過程中采用了結(jié)構(gòu)化分析和結(jié)構(gòu)化設(shè)計方法。

            軟件需求分析

            軟件需求分析的目的是使軟件設(shè)計人員和用戶之間進行全面和深入的溝通,以明確用戶所需的究竟是一種什么樣的軟件。需溝通的主要內(nèi)容有:將要開發(fā)的軟件所涉及的概念、定義、目標、指標、功能、控制邏輯、算法、環(huán)境、時序、執(zhí)行過程和特點等。通過需求分析產(chǎn)生的軟件規(guī)格說明書是此后軟件設(shè)計、調(diào)試和測試工作的基礎(chǔ),是軟件評審、鑒定和驗收的依據(jù)之一。因此,需求分析是軟件生產(chǎn)中的一個首要步驟。一份軟件規(guī)格說明書的質(zhì)量優(yōu)劣,一方面取決于需要分析深入的程度,另一方面取決于系統(tǒng)分析員刻畫軟件需求的正確性、完整性、合理性和一致性達到的程度。

            眾所周知,軟件怕修改,更怕需求變更。原因在于:

            ● 軟件修改的工作量大,關(guān)鍵軟件的任何修改,必須經(jīng)歷一個調(diào)試、測試、驗證與確認的步驟。

            ● 花費的代價高,經(jīng)試驗考核過的軟件,又要更改軟件需求,即使是只改了一個參數(shù),也需要對更改的軟件作重復(fù)考核。有的實時控制系統(tǒng)一次試驗的代價是相當大的。

            ● 軟件修改的牽涉面廣,往往有牽一發(fā)而動全身的問題。尤其是由多個分系統(tǒng)組成的系統(tǒng)(例如軍事指揮的C3I系統(tǒng)),任何·一項修改均要考慮是否會影響其他的分系統(tǒng)。

            軟件可靠性需求分析要求全面、細致和深入。

            不難看出,軟件需求分析的過程,也是軟件設(shè)計方案的醞釀過程。通過分析應(yīng)得出用戶需求的正確性、合理性和完整性的結(jié)論;同時,也應(yīng)得出軟件付諸實現(xiàn)的可行性、可靠性和安全性的結(jié)論。軟件需求分析的銜接關(guān)系見圖2。





          軟件設(shè)計

            軟件也和硬件一樣,它的質(zhì)量是設(shè)計出來的,生產(chǎn)出來的。其中,設(shè)計對軟件質(zhì)量具有關(guān)鍵性的影響。設(shè)計的重要性可從圖3看出,其中(a)為經(jīng)歷了設(shè)計步驟后的效果,在軟件使用和維修階段,軟件的問題少;反之,(b)為跳過設(shè)計步驟,到了使用和維修階段,軟件問題成堆,到了不可收拾的地步。基于這種情況,應(yīng)強調(diào):軟件設(shè)計未完成,不得轉(zhuǎn)入軟件編碼階段。

            良好的軟件設(shè)計與所采用的軟件設(shè)計方法、設(shè)計工具和設(shè)計準則有關(guān)。軟件設(shè)計方法主要有面向數(shù)據(jù)流的設(shè)計、面向?qū)ο蟮脑O(shè)計和面向數(shù)據(jù)的設(shè)計方法等。這些方法均有其優(yōu)缺點和不同的應(yīng)用領(lǐng)域。目前,大多數(shù)嵌入式的實時控制軟件使用的是面向數(shù)據(jù)流的設(shè)計方法。該方法的目標是以一種全局的軟件觀點和體系結(jié)構(gòu)設(shè)計的角度派生出程序結(jié)構(gòu)。

            面向數(shù)據(jù)流的設(shè)計又稱為結(jié)構(gòu)化設(shè)計。它強調(diào)模塊化、層次化和自頂向下等設(shè)計思想。這些思想的根本目的是對復(fù)雜問題的解決采用一個簡化過程以獲得滿意的答案。通過這種簡化,縱有千頭萬緒也能理得清清楚楚。一個設(shè)計準則是要將復(fù)雜的問題簡化,切忌將簡單的問題復(fù)雜化。好的程序設(shè)計語言,無疑對設(shè)計高質(zhì)量的軟件是有益的。例如,Ada語言,與一般語言比較,它所特有的一些語言成分旨在突出軟件可靠性和安全性,便于軟件維護,便于實行程序的層次式管理和提高程序的易讀性、高效性等。

            軟件可靠性設(shè)計主要將軟件的檢錯、避錯、容錯和異常處理技術(shù)灌輸?shù)杰浖O(shè)計中去,設(shè)計時應(yīng)處處關(guān)心:

            ● 控制邏輯的完整性;

            ● 軟件與硬件、軟件與軟件界面之間的協(xié)調(diào)性;

            ● 人機交互的有效性;

            ● 信息交換的正確性;

            ● 設(shè)備控制的安全性;

            ● 時序控制的合理性;

            ● 數(shù)學(xué)運算中變量定義域的合法性。

            軟件生產(chǎn)工具

            軟件生產(chǎn)的主要工具是軟件試驗臺(Software Testbed)或軟件開發(fā)平臺。在軟件需求分析的同時,就要考慮到這類軟件開發(fā)環(huán)境的創(chuàng)造。它應(yīng)滿足下列要求:

            (1)它的組成、結(jié)構(gòu)、性能、功能和工作的方式與狀態(tài),力求與實際系統(tǒng)一致。優(yōu)點是:

            ● 它與實際系統(tǒng)出現(xiàn)的故障現(xiàn)象是一樣的,便于故障隔離。

            ● 軟件試驗臺與實際系統(tǒng)的軟件可彼此互相復(fù)制,便于軟件開發(fā)過程交替上升。

            ● 具有互補性,試驗臺有局限性的問題可在實際系統(tǒng)解決;實際系統(tǒng)上有困難的,代價太大的檢測活動可在試驗臺上進行。

            (2)配上多媒體工作站,提供軟件測試過程中綜合信息的顯示和生產(chǎn)真實工作環(huán)境中的音響效果。

            (3)配備實時數(shù)據(jù)采集器。

            (4)能支持實時與非實時兩種運行方式的調(diào)試活動。

          軟件試驗臺是輔助軟件調(diào)試、測試、試驗和驗證的重要工具。在某種程度上可以得出這樣的結(jié)論:沒有軟件試驗臺就不能順利地開發(fā)出實時控制系統(tǒng)軟件。原因在于:

            (1)這類復(fù)雜的軟件在實際系統(tǒng)上開發(fā)是不可能的,其代價太大,效率太低,效果太差。

            (2)軟件開發(fā)是個做細致研究、分析和不斷探索的過程,軟件試驗臺能適應(yīng)這種工作方式。

            (3)它是軟件編程、調(diào)試、測試、集成和試驗的綜合環(huán)境。

            (4)它是支持軟件原型化開發(fā)方法的重要手段。

            一般來說,實時控制系統(tǒng)軟件的第一個原型是在軟件試驗臺上開發(fā)出來的。有了軟件原型,就有了與用戶深入討論、分析和確認軟件需求的基礎(chǔ)。實踐證明,經(jīng)過軟件試驗臺測試通過的軟件,基本上能用于實際實時控制系統(tǒng)的系統(tǒng)聯(lián)調(diào)、測試、試驗和系統(tǒng)驗收。

            軟件測試

            從軟件生存周期看,軟件測試是卡住軟件質(zhì)量,尤其是卡住軟件可靠性的最后一道關(guān)口。但軟件測試并不僅僅局限于這個階段,而應(yīng)貫穿于軟件開發(fā)的全過程(見圖4)。應(yīng)解決這樣一個認識問題——用于實時控制系統(tǒng)一類的復(fù)雜軟件,自認為沒有錯誤的想法是不切合實際的。因此,測試的主要目的是:

            1)對軟件的質(zhì)量或可接受性作出判斷;

            2)發(fā)現(xiàn)問題。

            從圖4看出,會產(chǎn)生錯誤的階段是在需求說明、設(shè)計和編程過程中。這些錯誤若不排除,均會遺傳到測試階段,甚至?xí)z傳到使用階段。利用測試用例測出問題進行故障分類、故障隔離和故障消除等步驟,直到獲得滿意的測試結(jié)果為止。

            測試用例的編寫格式和內(nèi)容如圖5所示。測試的設(shè)計。難就難在試圖利用這組測試用例能找出軟件的全部問題。格式中含有測試管理信息——測試用例標識和執(zhí)行史。測試用例標識是按一定規(guī)律統(tǒng)一為每個測試例賦予的代號,便于需求追蹤。執(zhí)行史中有測試日期、測試結(jié)果(給出結(jié)論:通過/失敗)、版本號和主管的測試者簽字,這些都是有保存價值的資料。測試用例是需要精心設(shè)計、編寫、評審、使用、管理和保存的。


            軟件測試要求在測試過程中,采集軟件可靠性數(shù)據(jù),并利用軟件可靠性模型進行可靠性評估。分析其是否達到了預(yù)期的可靠性要求。并據(jù)此作出該軟件能否放行的決斷。若不滿足要求,需繼續(xù)進行測試,直到滿足要求為止。可見這是一項十分花精力的活動。

           軟件驗證與確認

            軟件驗證(Verification)和確認(Validation),簡稱為V&V 或V2。驗證和確認的區(qū)別在于:驗證關(guān)心的是確保軟件模塊或功能內(nèi)在的正確性;確認則表明要與規(guī)定的需求進行比較是否滿足要求,它所關(guān)心的是該軟件產(chǎn)品的價值。

            軟件驗證與確認是貫穿于軟件開發(fā)過程中十分細致的軟件檢驗活動。每個開發(fā)階段的結(jié)果可認為是下一開發(fā)階段的一個規(guī)格文件,但要進入下一階段之前必須對該結(jié)果作出確認。驗證和確認的主要方法有:代碼走查、審查、測試和正確性證明等。代碼走查就是對軟件文檔進行書面檢查。它通過人工模擬執(zhí)行源程序的過程,檢查軟件設(shè)計的正確性。人工模擬也像計算機執(zhí)行那樣,可以仔細推敲、校驗和核實每一步的執(zhí)行結(jié)果,進而確定其執(zhí)行邏輯、控制模型、算法和使用參數(shù)與數(shù)據(jù)的正確性。

            審查是軟件驗證和確認中的一個主要方法,可彌補其他方法的一些不足之處。它是一種用形式的、有效的和經(jīng)濟的方法查找設(shè)計和編程中的錯誤。審查的主要目的是1)找出軟件中的缺陷;2)核實是否符合需求;3)早期生產(chǎn)評價;4)過程評價等。由第三方進行軟件評測工作是十分重要的,其評測工具軟件對軟件進行靜態(tài)的和動態(tài)的評測,能發(fā)現(xiàn)軟件設(shè)計的缺陷、瓶頸和多余物等。值得指出的是,用于軟件測試的各種方法、技術(shù)、工具和措施等,對提高軟件的可靠性都是必要的,但不是充分的。這就表明,其中任何一個手段,均不能絕對保障軟件的可靠性,但只要能發(fā)現(xiàn)軟件中任何一個微小的錯誤,就起到了它的作用。

            軟件評審

            從某種意義上說,軟件中的多數(shù)錯誤是人為的。軟件評審是軟件生產(chǎn)過程中過濾軟件錯誤的一個“濾波器”。軟件評審涉及評審的組織機構(gòu)、管理、準則、類別、內(nèi)容、文件和要求等。

            一般要求在軟件研制階段的里程碑點進行軟件評審。評審的主要類別有:軟件定義評審、軟件需求評審、概要設(shè)計評審、詳細設(shè)計評審、軟件實現(xiàn)評審和軟件驗收評審等。

            評審的原則:

            ● 某階段未通過階段評審不得進入下一個軟件研制階段;

            ● 評審時對事不對人,評審的是產(chǎn)品,而不是評審生產(chǎn)者;

            ● 評審就要挑刺,找問題、缺陷和隱患;

            ● 評審組的人員面越廣越好;

            ● 評審組不作無休止的爭論和辯駁,將爭論點記錄下來,供以后甄別;

            ● 評審只是提出問題,沒有解決問題的任務(wù);

            ● 使用“評審檢查單”以提高評審的效果;

            評審的作用:

            ● 技術(shù)把關(guān),避免軟件人員的想當然;

            ● 概念溝通,吸收用戶和總體人員參加,審查軟件人員理解的正確性;

            ● 集思廣益,吸收有關(guān)的分系統(tǒng)人員參加,從不同側(cè)面確認軟件的協(xié)調(diào)性;

            ● 總結(jié)匯報,使實時控制系統(tǒng)總指揮、總設(shè)計師了解軟件生產(chǎn)的進度、問題和要求,作出新的部署。

            評審很容易走過場、走形式。評審效果的好壞,與當事人(軟件人員)密切相關(guān)。基于有問題才需要評審,不能輕信自己的軟件,導(dǎo)致對評審產(chǎn)生對立情緒。對評審出的問題進行整理、分類和匯總,不忽視任何一個細小的疑點。

            軟件管理

            科學(xué)的管理能夠出可靠性、出效果、出效益。軟件的管理工作不完善、不嚴格,是引起意外事故的原因之一。軟件管理主要包括軟件項目管理、軟件配置管理、軟件可靠性管理和軟件質(zhì)量管理等方面。

            軟件項目管理的內(nèi)容包括軟件開發(fā)過程管理、軟件可靠性度量、風(fēng)險管理(包括風(fēng)險分析和估計)、確定項目任務(wù)、建立可操作的工程計劃等。軟件項目管理是軟件管理工作的第一層。需要強調(diào)的是,它不是一個階段,也不僅僅是個步驟,而是貫穿于整個軟件開發(fā)工程中的一個層次。從其管理內(nèi)容來看,這是一種十分重要的管理工作。其管理的好壞,直接影響產(chǎn)品的質(zhì)量。這項管理尚處于起步狀態(tài),是個薄弱環(huán)節(jié)。軟件配置管理是軟件人員和管理人員確定、組織和開展軟件修改的手段,目的是在軟件修改過程中設(shè)法少犯差錯來最大限度地提高軟件產(chǎn)品的生產(chǎn)率。軟件配置管理涉及軟件配置項和基線的確定。

            軟件配置項可理解為在軟件生產(chǎn)的某個階段應(yīng)具備的軟件文檔和保存軟件的介質(zhì)等。軟件基線(基準)又稱里程碑。軟件配置項經(jīng)軟件驗證、確認、評審和認定后,形成了軟件基線,也就成了該階段的一個基準。下一個階段只能在這個基準上進行開發(fā)活動。

          軟件配置管理要求:

            ● 軟件修改必須遵循軟件更改規(guī)范;

            ● 未經(jīng)批準的更改,任何人無權(quán)修改;

            ● 更改后必須測試、驗證和確認;

            ● 軟件驗收,必須對相應(yīng)的軟件進行評審。

            具備評審的條件包括:相對該基線的軟件配置項齊全、有測試結(jié)果和測試分析報告及軟件優(yōu)化報告。

            文檔管理是一項十分艱巨而又瑣碎的工作,要求:文檔編寫必須規(guī)范、文實相符、文文相符、描述具有一致性、確切性和簡明性、簽署完整、職責(zé)明確。軟件可靠性管理作了一些初步的嘗試。在軟件生產(chǎn)過程中,設(shè)計了軟件可靠性數(shù)據(jù)采集表格。對軟件中的需求、模型、設(shè)計、編碼和定義域等方面的錯誤均要填表。填寫產(chǎn)生該錯誤的時間(計算機執(zhí)行的累計時間)、錯誤性質(zhì)、出錯原因和排除錯誤的結(jié)果等。

            主要問題與解決方法

            對實時控制系統(tǒng)軟件工程化的重要性的認識尚處于起步階段,重視程度也不平衡。主要問題:

            (1)部分系統(tǒng)的軟件開發(fā)由硬件人員承擔(dān)。硬件、軟件、模型設(shè)計均由一個組完成,仍是典型的“自編、自導(dǎo)、自演”小作坊的工作方式。

            (2) 還不太習(xí)慣于軟件工程化、規(guī)范化、結(jié)構(gòu)化和模塊化的軟件生產(chǎn)方法。往往跳過了軟件設(shè)計階段,而是先有編碼,為了軟件檢查才補設(shè)計。

            (3)缺少配套的軟件測試工具。試圖利用實時控制系統(tǒng)進行軟件的調(diào)試、測試、驗證、確認和試驗工作,這樣的軟件測試必然是不完整的,也是有局限性的,更是不科學(xué)的。

            (4)實時控制系統(tǒng)軟件可靠性工程的研究是自發(fā)的,未納入實時控制系統(tǒng)研制計劃,影響這項工作的深入開(5)需要解決實時控制系統(tǒng)軟件工程化方面的若干模糊認識:

            ● 軟件就是編程;

            ● 沒有測試工具照樣可以開發(fā)出軟件;

            ● 舍不得在軟件可靠性上化成本;

            ● 出了問題,才發(fā)現(xiàn)軟件似乎比硬件更重要。

            (5)實時控制系統(tǒng)軟件可靠性指標不好定。原因是軟件可靠性的評估涉及模型、方法、工具和條件等問題。當前,要求軟件的可靠性為100%,對軟件是不公正的,也是過于苛刻的。

            建議

            (1)軟件可靠性工程也是一項涉及面很廣的系統(tǒng)工程,應(yīng)加強這項技術(shù)的研究力度。尤其要結(jié)合具體實時控制系統(tǒng)設(shè)置研究課題,使實時控制系統(tǒng)軟件的生產(chǎn)過程同時也是軟件可靠性工程的實施過程。使自發(fā)的可靠性工作成為有計劃、有組織和有目標的研究工作。

            (2)適用于嵌入式計算機的實時軟件,例如實時操作系統(tǒng)、Ada語言等,應(yīng)像美國國防部那樣,要強制推行。

            (3)計算機技術(shù)發(fā)展很快,軟件技術(shù)及軟件可靠性工程技術(shù)也發(fā)展很快,應(yīng)對重點實時控制系統(tǒng)的軟件人員定期組織培訓(xùn)。

            (4)為了解決軟件生產(chǎn)的小作坊問題,可否考慮逐步推行實時控制系統(tǒng)軟件人員考核制,作出資格認證。



          posted on 2011-12-01 15:47 順其自然EVO 閱讀(144) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          <2011年12月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 连江县| 苍溪县| 象山县| 枣阳市| 如东县| 庄浪县| 东方市| 曲沃县| 上林县| 满洲里市| 盐亭县| 沂南县| 始兴县| 理塘县| 南涧| 河曲县| 嵊泗县| 英吉沙县| 尚义县| 绍兴县| 龙口市| 旌德县| 长子县| 马边| 碌曲县| 洛隆县| 乐安县| 扬中市| 静乐县| 东山县| 民勤县| 高唐县| 花莲县| 商水县| 凤城市| 永胜县| 浦城县| 荥阳市| 祥云县| 保定市| 舞钢市|