過去數年常聽到一些軟件從業人員的投訴包括:“他們(客戶)基本上不知道自己的需求,怎么做他們都不滿意,功能不斷增加,如何能夠完成他們的系統建設?”“他們(客戶)上周說要這個功能,今天說要這個功能,為什么不全告訴我們,讓我們可以不用在開發過程中不斷更改!”一些類似的投訴只說明我們的軟件從業人員基本上沒有明白到范圍建設的重要性,而且未能在項目啟動前把項目范圍建立起來。
范圍與功能的分別
在“如何把握不存在的需求”一文中,已經說明范圍是有效管理需求變更的唯一方法。有明確的項目范圍,我們才能夠學習及分析范圍內的作業流程,建立系統的功能需求,并在開發過程中當客戶要求變動的時候有效管理我們的工作范圍,才能夠有機會按照預算在指定的時間內完成項目的交付。
軟件開發項目從開始到今天,一直以來客戶都不能夠告訴我們需要哪些功能,他們只能告訴我們系統需要完成哪些目標;仡櫋叭绾伟盐詹淮嬖诘男枨蟆币晃闹械牡谝粋例子,20世紀70 年代的客戶需要把庫存管理進行自動化,收到的指示會像下例:“建立一套庫存管理系統取代目前的人工作業流程”。這一句指示是唯一任務說明。系統分析員在接受這個任務后第一個工作是建立項目的Term of Reference (ToR)。系統分析員會進行初步調查,通過簡單的訪談,與庫存部門負責人明確理解他們工作的開始點和終結點,得出的結果可能像下例:“從貨品(包括原材料,半成品及制成品)進入倉庫開始,到貨品因應生產或銷售申領要求離開倉庫為止,其中包括貨品存入量的統計,存放位置記錄,總庫存量統計,申領數目,檢貨,提取貨品,準備出倉,最后更新貨品存量統計等工作過程”。這是所謂的Term of Reference,也是我們今天所認識的項目范圍。
在用戶及管理層認同上述的ToR 后,這個項目的負責人便需要估計需要對多少人進行訪談,需要多久時間進行訪談,需要多少時間對訪談結果進行分析,多少時間建立項目需求,編寫需求說明書,需要多久進行系統設計,多少程序員及多少時間進行程序編寫,如何進行測試,編寫系統文檔,編寫用戶手冊,什么時候在倉庫安裝終端,如何連接主機,什么時候進行用戶培訓,如何讓系統取代目前的人工作業等等有關工作計劃及時間表。
在系統分析員完成訪談后,便需要依據訪談結果進行分析,理解什么時候知道有貨品進入倉庫,什么時候更新有關數據,如何更新,采用哪些表單,倉庫人員如何決定貨品應該存放在哪里,如何記錄有關信息,如何知道需要檢貨,什么時候進行數據更新,如何分別哪些貨品要去生產部門或者直接送到客戶指定地點等等信息。這些信息便成為系統在不同過程中所需的功能需求。
從上述的開發過程說明中可以體現功能需求并不是客戶或用戶提供,是系統分析員在理解目前的人工作業后分析出來的結果。
在系統移交到倉庫中運行前,倉庫中的工作人員需要對系統的操作進行學習及測試。要知道當時倉庫的工作人員并不是針對系統的功能進行測試,是對系統能否滿足他們的工作過程進行測試;谶@批工作人員對人于工作業的過程十分理解,如果系統未能提供一些他們操作過程中的日常工作,他們會要求技術人員對系統進行修改。這個過程讓我們誤會用戶是對功能需求進行測試,這個誤會一直到今天讓我們把系統開發的焦點錯誤地放在功能上,而不是系統的最終交付上。而系統的最終交付是否能夠滿足ToR 的要求是當時項目成敗的主要指標。
文章來源于領測軟件測試網 http://www.k11sc111.com/