五種錯(cuò)誤的實(shí)踐方式導(dǎo)致軟件開發(fā)項(xiàng)目難以管控

字號(hào):

軟件開發(fā)是一項(xiàng)復(fù)雜的工作,對(duì)于軟件開發(fā)的管理和控制,發(fā)展出一門專門的學(xué)科:軟件工程。在這方面有許多的國(guó)家標(biāo)準(zhǔn)和國(guó)際標(biāo)準(zhǔn)。但軟件工程更多的是從技術(shù)的角度來(lái)規(guī)范軟件開發(fā)的管理和控制,本文試圖從管理者和實(shí)踐的角度來(lái)闡述一些軟件開發(fā)的管理和控制所應(yīng)遵循的基本原則。
    在軟件開發(fā)項(xiàng)目中經(jīng)常出現(xiàn)二種極端情況:一種是創(chuàng)造了新的生產(chǎn)率和質(zhì)量的紀(jì)錄;一種則完全是一場(chǎng)災(zāi)難,不是被取消就是拖延很長(zhǎng)時(shí)間。通過(guò)提煉這些成功和失敗的例子,軟件項(xiàng)目成功或失敗的根本原因可能會(huì)更清晰一些。
    在討論這些原因之前,我們先來(lái)定義一下什么情況可以稱為失敗的軟件項(xiàng)目。
    1. 由于費(fèi)用超支或計(jì)劃執(zhí)行超時(shí)而終止。
    2. 完成計(jì)劃的時(shí)間或費(fèi)用超過(guò)了原計(jì)劃的50%。
    3. 由于質(zhì)量或性能上的原因引起和客戶的糾紛。
    下面我們將按其影響大小的順序排列說(shuō)明5種錯(cuò)誤的實(shí)踐方式。
    錯(cuò)誤1:沒有軟件開發(fā)的歷史數(shù)據(jù)
    缺乏軟件開發(fā)的歷史數(shù)據(jù)是大多數(shù)軟件項(xiàng)目失敗的關(guān)鍵所在, 這樣的結(jié)論也許使很多人感到吃驚,但事實(shí)就是如此。沒有一個(gè)可靠的軟件開發(fā)的歷史數(shù)據(jù)會(huì)使項(xiàng)目經(jīng)理,程序員,客戶對(duì)于軟件開發(fā)的過(guò)程缺少清醒的認(rèn)識(shí)。
    假設(shè)現(xiàn)在你正在管理一個(gè)軟件項(xiàng)目,而這個(gè)項(xiàng)目還沒有一個(gè)公司在36個(gè)月內(nèi)完成。作為一個(gè)負(fù)責(zé)的經(jīng)理,你作了一個(gè)比較細(xì)致和保守的估計(jì),然后告訴你的客戶和你的手下說(shuō)你認(rèn)為這個(gè)項(xiàng)目需要36-38個(gè)月完成。然而常常有這樣的情況發(fā)生:你的客戶和程序員要求把時(shí)間壓縮到18個(gè)月。客戶一方面希望軟件盡早投入使用而產(chǎn)生經(jīng)濟(jì)效益,一方面也想壓縮項(xiàng)目時(shí)間作為一個(gè)討價(jià)還價(jià)的籌碼;而程序員一方面可能過(guò)于自信,一方面盡早結(jié)束項(xiàng)目也能使他們多賺點(diǎn)錢。而此時(shí)你的手頭上也沒有一個(gè)可靠的軟件開發(fā)的歷史數(shù)據(jù),在他們的壓力下你同意了18個(gè)月的計(jì)劃,于是一場(chǎng)災(zāi)難開始了。在項(xiàng)目的開始階段你發(fā)現(xiàn)計(jì)劃被拖延了,于是開始向程序員們施加壓力,要求他們加快進(jìn)度,程序員為了追求進(jìn)度而不得不把其它指標(biāo)放在一邊,這些問(wèn)題不斷的積累下來(lái)而項(xiàng)目經(jīng)理卻蒙在鼓里。到了項(xiàng)目中后期這些質(zhì)量問(wèn)題會(huì)不斷暴露出來(lái),而且互相關(guān)聯(lián)并且難以解決,甚至有些是系統(tǒng)設(shè)計(jì)的問(wèn)題,這時(shí)才發(fā)現(xiàn)好多模塊要推倒重來(lái),18個(gè)月完成計(jì)劃變成了天方夜譚。雖然上面只是一個(gè)虛擬的例子,但在實(shí)際中這種情況比比皆是。問(wèn)題的關(guān)鍵就在于軟件開發(fā)的歷史數(shù)據(jù)是反映軟件開發(fā)隊(duì)伍的能力的標(biāo)尺,沒有了這個(gè)標(biāo)尺,就無(wú)法對(duì)軟件的開發(fā)過(guò)程有一個(gè)清醒的認(rèn)識(shí)。
    錯(cuò)誤2:不重視使用軟件費(fèi)用估值工具軟件和計(jì)劃工具軟件
    國(guó)內(nèi)的軟件公司大多數(shù)是處在“十幾條槍,一個(gè)手工作坊”的水平上,在承接軟件開發(fā)的項(xiàng)目之后往往是幾位骨干人物討論之后對(duì)費(fèi)用和進(jìn)度作一個(gè)大致的估計(jì),然后就開始進(jìn)入項(xiàng)目的執(zhí)行。這種方法帶有明顯的主觀性。在作一個(gè)精確的軟件費(fèi)用估計(jì)和作一個(gè)比較現(xiàn)實(shí)的項(xiàng)目開發(fā)計(jì)劃時(shí)需要考慮許多因素。對(duì)于一個(gè)大的軟件項(xiàng)目,用手工作費(fèi)用估計(jì)和作計(jì)劃是不能勝任的?,F(xiàn)在國(guó)外市場(chǎng)上有大約50種商業(yè)軟件費(fèi)用估計(jì)工具包和大約100種商業(yè)項(xiàng)目計(jì)劃工具包,使用他們作精確的估計(jì)比手工的估計(jì)更可能獲得成功。常用的軟件費(fèi)用估計(jì)工具軟件有Checkpoint,Colomo,Estimacs,Price_s,Slim。 常用的項(xiàng)目管理軟件有MSProject,Primavera,Project Manager*s Workbench, Timeline。把這二種工具軟件聯(lián)合使用可以互為補(bǔ)充,幫助經(jīng)理駁回客戶和程序員的無(wú)理要求并且能精確的控制項(xiàng)目的執(zhí)行。
    錯(cuò)誤3:忽視用戶的需求的變動(dòng)
    盡管最初的用戶需求在簽定開發(fā)合同時(shí)已經(jīng)包含在需求說(shuō)明書中, 但在整個(gè)開發(fā)周期中期望用戶的需求一直保持不變是不大可能的,因?yàn)橛脩魧?duì)于如何應(yīng)用計(jì)算機(jī)軟件并沒有一個(gè)成熟的經(jīng)驗(yàn)。在項(xiàng)目進(jìn)行中用戶的需求會(huì)不斷的增長(zhǎng),一般情況下用戶的需求以每月1%的速率增加,如果一個(gè)項(xiàng)目在12個(gè)月內(nèi)完成,最終將有超過(guò)10%的改動(dòng),如果項(xiàng)目要持續(xù)36個(gè)月,最后將增加1/3的功能。每月1%也只是一個(gè)經(jīng)驗(yàn)數(shù)據(jù),一個(gè)缺乏計(jì)算機(jī)應(yīng)用經(jīng)驗(yàn)的用戶會(huì)更頻繁的改變和增加他的要求。因此在作項(xiàng)目的費(fèi)用和時(shí)間估計(jì)時(shí)一定要考慮用戶需求的變化。一種比較明智的方法是在簽定開發(fā)合同時(shí)把用戶需求的改動(dòng)和經(jīng)濟(jì)利益掛鉤,如果用戶增加或改動(dòng)了需求,那么軟件的交付日期可以推遲,費(fèi)用也應(yīng)增加。
    錯(cuò)誤4:忽視監(jiān)督項(xiàng)目的進(jìn)度
    到目前為止,軟件產(chǎn)業(yè)還沒有一個(gè)標(biāo)準(zhǔn)的項(xiàng)目進(jìn)度的檢查標(biāo)準(zhǔn)。一個(gè)比較清晰的尺度是用已經(jīng)實(shí)現(xiàn)的軟件功能反映項(xiàng)目的進(jìn)度。但這種方法是否就是最科學(xué)的衡量標(biāo)準(zhǔn),現(xiàn)在還不能定論,畢竟在一個(gè)軟件項(xiàng)目中軟件功能只是一個(gè)主要而非全部的任務(wù)。因此一個(gè)項(xiàng)目經(jīng)理在監(jiān)控項(xiàng)目執(zhí)行時(shí)不應(yīng)該只關(guān)注實(shí)現(xiàn)的軟件功能,還要關(guān)心文檔,測(cè)試,技術(shù)支持這些因素。在實(shí)際工作中我們經(jīng)常聽到經(jīng)理或程序員說(shuō)這樣的話:“項(xiàng)目已經(jīng)完成了90%”,這種結(jié)論帶有明顯的主觀性,一個(gè)優(yōu)秀的項(xiàng)目經(jīng)理不應(yīng)該被手下的判斷所迷惑,而應(yīng)該按照一個(gè)比較客觀的標(biāo)準(zhǔn)去深入檢查。
    錯(cuò)誤5:忽視設(shè)計(jì)復(fù)查和代碼復(fù)查
    很多程序員習(xí)慣于這樣一種工作方式:只做不想。他們更關(guān)心每天可以寫多少行代碼,完成幾個(gè)模塊。在這種態(tài)度下,他們都很不愿意復(fù)查自己的工作,而習(xí)慣于在軟件測(cè)試階段把隱藏的錯(cuò)誤改正過(guò)來(lái)。但設(shè)計(jì)復(fù)查和代碼復(fù)查在大型的軟件項(xiàng)目中已經(jīng)有30年的應(yīng)用歷史,而且已經(jīng)被證明在設(shè)計(jì)和代碼編寫階段的復(fù)查比軟件測(cè)試更能有效的消除錯(cuò)誤,一些經(jīng)驗(yàn)數(shù)據(jù)表明,在設(shè)計(jì)和代碼復(fù)查時(shí)發(fā)現(xiàn)的錯(cuò)誤是在同等工作量下軟件測(cè)試發(fā)現(xiàn)的錯(cuò)誤的兩倍。
    結(jié)論:
    軟件開發(fā)是一個(gè)帶有一定風(fēng)險(xiǎn)的工作,為了把風(fēng)險(xiǎn)降到最低, 在項(xiàng)目的執(zhí)行中項(xiàng)目經(jīng)理必須嚴(yán)格的監(jiān)督項(xiàng)目的進(jìn)度,對(duì)程序員不愿復(fù)查的壞習(xí)慣要給予糾正。項(xiàng)目經(jīng)理必須要從軟件開發(fā)的歷史數(shù)據(jù)和輔助工具包提供的數(shù)據(jù)中作出精確的估計(jì),在作估計(jì)時(shí)他應(yīng)該考慮為不斷變化的用戶需求留出富余量。