任何從事IT行業(yè)的人員都清楚,軟件開發(fā)項目失敗的其中一個主要原因是項目在啟動的時候功能需求模糊,導致開發(fā)過程的不斷修改,讓項目不斷延誤,功能不斷擴張,資源越來越吃緊,最終影響交付的質(zhì)量和客戶的滿意度。希賽網(wǎng)軟件工程頻道有很多文章介紹如何去把握需求,很多業(yè)內(nèi)人士也常在網(wǎng)上分享他們把握客戶需求的方法,可惜效果并不太理想。因為我們絕對不能夠把握基本上不存在的“客戶需求”。
作為一個軟件工程的專業(yè)人員,如何能夠從客戶所提供的模糊需求建立一個明確的范圍,然后從這個范圍中建立整個系統(tǒng)的功能需求,讓我們可以控制軟件開發(fā)的過程,減少項目的范圍變動,降低開發(fā)過程中的修改需求,讓我們能夠按預算、按工期,提交符合質(zhì)量要求的交付物,達到客戶的預期目標,我們便需要理解問題的根源,打破過去的工作習慣,尋找一套可行的方法。
在項目管理知識體系(PMBOK)中我們學習范圍變動管理,而不是需求變動管理,范圍變動才是需求變動的主要原因。其實在這里PMBOK做了一個假設,就是有了明確的范圍便可以建立明確的功能需求,如果能夠控制范圍,便能夠控制功能需求。
功能需求變動是導致軟件工程在開發(fā)過程中進行修改的主要原因,那是說我們在軟件工程項目啟動的時候沒有把握好項目的范圍,才會發(fā)生我們面對的問題。所以,我們首先需要理解范圍與功能需求的關系,什么是范圍?什么原因導致需求模糊?能夠明確理解兩者的異同,才能夠找出解決的方法,建立明確的項目范圍,轉換成功能需求。讓我們能夠從模糊的需求轉變成為明確的需求。
建立明確的項目范圍代替不明確的范圍,才能夠減少開發(fā)過程中的修改。本人最近一直從過去30多年的科技項目開發(fā)和管理經(jīng)驗中,結合近年回國后對國內(nèi)IT企業(yè)運營模式的理解,我國技術人員的工作習慣,客戶的思維、心態(tài)和期盼,總結出一套建立明確項目范圍的方法,特在此與讀者分享,共同改善我國軟件企業(yè)的困境(請參考希賽顧問黃紹良教授的《我國軟件企業(yè)的未來生存空間》一文)。
70年代的項目范圍與需求
項目范圍與項目需求是兩個完全不同的概念,但兩者卻不能單獨處理。讓我們回到上世紀70年代的時候,國外企業(yè)正進行自動化的過程。項目基本上是把人工作業(yè)流程轉變成計算機程序。那時候并沒有項目范圍這個名稱,我們用Terms of Reference (ToR)來界定項目的邊界,采用文字描述的方法說明這個項目要做什么。例如,要為希賽公司建立一個庫存管理系統(tǒng),這個項目的ToR會說明貨品從進入倉庫開始,到貨品因應生產(chǎn)或銷售申領要求離開倉庫為止,其中包括貨品存入量的統(tǒng)計,存放位置記錄,總庫存量統(tǒng)計、申領數(shù)目、檢貨、提取貨品、準備出倉,最后更新貨品存量統(tǒng)計等工作過程。這個項目的Term of Reference只說明這個項目的范圍,包括一些需要執(zhí)行的工作和記錄等。
在項目實施過程中,系統(tǒng)分析員會對庫存管理全過程進行調(diào)查或調(diào)研,采用訪談或觀察等方法,記錄上述范圍中的整個工序的過程,每一個數(shù)據(jù)的更新,參考記錄數(shù)據(jù)的報告格式和任何有關的工作單據(jù)。這些工序,數(shù)據(jù)更新時間和地點,報告打印等工作最后便成為系統(tǒng)的功能需求。這些需求能夠讓最終用戶明確開發(fā)人員已經(jīng)把握了整個工作流程,明確每一個工作的內(nèi)容,保證完成的系統(tǒng)能夠提供庫存管理的功能?! ?
這段時間軟件工程的焦點是在范圍確認后的信息搜集(Facts Finding)和需求分析(Requirement Analysis)中。依據(jù)PMBOK的論述,我們在20世紀70年代,的確可以從范圍的建立帶出明確的功能需求,減少開發(fā)過程中的修改,降低項目延誤的風險。這個模式在我國軟件產(chǎn)業(yè)發(fā)展初期采用,大概是20世紀