匡婷

摘要:軟件已成為武器裝備系統的核心,軟件質量影響著武器裝備系統的質量。軟件過程活動則是決定軟件質量的主要因素。GJB 5000A是一種基于過程持續改進的模型,在軍用軟件研制單位應用廣泛。該文基于GJB 5000A通過分析軟件工程活動、項目管理活動、質量控制活動對軟件質量的影響,并結合軟件質量保證的思想,提出一種軟件工程、項目管理、質量控制和軟件質量保證相結合的軟件質量管理框架。為廣大有志于制造高質量軟件產品的從業者提供參考。
關鍵詞:GJB 5000A;軟件質量管理;軟件工程;項目管理;質量控制;軟件質量保證
中圖分類號:TP311 文獻標識碼:A
文章編號:1009-3044(2020)10-0238-03
1背景
近年來,隨著信息產業的發展,軟件正成為武器裝備系統的核心戰斗力。但是,在軟件使用規模越來越廣泛的同時,軟件質量卻難以保證,質量問題會引起項目進度滯后、成本超預算、功能無法正常使用,嚴重的會導致整個項目以失敗而告終。要解決軟件的質量問題卻不容易,軟件產品和軟件研制過程不可見,軟件系統及其應用環境復雜多變,軟件測試又不可能窮盡,無法消除所有潛在的缺陷。所以,單靠技術方法不能確保軟件的質量,注重過程管理才是重點。
2軟件質量管理概述
2.1軟件質量管理的重要性
軟件是由承載媒體表達的信息所構成的一種知識產物嘲,是一種知識產品,它的開發效率難以預測,開發進度難以估計,產品質量難以保證。軟件在開發前期一旦存在較多的質量隱患,在測試階段需投入更多工作量以消除缺陷和進行回歸測試,會影響軟件正常交付;即使軟件如期交付,常常是以犧牲質量保工期為代價的,勢必需要投人更多的工作量用于維護。因此,應借助軟件質量管理控制軟件生存周期每一階段的質量,減少影響軟件質量的不利因素,從而控制整個軟件研制過程,提升軟件產品質量。
2.2影響軟件質量的因素
軟件行業經過多年實踐得到,軟件質量受人員、過程和技術的影響,是以三者為變量的函數,即Q=f(M,P,T),其中Q表示軟件質量;M表示人員;P表示軟件生產過程;T表示技術。在文獻[4,5]中通過分析得出軟件過程才是影響軟件開發質量的主要因素。質量專家戴明和朱蘭指出一個系統的質量主要取決于用來開發和維護該系統的過程的質量,這一原理同樣適用于軟件。
3軟件質量管理框架
GJB 5000A是一種基于過程持續改進的模型。它給出了軟件研制過程中管理活動和工程活動實踐的指導。在GJB 5000A過程活動實踐指導的基礎上,首先分析各過程活動對軟件質量產生的影響。
3.1過程活動對軟件質量的影響分析
在軟件開發過程中,軟件工程活動的質量直接決定著最終軟件產品的質量;質量控制活動通過同行評審、軟件測試等手段有效發現軟件質量問題并及時糾正;項目管理活動通過策劃、監控等管理手段保障項目順利開展,減少影響軟件質量的不利因素。
3.1.1軟件工程活動
1)軟件需求開發
需求是產生軟件質量問題最重要的原因川。有統計數據表明,在發現的軟件錯誤中,屬于需求分析和軟件設計的錯誤約占64%,屬于編碼的錯誤僅占36%;另據有關統計,軟件產品存在不完整性、不正確性,其中80%以上是需求分析錯誤導致,而且由于需求分析錯誤或偏差造成的根本性功能問題尤為突出。滿足顧客需求是軟件質量達標最基本的要求,如果對顧客的需求理解不正確或有歧義,即使軟件設計得再巧妙也不是顧客所需要的,從而會導致項目后期更改頻繁,進度滯后,嚴重時可能導致項目失敗,因此進行需求開發是軟件工程的首要任務。需求開發從引導、開發顧客需求開始,將顧客需求轉化成產品系統需求,再進一步分解成軟件配置項需求,并利用仿真、演示、評審、模擬運行等技術手段對需求進行確認。
2)軟件設計
軟件設計在軟件工程活動中處理核心地位,它是軟件需求與代碼實現之間的橋梁,可以說軟件質量是在軟件設計中建立的。軟件設計本質上是根據需求對代碼實現技術和方法進行定義。在進行軟件設計時,除了實現功能需求、性能、接口需求外,還需要綜合考慮安全性、保密性、可靠性、易用性、效率、可維護性、可移植性等方面的需求。如進行接口設計時,應明確定義接口所傳輸的數據內容,包括數據類型、數量、取值范圍、精度、單位等,若定義不清晰或設計不合理,不但影響功能實現,還會影響軟件的可靠性和安全性。軟件設計上的缺陷若未及時糾正對軟件開發后期的影響是很大的,不但影響代碼實現的質量,還會增加測試的工作量,導致進度和成本問題,甚至還影響軟件交付后的維護工作。
3)軟件實現
軟件代碼是軟件產品的實體,代碼質量直接決定了軟件質量。宏定義、變量、指針操作、數組下標、函數聲明、函數復雜度、浮點數、類型轉換、跳轉語句等會影響軟件的可靠性和安全性,代碼注釋、指針定義、函數參數、邏輯表達式、循環語句、分支語句等會影響軟件的可測試性。軟件工程師的編碼習慣和組織的編碼規范影響著軟件代碼的可讀性、可靠性、安全性和可測試性,從而直接影響軟件質量。軟件編碼一般應遵循符合設計、簡潔、低冗余的要求。
軟件工程活動還包括軟件測試,但軟件測試是一種重要的質量控制手段,將在下文中闡述。
3.1.2質量控制活動
同行評審、代碼審查、軟件測試等質量控制活動是提升軟件質量有效的手段。
1)同行評審
同行評審是一種由軟件開發同行對軟件工作產品進行驗證的方法,可發現軟件功能、邏輯或實現上的錯誤,驗證軟件是否滿足需求、設計等要求,是一種有效的發現軟件缺陷的手段,已被軟件行業譽為提高軟件質量的最佳實踐。軟件開發過程中,上一階段隱含的缺陷會傳遞到下一階段,并擴散放大。因此及時有效開展同行評審,可及早發現并排除缺陷,避免缺陷傳遞,有效保證軟件質量。
2)代碼審查
代碼審查是常用的驗證手段,可高效率的發現代碼缺陷。一般通過軟件開發人員交叉走讀代碼或會議討論的方式開展。通過代碼審查,可及時發現軟件源代碼違背編碼規范的問題;違背可靠性、安全性設計準則的問題;與設計文檔不一致的問題。
3)軟件測試
軟件測試是當前業界公認的保證軟件產品質量的有效手段。測試的目標是通過盡可能多的發現缺陷并及時糾正來保證質量。這個目標是通過開展一系列的測試活動達到的。單元測試是驗證底層的軟件單元是否完成了詳細設計的要求。集成測試是驗證部件是否滿足概要設計的要求,軟件單元集成后是否實現了功能、性能要求,接口是否一致。合格性測試是將產品置于預期的環境中,確認軟件是否完成了預期的用途。
3.1.3項目管理活動
通過對軟件開發過程中的各項活動進行管理,減少影響項目質量的不利因素,保證項目井然有序地開展。
1)項目策劃
“凡事預則立,不預則廢”,只有在開展軟件項目前制定可執行的計劃,項目方能有條不紊的實施。軟件項目在開發過程中存在各種未知的變數,若不加以管理控制,可能造成進度延遲,成本增加,或是嚴重的質量問題。因此,還需要維護項目計劃,在計劃的各項數據超閾值時應與相關方協調及時調整計劃,使項目整體可控。
2)項目監控
項目監控是按照項目計劃跟蹤項目進展情況、任務完成情況、風險狀態、質量問題處理情況、利益相關方參與度等方面,當出現較大偏差時,可采取糾正措施或及時調整計劃以確保問題解決,使項目能夠順利開展。
3)風險管理
軟件開發過程中存在著某些不確定的因素,當這些不確定的因素發生時會造成損失,甚至是嚴重的后果。這些不確定因素即為風險。如需求不明確、需求變更頻繁、需求內容不合理、設計風格不一致、軟件安全性考慮不足、人員能力不足、測試任務無法按期完成等風險均會對軟件質量產生負面影響。因此需要采取規范的風險管理手段來降低風險對質量的影響。
4)需求管理
滿足需求是保證軟件質量的宗旨。需求管理是通過對功能、性能、接口、可靠性、安全性、保密性等方面的需求進行雙向追溯來實現的。正向追溯確保無遺漏,反向追溯確保無多余,從而確保工作產品和需求的一致性。當需求發生變更時,通過需求雙向追溯矩陣,可清晰明確的處理與其相關的工作產品。需求管理可有效控制需求開發的成果,減少變更帶來的不利影響。
5)供方管理
當項目存在供方時,供方提供的產品質量直接影響著整個軟件的質量。若未對供方開展有效管理,可能導致最終獲取的產品功能、性能等無法滿足要求,或進度不滿足計劃。
6)配置管理
因為需求的不確定性或為修復缺陷,軟件變更難以避免。變更本身并不可怕,可怕的是失控的變更。配置管理通過配置控制來管理軟件變更,避免項目產生混亂,有助于在變更發生時仍能維護軟件質量,保證配置對象的一致性。
3.2軟件質量保證
經上文分析,軟件工程活動、質量控制活動和項目管理活動均會影響軟件質量。如何保證軟件工程活動、質量控制活動和項目管理活動有效?
軟件質量保證對所有軟件過程活動和工作產品開展客觀獨立的評價,保證過程活動和工作產品符合標準、規范等要求。若存在不符合的情況,通過交流、跟蹤等手段確保不符合得到妥善處理。另外,適時地向相關層反饋質量保證的結果,使相關方了解產品質量狀況。因此,通過實施軟件質量保證評價,可監督控制軟件工程活動、項目管理活動和質量控制活動的有效性,從而保證軟件質量。
3.3軟件質量管理框架
綜上所述,得到一種軟件工程活動、項目管理活動、質量控制活動和軟件質量保證評價四方面結合的軟件質量管理框架見圖1。
以瀑布模型為例,根據圖1,從軟件質量管理的角度,給出軟件研制過程主要活動建議,見圖2。
4結束語
軟件研制過程中,人人都需對軟件質量承擔一份責任。軟件開發人員負責制造高品質的軟件產品,項目負責人通過組織同行評審控制軟件開發過程中的質量,軟件測試人員通過開展充分的測試對軟件質量嚴格把關,領導層及項目負責人通過項目管理手段降低影響質量的不利因素,軟件質量保證人員通過監控過程和工作產品保證軟件質量。因此,高質量的軟件產品是扎實的軟件工程實踐、良好的項目管理技術、全面的質量控制手段和強有力的質量保證措施共同作用的結果。