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