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