[摘 要]我國軟件業(yè)與世界先進國家相比,差距甚遠,其主要原因是軟件工程化技術沒有得到廣泛的應用。今天,軟件開發(fā)不再是軟件開發(fā)人員的個人行為而是團隊行為,對軟件開發(fā)機構來說,如何在要求的時間內(nèi)、合理的投資下保質(zhì)保量地交付軟件產(chǎn)品是一個巨大的挑戰(zhàn)。無論是在軟件水平最高的美國還是在我國,軟件開發(fā)項目超期、超預算、最終的軟件產(chǎn)品的質(zhì)量不能使最終用戶滿意等問題,都是困擾軟件開發(fā)機構的重大問題。本文從建立專職質(zhì)量提升組織、軟件開發(fā)過程的質(zhì)量識別與控制、完善的測試手段與軟件過程能力成熟度模型的應用等方面來敘述提高軟件的質(zhì)量控制的途徑。
[關鍵詞]軟件工程 項目管理 質(zhì)量控制 測試手段 成熟度模型
一、引言
在國內(nèi)軟件業(yè)開始誕生和起步的時候,軟件企業(yè)在質(zhì)量管理方面比較落后,大部分的軟件企業(yè)沒有設置專門的測試組織。軟件產(chǎn)品的質(zhì)量完全依賴于程序設計和編寫者的技術水平和工作效果。這種依賴使得軟件產(chǎn)品的質(zhì)量水平低下。
雖然國內(nèi)一些軟件企業(yè)在2000年左右開始建立內(nèi)部的測試小組,但仍然只起到了“事后檢驗”的功能,大部分產(chǎn)品質(zhì)量缺陷仍然無法及時和較全面的被發(fā)現(xiàn)和解決,更不用說“預防缺陷”。
即使這種具有“事后檢驗”功能的測試小組被建立,但由于沒有必要的支持,以及人力資源投入嚴重不足,導致測試小組在軟件質(zhì)量上的貢獻和業(yè)績表現(xiàn)并不佳。同時由于對產(chǎn)品質(zhì)量的認識缺乏全面的理解,僅僅建立一個測試小組對產(chǎn)品質(zhì)量的提升很有限。
隨著中國WTO的發(fā)展步伐,國內(nèi)涌現(xiàn)出了越來越多的軟件企業(yè),其中以外包企業(yè)為主,外包軟件開發(fā)公司一般都需要取得一定的資質(zhì)認證才能夠接到來自國外的委托項目,其中以CMMI(或CMM)認證為主。國內(nèi)軟件行業(yè)即將迎來一個新的發(fā)展時期,規(guī)范與規(guī)模化。
二、建立專職質(zhì)量提升組織
在開發(fā)項目上按照規(guī)范化軟件的生產(chǎn)方式進行生產(chǎn),在開發(fā)質(zhì)量管理流程上采用ISO9000的標準進行。每個項目除配備了項目開發(fā)所需角色外,還需專門配備配置管理小組、測試小組和質(zhì)量保證小組確保質(zhì)量管理的實施。
(一)配置管理小組職責
配置管理小組是保證項目開發(fā)完畢的同時,內(nèi)部文檔和外部文檔都同時完成。內(nèi)部文檔的及時產(chǎn)生和規(guī)范,是保證項目開發(fā)各小組能夠更好地接口和溝通的重要前提。從另一個方面講,也是保證工程不被某個關鍵路徑所阻塞而延滯的前提。配置管理小組還是保證質(zhì)量保證小組得以發(fā)揮作用的基礎。配置管理小組的主要職責包括:完善各個部門發(fā)送需要存檔和進行版本控制的代碼、文檔和階段性成果;對代碼、文檔等進行單向出入的控制;對所有存檔的文檔進行版本控制;提供文檔規(guī)范,并傳達到開發(fā)組中。
(二)測試小組職責
測試小組作為質(zhì)量控制的主要手段,負責軟件的測試設計和執(zhí)行工作。如同軟件開發(fā)一樣,測試在執(zhí)行之前,同樣需要進行測試計劃和測試策略的設計,通常情況下測試可以分為:正確性、功能性、性能、安全和系統(tǒng)測試等。而這些測試均需要在測試計劃和測試策略中進行描述用以指導測試小組成員進行測試用例編寫和測試執(zhí)行。程序員在交給測試人員之前是進行過一定的單元測試,確保程序編譯、運行正確。
測試人員根據(jù)詳細設計的文檔對軟件要實現(xiàn)的功能進行一一測試,保證軟件的執(zhí)行正確的實現(xiàn)設計要求,在此也只證明了軟件正確地反映了設計思想,但是否真正反映了用戶的需求仍需要進一步的功能性測試。
測試人員只有根據(jù)軟件需求規(guī)格說明書所提及的功能進行檢測,才能確保項目組開發(fā)的軟件產(chǎn)品滿足用戶需求。在正確性測試完成之后,需要測試的是軟件的性能,軟件的性能在項目中占有重要的地位,性能要求有可能改變軟件的設計,為避免造成軟件的后期返工,測試在性能上需要較大的側(cè)重。測試小組還需要做安全測試,以確保系統(tǒng)使用安全可靠。
(三)質(zhì)量保證小組職責
質(zhì)量保證小組作為質(zhì)量保證的實施小組,主要職責是保證軟件透明開發(fā)的主要環(huán)節(jié)。在項目開發(fā)的過程中幾乎所有的部門都與質(zhì)量保證小組有關。質(zhì)量保證小組對項目經(jīng)理提供項目進度與項目真正開發(fā)時的差異報告,提出差異原因和改進方法。
在項目進度被延滯或質(zhì)量保證小組認為某階段開發(fā)質(zhì)量有問題時,提請項目經(jīng)理、項目負責人等必要的相關人員舉行質(zhì)量會議。解決當前存在的和潛在的問題。質(zhì)量保證是建立在文檔的復審基礎之上,因而文檔版本的控制,特別是軟件配置管理,直接影響軟件質(zhì)量保證的影響力和力度。質(zhì)量保證小組的檢測范圍包括:系統(tǒng)分析人員是否正確的反映了用戶的需求;軟件執(zhí)行體是否正確的實現(xiàn)了分析人員的設計思想;測試人員是否進行了較為徹底的和全面的測試;配置管理員是否對文檔的規(guī)范化進行得比較徹底,版本控制是否有效。
三、軟件開發(fā)過程的質(zhì)量識別與控制
對于質(zhì)量管理來說,結(jié)果很重要,過程也很重要。
(一)獲取過程質(zhì)量項目經(jīng)理圈子
有過程就必然有過程質(zhì)量。軟件產(chǎn)品是需要經(jīng)過一系列的過程才得以形成的。根據(jù)軟件工程理論,在瀑布式軟件開發(fā)過程中定義了軟件產(chǎn)品的基本開發(fā)過程:需求分析、規(guī)格說明、概要設計、詳細設計、代碼編寫/單元測試、集成測試、系統(tǒng)測試。軟件工程的基本目標是優(yōu)質(zhì)、高產(chǎn)。為了保證所開發(fā)的軟件的質(zhì)量,在瀑布模型的每個階段都應該堅持兩個重要做法:
1. 每個階段都必須完成規(guī)定的文檔,沒有交出合格的文檔就是沒有完成該階段的任務。完整、準確的合格文檔不僅是軟件開發(fā)時期各類人員之間相互通信的媒介,也是運行時期對軟件進行維護的重要依據(jù)。
2. 每個階段結(jié)束前都要對完成的文檔進行評審,以便盡早發(fā)現(xiàn)問題,改正錯誤。事實上,越是早期階段犯下的錯誤,暴露出來的時間就越晚,排除故障改正錯誤所付出的代價也越高。因此,及時審查,是保證軟件質(zhì)量,降低軟件成本的重要措施。
瀑布式軟件開發(fā)過程:
(1)在軟件需求定義階段會產(chǎn)生“需求質(zhì)量”;
(2)在軟件設計階段會產(chǎn)生“設計質(zhì)量”;
(3)在軟件實現(xiàn)階段會產(chǎn)生“實現(xiàn)質(zhì)量”。
(二)過程質(zhì)量控制
過程質(zhì)量控制=規(guī)范+輸入/輸出標準+反饋(控制點或檢查點)
從整個研發(fā)過程看,需要制定一些規(guī)章制度和項目研發(fā)規(guī)范來使工序部門之間的工作能夠協(xié)調(diào)開展,比如設置工序部門的工件輸入、輸出標準,讓質(zhì)量低下的工件不會流入下一個工序環(huán)節(jié),起到“缺陷預防”的作用。
如果我們單獨看某一個工序部門,如負責需求分析的產(chǎn)品組,為了確保需求描述文檔的準確性與易讀性,可以制定一種“需求設計規(guī)范”或“需求文檔編寫規(guī)范”來使需求設計工作實現(xiàn)內(nèi)部理解一致,即讓需求分析人員編寫出格式統(tǒng)一,表述統(tǒng)一的需求文檔。這樣的文檔才能便于程序員去理解和實現(xiàn),同時測試人員也可以從這樣的高質(zhì)量需求文檔中獲益,提高測試工作質(zhì)量。同樣地在程序設計方面,可以制定“程序設計規(guī)范”、“代碼編寫規(guī)范”來實現(xiàn)程序設計質(zhì)量的提升。
將軟件最終質(zhì)量分解到過程中,為:“需求質(zhì)量”、“設計質(zhì)量”、“實現(xiàn)質(zhì)量”、“發(fā)布和維護質(zhì)量”。質(zhì)量控制點一般設置在工序節(jié)點處,這樣比較經(jīng)濟一些。
控制點一般采用“評審”或“審查”為主,當然技術手段也很重要。
(三)需求管理與質(zhì)量
目前,迭代式開發(fā)方式已基本替代了瀑布式開發(fā)方式而被越來越多的軟件企業(yè)所采用。迭代式開發(fā)方式主要解決了風險與需求變更問題,那么需求管理在迭代式開發(fā)方式中也顯得極為重要,需求管理好了,項目開發(fā)過程將會事半功倍,開發(fā)將會有節(jié)奏,項目可視化程度將會得到提高;需求管理不好,項目將面臨頻繁返工、功能混亂、重構代碼工程次數(shù)高、測試用例維護成本增長和工作低效率、低質(zhì)量的境地。