版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第一章軟件質(zhì)量管理問題概論
目錄1.引言2.軟件質(zhì)量屬性和質(zhì)量要素3.商業(yè)目標(biāo)決定質(zhì)量目標(biāo)4.質(zhì)量保證能夠保證質(zhì)量嗎5.質(zhì)量人員的狀況6.全面軟件質(zhì)量管理:模型7.全面軟件質(zhì)量管理:制定質(zhì)量計(jì)劃8.全面軟件質(zhì)量管理:技術(shù)評(píng)審9.全面軟件質(zhì)量管理:軟件測(cè)試10.全面軟件質(zhì)量管理:過程檢查11.全面軟件質(zhì)量管理:缺陷跟蹤工具參考書:《軟件工程與項(xiàng)目管理解析》,林銳著,電子工業(yè)出版社,20031.引言
軟件質(zhì)量管理是充滿爭(zhēng)論的話題。被人們奉為軟件質(zhì)量管理圣經(jīng)的CMM和ISO9001似乎并不奏效,現(xiàn)實(shí)和理想之間的差距太大。經(jīng)典軟件工程教科書以及CMM和ISO9001總是拋開商業(yè)目標(biāo)談質(zhì)量管理,本末倒置,紙上談兵,誤導(dǎo)了大量讀者,所以質(zhì)量管理才變得那么艱辛。世界上還沒有萬(wàn)能的軟件質(zhì)量管理圣經(jīng),我們不要迷信CMM和ISO9000。要多向有實(shí)戰(zhàn)經(jīng)驗(yàn)的同行專家請(qǐng)教,但是不要輕信“紙上談兵”的專家。本文給出了一套實(shí)用主義的“全面軟件質(zhì)量管理”方法。重要的理念:商業(yè)目標(biāo)決定質(zhì)量目標(biāo)。提高軟件質(zhì)量的最終目的是為了贏利,而不是創(chuàng)造完美無(wú)缺的產(chǎn)品。因此對(duì)于普通商業(yè)軟件而言,并不是“質(zhì)量越高越好”,而是恰好讓廣大用戶滿意,并且將提高質(zhì)量所付出的代價(jià)控制在預(yù)算之內(nèi)。2.軟件質(zhì)量屬性和質(zhì)量要素
2.1如何描述質(zhì)量詞典對(duì)質(zhì)量的定義是:①典型的或本質(zhì)的特征;②事物固有的或區(qū)別于其他事物的特征或本質(zhì);③優(yōu)良或出色的程度。CMM對(duì)質(zhì)量的定義是:①一個(gè)系統(tǒng)、組件或過程符合特定需求的程度;②一個(gè)系統(tǒng)、組件或過程符合客戶或用戶的要求或期望的程度。上述定義很抽象,人們看了準(zhǔn)會(huì)一臉迷惘。就讓我們用“人的健康”來(lái)類比解釋軟件質(zhì)量。古時(shí)候人們以為長(zhǎng)得結(jié)實(shí)、飯量大就是健康,這顯然是不科學(xué)的?,F(xiàn)代人總是通過考察多方面的生理因素來(lái)判斷是否健康,如測(cè)量身高、體重、心跳、血壓、血液、體溫等。如果上述因素都合格,那么表明這人是健康的。如果某個(gè)因素不合格,則表明此人在某個(gè)方面不健康,醫(yī)生會(huì)對(duì)癥下藥。通過類比,我們這樣理解軟件質(zhì)量:
軟件質(zhì)量是許多質(zhì)量屬性的綜合體現(xiàn),各種質(zhì)量屬性反映了軟件質(zhì)量的方方面面。人們通過改善軟件的各種質(zhì)量屬性,從而提高軟件的整體質(zhì)量(否則無(wú)從下手)。
2.軟件質(zhì)量屬性和質(zhì)量要素2.1如何描述質(zhì)量軟件的質(zhì)量屬性很多,如正確性、精確性,健壯性、可靠性、容錯(cuò)性、性能、易用性、安全性、可擴(kuò)展性、可復(fù)用性、兼容性、可移植性、可測(cè)試性、可維護(hù)性、靈活性等。上述這些質(zhì)量屬性之間“你中有我,我中有他”,非常纏綿。如果開發(fā)人員每天要面對(duì)那么多的質(zhì)量屬性咬文嚼字,不久就會(huì)迂腐得像孔乙己,因此我們有必要對(duì)質(zhì)量屬性做些分類和整合。質(zhì)量屬性可分為兩大類:“功能性”與“非功能性”,后者有時(shí)也稱為“能力”(Capability)。2.軟件質(zhì)量屬性和質(zhì)量要素
2.2十大軟件質(zhì)量因素功能性質(zhì)量因素:正確性,健壯性,可靠性非功能性質(zhì)量因素:性能,易用性,清晰性,安全性,可擴(kuò)展性,兼容性,可移植性為什么是“十大”質(zhì)量因素逐一解釋“十大”質(zhì)量因素(參見《高質(zhì)量程序設(shè)計(jì)指南——C++/C語(yǔ)言》)2.軟件質(zhì)量屬性和質(zhì)量要素2.3軟件質(zhì)量要素什么是軟件質(zhì)量要素?(1)從技術(shù)角度講,對(duì)軟件整體質(zhì)量影響最大的那些質(zhì)量屬性才是質(zhì)量要素;(2)從商業(yè)角度講,客戶最關(guān)心的、能成為賣點(diǎn)的質(zhì)量屬性才是質(zhì)量要素。對(duì)于一個(gè)特定的軟件而言,我們首先判斷什么是質(zhì)量要素,才能給出提高質(zhì)量的具體措施,而不是一股腦地想把所有的質(zhì)量屬性都做好,否則不僅做不好,還可能得不償失。如果某些質(zhì)量屬性并不能產(chǎn)生顯著的經(jīng)濟(jì)效益,我們可以忽略它們,把精力用在對(duì)經(jīng)濟(jì)效益貢獻(xiàn)最大的質(zhì)量要素上。簡(jiǎn)而言之,只有質(zhì)量要素才值得開發(fā)人員下功夫去改善。2.軟件質(zhì)量屬性和質(zhì)量要素
2.4正確性正確性是指軟件按照需求正確執(zhí)行任務(wù)的能力?!罢_性”的語(yǔ)義涵蓋了“精確性”。正確性無(wú)疑是第一重要的軟件質(zhì)量屬性。技術(shù)評(píng)審和測(cè)試的第一關(guān)都是檢查工作成果的正確性。機(jī)器不會(huì)主動(dòng)欺騙人,軟件運(yùn)行出錯(cuò)通常都是人造成的,所以不要找借口埋怨機(jī)器有毛病。2.軟件質(zhì)量屬性和質(zhì)量要素2.5健壯性健壯性是指在異常情況下,軟件能夠正常運(yùn)行的能力。正確性描述軟件在需求范圍之內(nèi)的行為,而健壯性描述軟件在需求范圍之外的行為。開發(fā)者往往把異常情況錯(cuò)當(dāng)成正常情況而不作處理,結(jié)果降低了健壯性。用戶才不管正確性與健壯性的區(qū)別,反正軟件出了差錯(cuò)都是開發(fā)方的錯(cuò)。所以提高軟件的健壯性也是開發(fā)者的義務(wù)。健壯性有兩層含義:一是容錯(cuò)能力,二是恢復(fù)能力。從語(yǔ)義上理解,恢復(fù)不及容錯(cuò)那么健壯。Unix容錯(cuò)能力很強(qiáng),可惜不好用。Windows容錯(cuò)能力較差,但是恢復(fù)能力很好,而且很好用。占了90%的操作系統(tǒng)市場(chǎng)。2.軟件質(zhì)量屬性和質(zhì)量要素2.6可靠性可靠性是指在一定的環(huán)境下,在給定的時(shí)間內(nèi),系統(tǒng)不發(fā)生故障的概率??煽啃员緛?lái)是硬件領(lǐng)域的術(shù)語(yǔ)。比如某個(gè)電子設(shè)備在剛開始工作時(shí)挺好的,但由于器件在工作中其物理性質(zhì)會(huì)發(fā)生變化(如發(fā)熱),慢慢地系統(tǒng)的功能或性能就會(huì)失常。所以一個(gè)從設(shè)計(jì)到生產(chǎn)完全正確的硬件系統(tǒng),在工作中未必就是可靠的。
軟件在運(yùn)行時(shí)不會(huì)發(fā)生物理性質(zhì)的變化,人們常以為如果軟件的某個(gè)功能是正確的,那么它一輩子都是正確的。可是我們無(wú)法對(duì)軟件進(jìn)行徹底地測(cè)試,無(wú)法根除軟件中潛在的錯(cuò)誤。平時(shí)軟件運(yùn)行得好好的,說不準(zhǔn)哪一天就不正常了,如有千年等一回的“千年蟲”問題,司空見慣的“內(nèi)存泄露”、“誤差累積”問題等等。
2.軟件質(zhì)量屬性和質(zhì)量要素2.6可靠性軟件可靠性分析通常采用統(tǒng)計(jì)方法,遺憾的是目前可供第一線開發(fā)人員使用的成果很少見,大多數(shù)文章限于理論研究??谡Z(yǔ)中的可靠性含義寬泛,幾乎囊括了正確性、健壯性。只要人們發(fā)現(xiàn)系統(tǒng)有毛病,便歸結(jié)為可靠性差。從專業(yè)角度講,這種說法是確切的。時(shí)隱時(shí)現(xiàn)的錯(cuò)誤一般都屬于可靠性問題,糾錯(cuò)的代價(jià)很高。例如當(dāng)維護(hù)人員十萬(wàn)火急地趕到現(xiàn)場(chǎng)時(shí),錯(cuò)誤消失了;等維護(hù)人員回家后,錯(cuò)誤又出現(xiàn)了?!浖煽啃詥栴}主要是在編程時(shí)候埋下的禍害(很難測(cè)試出來(lái)),應(yīng)當(dāng)提倡規(guī)范化程序設(shè)計(jì),預(yù)防可靠性禍害。2.軟件質(zhì)量屬性和質(zhì)量要素2.7性能性能通常是指軟件的“時(shí)間-空間”效率,而不僅是指軟件的運(yùn)行速度。人們總希望軟件的運(yùn)行速度高些,并且占用資源少些。既要馬兒跑得快,又要馬兒吃的少。性能優(yōu)化的關(guān)鍵工作是找出限制性能的“瓶頸”,不要在無(wú)關(guān)痛癢的地方瞎忙乎。例如在大學(xué)里當(dāng)教師,光靠使勁講課或者埋頭做實(shí)驗(yàn),職稱是升不快的。有些人找到了突破口,一年之內(nèi)“造”它幾十篇文章,爭(zhēng)取破格升副教授、教授。程序員可以通過優(yōu)化數(shù)據(jù)結(jié)構(gòu)、算法和代碼來(lái)提高軟件的性能。例如數(shù)據(jù)庫(kù)程序的優(yōu)化。算法復(fù)雜度分析是很好的方法,可以達(dá)到“未卜先知”的功效。2.軟件質(zhì)量屬性和質(zhì)量要素2.7性能性能優(yōu)化就好像從海綿里擠水一樣,你不擠,水就不出來(lái),你越擠海綿越干。有些程序員認(rèn)為現(xiàn)在的計(jì)算機(jī)不僅速度越來(lái)越高,而且內(nèi)存越來(lái)越大,因此軟件性能優(yōu)化的必要性下降了。這種看法是不對(duì)的,殊不知隨著機(jī)器的升級(jí),軟件系統(tǒng)也越來(lái)越龐大了和復(fù)雜了,性能優(yōu)化仍然大有必要。最具有代表性的是三維游戲軟件,例如《DeltaForce》、《古墓麗影》、《反恐精英》等,如果不對(duì)軟件(關(guān)鍵是游戲引擎)做精益求精的優(yōu)化,要想在一臺(tái)普通的PC上順暢地玩游戲是不太可能的。2.軟件質(zhì)量屬性和質(zhì)量要素2.8易用性易用性是指用戶使用軟件的容易程度?,F(xiàn)代人的生活節(jié)奏快,干啥事都想圖個(gè)方便。所以把易用性作為重要的質(zhì)量屬性對(duì)待無(wú)可非議。
導(dǎo)致軟件易用性差的根本原因:理工科大學(xué)教育存在缺陷:沒有開設(shè)人機(jī)工程學(xué)、美學(xué)、心理學(xué)這些必修課,大部分開發(fā)人員不知道如何設(shè)計(jì)易用的軟件產(chǎn)品。開發(fā)人員犯了“錯(cuò)位”的毛病:他以為只要自己用起來(lái)方便,用戶也就會(huì)滿意。
軟件的易用性要讓用戶來(lái)評(píng)價(jià)。當(dāng)用戶真的感到軟件很好用時(shí),一股溫暖的感覺油然而生,于是就用“界面友好”、“方便易用”等詞來(lái)評(píng)價(jià)軟件產(chǎn)品。
2.軟件質(zhì)量屬性和質(zhì)量要素2.9清晰性清晰意味者所有的工作成果易讀、易理解,可以提高團(tuán)隊(duì)開發(fā)效率,降低維護(hù)代價(jià)。開發(fā)人員只有在自己思路清晰的時(shí)候才可能寫出讓別人易讀、易理解的程序和文檔??衫斫獾臇|西通常是簡(jiǎn)潔的。一個(gè)原始問題可能很復(fù)雜,但高水平的人就能夠把軟件系統(tǒng)設(shè)計(jì)得很簡(jiǎn)潔。如果軟件系統(tǒng)臃腫不堪,它遲早會(huì)出問題。所以簡(jiǎn)潔是人們對(duì)工作“精益求精”的結(jié)果,而不是潦草應(yīng)付的結(jié)果。與簡(jiǎn)潔對(duì)立的是“羅里羅嗦”。千萬(wàn)不要把在學(xué)校里“造文章”的手法用于開發(fā)產(chǎn)品!如果把文章寫得很簡(jiǎn)潔,讓人很容易理解,投稿往往中不了;只有加上一些玄乎的東西,把本來(lái)簡(jiǎn)單的弄成復(fù)雜的,才會(huì)增加投稿的命中率。2.軟件質(zhì)量屬性和質(zhì)量要素2.10安全性
這里安全性是指信息安全,英文是Security而不是Safety。安全性是指防止系統(tǒng)被非法入侵的能力,既屬于技術(shù)問題又屬于管理問題。信息安全是一門比較深?yuàn)W的學(xué)問,其發(fā)展是建立在正義與邪惡的斗爭(zhēng)之上。這世界似乎不存在絕對(duì)安全的系統(tǒng),連美國(guó)軍方的系統(tǒng)都頻頻遭黑客入侵。如今全球黑客泛濫,真是“道高一尺,魔高一丈”??!開發(fā)商和客戶愿意為提高安全性而投入的資金是有限的,他們要考慮值不值得。
究竟什么樣的安全性是令人滿意的呢?
一般地,如果黑客為非法入侵花費(fèi)的代價(jià)(考慮時(shí)間、費(fèi)用、風(fēng)險(xiǎn)等因素)高于得到的好處,那么這樣的系統(tǒng)可以認(rèn)為是安全的。對(duì)于普通軟件,并不一點(diǎn)要追求很高的安全性,也不能完全忽視安全性,要先分析黑客行為。
2.軟件質(zhì)量屬性和質(zhì)量要素2.11可擴(kuò)展性
可擴(kuò)展性反映軟件適應(yīng)“變化”的能力。在軟件開發(fā)過程中,“變化”是司空見慣的事情,如需求、設(shè)計(jì)的變化,算法的改進(jìn),程序的變化等等。由于軟件是“軟”的,是否它天生就容易修改以適應(yīng)“變化”?關(guān)鍵要看軟件的規(guī)模和復(fù)雜性如果軟件規(guī)模很小,問題很簡(jiǎn)單,那么修改起來(lái)的確比較容易,這時(shí)就無(wú)所謂“可擴(kuò)展性”了。要是軟件的代碼只有100行,那么“軟件工程”也就用不著了。如果軟件規(guī)模很大,問題很復(fù)雜,倘若軟件的可擴(kuò)展性不好,那么該軟件就像用卡片造成的房子,抽出或者塞進(jìn)去一張卡片都有可能使房子倒塌。2.軟件質(zhì)量屬性和質(zhì)量要素2.11可擴(kuò)展性
現(xiàn)代軟件產(chǎn)品通常采用“增量開發(fā)模式”,不斷推出新版本,獲取增值利潤(rùn)??蓴U(kuò)展性越來(lái)越重要。可擴(kuò)展性是系統(tǒng)設(shè)計(jì)階段重點(diǎn)考慮的質(zhì)量屬性。談到軟件的可擴(kuò)展性,開發(fā)人員首先想到的是怎樣提高可擴(kuò)展性,于是努力去設(shè)計(jì)很好的體系結(jié)構(gòu)來(lái)提高可擴(kuò)展性,卻不考慮該不該做這件事。從商業(yè)角度考慮,如果某個(gè)軟件將不斷地推出新版本,那么可擴(kuò)展性很重要。但是如果軟件永遠(yuǎn)都不會(huì)有下個(gè)版本(一次性買賣),那么根本無(wú)需提高可擴(kuò)展性,何必自找苦吃呢!2.軟件質(zhì)量屬性和質(zhì)量要素2.12兼容性兼容性是指不同產(chǎn)品(或者新老產(chǎn)品)相互交換信息的能力。例如兩個(gè)字處理軟件的文件格式兼容,那么它們都可以操作對(duì)方的文件,這種能力對(duì)用戶很有好處。兼容性的商業(yè)規(guī)則:弱者設(shè)法與強(qiáng)者兼容,否則無(wú)容身之地;強(qiáng)者應(yīng)當(dāng)避免被兼容,否則市場(chǎng)將被瓜分。如果你經(jīng)??聪愀叟牡摹昂趲汀庇捌憔秃苋菀酌靼走@個(gè)道理。金山軟件公司的WPS與微軟的Word之爭(zhēng)。WPS一定要與Word兼容,否則活不下去。但是Word絕對(duì)不會(huì)與WPS兼容,除非WPS又在中國(guó)稱老大。中國(guó)聯(lián)通和中國(guó)移動(dòng)的手機(jī)互聯(lián)互通問題。(互聯(lián)網(wǎng)的價(jià)值與用戶數(shù)量的平方成正比)2.軟件質(zhì)量屬性和質(zhì)量要素2.13可移植性軟件的可移植性指的是軟件不經(jīng)修改或稍加修改就可以運(yùn)行于不同軟硬件環(huán)境(CPU、OS和編譯器)的能力,主要體現(xiàn)為代碼的可移植性。編程語(yǔ)言越低級(jí),用它編寫的程序越難移植,反之則越容易。這是因?yàn)?,不同的硬件體系結(jié)構(gòu)(例如IntelCPU和SPARCCPU)使用不同的指令集和字長(zhǎng),而OS和編譯器可以屏蔽這種差異,所以高級(jí)語(yǔ)言的可移植性更好。Java程序號(hào)稱“一次編譯,到處運(yùn)行”,具有100%的可移植性。為了提高Java程序的性能,最新的Java標(biāo)準(zhǔn)允許人們使用一些與平臺(tái)相關(guān)的優(yōu)化技術(shù),這樣優(yōu)化后的Java程序雖然不能“一次編譯,到處運(yùn)行”,仍然能夠“一次編程,到處編譯”。軟件設(shè)計(jì)時(shí)應(yīng)該將“設(shè)備相關(guān)程序”與“設(shè)備無(wú)關(guān)程序”分開,將“功能模塊”與“用戶界面”分開。3.商業(yè)目標(biāo)決定質(zhì)量目標(biāo)3.1教科書的片面觀點(diǎn)大凡軟件工程教科書為了強(qiáng)調(diào)質(zhì)量的重要性,總是要舉一些歷史上發(fā)生過的重大軟件質(zhì)量事故,例如航天飛機(jī)爆炸、核電站失事、愛國(guó)者導(dǎo)彈發(fā)生故障等等。這些事故的確不是危言聳聽,給人們敲響了質(zhì)量的警鐘。
學(xué)術(shù)界總是喜歡宣揚(yáng)質(zhì)量至上的理念,而忽視企業(yè)的商業(yè)利益,將質(zhì)量目標(biāo)凌駕于商業(yè)目標(biāo)之上。我不能評(píng)判這種現(xiàn)象是好還是壞,但是的確誤導(dǎo)了大量讀者。許多軟件人員都有“質(zhì)量越高越好”的觀念,這是被教科書灌輸?shù)?,而不是他自己領(lǐng)悟出來(lái)的。
我曾在著作《高質(zhì)量程序設(shè)計(jì)指南——C++/C語(yǔ)言》中大肆宣揚(yáng)了高質(zhì)量程序設(shè)計(jì)的理念,力求使C++程序達(dá)到“零缺陷”的質(zhì)量目標(biāo)。盡管此書得到了許多程序員的贊同,但是我經(jīng)過反思之后改變了質(zhì)量觀念,我要著重指出的是:重視軟件質(zhì)量是應(yīng)該的,但是“質(zhì)量越高越好”并不是普適的真理。只有極少數(shù)軟件應(yīng)該追求“零缺陷”,對(duì)絕大多數(shù)軟件而言,商業(yè)目標(biāo)決定了質(zhì)量目標(biāo),而不該把質(zhì)量目標(biāo)凌駕于商業(yè)目標(biāo)之上。3.商業(yè)目標(biāo)決定質(zhì)量目標(biāo)3.2嚴(yán)格系統(tǒng)對(duì)質(zhì)量的要求航空航天等系統(tǒng)對(duì)質(zhì)量要求極高,任何缺陷都有可能導(dǎo)致機(jī)毀人亡,所以人們不惜一切代價(jià)去消除缺陷。在發(fā)射航天器之前,只要發(fā)現(xiàn)任何異常,就會(huì)立即取消發(fā)射指令,直到異常被消除為止。前蘇聯(lián)做得最過分,許多重大武器系統(tǒng)的負(fù)責(zé)人都簽了生死狀,系統(tǒng)研制成功則獲得英雄勛章,失敗則被槍斃。在這種壓力下沒有人敢對(duì)質(zhì)量有一絲松懈。3.商業(yè)目標(biāo)決定質(zhì)量目標(biāo)3.3普通商業(yè)軟件:商業(yè)目標(biāo)決定質(zhì)量目標(biāo)上述嚴(yán)格系統(tǒng)畢竟是少數(shù),絕大多數(shù)普通軟件的缺陷并不會(huì)造成機(jī)毀人亡這樣的重大損失,否則沒有人敢從事軟件開發(fā)了。在日常工作中,我們接觸過的軟件幾乎都是有缺陷的,即便是軟件業(yè)老大Microsoft,它的軟件產(chǎn)品也經(jīng)常出錯(cuò)甚至導(dǎo)致死機(jī),人們罵幾句后還會(huì)照樣使用有缺陷的軟件。企業(yè)的根本目標(biāo)是為了獲取盡可能多的利潤(rùn),而不是生產(chǎn)完美無(wú)缺的產(chǎn)品。如果企業(yè)銷售出去的軟件的質(zhì)量比較差,輕則挨罵,重則被退貨甚至被索賠,因此為了提高用戶對(duì)產(chǎn)品的滿意度,企業(yè)必須提高產(chǎn)品的質(zhì)量。但是企業(yè)不可能為了追求完美的質(zhì)量而不惜一切代價(jià),當(dāng)企業(yè)為提高質(zhì)量所付出的代價(jià)超過銷售收益時(shí),這個(gè)產(chǎn)品已經(jīng)沒有商業(yè)價(jià)值了,還不如不開發(fā)。企業(yè)必須權(quán)衡質(zhì)量、效率和成本,產(chǎn)品質(zhì)量太低了或者太高了,都不利于企業(yè)獲取利潤(rùn)。企業(yè)理想的質(zhì)量目標(biāo)不是“零缺陷”,而是恰好讓廣大用戶滿意,并且將提高質(zhì)量所付出的代價(jià)控制在預(yù)算之內(nèi)。
4.質(zhì)量保證能夠保證質(zhì)量嗎4.1美麗的謊言CMM對(duì)軟件質(zhì)量保證是這樣描述的:軟件質(zhì)量保證(QualityAssurance)的目的是為管理者提供有關(guān)軟件過程和產(chǎn)品的適當(dāng)?shù)目梢曅?。它包括評(píng)審和審核軟件產(chǎn)品及其活動(dòng),以驗(yàn)證其是否遵守既定的規(guī)程和標(biāo)準(zhǔn),并向有關(guān)負(fù)責(zé)人匯報(bào)評(píng)審和審核的結(jié)果。
質(zhì)量保證(QualityAssurance,QA)是CMM和ISO9001最為推崇的改善軟件質(zhì)量的方法?;谖矣H身實(shí)踐和調(diào)查研究,我敢冒天下之大不諱說一句:質(zhì)量保證并不能保證質(zhì)量,它是個(gè)美麗的謊言。4.質(zhì)量保證能夠保證質(zhì)量嗎4.1美麗的謊言簡(jiǎn)而言之,質(zhì)量保證活動(dòng)就是檢查軟件項(xiàng)目的“工作過程和工作成果”是否符合既定的規(guī)范。如此簡(jiǎn)單的活動(dòng)為什么被冠以“質(zhì)量保證”這等份量的術(shù)語(yǔ)呢?沒有歷史典故,經(jīng)我考究,猜想是源于一個(gè)天真的假設(shè):
過程質(zhì)量與產(chǎn)品質(zhì)量存在某種程度的因果關(guān)系,通?!昂玫倪^程”產(chǎn)生“好的產(chǎn)品”,而“差的過程”將產(chǎn)生“差的產(chǎn)品”。假設(shè)企業(yè)已經(jīng)制定了軟件過程規(guī)范,如果質(zhì)量保證人員發(fā)現(xiàn)某些項(xiàng)目的“工作過程以及工作成果”不符合既定的規(guī)范,那么馬上可以斷定產(chǎn)品存在缺陷。反之,如果質(zhì)量保證人員沒有發(fā)現(xiàn)不符合既定規(guī)范的東西,那么也可以斷定產(chǎn)品是合格的。符合既定規(guī)范的東西并不意味著質(zhì)量一定合格,僅靠規(guī)范無(wú)法識(shí)別出產(chǎn)品中可能存在的大量缺陷(以高手與新手的設(shè)計(jì)、編程為例)。質(zhì)量保證的技術(shù)含量太低了,只能檢查出膚淺的缺陷,不能對(duì)付有技術(shù)難度的缺陷。所以單獨(dú)的“質(zhì)量保證”其實(shí)并不能“保證質(zhì)量”。4.質(zhì)量保證能夠保證質(zhì)量嗎4.2CMM3級(jí)企業(yè)QA人員的迷惘(email摘錄) 我很迷茫,很想找一個(gè)人聊聊,希望你能給我點(diǎn)主意,化解我心中的謎團(tuán)。 昨天我們公司拿到了CMM3的證書,但是我一點(diǎn)都高興不起來(lái)。公司宣稱,我們的軟件質(zhì)量大大提高了,但是我卻沒有信心。我們的過程執(zhí)行得很好,但是我覺得并沒有在很大程度上改善產(chǎn)品的質(zhì)量。今天還有一個(gè)項(xiàng)目經(jīng)理跟我訴苦:前一階段大家都忙于執(zhí)行過程,但是他的產(chǎn)品質(zhì)量令人很不滿意,尤其是測(cè)試做的很不到位。我是這個(gè)項(xiàng)目的SQA,所以我很理解他,但是我?guī)筒簧纤拿ΑR驗(yàn)樗麄兊倪^程執(zhí)行得很好,這個(gè)項(xiàng)目可是通過CMM3級(jí)正式評(píng)估了的。當(dāng)然,執(zhí)行CMM有不少好處,比如文檔全面完整了,項(xiàng)目管理的可視性提高了。但是對(duì)于我們公司而言,它并沒有在根本上提高我們公司的軟件能力。比如概要設(shè)計(jì),開發(fā)人員根本就不知道用來(lái)干嗎的,怎么能指望他們寫出高質(zhì)量的概要設(shè)計(jì)說明書出來(lái)。而在做技術(shù)評(píng)審的時(shí)候,他們很少能找出邏輯性的錯(cuò)誤,只能發(fā)現(xiàn)一些諸如錯(cuò)別字之類的小錯(cuò)誤。我們幾乎每一個(gè)配置項(xiàng)都要經(jīng)過評(píng)審,但是大部分評(píng)審都只能發(fā)現(xiàn)一些無(wú)關(guān)痛癢的問題。公司已經(jīng)通過CMM3級(jí)了,我認(rèn)為過程執(zhí)行得很好了,可是軟件質(zhì)量仍然比較差。這是怎么回事啊,你覺得原因在哪里?結(jié)論:公司按照CMM3級(jí)的要求執(zhí)行,而且質(zhì)量人員也認(rèn)為執(zhí)行過程符合既定的規(guī)范,但是軟件產(chǎn)品的質(zhì)量仍然低下。所以說“質(zhì)量保證并不能保證質(zhì)量”,這句話一點(diǎn)都不過分。質(zhì)量保證對(duì)于保證質(zhì)量而言只是必要的手段,而不是充分的手段。5.質(zhì)量人員的狀況5.1郁悶QA人員訴苦:我現(xiàn)在覺得很郁悶,CMM評(píng)估前還有目標(biāo),評(píng)估完了冷靜下來(lái)卻覺得效果很差,很沒勁。項(xiàng)目經(jīng)理向我訴苦,他們過程執(zhí)行的很好,但是對(duì)產(chǎn)品質(zhì)量很不滿意,我卻無(wú)能為力,我這個(gè)QA還有什么用處??!所以我現(xiàn)在干活沒有動(dòng)力,因?yàn)椴荒墚a(chǎn)生效益,做再多的工作也覺得是白干。而且我現(xiàn)在手頭有5個(gè)項(xiàng)目要跟蹤,還不包括一些整理培訓(xùn)記錄的雜活,我覺得自己連工人也不如。我有一些很好的想法卻無(wú)處發(fā)揮,所以我很迷茫,很矛盾地考慮去留問題。
郁悶的滋味各色各樣,只有正在郁悶的人感受最真切。我發(fā)現(xiàn)在軟件職業(yè)里,質(zhì)量人員是最郁悶的一族。郁悶的共同特征有:(1)在執(zhí)行質(zhì)量保證活動(dòng)時(shí),經(jīng)常受別人的氣,真是吃力不討好。(2)如果項(xiàng)目取得成功,主要功勞都被項(xiàng)目主管霸占了,領(lǐng)導(dǎo)們至多會(huì)給質(zhì)量人員一些口頭上的感謝。領(lǐng)導(dǎo)們嘴上重視產(chǎn)品的質(zhì)量,但是內(nèi)心并不重視質(zhì)量人員。(3)質(zhì)量人員沒有實(shí)質(zhì)性的權(quán)力,沒有成就感,但是卻對(duì)質(zhì)量負(fù)有最多的責(zé)任。(4)待遇一般,看不到升遷的機(jī)會(huì),沒有盼頭,要么成為打雜的,要么另尋出路。
5.質(zhì)量人員的狀況5.1郁悶聲援:我也做過傷害質(zhì)量人員的事情,非常后悔。我所認(rèn)識(shí)的公司內(nèi)外的質(zhì)量人員都是性格溫和、細(xì)致耐心的人,他們的優(yōu)點(diǎn)在于人格而不是技術(shù)。平心而論,他們比某些技術(shù)出色但是情商不高的技術(shù)人員更值得交朋友。質(zhì)量檢查是他們的工作職責(zé),誰(shuí)也不會(huì)有意干擾項(xiàng)目,所以任何人都不應(yīng)該向他們發(fā)火。
5.質(zhì)量人員的狀況5.2路在何方軟件行業(yè)里的人嘴上都說質(zhì)量很重要,可是大多數(shù)企業(yè)并沒有給質(zhì)量人員提供良好的職業(yè)發(fā)展空間。質(zhì)量人員通常僅給企業(yè)起到心里安慰的作用。這樣下去,有能耐的質(zhì)量人員會(huì)跑光的。我所認(rèn)識(shí)的多數(shù)質(zhì)量人員要么改行了(如當(dāng)老師),要么讀工程碩士,MBA等,以圖將來(lái)發(fā)展事業(yè)。在大多數(shù)的軟件企業(yè)里,男性處于支配地位,女性職位相對(duì)比較低。而質(zhì)量人員通常是女性,很多男性主管從未真正地把質(zhì)量人員當(dāng)成企業(yè)的寶貴人才看待,這種偏見是非常有害的。任何素質(zhì)合格的員工都是寶貴的人才,很多默默無(wú)聞的人才其實(shí)是被不懂得質(zhì)量管理的領(lǐng)導(dǎo)給荒廢了。質(zhì)量人員之所以沒有發(fā)揮預(yù)期的效果,不是性別緣故,主要過失在于領(lǐng)導(dǎo)者。5.質(zhì)量人員的狀況5.2路在何方建議:(1)無(wú)論是企業(yè)領(lǐng)導(dǎo)還是質(zhì)量人員,都要好好學(xué)習(xí)全面軟件質(zhì)量管理方法,結(jié)合企業(yè)的特點(diǎn)給出真正有效的質(zhì)量管理方案。(2)只有當(dāng)企業(yè)領(lǐng)導(dǎo)采用了正確的質(zhì)量管理方案,用了合格的質(zhì)量人員,才可能看得到比較明顯的質(zhì)量改善,才能形成良性循環(huán)。(3)如果想讓質(zhì)量人員負(fù)起比較重的責(zé)任,那么就要給她相應(yīng)的權(quán)力。在企業(yè)中,責(zé)任和權(quán)利是成正比的。如果質(zhì)量人員的地位無(wú)足輕重,那么必然導(dǎo)致質(zhì)量管理無(wú)足輕重。(4)給質(zhì)量人員一個(gè)適宜的升遷機(jī)會(huì)和薪資待遇,讓她能夠快樂地工作,而不是成天無(wú)奈地檢查質(zhì)量。5.質(zhì)量人員的狀況5.3贊美詩(shī)中國(guó)遭受了非典型肺炎(SARS)的肆虐,人們?cè)谖ky之際想起了醫(yī)護(hù)人員的好處,因此涌現(xiàn)了許多對(duì)醫(yī)護(hù)人員的贊美詩(shī)。我碰巧在網(wǎng)上搜索到一位軟件詩(shī)人獻(xiàn)給質(zhì)量人員的贊美詩(shī)“晚上八九點(diǎn)鐘的太陽(yáng)”,我認(rèn)為沒有必要等到軟件質(zhì)量災(zāi)難降臨的時(shí)候才想起質(zhì)量人員,于是摘錄這首詩(shī)公布于此。詩(shī)中的“狼人”和“銀彈”是軟件工程的典故,寓意深刻。衷心感謝這位不知姓名的浪漫軟件詩(shī)人。晚上八九點(diǎn)鐘的太陽(yáng)
—獻(xiàn)給軟件測(cè)試和質(zhì)保人員
我更喜愛晚上八九點(diǎn)鐘的太陽(yáng),雖然人們都已把他遺忘,但他還是艱難地懸掛在天上。
我更喜愛晚上八九點(diǎn)鐘的太陽(yáng),因?yàn)樗麑⒆喑隼杳鞯慕豁?。沒有他又怎會(huì)呼喚出一片明亮?我更喜愛晚上八九點(diǎn)鐘的太陽(yáng),因?yàn)樗麜?huì)化成早上的朝陽(yáng)。沒有他又怎會(huì)有什么希望?
我更喜愛晚上八九點(diǎn)鐘的太陽(yáng),因?yàn)樗巧系鄣谋郯?。沒有他,又怎會(huì)創(chuàng)造萬(wàn)物的光芒。
狼人望月嚎叫,它知道月亮映出的太陽(yáng)之光,終將化為銀彈,射入它的胸膛。
我更喜愛晚上八九點(diǎn)種的太陽(yáng)。
6.全面軟件質(zhì)量管理:模型6.1郎中治病的故事質(zhì)量的死對(duì)頭是缺陷(defect,bug…),缺陷是混在產(chǎn)品中的人們不喜歡、不想要的東西,它對(duì)產(chǎn)品沒有好處只有壞處。缺陷越多質(zhì)量越低,缺陷越少質(zhì)量越高,提高軟件質(zhì)量的基本手段是消除軟件缺陷。中國(guó)郎中看病的故事在中國(guó)古代,有一家三兄弟全是郎中。其中老三是名醫(yī),人們問他:“你們兄弟三人誰(shuí)的醫(yī)術(shù)最高?”他回答說:“我常用猛藥給病危者醫(yī)治,偶爾有些病危者被我救活,于是我的醫(yī)術(shù)遠(yuǎn)近聞名并成了名醫(yī)。我二哥通常在人們剛剛生病的時(shí)候馬上就治愈他們,臨近村莊的人說他是好郎中。我大哥不外出治病,他深知人們生病的原因,所以能夠預(yù)防家里人生病,他的醫(yī)術(shù)只有我們家里才知道?!崩芍腥值苁侨N治病方式的代言人。6.全面軟件質(zhì)量管理:模型6.2消除軟件缺陷的三種方式老大治病的方式最高明,如果人們能夠預(yù)防生病的話,那么沒病就用不著看醫(yī)生了。提高軟件質(zhì)量最好的辦法是:在開發(fā)過程中有效地防止工作成果產(chǎn)生缺陷,將高質(zhì)量?jī)?nèi)建于開發(fā)過程之中。主要措施是“不斷地提高技術(shù)水平,不斷地提高規(guī)范化水平”,其實(shí)就是練內(nèi)功,通稱為“軟件過程改進(jìn)”。
即使一個(gè)人嚴(yán)守養(yǎng)生之道,身體狀況良好,但總是會(huì)意外地得病的,得了病就要去看醫(yī)生。老二治病的方式就是醫(yī)院的模式,病人越早看病,就越早治好,治病的代價(jià)就越低。同理,在開發(fā)軟件的時(shí)候,即使人們的技術(shù)水平很高,并且嚴(yán)格遵守規(guī)范,但是人非機(jī)器,總是會(huì)犯錯(cuò)誤的,因此無(wú)法完全避免軟件中的缺陷。當(dāng)工作成果剛剛產(chǎn)生時(shí)馬上進(jìn)行質(zhì)量檢查,及時(shí)找出并消除工作成果中的缺陷。這種方式效果比較好,人們一般都能學(xué)會(huì)。最常用的方法是技術(shù)評(píng)審、軟件測(cè)試和過程檢查,已經(jīng)被企業(yè)廣泛采用并取得了成效。
6.全面軟件質(zhì)量管理:模型6.2消除軟件缺陷的三種方式老三治病的方式代價(jià)最高,只能是不得已而為之??稍诂F(xiàn)實(shí)之中,大多數(shù)軟件企業(yè)采用老三的方式來(lái)對(duì)付質(zhì)量問題。典型現(xiàn)象是:在軟件交付之前,沒有及時(shí)消除缺陷。當(dāng)軟件交付給用戶后,用著用著就出錯(cuò)了,趕緊請(qǐng)開發(fā)者來(lái)補(bǔ)救??尚Φ氖?,當(dāng)軟件系統(tǒng)在用戶那里出故障了,那些現(xiàn)場(chǎng)補(bǔ)救成功的人倒成了英雄,好心用戶甚至還寄來(lái)感謝信。6.全面軟件質(zhì)量管理:模型6.3模型借鑒老大、老二治病的方法,我們提煉出全面軟件質(zhì)量管理的模型,如下圖所示。項(xiàng)目中的所有人員幾乎都參與了質(zhì)量活動(dòng),只是介入的程度不同而已,后面幾節(jié)將逐一介紹這些質(zhì)量活動(dòng)。
6.全面軟件質(zhì)量管理:模型6.4角色職責(zé)誰(shuí)對(duì)軟件質(zhì)量負(fù)責(zé)?是全員負(fù)責(zé)。任何與軟件開發(fā)、管理工作相關(guān)的人員都對(duì)質(zhì)量產(chǎn)生影響,都要對(duì)質(zhì)量負(fù)責(zé)。所以人們不要把質(zhì)量問題全部推出質(zhì)量人員或測(cè)試人員。誰(shuí)對(duì)軟件質(zhì)量負(fù)最大的責(zé)任?誰(shuí)的權(quán)利越大,他所負(fù)的質(zhì)量責(zé)任就越大。質(zhì)量人員是成天與質(zhì)量打交道的人,但他個(gè)人并不對(duì)產(chǎn)品質(zhì)量產(chǎn)生最大的影響,所以也不負(fù)最大的責(zé)任。質(zhì)量人員的主要職責(zé):(1)負(fù)責(zé)制定質(zhì)量計(jì)劃(很重要但是工作量比較少);(2)負(fù)責(zé)過程檢查(類似于CMM中的質(zhì)量保證),約占個(gè)人工作量的20%;(3)參與技術(shù)評(píng)審,約占個(gè)人工作量的30%;(4)參與軟件測(cè)試,約占個(gè)人工作量的30%;(5)參與軟件過程改進(jìn)(面向整個(gè)機(jī)構(gòu)),約占個(gè)人工作量的20%;*上述工作量的比例僅供參考,在實(shí)際應(yīng)用時(shí)必須根據(jù)項(xiàng)目的特征而定。
7.全面軟件質(zhì)量管理:制定質(zhì)量管理計(jì)劃質(zhì)量管理計(jì)劃就是為了實(shí)現(xiàn)質(zhì)量目標(biāo)的計(jì)劃。而質(zhì)量目標(biāo)則是由商業(yè)目標(biāo)決定的。開發(fā)軟件產(chǎn)品的最終目的是為了賺錢,所以人們?yōu)樘岣哕浖|(zhì)量所付出的代價(jià)是有上限的,項(xiàng)目負(fù)責(zé)人當(dāng)然希望代價(jià)越低越好。質(zhì)量管理計(jì)劃是全面質(zhì)量管理的行動(dòng)綱領(lǐng)。
誰(shuí)制定質(zhì)量管理計(jì)劃?由項(xiàng)目核心成員和質(zhì)量人員共同協(xié)商制定,主要由質(zhì)量人員起草,由項(xiàng)目經(jīng)理審批即可。
質(zhì)量管理計(jì)劃的主要內(nèi)容(模板見word文件):1.質(zhì)量要素分析
2.質(zhì)量目標(biāo)
3.人員與職責(zé)
4.過程檢查計(jì)劃
5.技術(shù)評(píng)審計(jì)劃
6.軟件測(cè)試計(jì)劃
7.缺陷跟蹤工具
8.審批意見
8.全面軟件質(zhì)量管理:技術(shù)評(píng)審8.1概念技術(shù)評(píng)審(TechnicalReview,TR)的目的是盡早地發(fā)現(xiàn)工作成果中的缺陷,并幫助開發(fā)人員及時(shí)消除缺陷,從而有效地提高產(chǎn)品的質(zhì)量。技術(shù)評(píng)審最初是由IBM公司為了提高軟件質(zhì)量和提高程序員生產(chǎn)率而倡導(dǎo)的。技術(shù)評(píng)審方法已經(jīng)被業(yè)界廣泛采用并收到了很好的效果,它被普遍認(rèn)為是軟件開發(fā)的最佳實(shí)踐之一。
技術(shù)評(píng)審的主要好處有:通過消除工作成果的缺陷而提高產(chǎn)品的質(zhì)量;技術(shù)評(píng)審可以在任何開發(fā)階段執(zhí)行,不必等到軟件可以運(yùn)行之際,越早消除缺陷就越能降低開發(fā)成本;開發(fā)人員能夠及時(shí)地得到同行專家的幫助和指導(dǎo),無(wú)疑會(huì)加深對(duì)工作成果的理解,更好地預(yù)防缺陷,一定程度上提高了開發(fā)生產(chǎn)率。8.全面軟件質(zhì)量管理:技術(shù)評(píng)審8.1概念技術(shù)評(píng)審有兩種基本類型:正式技術(shù)評(píng)審(FTR)。FTR比較嚴(yán)格,需要舉行評(píng)審會(huì)議,參加評(píng)審會(huì)議的人員比較多。非正式技術(shù)評(píng)審(ITR)。ITR的形式比較靈活,通常在同伴之間開展,不必舉行評(píng)審會(huì)議,評(píng)審人員比較少。
8.全面軟件質(zhì)量管理:技術(shù)評(píng)審8.2正式技術(shù)評(píng)審的流程技術(shù)評(píng)審報(bào)告的模板見word文檔9.全面軟件質(zhì)量管理:軟件測(cè)試9.1觀點(diǎn)技術(shù)評(píng)審和軟件測(cè)試的目的都是為了消除軟件的缺陷,兩者的主要區(qū)別是:前者無(wú)需運(yùn)行軟件,評(píng)審人員和作者把工作成果擺放在桌面上討論;而后者一定要運(yùn)行軟件來(lái)查找缺陷。技術(shù)評(píng)審在軟件測(cè)試之前執(zhí)行,尤其是在需求開發(fā)和系統(tǒng)設(shè)計(jì)階段。相比而言,軟件測(cè)試的工作量通常比技術(shù)評(píng)審的大,發(fā)現(xiàn)的缺陷也更多。在制定質(zhì)量計(jì)劃的時(shí)候,已經(jīng)確定了本項(xiàng)目的主要測(cè)試活動(dòng)、時(shí)間和負(fù)責(zé)人,之后再考慮軟件測(cè)試的詳細(xì)計(jì)劃和測(cè)試用例。9.全面軟件質(zhì)量管理:軟件測(cè)試9.1觀點(diǎn)如果機(jī)構(gòu)沒有專職的軟件測(cè)試人員的話,那么開發(fā)人員可以兼職做測(cè)試工作。當(dāng)項(xiàng)目開發(fā)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- JJF 2164-2024在線振動(dòng)管液體密度計(jì)校準(zhǔn)規(guī)范
- GB/T 44636-2024能源互聯(lián)網(wǎng)系統(tǒng)架構(gòu)和要求
- 吉林省松原市前郭縣南部學(xué)區(qū)2024~2025學(xué)年度七年級(jí)上期中測(cè)試.名校調(diào)研 生物(含答案)
- 2024年度云南省高校教師資格證之高等教育法規(guī)通關(guān)試題庫(kù)(有答案)
- 低空經(jīng)濟(jì)產(chǎn)業(yè)園技術(shù)風(fēng)險(xiǎn)分析
- 贛南師范大學(xué)《馬克思主義發(fā)展史》2022-2023學(xué)年第一學(xué)期期末試卷
- 贛南師范大學(xué)《地理信息系統(tǒng)原理》2022-2023學(xué)年第一學(xué)期期末試卷
- 阜陽(yáng)師范大學(xué)《學(xué)校體育學(xué)》2022-2023學(xué)年第一學(xué)期期末試卷
- 阜陽(yáng)師范大學(xué)《數(shù)學(xué)分析二》2021-2022學(xué)年第一學(xué)期期末試卷
- 福建師范大學(xué)《小學(xué)數(shù)學(xué)課程與教學(xué)研究》2022-2023學(xué)年第一學(xué)期期末試卷
- 國(guó)企面試題庫(kù)及參考答案
- 高速公路服務(wù)區(qū)安全管理提升
- 《PLM系統(tǒng)簡(jiǎn)介》課件
- 《西湖龍井茶》課件
- 劍南春人才測(cè)評(píng)題
- 總經(jīng)理辦會(huì)議流程課件
- 東野圭吾:我的老師是偵探
- 兒科對(duì)橈動(dòng)脈采血失敗原因分析品管圈魚骨圖柏拉圖
- 數(shù)字0-10-空白田字格(帶筆順)
- 化解村級(jí)債務(wù)責(zé)任狀模版
- 食品質(zhì)量與安全專業(yè)大學(xué)生職業(yè)生涯規(guī)劃書
評(píng)論
0/150
提交評(píng)論