在可行性分析之后,項目(mu)計(ji)劃(hua)與質量管(guan)理將貫穿需求分析、系(xi)統設計(ji)、程(cheng)序設計(ji)、測試、維護等軟件工程(cheng)環節。
項目計(ji)劃是(shi)要提(ti)供一(yi)份(fen)合理(li)(li)的(de)(de)進程表(biao),讓(rang)所有開發人員任(ren)務明(ming)確、步調一(yi)致(zhi),最終共同準時地完(wan)成項目。項目計(ji)劃是(shi)要付諸實施的(de)(de),不象(xiang)用嘴巴喊政治(zhi)口(kou)號,可以很夸張。軟件的(de)(de)項目計(ji)劃重在“準確”而非“快速”。項目管理(li)(li)培(pei)訓師提(ti)高質(zhi)(zhi)量(liang)是(shi)軟(ruan)(ruan)件(jian)工程(cheng)的(de)(de)(de)(de)主要目(mu)標。但由(you)于軟(ruan)(ruan)件(jian)開發是(shi)一種智(zhi)力創作活動(dong),很難(nan)象傳統工業那樣(yang)通過執行(xing)嚴格(ge)的(de)(de)(de)(de)操作規(gui)范來(lai)(lai)保(bao)證(zheng)軟(ruan)(ruan)件(jian)產品的(de)(de)(de)(de)質(zhi)(zhi)量(liang)。世上最小心(xin)翼(yi)翼(yi)、最老實巴(ba)腳的(de)(de)(de)(de)程(cheng)序員未必(bi)就(jiu)能開發出(chu)高質(zhi)(zhi)量(liang)的(de)(de)(de)(de)軟(ruan)(ruan)件(jian)來(lai)(lai)。程(cheng)序員必(bi)須了解軟(ruan)(ruan)件(jian)質(zhi)(zhi)量(liang)的(de)(de)(de)(de)方(fang)方(fang)面面(稱為質(zhi)(zhi)量(liang)因(yin)素),如正確性(xing)、性(xing)能、易(yi)用(yong)(yong)性(xing)、靈活性(xing)、可(ke)復用(yong)(yong)性(xing)、可(ke)理(li)解性(xing)等(deng)等(deng),才能在進行(xing)系(xi)統設計(ji)、程(cheng)序設計(ji)時(shi)將高質(zhi)(zhi)量(liang)內建其中(zhong)。軟(ruan)(ruan)件(jian)的(de)(de)(de)(de)高質(zhi)(zhi)量(liang)并不是(shi)“管(guan)理(li)”出(chu)來(lai)(lai)的(de)(de)(de)(de),實質(zhi)(zhi)上是(shi)設計(ji)出(chu)來(lai)(lai)的(de)(de)(de)(de),質(zhi)(zhi)量(liang)的(de)(de)(de)(de)管(guan)理(li)只是(shi)一種預防和認證(zheng)的(de)(de)(de)(de)手段而已(yi)。
1、項目計劃
做項目計(ji)劃,如同(tong)給一(yi)個待出生的(de)嬰兒寫傳記(ji)那樣困難。如果允許項目結束后再寫計(ji)劃,那就輕松多了,并(bing)且可以100% 地準確。
歷史教訓讓我們明白一(yi)個道(dao)理:如果一(yi)萬年以后才會有(you)(you)一(yi)條陽(yang)光大(da)道(dao)通(tong)向共產主義(yi),那么現在(zai)就不要忙著(zhu)砸鍋(guo)煉鋼趕英(ying)超美,免得在(zai)跑步奔向共產主義(yi)時(shi)把(ba)自己累(lei)死餓(e)死。在(zai)做軟件的(de)項目(mu)計劃(hua)時(shi),應屏棄一(yi)切浮夸作風。只(zhi)有(you)(you)“知(zhi)(zhi)已知(zhi)(zhi)彼”才能做出(chu)合理的(de)項目(mu)計劃(hua)。這里“知(zhi)(zhi)彼”是指要了解項目(mu)的(de)規模、難度(du)與時(shi)間限制。“知(zhi)(zhi)已”是指要了解有(you)(you)多少可用資源,如可調(diao)用的(de)程序(xu)員有(you)(you)幾(ji)個?他們的(de)水平如何(he)?軟硬件設(she)施如何(he)?
1.1 知(zhi)己知(zhi)彼
首(shou)先(xian)要了解(jie)項(xiang)(xiang)目的(de)(de)規(gui)模(mo)(mo)、難(nan)度與時間限制,才可(ke)以(yi)確(que)定(ding)應(ying)該投入多(duo)少人力(li)、物力(li)去(qu)做這個項(xiang)(xiang)目。在可(ke)行性分析(xi)階段就要考慮這個問題。但不(bu)幸(xing)的(de)(de)是,人們在陷入項(xiang)(xiang)目不(bu)能自撥(bo)之前總難(nan)以(yi)準確(que)地(di)估計項(xiang)(xiang)目的(de)(de)規(gui)模(mo)(mo)與難(nan)度。這里經驗起到了最重要的(de)(de)作用。
項(xiang)目的(de)時(shi)間限(xian)制(zhi)有兩(liang)類(lei)。第(di)一類(lei),項(xiang)目應該完成的(de)日期(qi)寫在合同中,如果延(yan)(yan)期(qi)了,則(ze)開發(fa)方要作出相應的(de)賠償。第(di)二類(lei)是開發(fa)自己(ji)的(de)軟件產品,雖(sui)然只確定了該產品大致的(de)發(fa)行日期(qi)并允(yun)許有延(yan)(yan)誤,但如果拖延(yan)(yan)太久則(ze)會失(shi)去商機造(zao)成損失(shi)。
項目的(de)資(zi)源分為三類:“人”、“可復用的(de)軟構(gou)件(jian)”和“軟硬件(jian)環境”
(1)人(ren)是最(zui)有(you)價值的(de)(de)資源。項目(mu)計(ji)劃的(de)(de)制定(ding)者要確定(ding)開發人(ren)員的(de)(de)名單,要根據他(ta)們的(de)(de)專(zhuan)長進行分工。
(2)可(ke)(ke)(ke)復用的(de)(de)軟(ruan)構(gou)(gou)件(jian)是次有價(jia)值的(de)(de)資源。1.2.1節論述了(le)復用軟(ruan)構(gou)(gou)件(jian)可(ke)(ke)(ke)提高(gao)軟(ruan)件(jian)的(de)(de)質量與生產率。軟(ruan)構(gou)(gou)件(jian)并非(fei)一(yi)定要用自己的(de)(de),可(ke)(ke)(ke)以(yi)向專(zhuan)業的(de)(de)軟(ruan)件(jian)供(gong)應商(shang)購買。
(3)軟硬件環(huan)境(jing)雖(sui)然不(bu)是最重要的資源,卻是必需的資源。原則上軟硬件環(huan)境(jing)只要符(fu)合項目的開(kai)發要求即(ji)可。有(you)些項目可能要用到特殊的設備,則要事先作好準(zhun)備,以免用時找不(bu)到而擔擱了進(jin)程。
1.2 進度安排 項目(mu)管理(li)培訓師(shi)康路晨
有(you)一位程(cheng)序員忙著編寫(xie)程(cheng)序,經理問(wen)他還(huan)需(xu)要多久才能完(wan)成。
“明天就可以完成。”程(cheng)序員立即回答。
“我想這是不切實際的,實話實說,到底還(huan)要(yao)多少時間(jian)?”經(jing)理說。
“我(wo)還(huan)想加進(jin)一些(xie)新的功能,這需要花兩個星期(qi)。”程序員想了(le)一會兒說。
“即使這樣也期望過(guo)高(gao)了,只要你編(bian)完程序時告訴(su)我(wo)一聲,我(wo)也就滿足了。”經理說。
幾年以(yi)后,經理要退休了。在(zai)他去(qu)退休午餐會時,發現那(nei)位程(cheng)(cheng)序(xu)員正趴在(zai)機器旁(pang)睡覺:可憐的家(jia)伙整個晚上都(dou)在(zai)忙于編寫(xie)那(nei)個程(cheng)(cheng)序(xu)。
程序員也(ye)期望每天早晨能(neng)在(zai)7:00準時起床,可老是一覺醒來就到中午了。項目落后于進度表乃是家常(chang)便飯,不必大(da)驚小怪。以(yi)下一些(xie)事件經常(chang)會導致項目被延(yan)誤:
(1)上級領導主管(guan)臆斷,制定了不(bu)(bu)現(xian)實的期限(xian)。項(xiang)目(mu)經(jing)理與(yu)程序員(yuan)們(men)被(bei)迫(po)按照(zhao)不(bu)(bu)合理的進度表開展工作(zuo)。
(2)客戶的(de)需求發生了(le)變化,但(dan)沒有對(dui)進度表作出相應(ying)的(de)修改
(3)低估了項目的規模與(yu)難度,導(dao)致投入的人力和(he)物力不足。
(4)并未預見到存在難以克服(fu)的技術障礙。
(5)并(bing)未預見到開發(fa)人(ren)員(yuan)會發(fa)生(sheng)問題,如生(sheng)病(bing),辭職等等。
(6)開發人(ren)員之間不能很好的交流、協(xie)作,導致各階段任(ren)務難以如期完成。
所以寫(xie)(xie)進(jin)程表不能象小學生(sheng)寫(xie)(xie)決(jue)心書那樣充滿幻想。以下是一(yi)些(xie)有(you)益(yi)的建議:
(1)制定進度表(biao)的(de)(de)人最好就是項(xiang)目(mu)負責人,他最了解項(xiang)目(mu)和(he)開發人員(yuan)。進度表(biao)要經(jing)過開發小組的(de)(de)討(tao)論,在得到大部數人的(de)(de)支(zhi)持后才能實施。避免出現一廂情愿的(de)(de)局面。
(2)進度(du)(du)安排并不見得一定要符(fu)合邏輯順序(xu)。應盡可能地先做技(ji)術難度(du)(du)高的(de)事,后(hou)做難度(du)(du)低的(de)事。也就(jiu)是辛苦在(zai)前,輕(qing)松在(zai)后(hou)。
小時候我(wo)(wo)對一位老(lao)先生吃(chi)飯(fan)很感興趣:他總是(shi)先把一大盒(he)(he)的(de)米(mi)飯(fan)吃(chi)光了(le)(le),然后(hou)再幸福(fu)地(di)品嘗(chang)一小盒(he)(he)菜。父母(mu)告訴我(wo)(wo)這是(shi)中國的(de)傳統(tong)美德,叫“先苦后(hou)甜”。從此我(wo)(wo)銘記在(zai)心,按(an)此道理去學習和工作。可如今在(zai)飯(fan)店(dian)里,人(ren)們總是(shi)先把菜吃(chi)完了(le)(le),最后(hou)才吃(chi)點米(mi)飯(fan)。天哪,生活真是(shi)太復雜了(le)(le),我(wo)(wo)究竟該“先吃(chi)飯(fan)” 還是(shi)“先吃(chi)菜”?
(3)開(kai)發一(yi)個(ge)大的(de)軟件項目,應(ying)該將進度表(biao)分為(wei)若干個(ge)里(li)程(cheng)碑(bei)(bei)。一(yi)個(ge)里(li)程(cheng)碑(bei)(bei)之內的(de)多(duo)個(ge)任(ren)務可以同步進行(xing)。程(cheng)序員極容(rong)易沉迷于(yu)技術,要(yao)么樂不思蜀,要(yao)么焦頭(tou)爛額。里(li)程(cheng)碑(bei)(bei)就象(xiang)心靈的(de)燈塔,使忙碌的(de)人群不混亂,不迷失方(fang)向。
(4)進度表中(zhong)必須留(liu)(liu)有(you)緩(huan)沖(chong)時(shi)間,并將(jiang)(jiang)緩(huan)沖(chong)時(shi)間用到不確(que)定的事情上(shang)。因為人們對即將(jiang)(jiang)要做(zuo)的事情知(zhi)之甚(shen)少,所以(yi)要留(liu)(liu)一些時(shi)間以(yi)防不測。Microsoft公司的一些開發小組甚(shen)至(zhi)制(zhi)定了“50% 緩(huan)沖(chong)規則”[Cusumano 1996]。對許多項目經(jing)理而言,容忍進度表中(zhong)存在(zai)緩(huan)沖(chong)時(shi)間,不啻為觀念(nian)上(shang)的一個飛躍。
(5)如果發現項目(mu)應交(jiao)付(fu)的(de)期限(xian)非(fei)常(chang)不合理,就(jiu)要(yao)跟領導或跟客戶據理力爭,請(qing)求放寬期限(xian)、調整進度(du)(du)。當(dang)客戶的(de)需求發生(sheng)變(bian)化(hua)時,就(jiu)要(yao)對進度(du)(du)表作出相(xiang)應的(de)修正。不要(yao)覺得修改進度(du)(du)表很(hen)困難很(hen)麻(ma)煩,不修改才會產(chan)生(sheng)真(zhen)真(zhen)的(de)麻(ma)煩。很(hen)多(duo)人認為戒煙很(hen)困難,但馬克·吐溫曾說:“戒煙很(hen)容易,我一年(nian)就(jiu)戒幾十(shi)次。”
2、 零缺(que)陷質(zhi)量(liang)管理的觀念
“零(ling)缺(que)陷(xian)(xian)”質量管(guan)理的(de)觀念來(lai)源(yuan)于一些國際上(shang)著名的(de)硬件(jian)(jian)生(sheng)(sheng)產(chan)(chan)廠商。盡管(guan)軟件(jian)(jian)的(de)開發與硬件(jian)(jian)生(sheng)(sheng)產(chan)(chan)有(you)極(ji)大的(de)差別,但我們仍(reng)可以從“零(ling)缺(que)陷(xian)(xian)”質量管(guan)理中得到啟(qi)迪。“零(ling)缺(que)陷(xian)(xian)”質量管(guan)理至少有(you)兩個(ge)核心(xin)內(nei)容:一是高目標,二(er)是可執行的(de)規(gui)范(fan)。
2.1 高目標
人在(zai)(zai)做(zuo)一(yi)件事(shi)情時,由(you)于存在(zai)(zai)很多不(bu)確定的(de)(de)因素,一(yi)般不(bu)可(ke)能100% 地達到目標(biao)。假設(she)平常(chang)人做(zuo)事(shi)能完成目標(biao)的(de)(de)80%。如果某個人的(de)(de)目標(biao)是(shi)100分(fen),那(nei)么他最終成績可(ke)達80分(fen)。如果某個人的(de)(de)目標(biao)只是(shi)60分(fen),那(nei)么他最終成績只有(you)48分(fen)。我們在(zai)(zai)考場上(shang)身經(jing)百戰,很清楚那(nei)些只想(xiang)混(hun)及格(ge)的(de)(de)學生通常(chang)都不(bu)會(hui)及格(ge),那(nei)些想(xiang)得高分(fen)的(de)(de)學生也常(chang)為(wei)自己的(de)(de)失誤而(er)捶胸頓足。
做(zuo)一個(ge)項(xiang)目(mu)通常需要多個(ge)人(ren)(ren)的協作(zuo)。假設項(xiang)目(mu)的總質(zhi)(zhi)量(liang)(最高為(wei)1)是十(shi)個(ge)開發人(ren)(ren)員的工作(zuo)質(zhi)(zhi)量(liang)之積。如果每個(ge)人(ren)(ren)的質(zhi)(zhi)量(liang)目(mu)標是0.95,那么十(shi)個(ge)人(ren)(ren)的累積質(zhi)(zhi)量(liang)不(bu)會超(chao)(chao)過0.19。如果每個(ge)人(ren)(ren)的質(zhi)(zhi)量(liang)目(mu)標是0.9分,那么十(shi)個(ge)人(ren)(ren)的累積質(zhi)(zhi)量(liang)不(bu)會超(chao)(chao)過0.03。只有每個(ge)人(ren)(ren)都做(zuo)到1,項(xiang)目(mu)總質(zhi)(zhi)量(liang)才會是1。
如果沒(mei)有(you)高目標,人的(de)墮落就很快。如果沒(mei)有(you)“零缺(que)陷(xian)”的(de)質量(liang)目標,也許(xu)缺(que)陷(xian)就會成堆。
2.2 可執行的規范(fan)
實現(xian)100分(fen)顯然比(bi)實現(xian)80分(fen)要(yao)付出更多的(de)努(nu)力(li)。“零(ling)缺陷”質量目標(biao)不(bu)是隨心所欲提(ti)出來的(de),做得到(dao)才(cai)有意(yi)義(yi)。實現(xian)高目標(biao)需要(yao)一套可執行的(de)規(gui)范來保證(zheng)。
50年(nian)代末,全(quan)國掀起(qi)了“浮夸風”。為了實現(xian)畝產數萬(wan)斤推廣各種方(fang)法(fa),害(hai)得全(quan)國鬧饑荒。想不到有數千年(nian)種糧經驗的幾億中國農民就這么(me)整齊地栽倒了。
好(hao)規范必須(xu)是本(ben)企業(ye)有(you)能力執行的(de)。一個(ge)普(pu)通企業(ye)照搬一流企業(ye)的(de)規范未(wei)必行得通。軟件(jian)工程的(de)規范很(hen)容易從書籍(ji)中找到,但(dan)有(you)了這些規范并不(bu)表明就能把軟件(jian)做好(hao)。國內很(hen)多軟件(jian)公(gong)司根(gen)本(ben)沒有(you)條件(jian)去執行業(ye)界推薦的(de)軟件(jian)工程規范。社(she)會主(zhu)義初級階段(duan)的(de)“草(cao)”與發達(da)資本(ben)主(zhu)義國家的(de)“苗”的(de)確有(you)不(bu)同的(de)培育方(fang)式。
軟(ruan)件(jian)是如(ru)(ru)此的(de)靈活,如(ru)(ru)果沒有規范(fan)來制約,就容易因無序的(de)喜好而導(dao)致混(hun)沌;但規范(fan)如(ru)(ru)果太嚴密了,就會扼殺程序員生機勃(bo)勃(bo)的(de)創(chuang)造力。制定軟(ruan)件(jian)規范(fan)是進退兩難(nan)的(de)事。程序員必須(xu)深入了解軟(ruan)件(jian)多(duo)方面(mian)的(de)質(zhi)量因素,把那些能(neng)提高(gao)軟(ruan)件(jian)質(zhi)量因素的(de)各(ge)種規范(fan)植(zhi)入腦中(zhong),才能(neng)在(zai)各(ge)個實踐(jian)環節自然而然地把高(gao)質(zhi)量設計(ji)到軟(ruan)件(jian)中(zhong)。
轉載://citymember.cn/zixun_detail/995.html