針對功能的需求:
1.是否定義了系統的全部輸入,包括來源,精度,取值范圍,出現頻率等?
2.是否定義了系統全部的輸出,包括目的地,精度,取值范圍,出現頻率,格式等?
3.是否詳細定義了所有輸出格式(web頁面,報表,等等)?
4.是否詳細定義了所有硬件以及軟件的外部接口?
5.是否詳細定義了全部外部通信接口,包括握手協議,糾錯協議,通信協議等?
6.是否列出了用戶想要做的全部事情?
7.是否詳細定義了每個任務所用的數據,以及每個任務得到的數據?
針對非功能的需求:
1.是否為全部必要操作,從用戶的角度詳細描述了期望響應時間?
2.是否描述了與其他與計時有關的考慮,例如處理時間,數據傳輸率,系統吞吐量?
3.是否詳細定義了安全級別?
4.是否詳細定義了可靠性,包括軟件失靈的后果,發生故障時需要保護的至關重要的信息,錯誤檢測與恢復策略等?
5.是否詳細定義了機器內存和剩余磁盤空間的最小值?
6.是否詳細定義了系統的可維護性,包括特定功能的變更,操作環境的變更,與其他軟件接口的變更能力?
7.是否包含對成功的定義?對失敗的定義呢?
需求的質量:
1.需求是用戶語言書寫的嗎?用戶也這么認為?
2.每條需求都不與其它需求沖突嗎?
3.是否定義了相互競爭的特性之間的權衡(例如:健壯性與正確性之間的權衡)?
4.是否避免在需求中規定設計(方案)?
5.需求是否在詳細程度上保持相當一致的水平?有些需求應該更詳細的描述嗎?有些需求應該更粗略的描述嗎?
6.需求是否足夠清晰,即使轉交給一個獨立的小組去構建,他們也能理解嗎?開發者也這么想嗎?
7.每個條款都與待解決的問題及其解決方案相關嗎?能從每個條款上溯到他在問題域中對應的根源嗎?
8.是否每條需求都是可測試的?是否可進行獨立測試,以檢驗滿不滿足各項需求?
9.是都詳細描述了所有可能的對需求的改動,包括各項目改的的可能性?
需求的完備性:
對于開始開發前無法獲得的信息,是否詳細描述了信息不完玩的區域?
需求的完備程度是否能達到這種程度,如果產品滿足所有需求,那么它就是可接受的?
你對所有的需求都感到很舒服嗎?你是否去掉了那些不可能實現的需求--那些只是為了安撫客戶和老板的東西?