(中國人民大學信息學院 北京 100872)
軟件過程的管理包括的內(nèi)容很廣泛,其中包括:組織管理、需求管理、項目管理、質(zhì)量管理、技術(shù)管理和集成管理等多種方面的管理。軟件開發(fā)過程對軟件產(chǎn)品的質(zhì)量有著直接的影響,在軟件質(zhì)量管理中有著舉足輕重的作用,所以提高軟件質(zhì)量首先要提高軟件開發(fā)的質(zhì)量,本文會先介紹一些基本的概念:如軟件質(zhì)量的含義,軟件過程的含義,分析軟件過程對軟件質(zhì)量的影響,最后具體分析了軟件開發(fā)的質(zhì)量計劃以及質(zhì)量保證。
質(zhì)量,并不是一成不變的,它是隨著社會的發(fā)展、技術(shù)的進步、動態(tài)的發(fā)展持續(xù)變化的。處于不同的視野角度側(cè)重點也不同,質(zhì)量的定義也不同。美國著名的管理專家朱蘭(j.M.Juran)博士從用戶的角度來認為,產(chǎn)品質(zhì)量就是用戶在使用產(chǎn)品時,用戶需求的程度被成功的滿足;而美國質(zhì)量專家克勞斯從生產(chǎn)者的角度出發(fā)認為“產(chǎn)品符合要求的程度”就是質(zhì)量;綜合全面質(zhì)量控制的創(chuàng)始人菲根堡姆認為“產(chǎn)品或服務(wù)的質(zhì)量是指營銷、設(shè)計、制造、維修中各種特性的綜合體”。
1983年,ANSI(American National Standards Institute美國國家標準學會)對軟件質(zhì)量進行了定義:“即反映軟件滿足明確和隱含需求能力的全部特征和特性的總和”。軟件質(zhì)量包括兩部分:產(chǎn)品質(zhì)量和過程質(zhì)量,1991年ISO發(fā)布的ISO/IEC9126質(zhì)量特性國際標準指出:所謂產(chǎn)品質(zhì)量就是指生產(chǎn)的產(chǎn)品是否滿需求。對軟件的質(zhì)量度量包括三個方面指標:質(zhì)量特性、質(zhì)量子特性、度量指標。質(zhì)量特性細分為六大特性:功能性、可靠性、易用性、效率、維護性、可移植性;質(zhì)量子特性細分為二十七個子特性:適合性、成熟性、易理解性、時間特性、易分析性、適應(yīng)性、準確性、容錯性、易學性、資源利用、易改變性、易安裝性、互操作性、易恢復性、易操作性、穩(wěn)定性、共存性、保密安全性、吸引性、易測試性、易替換性。
在對軟件質(zhì)量進行度量時,一般先分析影響軟件質(zhì)量的要素,然后對這些要素進度量,最后建立使用的軟件度量體系和模型。常見的影響軟件質(zhì)量的因素有:需求分析問題、軟件設(shè)計問題、編寫代碼問題、軟件測試問題、規(guī)則模式問題、軟件文檔問題。目前比較常用的IT軟件質(zhì)量模型主要有:McCall模型、Boehm模型、和ISO/IEC25051。
軟件開發(fā)過程(software development process),軟件開發(fā)的開發(fā)生命周期(software development life cycle),是一個系統(tǒng)的工程,其各個階段實現(xiàn)了軟件的需求定義與分析、設(shè)計、實現(xiàn)、測試、交付和維護。軟件過程是在開發(fā)與構(gòu)建系統(tǒng)時應(yīng)遵循的步驟,是軟件開發(fā)的路線圖。
軟件開發(fā)過程是軟件工程的重要組成部分,也是軟件質(zhì)量保證的基礎(chǔ),包括六個階段:
需求分析、該要設(shè)計、詳細設(shè)計、編寫代碼、軟件測試、運行和維護。軟件開發(fā)流程即軟件設(shè)計思路和一般過程,包括設(shè)計軟件的功能和實現(xiàn)的算法和方法、軟件的總體結(jié)構(gòu)設(shè)計和模塊設(shè)計、編程和調(diào)試、程序聯(lián)調(diào)、提交程序,最后達到用戶的滿意。軟件開發(fā)的過程模型有瀑布模型、原型模型、螺旋模型、增量模型、噴泉模型、形式化方法、敏捷模型等多種。
20世紀70年代,隨著計算機硬件的快速發(fā)展、電腦的普及以及高級語言的出現(xiàn),開發(fā)軟件的復雜度越來越大,出現(xiàn)了軟件危機,“軟件工程”一詞也被正式提出。軟件開發(fā)模型和項目管理作為其主要內(nèi)容被充分認識。最初,瀑布模型開發(fā)模式作為一種典型的開發(fā)模式被提出,由于此模型簡單,使用方便且開發(fā)計劃穩(wěn)定,有利于項目開發(fā)管理工作的進行。因此瀑布模型被人們廣泛的使用。
但瀑布模型存在一些缺點:比如階段固話,任務(wù)只有完成上一任務(wù),才能進行下一個任務(wù),如果早期出現(xiàn)的問題沒有及時發(fā)現(xiàn),可能等到后期測試的時候才能發(fā)現(xiàn),確定是那個階段出現(xiàn)了問題。發(fā)現(xiàn)問題后,要從引發(fā)問題的階段從新開始新的開發(fā)。隨著市場對軟件的可靠性、實用性、高效性有了更高的要求,雖然目前僅有一些傳統(tǒng)的行業(yè)仍在使用瀑布模型,但瀑布模型已不能滿足當前市場的要求。從90年代起,人們就已開始注重可以應(yīng)對快速需求變化并能保證軟件質(zhì)量的軟件開發(fā)方法。21世紀至今,隨著互聯(lián)網(wǎng)爆發(fā)式的模式增長,敏捷軟件開發(fā)模式開始流行:一個大項目被分為多個相互聯(lián)系,但也可獨立運行的小項目,并分別完成,在此過程中軟件一直處于可使用狀態(tài)。敏捷開發(fā)模型以開發(fā)周期短、支持快速版本迭代、測試代碼優(yōu)先于編寫代碼、隨時發(fā)現(xiàn)問題隨時修改、增量開發(fā)的特點,適應(yīng)于當前市場需求,在當前軟件行業(yè)中得到了廣泛的應(yīng)用。
過程是執(zhí)行一項既定目標的序列活動,是開發(fā)某種產(chǎn)品、實現(xiàn)某種任務(wù)的系統(tǒng)化的手段。CMM標準對過程的定義為:人們運用相應(yīng)的流程、方法、工具和設(shè)備將原始輸入材料轉(zhuǎn)化成對客戶而言有價值的產(chǎn)品輸出。軟件開發(fā)過程是一個系統(tǒng)的過程,也是軟件測試的基礎(chǔ),軟件的質(zhì)量管理工作在準備開發(fā)軟件時就可以開始了,要想保證軟件的質(zhì)量,質(zhì)量保證的工作要貫穿于產(chǎn)品開發(fā)的每一個階段,覆蓋開發(fā)的整個階段。軟件過程是人們開發(fā)和維護軟件以及軟件相關(guān)產(chǎn)品的系列活動。軟件過程質(zhì)量是指:在制造軟件產(chǎn)品的過程中通過對軟件開發(fā)過程的制約對產(chǎn)品要滿足規(guī)定需要和潛在需要的特征和特性的總和,在很大的程度上決定了所產(chǎn)生的軟件產(chǎn)品的質(zhì)量和軟件生產(chǎn)率。軟件開發(fā)過程將人、工具、流程,這三個要素合理的整合起來,達到優(yōu)化的組合,進行有效的運轉(zhuǎn)。
在軟件開發(fā)的過程中,V模型、W模型、H模型、X模型從不同程度上體現(xiàn)了軟件開發(fā)過程中質(zhì)量管理的關(guān)系:
(1)V模型:軟件測試的V模型是開發(fā)瀑布模型的變種。編碼完成后,對編寫的代碼進行單元測試(測試的依據(jù)是詳細概要說明書),驗證單元模塊是否符合要求。單元測試通過后,將不同的單元整合起來,對已測試通過的單元進行集成測試,通過測試確認各個接口是否能正常工作(測試依據(jù)是概要設(shè)計文檔)。集成測試通過后進行系統(tǒng)測試(系統(tǒng)測試依據(jù)的是需求說明書)來驗證軟件是否符合用戶的需求。系統(tǒng)測試通過后,軟件可進入到驗收測試階段,穩(wěn)定試運行后,軟件可正式使用。在V模型中,測試作為編碼的最后一個活動,需求分析階段的錯誤等到最后驗收測試的時候才會被發(fā)現(xiàn),由于不能早期進入到測試階段,到最后發(fā)現(xiàn)軟件缺陷時,修復缺陷的成本是非常高,因此模型也受到來一定的質(zhì)疑。
(2)W模型:作為V模型的發(fā)展,強調(diào)了測試與開發(fā)是同時進行的,測試伴隨著開發(fā)的整個周期,不僅對編碼進行測試,還對需求、功能、設(shè)計進行測試,有利于問題盡早的發(fā)現(xiàn),盡快解決。但W模型仍存在與V模型一樣的局限性:開發(fā)活動是需求開始到編碼結(jié)束的串行活動,一個階段完成后,才能進行下一個階段,迭代性、變更性、自發(fā)性都不支持。
(3)H模型:與開發(fā)活動獨立的流程,只要測試準備完成就可以執(zhí)行測試活動。
(4)X模型:V模型的改進,在編碼階段就開始進行測試。對單段的程序進行測試,測試通過后,可進行單元測試、集成測試、系統(tǒng)測試、驗收測試,測試通過的最終產(chǎn)品可以以終極產(chǎn)品的形式交付使用,也可以作為更大規(guī)模內(nèi)部集成的一部分。很好的支持迭代性、變更性,此外X模型還定為了探索性測試,這種測試并不是計劃內(nèi)的測試,而是由經(jīng)驗豐富的測試人員根據(jù)經(jīng)驗進行深度的測試,可以發(fā)現(xiàn)更多的軟件錯誤,缺點是對測試人員的要求較高,會對測試資源造成浪費。
以上四種模型有各有優(yōu)勢和特點。在軟件開發(fā)的過程中,有一種全面質(zhì)量的思想,思想的基礎(chǔ)是著名的管理學家戴明創(chuàng)建的一個持續(xù)改進型項目管理模型:戴明環(huán),PDCA循環(huán)模型。P(plan)-計劃,D(do)-實施,C(chek)-檢查,A(action)-處理。PDCA,以一個環(huán)形包括了整個軟件項目實施期間的所有軟件項目的工作。它包括四個方面八個階段,比較直觀,易于掌握,是目前項目質(zhì)量管理中較為科學的工作程序和管理方法。P-分析現(xiàn)狀找問題、分析產(chǎn)生問題的原因、找出主要原因、制定對策和實施;D-執(zhí)行、計劃和措施;C-檢查效果和發(fā)現(xiàn)問題;A-遺留問題轉(zhuǎn)入下期,總結(jié)經(jīng)驗納入標準,整個項目實施期間所有與質(zhì)量相關(guān)的工作用PDCA來表示形成了一個閉環(huán),是一個循環(huán)和反復的過程。
在軟件質(zhì)量控制的過程中,最先做的是劃分清晰的組織架構(gòu),明確人員的工作職責,做到責權(quán)明確。由于各個公司的業(yè)務(wù)方向不同,生產(chǎn)的產(chǎn)品不同,團隊搭建的組成部分也各盡不同。技術(shù)部門一般由以下一下幾個部門構(gòu)成:設(shè)計部、產(chǎn)品部、研發(fā)部、測試部、運維部。
設(shè)計部:對軟件的人機交互、操作邏輯、界面美觀的整體進行設(shè)計。
產(chǎn)品部:負責市場調(diào)研并根據(jù)用戶的需求,梳理用戶需求,確定開發(fā)的產(chǎn)品,整理成需求文檔,同時要協(xié)調(diào)研發(fā)、營銷、運營,確定和組織實施一系列產(chǎn)品的相關(guān)活動。
研發(fā)部:將客戶的需求轉(zhuǎn)換成代碼,建造出滿足用戶要求的軟件系統(tǒng)或者系統(tǒng)中的軟件部分的過程。
測試部:在規(guī)定的條件下進行操作,對程序進行檢查,發(fā)現(xiàn)程序錯誤,衡量軟件的質(zhì)量,確認軟件是否能滿足軟件設(shè)計的標準。
運維部:負責軟件的發(fā)版的部署工作,并保證軟件發(fā)版后的正常運行,支持用戶的使用
公司的規(guī)模大小不一樣,人員架構(gòu)也不盡相同,但是每個軟件項目組均由負責設(shè)計產(chǎn)品需求、研發(fā)、測試、運維人員組成,對于大型軟件公司,分工會明確,由專門的設(shè)計、產(chǎn)品、研發(fā)、測試、運維專職人員;對于小型軟件公司,研發(fā)可能會擔任研發(fā)軟件、測試軟件、運維部署的職責,產(chǎn)品可能會承擔驗收測試的職責;在當前流行的敏捷項目中,也會有負責產(chǎn)品需求,負責軟件研發(fā),負責軟件測試人員的角色,擔當這些角色的人員會由各部門人員組成,以確保軟件的梳理完成。
軟件質(zhì)量體系在項目開始時就開始建立標準、計劃和過程。無論是傳統(tǒng)軟件項目還是敏捷軟件項目進行軟件質(zhì)量管理都是必要且不可缺失的,開發(fā)過程中的質(zhì)量管理是軟件質(zhì)量管理中最重要的組成部分,以下從軟件開發(fā)工作的事前、事中、事后三個階段介紹了軟件開發(fā)階段的質(zhì)量管理。
(1)事前質(zhì)量管理:軟件開發(fā)代碼之前的準備工作。研發(fā)人在軟件開發(fā)前進行需求評審,徹底了解軟件需求,作出有效的溝通,劃分出需求中的重點。確定需求中的質(zhì)量屬性,以及定義好需求屬性的度量方式。
(2)事中質(zhì)量管理:研發(fā)人員在充分了解需求后,對軟件進行概要設(shè)計和詳細設(shè)計,并對設(shè)計文檔進行評審,在設(shè)計階段盡可能的發(fā)現(xiàn)缺陷并及時改進。開發(fā)過程中要對對開發(fā)過程進行改進來提高研發(fā)人員的技術(shù)水平和代碼規(guī)范;對于研發(fā)出的成果,剛產(chǎn)生便馬上進行質(zhì)量檢查,加強技術(shù)評審、軟件測試、過程檢查的力度。
(3)事后質(zhì)量管理:代碼完成,交付使用后,對用戶的反饋結(jié)果進行總結(jié)分析。根據(jù)反饋結(jié)果,優(yōu)化軟件開發(fā)過程,提高軟件質(zhì)量。做好軟件的運營維護工作。
第一、機構(gòu):成立質(zhì)量保證小組來保證工作的順利進行。
第二、任務(wù):軟件生命周期的各階段的活動及時貫徹到日常的軟件開發(fā)的活動中
A.評審:定期的或階段性的對某一開發(fā)階段或幾個開發(fā)階段的產(chǎn)品進行評審
B.日常檢查:每日的工作情況進行檢查,當日遇到的問題,及時給出解決方案
C.軟件驗收:組織專門的驗收小組對軟件系統(tǒng)或各個子模塊進行驗收
第三、文檔歸檔:
基礎(chǔ)文檔
A.軟件規(guī)格需求說明書(SRS)
B.軟件設(shè)計說明書(SDD)(復雜的項目分為概要設(shè)計說明書PDD和詳細設(shè)計說
明書DDD)
C.軟件測試計劃(STP)
D.軟件測試報告(STR)
E.用戶手冊(SUM)
F.源程序清單(SCL)
G.項目實施計劃(PIP)
H.項目實施總結(jié)(PDS)
其他文檔
A.軟件質(zhì)量保證計劃(SQAP)
B.軟件配置管理計劃(SCMP)
C.項目進展表(PPR)
D.階段評審報表(PRR)
第四、明確標準、條例、約定:制定需遵守的標準、條例和約定,按約定執(zhí)行
第五、評審和檢查
第六、軟件配置管理
第七、工具、技術(shù)、方法
第八、進行媒體控制
第九、對軟件提供商控制
第十、記錄、收集、維護、保存
人的因素在軟件工程中占很重要的因素,是團隊的核心力量,工具和資源都是為人所服務(wù)的,良好的溝通、和諧的團隊合作是保證高質(zhì)量軟件產(chǎn)品的基礎(chǔ)。對人員的管理和技能的提升在軟件軟件質(zhì)量起到很重要的作用。
第一、創(chuàng)造良好的學習氣氛
第二、強調(diào)質(zhì)量的重要性
第三、明確職權(quán)和責任
第四、團隊標準化
第五、團隊績效可量化
軟件的產(chǎn)品質(zhì)量包含以下四個方面:產(chǎn)品質(zhì)量、過程質(zhì)量、動態(tài)質(zhì)量、靜態(tài)質(zhì)量。軟件開發(fā)過程質(zhì)量包括:開發(fā)技術(shù)、開發(fā)工具、開發(fā)人員及開發(fā)組織、開發(fā)過程。軟件開發(fā)過程的質(zhì)量管理在產(chǎn)品的全面質(zhì)量管理中占有很重要的地位,軟件開發(fā)過程控制的不好,缺陷發(fā)現(xiàn)的越晚,解決缺陷需要的成本便越高,花費的費用越高。軟件開發(fā)后期發(fā)現(xiàn)缺陷進行修改較前期發(fā)現(xiàn)缺陷進行修改關(guān)聯(lián)的模塊多,涉及的功能也越多,最嚴重的是整個軟件體系都要重新進行設(shè)計。在當前軟件行業(yè)激勵的競爭條件下,時間、效率、質(zhì)量保證是一個軟件行業(yè)生存的必要條件,對軟件開發(fā)過程質(zhì)量管理要要求也越來越高,軟件開發(fā)過程中的質(zhì)量管理對軟件項目的質(zhì)量管理有非常重要的意義。