在上世紀70 年代后期,系統(tǒng)分析師、系統(tǒng)設(shè)計師,和其他從事軟件工程的專業(yè)人員一直爭取希望能夠有一個國際公認的資格,類似會計師、律師、建筑師等專業(yè)的地位,但到了80 年代中期,這個議題已經(jīng)不再存在,主要的原因是軟件工程內(nèi)包含太多專業(yè),除了軟件和硬件兩大類之外,還漸漸包括網(wǎng)絡(luò),通信,數(shù)據(jù)庫等多方面。計算機從業(yè)人員開始體會及認識到本身的工作與會計師、律師、建筑師等專業(yè)資格可以在考核及認證后授予一定的權(quán)責(zé),和建立一套環(huán)球衡量標準的模式是不一樣的。其實軟件工程比較像藝術(shù)家,大部份的軟件是模仿別人的成果加以個別的應(yīng)用需求進行個性化的結(jié)果,把思維轉(zhuǎn)變成交付成果的一門專業(yè)。
過去數(shù)年常聽到一些軟件從業(yè)人員的投訴包括:“他們(客戶)基本上不知道自己的需求,怎么做他們都不滿意,功能不斷增加,如何能夠完成他們的系統(tǒng)建設(shè)?”“他們(客戶)上周說要這個功能,今天說要這個功能,為什么不全告訴我們,讓我們可以不用在開發(fā)過程中不斷更改!”一些類似的投訴只說明我們的軟件從業(yè)人員基本上沒有明白到范圍建設(shè)的重要性,而且未能在項目啟動前把項目范圍建立起來。
范圍與功能的分別
在“如何把握不存在的需求”一文中,已經(jīng)說明范圍是有效管理需求變更的唯一方法。有明確的項目范圍,我們才能夠?qū)W習(xí)及分析范圍內(nèi)的作業(yè)流程,建立系統(tǒng)的功能需求,并在開發(fā)過程中當(dāng)客戶要求變動的時候有效管理我們的工作范圍,才能夠有機會按照預(yù)算在指定的時間內(nèi)完成項目的交付。
軟件開發(fā)項目從開始到今天,一直以來客戶都不能夠告訴我們需要哪些功能,他們只能告訴我們系統(tǒng)需要完成哪些目標;仡櫋叭绾伟盐詹淮嬖诘男枨蟆币晃闹械牡谝粋例子,20世紀70 年代的客戶需要把庫存管理進行自動化,收到的指示會像下例:“建立一套庫存管理系統(tǒng)取代目前的人工作業(yè)流程”。這一句指示是唯一任務(wù)說明。系統(tǒng)分析員在接受這個任務(wù)后第一個工作是建立項目的Term of Reference (ToR)。系統(tǒng)分析員會進行初步調(diào)查,通過簡單的訪談,與庫存部門負責(zé)人明確理解他們工作的開始點和終結(jié)點,得出的結(jié)果可能像下例:“從貨品(包括原材料,半成品及制成品)進入倉庫開始,到貨品因應(yīng)生產(chǎn)或銷售申領(lǐng)要求離開倉庫為止,其中包括貨品存入量的統(tǒng)計,存放位置記錄,總庫存量統(tǒng)計,申領(lǐng)數(shù)目,檢貨,提取貨品,準備出倉,最后更新貨品存量統(tǒng)計等工作過程”。這是所謂的Term of Reference,也是我們今天所認識的項目范圍。