企業管理軟件的需求描述方法
需求是整個軟件項目最關鍵的一個輸入,據統計,不成功的項目中有37%的問題是由需求造成的。和傳統的硬件生產企業相比較,軟件的需求具有模糊性、不確定性、變化性和主觀性的特點,在硬件生產企業中,產品的需求是明確的、有形的、客觀的、可描述的、可檢測的,而軟件需求不具備此特征。需求文檔作為客戶和開發人員、開發人員之間進行交互的文檔,它將系統的需求進行了“固化”,是需求的載體,其作用是至關重要的。筆者結合多年的企業管理信息系統的開發經驗,總結了如下的需求描述的方法與經驗,供各位同行參考。
1 構成企業管理信息系統的5個基本要素
對企業需求的描述可以從2個方面來進行描述,一個方面是對客戶現行系統的描述,一個方面是對系統未來的設想。總的而言,無論是從那個方面來描述,構成企業信息系統主要包括5個基本要素:企業的組織結構、流程、數據、商務規則與功能(性能)。其中從用戶的角度主要關注流程,是以流程為核心的,通過流程將其他幾個要素貫穿起來,需求分析人員也應該從這個角度來和用戶溝通;從開發者的角度主要關注企業的數據、商務規則與功能,以便于系統的實現;從實施者的角度主要關注企業的組織結構與功能,以便于系統的發布與實施。
(1) 企業的組織模型
即企業的組織結構關系,包括部門設置、崗位設置、崗位職責等。樹型組織結構圖是描述企業的組織模型的一種常用方法,它可用來搞清各部門之間的領導關系,每個部門內部的人員配備情況, 職責分工等情況,它是劃分系統范圍,進行系統網絡規劃的基礎。在組織結構圖中應將用戶的組織結構逐層詳細描述,每個部門的職責也應進行簡單的描述。組織結構是用戶企業業務流程與信息的載體,對分析人員理解企業的業務、確定系統范圍具有很好的幫助。取得用戶的組織結構圖,是需求獲取步驟中的基礎工作之一。
用戶環境中的企業崗位或角色,和組織機構一樣,也是分析人員理解企業業務的基礎,也是分析人員提取對象的基礎。
對用戶角色的識別常常遺漏的是計算機系統的系統管理人員,角色識別不全,對以后的功能識別會造成盲區。
(2) 企業的流程模型
即企業的業務流程,包含哪些流程、流程之間的關系、每個流程中包括哪些活動、每個活動涉及到的崗位。企業的作業流程首先要有一個總的業務流程圖,將企業中各種業務之間的關系描述出來,然后對每種業務進行詳細的描述,使業務流程與部門職責結合起來。詳細業務流程圖可以采用直式業務流程圖形式。對企業而言需要定義關于業務流程圖的描述標準,大家采用相同的圖例來描述,便于管理。
業務流程圖的優點 :
■繪圖的過程,實際上是作業流程條理化的過程
■表達形象直觀,易于和用戶交流,易于項目組內部交流調研的結果,需要得到用戶的認同,這就需要和用戶交流調研的結果,交流的文檔要通俗、易懂, 不能采用專業術語。
■可以作為培訓實施人員與技術服務人員的文檔
業務流程圖的缺點 :
■對高層管理人員的實際需求調查的不清楚.
這一方面是由于用戶沒有接觸過計算機, 對采用計算機后的管理會是什么樣子?計算機能夠完成當前手工操作的哪些內容?能夠作哪些現在手工無法完成的工作等等沒有清楚的概念,因此用戶無法將這些問題反應出來. 另一方面說明分析人員沒有經驗,對原始材料挖掘不深,不能從用戶 提供的材料中提煉處來用戶的真正需求,不能找到當前管理中的問題。
■對各種業務之間的總體關系沒有表達出來.
采用直式業務流程圖可以將企業的每一種業務的處理流程清楚地表達出來, 但是各業務之間的聯系卻沒有表示出來,單看一種業務的流程圖很清楚,但是卻不能綜合在一起,沒有整體的概念,作為需求分析的文檔,在這方面表達的不夠完整。
■在不利用工具的情況下,畫法煩瑣。
圖形可以將流程描述的很清楚,但是還要附加以一些文字說明,如關于業務發生的頻率、意外事故的處理、高峰期的業務頻率等,不能在流程圖中描述出的內容,需要用文字進行詳細描述。
(3) 企業的數據模型
即企業中的信息載體有哪些?以及對這些信息載體的詳細刻畫,包括企業的各種單據、帳本、報表的描述。在需求報告中,應該將單據的描述格式化,需要描述的內容包括:
單據的用途,即單據用在什么地方?
單據的格式:需要明確的畫出來,并有實際的有數據的樣例,能夠具體直觀地說明問題;
單據中的數據項的具體描述:長度、類型、計算生成方法、約束條件等;
單據的數據項是由哪些不同類型的角色來填寫地,包括用計算機可以填那些數據項。
單據中哪些數據是必填的,哪些是可以不用填的。
單據流量:平均每天產生多少條記錄,高峰期的數量;
單據的分類:可以從多個角度上進行分類,如:按業務類型來分類(采購/銷售/生產),按生成的方式來分類(手工錄入型/自動生成型),按格式變化的頻繁程度來分類(易變型/穩定型),按表現形式來分類(列表型/卡片型)等等。
單據之間的關系:引用關系等等。
同樣對于需要的報表與帳本也可以參照上面的條目進行詳細的刻畫。
(4) 企業的商務規則模型
即企業中的商務規則有哪些?這些規則用在哪些地方? 商務規則可以從影響的范圍劃分為2類:一類是局部的規則,如不允許出現負庫存,一類是整體的規則,如對所有的物料管理到批次。商務規則一般是隱藏在功能模型或者流程模型中,不需要單獨描述,但是有些復雜的商務規則是需要單獨抽取出來描述,如企業的各種單據記帳的商務邏輯,5)企業的功能模型
功能需求是用戶的最主要的需求,對用戶功能需求的描述可以采用文字描述也可以采用語言加圖形的描述方式,只要能夠將用戶的需求描述地完整、準確、易于理解即可。對功能需求比較復雜的系統(如超過10個功能項),可以先描述一個概要,對簡單的系統可以直接進行詳細描述。對于用戶的功能需求要進行分類,分類的方法應便于用戶理解,如按照用戶的部門設置情況,進行描述每個部門的需求,這樣也便于組織用戶進行評審。以下是分類方法的舉例:
按部門分類:如采購科、銷售科、計劃科、生產車間、財務科、統計科、總經理等;
按功能類型分類:如單據錄入、單據審核、單據查詢、記帳、帳本查詢、統計報表、系統維護等。
對功能需求的分類在不同的層次可以采用不同的方法。
對每一項功能應有一個功能編號,以便于與功能規格說明書中的章節進行對應。對每一項功能的描述,應指明用戶的輸入(input)、處理方法(process)、系統的輸出(output)及對此項功能的其他要求。功能需求還應注明使用此功能的崗位。對系統管理員要求的特殊功能可以在此注明,非特殊要求可以在需求分析規格說明書中詳細論述。如用戶權限可分級,要有操作日志等。
功能需求與性能需求是密不可分的,籠統的性能需求沒有任何意思,必須具體到某項功能需求上來,這是分析人員在分析系統時容易忽略的一項。
對上述的5個基本元素可以將他們描述為一個五元組〈組織,流程,功能,數據,業務邏 輯〉,對于用戶來講,他們習慣于從組織維來看待系統,即某個部門有哪些崗位,每個崗位參與了哪些流程的哪些活動(功能),在某個功能上操作了哪些數據,對這些數據進行了哪些邏輯處理;對于開發人員習慣于從功能維來看待系統,即某個功能操作了哪些數據,對這些數據進行了哪些邏輯處理,這個功能屬于哪個流程,可以由哪些崗位來使用;對于設計人員可能習慣于從數據維來看待系統:即系統中有哪些數據,在這些數據上可以做哪些處理,這些處理用OO的思想來看即是對數據對象的操作。
對以上的5個基本元素進行描述實際上就是系統建模的過程,為確保模型的可操作性,除了上面的5個基本要素外,還需要重點描述的內容有:
(1) 新系統對應用模式帶來的變化
包括對企業的組織結構、作業流程、單據帳本報表等的格式、商務規則等的改變。
(2) 新系統的界面模型
用開發工具將用戶操作界面快速畫出來,使用戶心中有數。若時間允許,可將界面原型與數據庫表、字段連接起來,真正做出系統雛形,即快速原型法。
2 閱讀需求文檔的4類讀者
需求報告的最終目的是給人來閱讀的,所以一定要考慮需求報告的讀者群,有4類角色可能閱讀企業管理系統的需求文檔:
客戶與用戶業務高層;
用戶的中層管理人員與具體人員;
用戶IT主管與開發人員,包括設計人員、編碼人員、同行的專家;
項目管理人員:包括項目經理、質量保證人員、測試人員、需求管理員、配置管理員、計劃人員等等;
不同的讀者對文檔的閱讀需求是不同的,他們關注的信息是不同的。我見過了很多次需求評審的失敗(如果做好需求評審我會另外再撰文描述),總結下來我認為和需求描述沒有區分讀者群是很有關系的。針對上述的4種分類,我們具體的來分析一下每類讀者的特點:
(1) 客戶與用戶業務高層
他們關心的企業是系統的目標性需求,關心的是系統總體的功能框架,關心的是系統解決了哪些管理問題,對具體的需求是不關心的,所以給他們閱讀的文檔應該是從總體上來描述,要高度抽象。由于他們的工作很忙,很難有比較長的時間來讀這些材料,所以要簡短明了,能夠用1頁紙說明問題的就要不要用2頁紙,而且一般都要給高層進行需求匯報,需要配上語言說明,因此采用PowerPiont片子也就成了一種常用的方法,講解需求與討論一般應掌握不要超過1小時。需求人員常犯的毛病是過多地關注了企業的細節性需求,而忽略系統的目標性需求,所以在安排需求獲取的步驟上、需求報告的編寫上往往沒有抓住企業高層最關心的問題、沒有抓住根本性的問題,在給企業的高層匯報時當然很難通過評審。
(2)用戶的中層管理人員與具體人員
企業的中層管理人員關注的是企業的局部需求,他們要求對自己的負責的局部系統能夠有總體的了解,能夠和其他的子系統銜接的很好,業務流程很流暢,覆蓋了自己需要的所有業務流程,能夠通過系統起到控制作用就行了。具體的操作人員更關心自己的的哪些活動是否在系統中都能處理,軟件是否可以很容易地操作,他們關注的焦點更具體,要求更直觀。所以對這類的讀者可以通過比較詳細的文檔來描述需求了,當然應該以他們習慣的思維方式來描述,不能從開發人員的角度來描述。我看到過很多幾百頁的需求文檔給用戶去閱讀、去評審,結果要么用戶不置可否,要么直接講看不懂,為什么呢?一是開發人員在文檔中分子系統、分模塊、分功能點一層深入下去描述,不符合用戶的思維習慣,他們希望能夠從業務流程、業務活動的角度來考慮問題,而不是功能;二是太多了,用戶也沒有時間靜下心來去消化、吸收如此多的文檔,需求畢竟不是小說,能夠那么吸引讀者。
(3)用戶IT主管與開發人員,包括設計人員、編碼人員、同行的專家
大多數分析人員可能最擅長的就是些寫這類的文檔了,往往也是那這類的文檔給所有的讀者看,其問題我們上邊都說了,這里我們就不贅述了。
需要注意的是在描述需求時候傳統的做法是以功能為主線,來展開描述,實際上如果是以數據為主線來描述需求也是一種很好的辦法,在我們上面談到的五元組中,從數據的角度來分析系統可以更容易實現向OOA、OOD的切換。
(4) 項目管理人員:包括項目經理、質量保證人員、測試人員、需求管理員、配置管理員、計劃人員等等
把拿給開發人員看的需求文檔給管理人員看,這也是分析人員常犯的毛病。管理人員實際上最關心的是需求列表。
在此基礎上項目經理、質量保證人員可以據此來進入項目策劃過程,測試人員可據此進入測試策劃過程,需求管理員、配置管理員可以識別配置項制定相關的活動計劃。沒有這張表管理人員就很難高效地開展他們的管理活動,也就談不到最基本的需求復用了。在上述的表中,需求的優先級是很重要的一列,對項目經理進行項目管理的平衡決策是很重要的,實際上需求的優先級可能比需求本身更重要。
3 需求描述的表示技巧
上面我們談到了,需求文檔是人與人之間交互的文檔,是不同類型的人之間交互的文檔,因此需求文檔的可讀性是一個很重要的方面,為了提高文檔的可讀性可以借鑒下面的一些做法:
在文檔的描述中,適當運用鏈接,增強文檔的可讀性;
多用窮舉的方式,以便于發現遺漏的需求;
通過適當的換行來提高可讀性 ;
采用黑體、斜體、下劃線、顏色等多種方式來突出重要內容;
定義標準的術語,以減少二義性,減少文檔的頁數;
在功能需求的描述中,對于類似的、統一的功能可以單獨地進行詳細描述,其他地方進行引用,或做為術語進行定義,以簡化文檔,減少重復。如;
· 錄入功能
· 打印功能
· 條件查詢功能
· 排序功能等等
結 語
盡管你按照上述的方法去做了,也不要期望能夠編寫出一份能體現需求應具備的所有特性的文檔,無論你如何去細化、分析、評論和優化需求,都不可能達到完美,但是你能夠做到“可接受”,寫一份客戶、用戶、開發人員、管理人員都認可的一份需求,而不是完美的需求
posted on 2014-08-19 13:27 順其自然EVO 閱讀(183) 評論(0) 編輯 收藏 所屬分類: 測試學習專欄