宋 坤,周智海,史靜濤
(國家海洋技術中心,天津 300112)
軟件質量控制方法研究
宋 坤,周智海,史靜濤
(國家海洋技術中心,天津 300112)
在現代社會中,軟件應用于多個方面,幾乎所有海洋環境監測系統集成項目都要涉及到應用軟件的開發。而將系統化的、嚴格約束的、可量化的方法應用于軟件的開發、運行和維護,即將工程化應用于軟件,是確保工程項目順利完成的基礎。基于對軟件工程相關技術、管理方法的分析,結合以往項目開發中的經驗,針對“南海海洋動力環境數據集成與應用技術系統”的開發,使用了可行的開發過程管理方法及工具,實現了對系統開發過程的管理及軟件質量控制。
軟件工程;軟件質量;過程管理;版本控制;全程軟件測試
軟件工程是研究和應用如何以系統性的、規范化的、可定量的過程化方法去開發和維護軟件,以及如何把經過時間考驗而證明正確的管理技術和當前能夠得到的最好的技術方法結合起來。
軟件項目開發是針對用戶方的要求,通過調研進行需求分析,設計程序編碼并進行測試和文檔編寫,最后實施安裝及客戶培訓。在項目通過驗收后,仍要繼續為客戶提供技術支持、服務調查等,這樣不但有利于針對客戶反映的問題對軟件產品進行改進,也是為下次合作奠定基礎。
目前國內大部分的軟件項目開發團隊,開發人員較少,大多數情況下是一名開發人員從始至終負責一個項目,還要同時負責多個用戶的維護工作。這種情況下,幾個項目交叉共享研發團隊是較為可行的方式。對于項目研發團隊來說,要在完成幾個項目的開發同時,確保每個項目的質量,就更需要對軟件工程的深入理解,并采用合適的工具和方法加以應用。
本文依據對軟件工程相關技術、管理方法的分析,以及在項目開發中的經驗,結合“南海海洋動力環境數據集成與應用技術導流”的開發,介紹了對系統開發過程的管理,及軟件質量控制方法。
軟件需求包括三個不同的層次——業務需求、用戶需求和功能需求,也包括非功能需求。業務需求說明了提供給用戶的新系統的最初利益,反映了用戶對系統高層次的目標要求;用戶需求描述了用戶使用系統必須要完成的任務;功能需求定義了開發人員必須實現的軟件功能,使得用戶能完成他們的任務,從而滿足了業務需求。
在項目研發合同簽訂后,首先要開展的工作就是調研、進行需求分析,并以此為依據開展設計、研發等工作。但在設計、研發的過程中用戶總是會提出新的要求、甚至在程序開發完后,用戶發現系統與自己需求不符,提出修改要求。如何在規定的時間內開發出滿足各種需求的軟件,就需要進行需求管理。
在該項目的研發中使用的需求管理工具主要是Excel,用于將需求分類,以Excel表格的形式展現,對其進行量化。需求管理表格主要包括以下內容:項目名稱、需求提出人、提出日期、需求關閉時間、功能模塊名、需求描述、需求分類(需求、Bug)。
針對bug的管理,如果單純使用Excel,無法實現錯誤報錯截屏的圖像顯示,很容易造成需求描述不清晰。于是根據項目的需求,選擇了EasyBug作為bug管理工具,它是基于WEB的在線管理,無需配置,具有強大的截圖功能且以圖片的形式直接存在;由項目管理者確定bug的優先級別、將任務分配給相應的開發人員;而且對所有任務完成的起止時間、問題根源、解決方法等相關信息予以詳細的記錄,并能提供各類統計報表。EasyBug下的bug管理統計報表頁面如圖1所示。
軟件設計其定義就是把許多事物和問題抽象起來,并且抽象它們不同的層次和角度。在項目開發中也就是要在需求分析的基礎上完成系統總體功能、數據流程、組成結構、數據結構、運行方式、界面等方面的設計。在該項目的開發中,我們發現UML、數據庫設計等專業工具,使用起來并不直觀又很難解決根本問題。于是在系統應用軟件設計方面使用WORD進行詳細描述流程、組成結構等,使用腦圖軟件展現邏輯結構,使用PPT來實現界面設計,Excel用于勾畫報表功能。

圖1 Easy Bug下的Bug管理統計報表正面
所謂軟件開發過程進行管理就是將方法、工具、相關人員結合在一起,在限定的資源條件下,研發出滿足質量要求的、符合合同規定的應用系統。在此過程中主要涉及到了研發進度管理和版本控制。
由于該項目涉及的專業領域非常多,各子系統研發中存在著較強的依賴關系,所以研發進度管理就顯得尤其重要。如何實現對各項任務進行優先等級劃分、人員分配、時間安排,對完成情況進行統計,并能很好的結合需求管理及設計文檔等,我們在項目管理中選擇了思維導圖,即腦圖軟件。腦圖是一門新興的腦科學,它的誕生代替了一大堆繁復的文字,使各項事件之間的關聯一目了然。而腦圖軟件是一個打開大腦潛能的強有力的圖解工具,使我們的思維可視化,形象化。

圖2 MindManager項目進度管理界面
腦圖軟件MindManager是一個創造、管理和交流思想的通用標準,能有序地組織我們的思維、資源和項目進程,能很好提高項目組的工作效率和成員之間的協作性。它作為一個組織資源和管理項目的方法,可從腦圖的核心分枝派生出各種關聯的想法和信息。圖2是一個使用MindManager進行項目進度管理的界面。描述了一個利用MindManager進行管理的實例,它可以清晰的劃分各研究任務,展現各子任務之間的邏輯關系,標注其優先等級、完成情況、時間安排,能同時顯示甘特圖,連接相關Excel表,并可以輸出為PDF、Word、Powerpoint、HTML和圖片格式文件。
在該項目的開發過程管理中涉及的另一重要方面就是版本控制,其目的主要是對軟件開發進程中文件或目錄的發展過程提供有效的追蹤手段,保證在需要時可回到舊的版本,避免文件的丟失、修改的丟失和相互覆蓋。跟蹤記錄整個軟件的開發過程,包括軟件本身和相關文檔,以便對不同階段的軟件及相關文檔進行表示并進行差別分析,對軟件代碼進行可撤消的修改,便于匯總不同開發人員所做的修改,輔助協調和管理軟件開發團隊。沒有進行版本控制或者版本控制本身缺乏正確的流程管理,在軟件開發過程中將會引入很多問題,如軟件代碼的一致性、軟件內容的冗余、軟件過程的事物性、軟件開發過程中的并發性、軟件源代碼的安全性,以及軟件的整合等問題。
該項目研發過程中我們沒有簡單的在開發目錄中標注日期,或者在程序中和文檔中簡單的加上版本號V1.0,來取代真正意義上的版本控制。真正意義上的版本控制是要在空間上,需要建立服務器數據庫用于存儲開發過程中的軟件代碼和文檔,盡管開發人員可以在自己的本地留有備份,但最終唯一有效的只有服務器端的程序代碼;在時間上,需要全程跟蹤并自動記錄開發過程中的每個更改細節,和不同時期的不同版本。這就要使用版本控制工具來減輕開發人員的負擔,節省時間,同時降低人為錯誤。
由于該系統的研發是基于Windows系統下的,所以選擇支持Windows環境的SVN作為版本控制工具。簡單地說,可以把SVN當成備份服務器,它可以記錄每次上傳到這個服務器的檔案內容,并且自動的賦予每次的變更一個版本。首先將需要備份的代碼和檔案add到Repository上面(用來存放上傳檔案的地方)。當有任何修改時,將修改后的代碼和文檔commit到Repository上,即提交修改給SVNserver。針對每次的commit,SVNserver都會賦予他一個新的版本。同時,也會把每次上傳的時間記錄下來。SVN可以讓不同的開發者存取同樣的代碼或檔案,并且利用SVN Server作為其同步的機制。可以直接選擇取得最新的版本,或取得任何一個之前的版本從Repository下載。SVN具有版本分支及合并等功能,其存放檔案或代碼采用是差異備份的方式,即只備份有不同的地方,節省了硬盤空間。
軟件測試是伴隨著軟件的產生而產生的,有了軟件生產和運行就必然有軟件測試。軟件測試不能等同于“調試”,“調試”的目的是糾正軟件中已經知道的故障。軟件測試就好比制造工廠的質量檢驗工作,是對軟件產品和階段性工作成果進行質量檢驗,力求發現其中的各種缺陷,并督促修正缺陷,從而控制和保證軟件產品的質量。所以,軟件測試是提高軟件產品質量的重要手段之一。對測試的投入極少,或測試介入得太晚,等形成代碼、系統已經基本完成時才進行測試,都會直接影響到項目的進展、軟件的質量。
軟件測試其實是為項目開發服務的,需要在整個項目開發團隊中強調測試服務的概念,雖然軟件測試的目的是為了發現軟件中存在的錯誤,但是,其根本目的是為了提高軟件質量,降低軟件項目的風險。
由于軟件分析、設計與開發各階段是互相銜接的,前一階段工作中發生的問題如未及時解決,很自然要影響到下一階段。所以軟件測試并不僅僅是程序測試,它應該貫穿于整個項目開發的全過程。因此在該項目的整個研發過程中我們采取了全程軟件測試,各階段有不同的測試對象,形成了不同開發階段的不同類型的測試。從項目啟動、需求評審開始,其中需求分析、概要設計、詳細設計以及程序編碼等各階段所得到的文檔,以及源程序,都作為“軟件測試”的對象。對于需求分析、系統設計等過程形成的需求規格說明、概要設計規格說明、詳細設計規格說明等文檔,都聘請了專家對其進行了評審、完善。對于源代碼都有專門的測試人員編寫了測試用例,開展了單元測試、集成測試、功能測試性能測試等。測試的及早介入才能有效地保障軟件的質量及項目的順利完成。
在“南海海洋動力環境數據集成與應用技術系統”項目的開發中,整個應用系統的開發被分成了若干個子任務,由相應的研發小組分別進行開發,然后再進行集成聯調。而每一個研發小組都僅由3~5人組成,在研發期間還要同時兼顧原有項目的維護、新項目的啟動等。在這種時間緊、任務重、人員有限的情況下,我們采用了合理的項目管理方法、選擇了合適的管理工具,確保在有限的時間內研發出高質量、穩定的應用系統,并為今后項目的開發提供了可借鑒的管理方法。
[1]孫涌,田茵,等.現代軟件工程[M].北京:北京希望電子出版社,2002.
[2]Basoglu N,Daim T,Kerimoglu O.Organizational adoption of enterprise resource planning systems:A conceptual framework[J].The Journal of High TechnologyManagement Research,2007,18(1):73-97.
[3] 楊芙清.軟件工程技術發展思索[J].軟件學報,2005,16(1):1-7.
[4]Ron Patton.Software Testing(Second Edition)[M].北京:機械工業出版社,2006.
[5]范勇.全面軟件過程管理模型及應用[J].計算機工程與設計,2006,10:1764-1766.
Study on Software Quality Control Method
SONG Kun,ZHOU Zhi-hai,SHI Jing-tao
(National Ocean Technology Center,Tianjin 300112,China)
In modern society,the software is used in many aspects.The development of application software is involved in almost all of the marine environment monitoring system projects.While applying the software engineering,which uses the systematic,strict constraints and quantifiable methods,operation and maintenance,is the base of ensuring the successful completion of the projects.Based on the analysis of the software engineering technology and management methods,a feasible development process management method and the tools were used to realize the system development process management and software quality control in the development of"South China Sea marine dynamic environment data integration and application technology system".
software engineering; software quality; process management; revision control; full software testing
TP311.5
B
1003-2029(2012)01-0119-04
2011-09-30
國家高技術研究發展計劃(863)資助項目(2008AA09A404)
宋坤(1980-),女,碩士,工程師,研究方向為海洋環境監測系統集成。Email:kunsong@126.com