需求包括3個層次:業務需求,用戶需求,開發需求程序員
需求分析的通常流程:編程
1。業務人員以業務語言定義出初步文檔,包括業務需求和用戶需求安全
2。開發人員閱讀需求文檔並與業務人員充分溝通,消除二義性,明確邊界,完善需求邏輯性能
3。開發人員從開發角度定義出開發需求,必要時定義配套的測試用例單元測試
敏捷開發提倡面對面的溝通來高效瞭解需求,使用用例卡片記錄需求。我以爲需求分析首先要學好語文,一句簡單的話可能並不簡單,可能須要擴展分析,挖出背後隱藏的前提條件和分支路徑,經反覆確認最終得到正確和精確的需求。當需求不能當場肯定時,須要特別標記TBD(To Be Determined),以引發重點關注,有秩序的進行下一步的分析和肯定。測試
敏捷開發擁抱變化,即不怕需求變化多,由於它有應對的方法。方法就是用戶的強參與和每日迭代,整個開發過程對用戶是開放的,用戶須要在場,每時每刻都有能夠運行的軟件供用戶使用,用戶的任何思想變更和開發的任何進展變更都能雙向快速知曉,使花兒結成果實,果實儘快成熟。加密
需求也有非功能性的,可從開發質量和運行質量來分類,開發質量最重要的是可維護性和可測試性,運行質量最重要的是性能,以及可配置性,狀態的可監視性,和安全性。接口
可維護性首先要求可讀性,其次要求修改方便,擴展方便。實現方法是把可複用的和可能須要靈活變化的部分抽取出來,精益求精。開發
可測試性指功能被驗證的方便程度,和Bug被測出的容易程度,得到性能數據的容易程度。經常使用的測試類型有單元測試(白盒),集成測試(黑盒),性能測試(在不一樣負載下的外部表現)。高標準的軟件都須要測試代碼對產品代碼有100%的覆蓋率。文檔
可維護性和可測試性每每一致要求面向接口編程,敏捷開發也是測試驅動開發,先寫測試逼着程序員面向接口編程,我但願個人新團隊能採用這種方法。
性能的2個經常使用指標是吞吐量和響應時間,一般須要規定吞吐量的最低要求和響應時間的上限,對於開發需求,還有一個基準配置,即在什麼樣的硬件配置下達到這樣的目標。
可配置性包括系統參數的修改和生效,模塊的替換,策略的切換等。
狀態的可監視性指得到系統輸入和輸出的能力,當前系統的負載數據,異常信息的記錄和通知等。
安全性指不容許被公開的數據的完整性和私密性,經常使用的手段包括使用安全的傳輸協議,加密,以及簽名等。