需求開發可進一步分為:問題獲取、分析、編寫規格說明和驗證四個階段。這些子項包括軟件類產品中需求收集、評價、編寫文檔等所有活動。需求開發活動包括以下幾個方面:
確定產品所期望的用戶類別。
獲取每個用戶類的需求。
了解實際用戶任務和目標以及這些任務所支持的業務需求。
分析源于用戶的信息以區別用戶任務需求、功能需求、業務規則、質量屬性、建議解決方法和附加信息。
將系統級的需求分為幾個子系統,并將需求中的一部份分配給軟件組件。
了解相關質量屬性的重要性。
商討實施優先級的劃分。
將所收集的用戶需求編寫成文檔和模型。
評審需求規格說明,確保對用戶需求達到共同的理解與認識,并在整個開發小組接受說明之前將問題都弄清楚。
需求管理需要“建立并維護在軟件工程中同客戶達成的合同” 。這種合同都包含在編寫的需求文檔與模型中??蛻舻慕邮軆H是需求成功的一半,開發人員也必須能夠接受他們,并真正把需求應用到產品中。通常的需求管理活動包括:
定義需求基線(迅速制定需求文檔的主體)。
評審提出的需求變更、評估每項變更的可能影響從而決定是否實施它。
以一種可控制的方式將需求變更融入到項目中。
使當前的項目計劃與需求一致。
估計變更需求所產生影響并在此基礎上協商新的承諾,這種承諾具體體現在項目解決方案上。
讓每項需求都能與其對應的設計、源代碼和測試用例聯系起來以實現跟蹤。
在整個項目過程中跟蹤需求狀態及其變更情況。
以上幾點說明是我總結了成功實施項目后系統分析人員的經驗,同時也根據國內外的其他系統實施的相關成功經驗,進行了總結。
4.需求的類型
下面這些定義是需求工程領域中常見術語的定義。
軟件需求包括三個不同的層次:業務需求、用戶需求和功能需求(也包括非功能需求)。
1.業務需求(business requirement)反映了組織機構或客戶對系統、產品高層次的目標要求,它們在項目視圖與范圍文檔中予以說明。
2.用戶需求(user requirement) 文檔描述了用戶使用產品必須要完成的任務,這在使用實例(use case)文檔或方案腳本說明中予以說明。
3.功能需求(functional requirement)定義了開發人員必須實現的軟件功能,使得用戶能完成他們的任務,從而滿足了業務需求。
在軟件需求規格說明書 (SRS)中說明的功能需求充分描述了軟件系統所應具有的外部行為。軟件需求規格說明在開發、測試、質量保證、項目管理以及相關項目功能中都起了重要的作用。對一個大型系統來說,軟件功能需求也許只是系統需求的一個子集,因為另外一些可能屬于子系統(或軟件部件)。
作為功能需求的補充,軟件需求規格說明還應包括非功能需求,它描述了系統展現給用戶的行為和執行的操作等。它包括產品必須遵從的標準、規范和合約;外部界面的具體細節;性能要求;設計或實現的約束條件及質量屬性。所謂約束是指對開發人員在軟件產品設計和構造上的限制。質量屬性是通過多種角度對產品的特點進行描述,從而反映產品功能。多角度描述產品對用戶和開發人員都極為重要。
下面以一個字處理程序為例來說明需求的不同種類。業務需求可能是:“用戶能有效地糾正文檔中的拼寫錯誤”,該產品的包裝盒封面上可能會標明這是個滿足業務需求的拼寫檢查器。而對應的用戶需求可能是“找出文檔中的拼寫錯誤并通過一個提供的替換項列表來供選擇替換拼錯的詞”。同時,該拼寫檢查器還有許多功能需求,如找到并高亮度提示錯詞的操作;顯示提供替換詞的對話框以及實現整個文檔范圍的替換。
從以上定義可以發現,需求并未包括設計細節、實現細節、項目計劃信息或測試信息。需求與這些沒有關系,它關注的是充分說明你究竟想開發什么。項目也有其它方面的需求,如開發環境需求或發布產品及移植到支撐環境的需求。盡管這些需求對項目成功也至關重要,但它們并非本書所要討論的。
5.需求分析的原則
不重視需求過程的項目隊伍將自食其果。需求工程中的缺陷將給項目成功帶來極大風險,這里的“成功”是指推出的產品能以合理的價格、及時地在功能、質量上完全滿足用戶的期望。下面將討論一些需求風險。
不適當的需求過程所引起的一些風險:
1. 無足夠用戶參與
客戶經常不明白為什么收集需求和確保需求質量需花費那么多功夫,開發人員可能也不重視用戶的參與。究其原因:一是因為開發人員感覺與用戶合作不如編寫代碼有意思;二是因為開發人員覺得已經明白用戶的需求了。在某些情況下,與實際使用產品的用戶直接接觸很困難,而客戶也不太明白自己的真正需求。但還是應讓具有代表性的用戶在項目早期直接參與到開發隊伍中,并一同經歷整個開發過程。
系統人員在實踐過程中,也有些感覺,在實施一家公司的項目時,若無足夠的用戶參與,系統人員獲得的需求是片面的,不完整的,這樣系統在需求之初就埋下風險。
原文轉自:http://www.anti-gravitydesign.com