曾記得1999年,國(guó)內(nèi)對(duì)軟件質(zhì)量的認(rèn)識(shí)還非常落后,當(dāng)時(shí)的“英雄模式”非常盛行,很多企業(yè)認(rèn)為“軟件質(zhì)量就是研發(fā)人員自身的事情,只要找?guī)讉€(gè)編程英雄,軟件質(zhì)量就迎刃而解”,“如果某企業(yè)設(shè)置專職的測(cè)試工程師,會(huì)被大家認(rèn)為是奢侈的事情”。
曾記得1999年,國(guó)內(nèi)對(duì)軟件質(zhì)量的認(rèn)識(shí)還非常落后,當(dāng)時(shí)的“英雄模式”非常盛行,很多企業(yè)認(rèn)為“軟件質(zhì)量就是研發(fā)人員自身的事情,只要找?guī)讉€(gè)編程英雄,軟件質(zhì)量就迎刃而解”,“如果某企業(yè)設(shè)置專職的測(cè)試工程師,會(huì)被大家認(rèn)為是奢侈的事情”。然而事與愿違,我早期所在的公司(當(dāng)時(shí)在國(guó)內(nèi)外都非常有名)就是這樣:招聘了很多的高級(jí)編程人員,啟動(dòng)了很多軟件研發(fā)項(xiàng)目,并且花了很多的錢(qián),但產(chǎn)品質(zhì)量卻仍然很差,很多新產(chǎn)品因質(zhì)量問(wèn)題根本無(wú)法投入市場(chǎng),并且延誤了市場(chǎng)先機(jī);勉強(qiáng)投入市場(chǎng)的幾個(gè)新產(chǎn)品卻將公司的維護(hù)部門(mén)打入萬(wàn)劫不復(fù)的地步,因?yàn)榫S護(hù)部人員經(jīng)常在凌晨2-3點(diǎn)被緊急電話叫醒“我是×郊縣×局的,我們機(jī)房癱瘓了,立即來(lái)一趟”,甚至他們經(jīng)常要在天寒地凍、刮風(fēng)下雨的惡劣條件下熬夜。
就在那一年,可能是公司認(rèn)識(shí)到了質(zhì)量的重要性和它的真實(shí)含義,把我從研發(fā)工程師轉(zhuǎn)變成了一位質(zhì)量工程師兼測(cè)試工程師,也許是我學(xué)過(guò)項(xiàng)目管理專業(yè)的緣故。從那時(shí)起,我知道了什么是ISO9000,什么是CMM,
什么是TL9000。公司也花了幾百萬(wàn)買(mǎi)了大量的軟件工具,如Rational,CCC/Harvest,Telelogic,Numega等等。從此公司的質(zhì)量開(kāi)始演變?yōu)椤皽y(cè)試模式”,最后變成“過(guò)程模式”。在過(guò)程模式下,我們把公司的軟件產(chǎn)品開(kāi)發(fā)的整個(gè)過(guò)程(從誕生到消亡)逐漸分解成許多可控制的標(biāo)準(zhǔn)小過(guò)程,按照ISO9000/TL9000/CMMI進(jìn)行過(guò)程管理,別看這個(gè)變化不起眼,但它的效果卻是驚人的。就象計(jì)算機(jī)軟件技術(shù)從進(jìn)程演變到線程一樣,其實(shí)就是把進(jìn)程拆成許多線程,卻帶來(lái)了軟件執(zhí)行效率的質(zhì)的飛躍。關(guān)于如何更好地分解過(guò)程,軟件產(chǎn)品開(kāi)發(fā)應(yīng)該包括哪些標(biāo)準(zhǔn)過(guò)程,ISO9000/TL9000/CMMI提供了很多非常好的實(shí)踐和模型,我不在這里做詳細(xì)的介紹了。
但是我們發(fā)現(xiàn),即使你把軟件產(chǎn)品開(kāi)發(fā)的過(guò)程分解到位、定義到位,甚至通過(guò)了CMMI5級(jí)評(píng)估,但實(shí)際執(zhí)行地效果卻不明顯,軟件質(zhì)量可能絲毫沒(méi)有提高。據(jù)官方2007年最新統(tǒng)計(jì),中國(guó)通過(guò)ISO9000認(rèn)證的公司數(shù)量在全球第一,通過(guò)CMM/CMMI評(píng)估的公司數(shù)量在全球第二,但中國(guó)軟件產(chǎn)品的質(zhì)量是不是也達(dá)到全球第一或第二了呢?答案是很明顯的,我們的軟件產(chǎn)品質(zhì)量仍然很差,與國(guó)際水平還差一大截,這可以通過(guò)CSBSG/ISBSG的數(shù)據(jù)比對(duì)就能看出來(lái)。那么到底是為什么呢?我想最大的原因是忽視了過(guò)程本身的有效性,而太關(guān)注于“過(guò)級(jí)”。
那么過(guò)程的有效性如何來(lái)評(píng)價(jià)和控制,答案就是度量。度量是唯一一個(gè)能永久驅(qū)動(dòng)企業(yè)內(nèi)部過(guò)程改進(jìn)的動(dòng)力。認(rèn)證、評(píng)估、客戶的要求、政府的資助,這些驅(qū)動(dòng)力都是暫時(shí)的。通過(guò)度量,可以把企業(yè)每一個(gè)過(guò)程的有效性進(jìn)行客觀的評(píng)價(jià),并與企業(yè)歷史的度量數(shù)據(jù)進(jìn)行縱向比對(duì),也可以與行業(yè)的基準(zhǔn)數(shù)據(jù)進(jìn)行橫向比對(duì),從而找出自己的弱點(diǎn)和差距,進(jìn)行針對(duì)性的改進(jìn)。所謂“知己知彼,百戰(zhàn)不殆”,應(yīng)用到軟件開(kāi)發(fā)領(lǐng)域,也就是這個(gè)道理。度量將是真正提高軟件質(zhì)量的有效利器。
那么如何來(lái)應(yīng)用度量呢,我們可以舉個(gè)例子。
多公司在進(jìn)行技術(shù)評(píng)審、測(cè)試等這些經(jīng)典質(zhì)量控制的活動(dòng)中,往往流于形式,感覺(jué)效果不好。在評(píng)審活動(dòng)中,往往因發(fā)現(xiàn)不了缺陷或只發(fā)現(xiàn)少量的輕微缺陷就判定這個(gè)評(píng)審順利地通過(guò),結(jié)果在后續(xù)的活動(dòng)中或產(chǎn)品上市后卻發(fā)現(xiàn)這些評(píng)審遺留了很多缺陷而沒(méi)有被發(fā)現(xiàn)。如果我們能有效的利用度量來(lái)作為評(píng)審?fù)ㄟ^(guò)的判定準(zhǔn)則,就可以避免或最大限度的降低這些錯(cuò)誤。假設(shè)我們從CSBSG/ISBSG數(shù)據(jù)庫(kù)中了解到,P50的企業(yè)在評(píng)審需求或設(shè)計(jì)的時(shí)候應(yīng)該發(fā)現(xiàn)每頁(yè)0.5個(gè)缺陷,在代碼走查/單元測(cè)試時(shí)應(yīng)該發(fā)現(xiàn)10個(gè)缺陷/千代碼行,在系統(tǒng)測(cè)試時(shí)應(yīng)該發(fā)現(xiàn)6個(gè)缺陷/千代碼行。那么我們把這些基準(zhǔn)數(shù)據(jù)作為我們?cè)u(píng)審、測(cè)試的通過(guò)準(zhǔn)則,如果沒(méi)有達(dá)到這些指標(biāo)就表明評(píng)審活動(dòng)或測(cè)試活動(dòng)不有效,需要分析一下這些活動(dòng)是否存在以下問(wèn)題:如評(píng)委沒(méi)有預(yù)讀資料,評(píng)審會(huì)上大家在討論解決方案或爭(zhēng)論而不是在發(fā)現(xiàn)缺陷和確認(rèn)缺陷,沒(méi)有按照同行評(píng)審的規(guī)范進(jìn)行等等。(注:P50是指在CSBSG數(shù)據(jù)庫(kù)中查詢到的排名在第50%的度量數(shù)據(jù),不是指平均值。)
關(guān)于度量應(yīng)用的范圍和例子還有很多,這里不再一一列舉,主要向大家強(qiáng)調(diào)的是建立和實(shí)施我們自己的過(guò)程后,一定要對(duì)過(guò)程進(jìn)行度量,來(lái)看看過(guò)程執(zhí)行的效果,這樣才能真正提高軟件質(zhì)量。
本頁(yè)關(guān)鍵詞:提高軟件質(zhì)量的有效利器-度量