關(guān)于我們

在線客服

幫助

24小時(shí)客服:010-82326699 400-810-5999

建設(shè)工程教育網(wǎng) > 建筑文苑 > 工程管理 > 正文

誰(shuí)動(dòng)了項(xiàng)目質(zhì)量

2010-09-25 11:36  來(lái)源網(wǎng)絡(luò)  【  【打印】【我要糾錯(cuò)】

  大家知道,項(xiàng)目的時(shí)間、成本及質(zhì)量的三大要素是缺一不可。這三方面的符合程度直接決定了項(xiàng)目的成敗與否。但事實(shí)上,想達(dá)到一個(gè)完美的等邊三角形幾乎是不可能完成的任務(wù)。這次的項(xiàng)目就讓質(zhì)量這個(gè)角短了很多,質(zhì)量的問(wèn)題暴露地很明顯。所以,接下來(lái),我就從項(xiàng)目的流程角度出發(fā),一步步地分析到底是哪里出了質(zhì)量問(wèn)題。 

  又一個(gè)項(xiàng)目結(jié)束了,終于閑出空來(lái)寫些東西。有了以前的經(jīng)驗(yàn)教訓(xùn),這次在做項(xiàng)目的時(shí)候,我對(duì)時(shí)間的控制很關(guān)注,最后也基本上達(dá)到了計(jì)劃的要求。但最終交付產(chǎn)品的質(zhì)量卻讓我不太滿意:客戶在做接受測(cè)試的時(shí)候發(fā)現(xiàn)了很多的問(wèn)題,而且在我們進(jìn)行修改的同時(shí),又有BUG源源不斷的報(bào)過(guò)來(lái)。甚至把更新的版本發(fā)給客戶以后,還會(huì)發(fā)現(xiàn)不少問(wèn)題,給客戶留下了很不professional的印象。為什么問(wèn)題總是要到項(xiàng)目快結(jié)束的時(shí)候才會(huì)出現(xiàn)呢?軟件的質(zhì)量為何不好?究竟是誰(shuí)動(dòng)了項(xiàng)目的質(zhì)量?

  1、分析階段

  項(xiàng)目的開始階段,也是質(zhì)量控制的開始。在這個(gè)階段中,主要的工作是從客戶方獲得足夠多的項(xiàng)目需求,并準(zhǔn)確地記錄在案,而且要使得項(xiàng)目組的成員對(duì)于需求足夠得了解。先說(shuō)說(shuō)這個(gè)項(xiàng)目的基本情況:一個(gè)信息管理系統(tǒng),而且是在原來(lái)的版本上進(jìn)行的功能增加。項(xiàng)目組的成員,除了我以前參加了前一個(gè)版本的開發(fā),其它的人員都不了解這個(gè)項(xiàng)目。就是這樣的一個(gè)項(xiàng)目,在開始階段,我先是安排了組員對(duì)以前版本的需求文檔進(jìn)行了閱讀,并安裝使用了軟件。隨后對(duì)新的需求進(jìn)行了研究,分析了它們對(duì)于原有系統(tǒng)的影響。由于是在舊有系統(tǒng)的文檔進(jìn)行增加,所以加入的新內(nèi)容并不是很多,需求文檔很快就完成了。所謂的分析階段的里程碑也就結(jié)束了。

  在需求階段"順利"結(jié)束的同時(shí),問(wèn)題也隨之留下來(lái),并對(duì)后面的階段起到了"乘數(shù)效應(yīng)"――影響變得越來(lái)越大:

  A.對(duì)舊系統(tǒng)的理解不足由于開發(fā)人員沒有參與過(guò)上一個(gè)版本的開發(fā)工作,他們對(duì)于舊系統(tǒng)并不了解.雖然在閱讀了以前的需求文檔以及使用了軟件之后,大概對(duì)系統(tǒng)的功能有了一個(gè)初步的認(rèn)識(shí).但是對(duì)于系統(tǒng)中出現(xiàn)的各種邏輯關(guān)系并沒有深入了解下去.作為項(xiàng)目經(jīng)理,在這項(xiàng)工作中,失誤之處在于任務(wù)的結(jié)果(即輸出)沒有事先定義清楚,從而也就導(dǎo)致無(wú)法確認(rèn)目標(biāo)是否已經(jīng)達(dá)到,再加上需求文檔描述的也不是十分清晰。最后,只是在開發(fā)人員覺得已經(jīng)理解該系統(tǒng)的基本上,進(jìn)行了下一步的工作.沒有進(jìn)行進(jìn)一步的確認(rèn)工作,不知道組員進(jìn)行舊系統(tǒng)已經(jīng)了解到了什么樣的程度。這個(gè)問(wèn)題的結(jié)果,就是直接導(dǎo)致了后期的開發(fā)過(guò)程中,由于對(duì)于原先系統(tǒng)的邏輯關(guān)系不是很清楚。對(duì)于舊代碼理解和新代碼編寫進(jìn)行地不是很順利。

  B.對(duì)新需求的分析不夠這還是個(gè)老問(wèn)題,但又不是一個(gè)問(wèn)題.說(shuō)它是個(gè)老問(wèn)題,因?yàn)榉治鲂枨笠罂紤]細(xì)致全面,并且能引導(dǎo)客戶,啟發(fā)客戶提供更有價(jià)值的信息。事實(shí)上,需求分析我們做的算是很盡力了,同時(shí)客戶把需求一條條的列出來(lái)給我們,相對(duì)來(lái)說(shuō)需求已經(jīng)很清楚了。我們?cè)诮拥竭@些需求后,不僅研究了新功能,還把他們對(duì)于舊系統(tǒng)的影響都做了分析。但還是有些問(wèn)題沒有能在需求文檔中反映出來(lái),后面的影響也是可想而知的了。我以前的文章中才曾提到過(guò)相關(guān)的問(wèn)題,在這里就不再重復(fù)了。不過(guò),從另一個(gè)角度來(lái)看,它又不是一個(gè)問(wèn)題。為什么這么說(shuō)呢,因?yàn)樾枨髮?shí)在不是能夠在分析階段就能完全理解透徹的,甚至有的需求客戶也模模糊糊,直到交付以后才提出了改動(dòng)的要求。軟件開發(fā)經(jīng)過(guò)這么多年的發(fā)展,大家已經(jīng)認(rèn)識(shí)到了一點(diǎn):需求是變化的。要達(dá)到能夠擁抱變化的要求,我們要對(duì)開發(fā)方法進(jìn)行改進(jìn),相關(guān)的問(wèn)題我在后面也會(huì)提到。

  需求分析階段出現(xiàn)的問(wèn)題,解決的可操作性不是很大,更多的是從思想或經(jīng)驗(yàn)上解決,而后面幾個(gè)階段出現(xiàn)的問(wèn)題都相對(duì)具體一些。

  2、設(shè)計(jì)階段

  設(shè)計(jì)階段的問(wèn)題相對(duì)比較明顯――結(jié)構(gòu)設(shè)計(jì)不合理,或者說(shuō)還不夠。一個(gè)傳統(tǒng)的C/S結(jié)構(gòu)的系統(tǒng),基本結(jié)構(gòu)我們采用了經(jīng)典的三層模型來(lái)劃分系統(tǒng)。由于是在舊有系統(tǒng)上的改進(jìn),我們?cè)诒M量不改變?cè)邢到y(tǒng)的基礎(chǔ)上添加新的功能。

  主要的問(wèn)題可能就是體現(xiàn)在沒有對(duì)舊系統(tǒng)進(jìn)行改進(jìn)。舊系統(tǒng)本身有一些復(fù)雜的功能,邏輯關(guān)系也比較復(fù)雜,耦合度非常高。所以,在新需求來(lái)臨的時(shí)候,我們的第一反應(yīng)就是盡量不去動(dòng)原來(lái)的設(shè)計(jì)與代碼,保證原有系統(tǒng)功能不會(huì)發(fā)生變化。這一點(diǎn)就暴露出了我們沒有去擁抱變化的決心與膽量。雖然舊系統(tǒng)很復(fù)雜,但是我們不能去故意回避它。對(duì)于舊系統(tǒng)中設(shè)計(jì)的不合理的地方,應(yīng)該主動(dòng)大膽的去進(jìn)行重構(gòu)。其實(shí)重構(gòu)的作用就是對(duì)不合理結(jié)構(gòu)的進(jìn)行改進(jìn),設(shè)計(jì)模式更是在設(shè)計(jì)結(jié)構(gòu)的變化改進(jìn)中才能體現(xiàn)它的價(jià)值。而這些東西,在我們的項(xiàng)目中都沒有應(yīng)用.這可能跟我們的保守心理有關(guān):只要不出問(wèn)題,我們就不去動(dòng)它,哪怕結(jié)構(gòu)是多么的錯(cuò)綜復(fù)雜。這種消極的觀念在當(dāng)今的充滿變化的世界中是不太有前途的。項(xiàng)目經(jīng)理要有足夠的決心去做,同時(shí),也不要擔(dān)心去變化。當(dāng)然,可能有人會(huì)說(shuō),時(shí)間緊怎么辦,其實(shí)這種付出對(duì)于項(xiàng)目的整體是只有好處沒有壞處的,因?yàn)榻Y(jié)構(gòu)合理會(huì)讓開發(fā)人員會(huì)更少的時(shí)間去理解代碼,減少代碼開發(fā)的復(fù)雜度,提高代碼編寫的質(zhì)量。唯一需要考慮的就是如果改動(dòng)的話,如何來(lái)保證這種變化對(duì)原有系統(tǒng)的功能不產(chǎn)生影響。這就需要有更多的測(cè)試,最好是單元測(cè)試來(lái)保證,這就是下面會(huì)談到的問(wèn)題。

  3、編碼階段

  編碼主要還是受了設(shè)計(jì)的限制,我們的主要工作就只是在原有的結(jié)構(gòu)上添加一些類與方法,以及對(duì)原有的代碼進(jìn)行修改。前面也提到了,我們采用了比較保守的作法,沒有對(duì)代碼進(jìn)行重構(gòu),放任這種高耦合的代碼存在,導(dǎo)致我們?cè)诰幋a過(guò)程中花費(fèi)了不少精力和時(shí)間去理解它們,并在其中加上一兩條更加加深耦合度的代碼。其實(shí)到了編碼階段,很多問(wèn)題都糾纏到了一起,已經(jīng)分不清因果了。比較說(shuō)單元測(cè)試,首先我需要承認(rèn)的一點(diǎn)就是沒有足夠的決心去做充分的單元測(cè)試,思想上也沒有做好充分的準(zhǔn)備。除去主觀的因素之外,還有一點(diǎn)就是設(shè)計(jì)的結(jié)構(gòu)不合理,很多的邏輯被處理在表示層中,數(shù)據(jù)處理則被加到了邏輯層中。沒有劃分出更多的接口供單元測(cè)試來(lái)驗(yàn)證。但反過(guò)來(lái)說(shuō),沒有單元測(cè)試用例的支持,也降低了我們想要進(jìn)行重構(gòu)的決心。除了上述的問(wèn)題之外,還有一些細(xì)節(jié)的地方,如硬編碼,命名規(guī)則等都在一定程度上對(duì)代碼的質(zhì)量產(chǎn)生了影響。

  改進(jìn)的辦法,一是從主觀上接受變化的現(xiàn)實(shí),主動(dòng)的對(duì)代碼進(jìn)行改動(dòng)。單元測(cè)試一定要進(jìn)行,最好結(jié)合統(tǒng)計(jì)覆蓋率的工具一并進(jìn)行,這樣對(duì)于每個(gè)接口,都保證有充分多的測(cè)試用例來(lái)跑完盡可能多的路徑。在項(xiàng)目的質(zhì)量管理上面,要求還需要更加嚴(yán)格一些,一定要按照規(guī)范來(lái)進(jìn)行編碼。

  4、測(cè)試階段

  代碼完成之后,測(cè)試的工作也隨之展開。但是由于成本的原因,我們并沒有再加入專業(yè)的測(cè)試人員來(lái)進(jìn)行,而只是用開發(fā)人員自己來(lái)進(jìn)行系統(tǒng)測(cè)試,讓開發(fā)人員互相測(cè)試別人實(shí)現(xiàn)的功能。由于開發(fā)人員與測(cè)試人員所需的專注點(diǎn)不同,造成了開發(fā)人員很多問(wèn)題在測(cè)試中沒有被發(fā)現(xiàn),缺乏測(cè)試的經(jīng)驗(yàn)。從另一個(gè)方面說(shuō),是開發(fā)人員不能夠及時(shí)的轉(zhuǎn)換自己的角色,而是還把自己定位在開發(fā)人員上面,更加關(guān)注的問(wèn)題出在什么地方并立刻去解決它,而不是設(shè)法去發(fā)現(xiàn)隱藏的Bug。當(dāng)然,還有一些細(xì)節(jié)的地方,比如說(shuō)測(cè)試都應(yīng)該是開發(fā)人員發(fā)布一個(gè)安裝包,然后單獨(dú)進(jìn)行測(cè)試,但有的時(shí)候?yàn)榱藞D省事,有的功能在調(diào)試狀態(tài)下發(fā)現(xiàn)通過(guò)了,在安裝包中就沒有再驗(yàn)證,有時(shí)也會(huì)出現(xiàn)意想不到的情況發(fā)生。

  大家可以看到,軟件的質(zhì)量可能就是被這一步步的失誤,錯(cuò)誤,粗心等等影響了。這些問(wèn)題都是在項(xiàng)目管理中暴露出來(lái)的,可以說(shuō)是由于項(xiàng)目經(jīng)理對(duì)于質(zhì)量的要求還不高,有的時(shí)候?yàn)榱似孀非蟪杀九c時(shí)間而忽視了質(zhì)量,從而造成了質(zhì)量的下降。算是個(gè)總結(jié)和教訓(xùn)吧,也希望大家能夠說(shuō)出你的想法與意見,多多交流,共同進(jìn)步。

收藏分享:論壇
分享到:
相關(guān)新聞
  • 特色班
    4大班次+2-3套全真模擬題
    提升學(xué)習(xí)效果
  • 精品班
    4大班次+2-3套全真模擬題+1套預(yù)測(cè)試題
  • 實(shí)驗(yàn)班
    3套全真模擬題+2套預(yù)測(cè)試題+考前沖關(guān)寶典
  • 定制班
    3套模擬題+3套預(yù)測(cè)題+考前沖關(guān)寶典+考前重點(diǎn)
  • 移動(dòng)班
    以知識(shí)點(diǎn)為單元授課練習(xí),
    強(qiáng)化重點(diǎn)、難點(diǎn)、考點(diǎn)
版權(quán)聲明

  1、凡本網(wǎng)注明“來(lái)源:建設(shè)工程教育網(wǎng)”的所有作品,版權(quán)均屬建設(shè)工程教育網(wǎng)所有,未經(jīng)本網(wǎng)授權(quán)不得轉(zhuǎn)載、鏈接、轉(zhuǎn)貼或以其他方式使用;已經(jīng)本網(wǎng)授權(quán)的,應(yīng)在授權(quán)范圍內(nèi)使用,且必須注明“來(lái)源:建設(shè)工程教育網(wǎng)”。違反上述聲明者,本網(wǎng)將追究其法律責(zé)任。
  2、本網(wǎng)部分資料為網(wǎng)上搜集轉(zhuǎn)載,均盡力標(biāo)明作者和出處。對(duì)于本網(wǎng)刊載作品涉及版權(quán)等問(wèn)題的,請(qǐng)作者與本網(wǎng)站聯(lián)系,本網(wǎng)站核實(shí)確認(rèn)后會(huì)盡快予以處理。
  本網(wǎng)轉(zhuǎn)載之作品,并不意味著認(rèn)同該作品的觀點(diǎn)或真實(shí)性。如其他媒體、網(wǎng)站或個(gè)人轉(zhuǎn)載使用,請(qǐng)與著作權(quán)人聯(lián)系,并自負(fù)法律責(zé)任。
  3、本網(wǎng)站歡迎積極投稿。