張彥君 王宇飛
總裝駐常州某企業軍代室
軟件工程化是用工程的方法開發軟件,即采用可定義、可量化、可再生產和管理的工程實踐方法,實現軟件產品的開發過程。軟件工程化是系統化、規范化、數量化地進行裝備軟件開發和維護最為有效的途徑,是對裝備軟件采取有組織的質量保證和全面質量管理的重要方法和手段,是提高軟件質量和可靠性水平的必要保證。隨著我軍向實現機械化和信息化的目標跨越式地邁進,大量新型裝備陸續開始研制或投入生產,提高裝備軟件質量重要性日益突出,積極推進軟件工程化,將有效的解決當前裝備軟件質量管理工作中存在的問題,提高裝備軟件質量水平。
近年來,陸續頒布了一系列有關軟件管理方面的國家軍用標準和文件,這些標準和文件在一定程度上得到了貫徹和實施。然而,盡管部分科研生產單位按軟件工程化的要求作了有益的探索,目前裝備在研制和生產中軟件質量水平有所提高,軟件質量管理工作取得了一定進展,但在科研生產中存在的問題仍然很多:
表現在:管理工作未制度化,沒有建立行之有效的軟件項目負責制和分工協作機制,往往是個人大包大攬,個人能力決定了軟件的質量;軟件工作缺乏計劃性,即使制訂了項目計劃,軟件人員并不按計劃行事;缺乏必要的配置管理,軟件及其組成單元、文檔的版本較為混亂,隨意變動需求的現象時有發生。
這是由于軟件開發的各個階段沒有開展制度化的評審活動,軟件開發中沒有進行規范化的軟件測試。
一方面科研生產部門沒有制定切合本單位實際的軟件工程管理標準,使軟件開發和管理工作在一定程度上無章可循;另一方面現有的標準由于可操作性不強在實際工作中往往不能得到有效貫徹。
如:管理者不能很好的按標準和規定行事,管理工作存在較大的隨意性;在軟件開發工作中,開發人員較少進行需求分析和設計等關鍵性的前期工作,一般更多的是關注軟件的功能性要求,而忽略其它方面的要求。
體現在:軟件人員水平參差不齊,項目人員的安排也不盡合理,沒有根據項目的具體情況對人員進行培訓;缺少必要的軟件工程支撐工具,如建模工具、配置管理工具;軟件在調試和使用中錯誤繁多,調試、維護工作量巨大,大量人力財力耗費在調試、維護活動中。

綜上所述,裝備軟件的質量管理仍然是初步的,某些方面還是比較混亂的。我們要充分認識軟件質量問題的重要性和嚴重性,大力加強對軟件開發和生產的質量管理,積極推進軟件工程化。
建立分工協作的軟件工程化管理體系,制定軟件工程化的管理文件,成立軟件工程化組織,兼顧軟件全壽命周期,即系統分析、設計開發、系統集成、測試驗收、使用維護直至退役的全過程,將軟件開發過程的分劃為系統分析、需求分析、專題研究與試驗、概要設計、詳細設計、編碼、單元集成、配置項集成和測試、系統聯調和測試、使用和信息反饋等十個階段,明確各階段的工作內容以及與硬件開發階段的對應關系,建立功能基線、分配基線和產品基線,建立項目管理、技術開發、測試評估、配置管理、階段評審和產品維護六線合一的質量保證體系,進而規范軟件的研制和生產過程,使軟件在各階段的工作有章可循。
軟件配置管理是指對軟件產品在軟件生存期,即全壽命周期的各個階段所產生的各種形式和各種版本的文檔、程序及其數據的集合進行有效管理,以保證軟件的正確性、唯一性、完整性、可追溯性和安全性。研制生產單位、部門和開發人員分別建立軟件受產品、庫控庫和開發庫,規定相應的出、入庫制度和更改權限,對軟件開發過程中的各個基線進行較好的控制,按軟件配置管理規定和各軟件配置項的軟件開發計劃對其進行配置管理,組織進行配置審核,以規范軟件文檔的保存和管理。
加強軟件產品的技術狀態管理是規范研制生產過程的關鍵,軟件更改控制更是重要的一環。對一個簡單語句作一個簡單的修改,有時都可能遭致災難性的結局。軟件更改包括為了糾正研制生產過程中暴露出的錯誤而進行的改正性更改;為了適應外部環境變化而進行的適應性更改;為了改進原有軟件性能而進行的完善性更改。對軟件更改的控制應貫穿與軟件生存期全過程。研制生產單位應明確規定軟件受控庫和產品庫中軟件更改的報告、審批、更改、測試、評審和入庫程序,明確審批權限,并與軟件配置管理制度相結合,對軟件的更改實施嚴格的控制,確保產品在各階段的基線,使軟件的各種版本置于嚴格的配置管理之下。
軟件評審就是對軟件開發的各階段實施工程化管理,明確和量化各階段的轉段標準,以確保軟件質量。軟件評審作為軟件開發的基礎工作,對于確定軟件在全壽命周期內的質量和可靠性水平有著作用。研制生產單位應根據軟件特點,詳細規定對軟件開發計劃、系統和段設計文件、質量保證計劃、需求分析、接口需求規格說明、軟件設計、程序走查、部件測試和系統驗收的評審內容和要求。只有嚴格和規范軟件評審制度,才能對軟件質量實施真正有效的管理。
軟件測試是軟件質量保證的關鍵步驟,軟件測試是對需求規格說明、軟件設計和編碼的最終審核。軟件測試的內容包括軟件單元、部件、配置項、系統等測試,軟件測試的工作量往往占軟件開發總工作量的40%以上,測試的目的就是要在軟件投入生產性運行之前,盡可能多地發現軟件中的錯誤。因此,必須高度重視軟件測試工作。應將軟件測試工作明確納入產品研制計劃中,并結合硬件計劃制定考核軟件的測試計劃,所有的測試都應追溯到用戶需求。與此同時,還應根據軟件測試生命周期,建立由測試計劃、測試設計、定制個案直至測試執行評估全過程的具有缺陷跟蹤和更改管理效能的測試管理體系,以提高軟件質量和可靠性水平。
軟件工程化的實現是一個從低級到高級不斷漸進和反復迭代的過程。在一個企業,軟件工程化體系能否真正運行的關鍵,就是要把軟件工程化的方法、理論、工具、組織管理與本單位的組織管理、人員、制度、硬件開發和技術等結合起來,這是一件相當細致的工作。由于執行和實施軟件工程化要求的過程,將直接影響到對軟件的組織、管理、人員、技術等方面的變革,各個方面都將有一個長期的磨合過程。
軍代表對裝備軟件質量監督及驗收工作還處于起步發展階段,要充分發揮軍代表在軟件質量管理中的作用,應注意把握以下三個方面:
當前,軟件質量的重要性在越來越多的研制生產單位得到了高度重視,很多單位采取了建立軟件文檔管理制度、健全質量保證措施、加強評審和測試等手段以保證軟件質量,但距軟件工程化的要求還有較大差距,不少單位對軟件工程化的認識還不夠深入和全面,在研制生產過程中實際推行軟件工程化的單位更少。軍代表應積極督促研制生產單位推行軟件工程化,實施軟件工程化的組織管理、開發管理和質量管理,推廣軟件工程化的方法、規范、工具,使各項主要過程有法可依,有章可循,以提高裝備軟件質量水平和開發效率。
軍代表對裝備軟件質量監督及驗收工作,是把握軟件在研制生產各階段各過程中的重點環節,尤其是軟件的評審、測試和驗收三個環節,要加強重點監督:
首先,軍代表應將軟件開發計劃、需求分析、軟件設計、部件測試和系統驗收、軟件更改作為軟件評審的重點,通過評審,對軟件需求是否符合有關標準、規范的要求,是否完整、準確的表達了分配的需求,軟件開發計劃的可行性、資源保障情況、軟件需求規格說明與軟件開發計劃之間是否一致、軟件更改是否可行等重要問題得出結論,深入研究軟件開發全過程的關鍵技術細節,有針對性地對軟件質量開展監督;
其次,軍代表應積極參與軟件的各項測試工作,加強對軟件在各階段和過程中狀態的監督,盡最大可能檢測和消除隱藏在軟件中的故障。加強測試方法研究,建立軟件測試隊伍,對軟件質量進行分析評估;
第三,軍代表應規范軟件驗收工作,編制詳細的軟件驗收規范,合理確定驗收的目的、項目、方法和評判標準,在對軟件產品符合性和文檔全面檢查的基礎上,進行功能和性能測試。
軟件工程化條件下,如何開展軟件質量監督和控制對軍代表來說是個全新的課題。一方面,由于多種客觀原因,軟件工程化在軍品研制和生產單位推行時間較短,軍代表系統對此研究較少,目前就工程化條件下開展軟件質量監督和控制工作,沒有相關指導性、操作性很強的規范或細則;另一方面,雖然大多軍代表都認識到加強軟件質量管理和監督的重要性,但很多一線軍代表對軟件工程化的基本原理、概念和特點不甚了解,對軟件工程化的目標、任務、過程、原則和方法就更不熟悉,這就很難真正深入到軟件生存周期的各個階段和過程中去,把握住關鍵環節,切實起到對軟件的質量監督和管理作用。因此,必須加強對人才的培養,不僅掌握軟件工程化的基本知識和基本概念,更要掌握軟件的質量屬性、質量要素。了解軟件生存周期各個階段和過程中各個環節軟件錯誤發生的原因、發生的規律,要解決軍代表做什么、為什么要做、什么時機做、如何做。要加強對工程化條件下軟件質量形成規律、特點進行研究,加強對軟件質量監督和管理方法研究和規律探索,及時總結、交流,并在此基礎上盡快形成軟件質量監督和控制的規范做法,用以指導軍代表更加規范、有效地開展軟件質量監督和控制工作,確保軟件產品質量。