前提條件與主要任務
開始做項目是需要前提條件的(輸入條件),不同的項目類型有不同的前提條件。如果是為客戶定制的項目,需要與客戶達成某種形式的合作意向,對于比較大型的項目,則中標往往被作為一個最基本的前提條件;如果是產(chǎn)品項目,則需要市場調研報告等作為輸入條件;即使是那些內部研發(fā)項目,也需要類似可行性報告的分析來表明執(zhí)行項目的必要性。通常,我們把此階段稱為調研階段或論證階段,一旦此階段的結論認為可以正式啟動項目,就進入項目的準備階段或啟動階段。
項目準備階段的主要任務是簽訂合同(外部項目)或立項(內部項目),此階段所生成的工作說明書(Statement Of Work,SOW)與后續(xù)軟件開發(fā)活動直接相關。SOW通常作為合同或立項材料一個最主要的組成部分。在SOW中定義項目的工作范圍,并依據(jù)工作范圍確定所需的時間、質量、費用和資源。這些內容要得到相關利益人的認可,作為合同的組成部分對雙方具有約束力。
典型困境與分析
客戶:你們最多需要多長時間能夠完成項目?
開發(fā)方:我們現(xiàn)在還不清楚需要完成的工作,如果你們把需求提得更明確一些,我們會給出一個可信度較高的計劃。
客戶:你們先做出一個東西來,我們就可以提出更明確的需求。現(xiàn)在不可能提出所有的需求。
開發(fā)方:那我們如何確定交付時間?我們甚至不知道需要完成哪些功能。
客戶:交付時間已經(jīng)確定了,系統(tǒng)必須在三個月的期限內上線。你們可以安排更多的人員來參加這個項目。
這是軟件開發(fā)的一個典型的例子,也許就是我們總有那么多的項目滯后于交付時間的主要原因。這種情形對于開發(fā)商和客戶都充滿了風險,其結果往往是風險變成了事實。如何在這個階段降低這種由于工作范圍不明確所造成的風險,具有重要的意義。軟件開發(fā)的同行們經(jīng)常會彼此詢問:"你們是不是又要封閉開發(fā)了?"所謂的封閉開發(fā)即是每周工作六天(也有七天的情形),每天工作接近12小時。封閉開發(fā)或項目延期的最主要原因來自兩個方面:一是工作范圍不明確;另一點是不知道自己的生產(chǎn)率有多高。這兩個因素使項目計劃與實際的情況偏離甚遠。
對于軟件項目而言,一個最為直觀的衡量標準就是時間,每個人都可以對時間做出直觀的判斷。影響項目的交付時間主要有三方面的因素:項目的工作范圍、成本和質量。有這樣一個比喻可以說明它們之間的關系:將項目看作是一部復雜的機械裝置,把項目的交付時間、工作范圍、成本和質量看作是四個控制桿,調節(jié)每一個控制桿都要至少調節(jié)其它的控制桿。所以我們經(jīng)常會在項目的執(zhí)行過程中調節(jié)項目的人員投入。而對于質量的調節(jié),則通過壓縮測試時間保證項目的交付時間不至于延遲過多。進度拖延的壓力使開發(fā)組織往往不計成本地投入人力,而使項目的收益狀況惡化;進度的壓力同時導致測試時間的壓縮,使項目在交付給用戶以后仍然存在許多遺留缺陷,降低了客戶的滿意度;而項目范圍的變更則更直接地影響到其它三個方面,會使本來就充滿風險的項目雪上加霜;谏鲜鲈,我們實際執(zhí)行的項目往往需要同時滿足四個方面的要求。