業務級需求:包含客戶或出資者要達到的業務目標、預期投資、工期要求,以及要符合哪些標准、對哪些遺留系統進行整合等約束條件。
用戶級需求:用戶使用系統來輔助完成哪些工作?對質量有何要求?用戶群及所處的使用環境方面有何特殊要求?
開發級需求:開發人員需要實現什么?開發期間、維護期間有何質量考慮?開發團隊的哪些情況會反過來影響架構?
從"需求定義了直接目標還是間接限制"的角度,把需求划分為3種類型,這就是需求的3個方面:
功能需求:更多體現各級直接目標要求。
質量屬性:運行期質量 + 開發期質量。
約束需求:業務環境因素 + 使用環境因素 + 構建環境因素 + 技術環境因素。
軟件需求的三個層次——業務需求、用戶需求和功能需求
業務需求(Business requirement)標志組織或客戶高層次的額目標。業務需求通常來自項目投資人、購買產品的客戶、實際用戶的管理者、市場營銷部門或產品策划部門。
業務需求描述了組織為什么要開發一個系統,即組織希望達到的目標。使用前景和范圍(vision and scope)文檔來記錄業務需求,這份文檔有時也被稱作項目輪廓圖或市場需求(project charter 或 market requirement)文檔。
用戶需求(user requirement)描述的是用戶的目標,或用戶要求系統必須能完成的任務。用例、場景描述和事件――響應表都是表達用戶需求的有效途徑。也就是說用戶需求描述了用戶能使用系統來做些什么。
功能(開發,行為)需求(functional requirement)規定開發人員必須在產品中實現的軟件功能,用戶利用這些功能來完成任務,滿足業務需求。功能需求有時也被稱作行為需求(behavīoral requirement),因為習慣上總是用“應該”對其進行描述:“系統應該發送電子郵件來通知用戶已接受其預定”。功能需求描述是開發人員需要實現什么。
什么是用戶需求?什么是功能需求?
用戶需求是針對的是人,描述的是用戶想做某件事情所遇到的問題,或想滿足的欲望;而功能需求針對的是產品,描述是產品如何解決用戶所遇到的問題,或如何滿足用戶的欲望,是方式、方法;
舉個例子:
用戶需求:在決定購買之前,用戶想方便的比較一下幾個同系列產品,以此在選擇的時候做出更明智的決定。
功能需求:我們可以讓用戶把購買的商品,都放入“比較欄”,然后用戶再點擊“去對比”,就會在一個界面同時對比幾個產品。
用戶需求是前提條件,功能需求是落下來的產品部分,它是可以交付的。
值得注意的一點是業務需求,有時候用戶需求與業務需求是有矛盾 ,那么個功能需求怎么決定呢?
舉個例子:
某個商品界面,我發現我的用戶不是為了買最便宜的貨,我決定產品不把最便宜的商品都展示出來,因為
1、不希望讓用戶買最便宜貨 2、一旦有太便宜的商品,用戶就會形成心理落差,覺得貴的商品不值錢(其實貴的商品的性價比比便宜的商品更高)3、我想提高單筆成交訂單額度。
所以我就會只展示相對貴一點的商品。讓用戶減少選擇,就有可能購買價值更貴的商品(業務需求)
如果把最便宜的商品也展示出來,這對於用戶需求來說是有價值的;(用戶需求)
但是還是堅持了“貴一點”的策略,這就是業務需求主導了功能需求;
業務需求是什么?
業務需求針對是公司,描述是公司想如何解決用戶的問題,如何滿足用戶的欲望,並將利益最大化。重點是在后面,追求商業可行性與利益最大化。
不過放心,大部分互聯網公司,他的業務需求很簡單:讓功能需求最大化滿足用戶需求,不斷追求用戶體驗,黏住用戶后,再謀求規模化利潤(比如:廣告)。
在軟件開發過程中,最為重要的“用戶需求”往往和數量巨大的”功能需求“混淆在一起,這會讓太多沒有直接提供業務價值的需求充斥在需求階段,這會導致沒有突出重點而忽視重要的業務特性,這對業務分析來說是非常有害的。 所以在開發過程中,很有必要加強認識並區分開來。
系統需求
系統需求是比用戶需求更具有技術特性的需求陳述,是提供給開發者或用戶方技術人員閱 讀的,並將作為軟件開發人員設計系統的起點與基本依據。
系統需求需要對系統在功能、性能、數據等方面進行規格定義,由於自然語言隨意性較大, 在描述問題時容易發生歧義,因此系統需求往往要求用更加嚴格的形式化語言進行表述,例如 PDL 偽碼,以保證系統需求表述具有一致性。
系統需求涉及有關軟件的一系列技術規格,包括:功能、數據、性能、安全等諸多方面的 問題。