摘 要:隨著知識經(jīng)濟(jì)時代的到來,整個社會的高效運作對計算機軟件產(chǎn)品的依賴程度越來越高,軟件質(zhì)量以及軟件質(zhì)量管理日益成為人們關(guān)注的焦點,對軟件的開發(fā)過程進(jìn)行質(zhì)量管理是解決軟件質(zhì)量問題的重要方法。本文詳細(xì)介紹了軟件質(zhì)量的概念、軟件質(zhì)量工程體系的思想和內(nèi)容、軟件質(zhì)量控制和管理的方法和技術(shù),包括軟件質(zhì)量標(biāo)準(zhǔn)、軟件質(zhì)量保證和軟件測試等;針對實際的軟件質(zhì)量工作,深入探討了需求分析、軟件設(shè)計、編碼和測試等各個階段的軟件質(zhì)量活動。
關(guān)鍵詞:軟件質(zhì)量 質(zhì)量控制 過程管理 軟件測試 軟件項目管理
中圖分類號:TP3文獻(xiàn)標(biāo)識碼:A文章編號:1674-098X(2012)04(b)-0039-01
隨著計算機應(yīng)用領(lǐng)域的不斷擴(kuò)大,軟件產(chǎn)業(yè)已成為人們生活生產(chǎn)中不可或缺的一部分,軟件的質(zhì)量直接關(guān)系到人們的生命財產(chǎn)安全,銀行系統(tǒng)中的軟件錯誤會導(dǎo)致金融混亂,醫(yī)療系統(tǒng)中的軟件錯誤可能造成生命危險,航空管理系統(tǒng)中的錯誤會造成飛機失事。軟件質(zhì)量越來越成為國內(nèi)外工業(yè)界和學(xué)術(shù)界關(guān)注的焦點,對軟件質(zhì)量控制技術(shù)和方法的研究也已成為軟件工程領(lǐng)域的一個重要課題。
軟件質(zhì)量是指軟件的功能和性能滿足用戶需求和期望的程度,是軟件的一種內(nèi)在特性。影響軟件質(zhì)量的三個重要因素是軟件的正確性、可靠性和安全性。正確性是指程序滿足其規(guī)格說明和完成用戶任務(wù)目標(biāo)的程度,它的評價準(zhǔn)則包括可跟蹤性、完整性和一致性;可靠性是指程序在規(guī)定的精度下,能夠完成其要求功能的期望程度,它的評價準(zhǔn)則包括簡潔性、準(zhǔn)確性、一致性、容錯性、模塊性;安全性是指控制或保護(hù)程序和數(shù)據(jù)機制的有效性。i其他影響軟件質(zhì)量的因素還有:可測試性、可維修性、可適應(yīng)性、可理解性、可用性、效率和風(fēng)險性。軟件質(zhì)量缺乏保證,軟件缺乏競爭力,最為關(guān)鍵的原因是忽視軟件開發(fā)過程的質(zhì)量控制,缺乏軟件開發(fā)和維護(hù)的科學(xué)方法。所以,我們應(yīng)當(dāng)高度重視軟件開發(fā)過程,它重點覆蓋需求、編碼和測試三個階段。
第一階段:需求分析。軟件開發(fā)的基礎(chǔ)就是必須要明確項目需求,力求做到需求明確、變更少,減少帶來不確定因素。首先,項目需求說明書要描述明確詳盡,盡量減少由于與用戶溝通不徹底和記憶的缺失導(dǎo)致程序開發(fā)人員對需求說明書的理解產(chǎn)生偏差。其次,要規(guī)范管理需求變更。
第二階段:編碼走查。代碼質(zhì)量在很大程度上影響著軟件質(zhì)量,項目組成員的編程能力、風(fēng)格、習(xí)慣、對項目需求的理解和個性的不同所開發(fā)的代碼質(zhì)量也不完全相同,一些難以預(yù)測的人為因素帶來的隱患也將嚴(yán)重影響代碼質(zhì)量,導(dǎo)致軟件質(zhì)量不高,影響用戶正常使用并為后續(xù)維護(hù)帶來更大的難度和工作量。實施完整的代碼評審在項目進(jìn)度中不太現(xiàn)實,可以根據(jù)需要引進(jìn)代碼走查,定期要求開發(fā)人員講解所開發(fā)代碼的主要部分。這項措施可以促進(jìn)程序員本人積極提升所開發(fā)代碼的質(zhì)量,同時在代碼走查過程中能夠獲得他人的寶貴意見,提高編碼效率,使開發(fā)成員共享項目實施過程中解決問題的思路和方法,共同關(guān)注軟件開發(fā)過程中的各個環(huán)節(jié),使軟件質(zhì)量更有保障。
第三階段:形成正式測試制度。要保證軟件質(zhì)量不但要注重軟件開發(fā)過程規(guī)范化,更不能忽視軟件測試工作。在業(yè)界,很多大公司都采用測試制度作為評價軟件質(zhì)量的標(biāo)準(zhǔn)。通過跟蹤缺陷、錯誤及隱患的修正過程,確保軟件產(chǎn)品、中間產(chǎn)品和文檔符合軟件工程過程需求和用戶的最終需求。軟件測試的目的是根據(jù)用戶需求檢查系統(tǒng)是否符合項目合同與任務(wù)書規(guī)定的要求。從最初的需求到部署階段,都應(yīng)制訂詳細(xì)的計劃并編制相應(yīng)的文檔,測試活動要盡可能覆蓋整個項目過程,如測試計劃、測試用例文檔、測試報告等。通過測試活動盡可能早得發(fā)現(xiàn)每個階段中軟件存在的缺陷,嚴(yán)格按照用戶需求進(jìn)行測試,既不能為求速度而縮短測試規(guī)模,也不能忽視用戶需求而提高測試要求。只有通過了全部測試的軟件,才是符合用戶質(zhì)量要求的合格軟件。測試是驅(qū)動開發(fā)過程的關(guān)鍵:首先,測試驅(qū)動開發(fā)主旨是“測試優(yōu)先實踐”,“測試優(yōu)先實踐”重視單元測試,采用先編寫測試,再編寫代碼。其本質(zhì)是細(xì)粒度的目標(biāo)管理方法,使用測試代碼建立目標(biāo),編寫代碼完成測試目標(biāo),再制定下一個目標(biāo),反復(fù)循環(huán),實現(xiàn)測試驅(qū)動開發(fā)。這種方法使得測試成為設(shè)計的一部分,在實際中能起到非常好的效果,它規(guī)定了需要設(shè)計的類、方法,以及方法需要滿足的結(jié)果。測試的目標(biāo)要比設(shè)計的目標(biāo)粒度更小,但在成本上卻更為經(jīng)濟(jì)。其原因有四:(1)減輕了測試的工作量,先進(jìn)行單元測試,可以減少后續(xù)的測試工作量。(2)細(xì)粒度的設(shè)計需要花費大量的成本。(3)測試可以實現(xiàn)一部分的設(shè)計工作,采用測試優(yōu)先實踐,設(shè)計上可以節(jié)省一些工作量。(4)在編寫測試代碼上付出的成本,在回歸測試上會得到回報。兩相權(quán)衡,編寫測試的代價并不高。其次,測試必須是自動化的,避免代碼回歸。以往采用的手動測試通過輸入數(shù)據(jù),觀察程序輸出,來判斷是否正確。它是對輸入、輸出的檢驗,一個端到端的過程,最大優(yōu)勢是簡單,但手動測試可能會引入錯誤,比如數(shù)據(jù)量大的情況下人為輸入錯誤,大量重復(fù)的手動測試會使成本變高,另外手動測試僅測試系統(tǒng)的輸入和輸出,無法對組件進(jìn)行隔離測試,覆蓋面窄導(dǎo)致發(fā)現(xiàn)問題和解決問題的成本都很高。所以測試要做到自動化,它產(chǎn)生的價值大大高于其成本。那么哪些東西是需要納入到自動化測試的范圍的呢?例如,一個典型的分層應(yīng)用來說,有數(shù)據(jù)庫層、數(shù)據(jù)庫訪問層,業(yè)務(wù)邏輯層、界面控制層、界面層。測試特點各不相同的層次,哪些需進(jìn)執(zhí)行自動化測試呢?“測試一切可能”是測試的基本原則,“讓一切測試都變成自動化”是測試驅(qū)動開發(fā)的準(zhǔn)則。當(dāng)然,自動化測試需要付出成本,例如,對業(yè)務(wù)方法的自動化測試比較簡單,對關(guān)聯(lián)到數(shù)據(jù)庫的業(yè)務(wù)方法的測試因界面涉及到大量的人機交互則繁瑣一些。在測試的推動下,軟件的結(jié)構(gòu)變得更加合理。在MVC界面中,控制器測試是重點,模型僅僅包含數(shù)據(jù),測試非常容易,一個優(yōu)秀視圖不包含邏輯,用某種方式表現(xiàn)模型,方便替換,不產(chǎn)生任何影響。例如,XSLT視圖可以替換JSP視圖,設(shè)計優(yōu)秀的視圖除了對頁面要素進(jìn)行檢查也是不需要測試的。從開發(fā)文化角度看,界面自動化測試要求開發(fā)人員和用戶進(jìn)行充分溝通,慎重思考頁面設(shè)計,保證頁面設(shè)計的抗變性和可擴(kuò)展性,繪制出滿足需要的頁面并確保測試代碼穩(wěn)定,減少麻煩。這實質(zhì)是原型方法的應(yīng)用,通過自動化測試提高軟件質(zhì)量,驅(qū)動設(shè)計優(yōu)化。最后,明確測試的分類。(1)單元測試。(2)集成測試。(3)接受測試。由此說明,測試可以驅(qū)動設(shè)計。
除了上述幾方面,風(fēng)險控制、變更管理和配置管理等等也是軟件質(zhì)量管理必須慎重考慮的因素。軟件質(zhì)量是軟件開發(fā)項目管理的核心,提高軟件產(chǎn)品質(zhì)量勢在必行,只有充分認(rèn)識軟件質(zhì)量的重要性,了解影響軟件質(zhì)量的因素,才能有的放矢,采用科學(xué)的技術(shù)方法和先進(jìn)的管理技術(shù)來確保軟件的質(zhì)量。
參考文獻(xiàn)
[1]楊根興,等.軟件質(zhì)量保證.測試與評價.清華大學(xué)出版社;第1版、第15頁.