處理”、“支持”或“管理”某些事情時,你應該能理解客戶的意圖。由于需求的編寫是層次化的,因此,能把頂層不明確的需求向低層周詳分解,直到消除不明確性為止。
文件的編寫人員不應該把多個需求集中在一個冗長的敘述段落中。在需求中諸如“和”,“或”之類的連詞就表明了該部分集中了多個需求。務必記住,不要在需求說明中使用“和/或”,“等等”之類的連詞。
八.需求分析的過程
需求獲取是在問題及其最終解決方案之間架設橋梁的第一步。獲取需求的一個必不可少的結果是對項目中描述的客戶需求的普遍理解。一旦理解了需求,分析者、研發(fā)者和客戶就能探索出描述這些需求的多種解決方案。參和需求獲取者只有在他們理解了問題之后才能開始設計系統(tǒng),否則,對需求定義的所有改進,設計上都必須大量的返工。把需求獲取集中在用戶任務上?而不是集中在用戶接口上?有助于防止研發(fā)組由于草率處理設計問題而造成的失誤。
需求獲取、分析、編寫需求規(guī)格說明和驗證并不遵循線性的順序,這些活動是相互隔開、增量和反復的。當你和客戶合作時,你就將會問一些問題,并且取得他們所提供的信息(需求獲取)。同時,你將處理這些信息以理解他們,并把他們分成不同的類別,還要把客戶需求同可能的軟件需求相聯(lián)系。然后,你能使客戶信息結構化,并編寫成文件和示意圖。下一步,就能讓客戶代表評審文件并糾正存在的錯誤。這四個過程貫穿著需求研發(fā)的整個階段。
由于軟件研發(fā)項目和組織文化的不同,對于需求研發(fā)沒有一個簡單的、公式化的途徑。下面列出了1 4個步驟,你能利用他們指導你的需求研發(fā)活動。對于需求的所有子集,一旦你完成了第十三步,那么你就能非常有信心地繼續(xù)進行系統(tǒng)的每一部分的設計、構造,因為你將研發(fā)出一個好的產(chǎn)品:
1. 定義項目的視圖和范圍。
2. 確定用戶類。
3. 在每個用戶類中確定適當?shù)拇怼?/P>
4. 確定需求決策者和他們的決策過程。
5. 選擇你所用的需求獲取技術。
6. 運用需求獲取技術對作為系統(tǒng)一部分的使用實例進行研發(fā)并設置優(yōu)先級。
7. 從用戶那里收集質(zhì)量屬性的信息和其他非功能需求。
8. 周詳擬訂使用實例使其融合到必要的功能需求中。
9. 評審使用實例的描述和功能需求。
10. 如果有必要,就要研發(fā)分析模型用以澄清需求獲取的參和者對需求的理解。
11. 研發(fā)并評估用戶界面原型以助想像還未理解的需求。
12. 從使用實例中研發(fā)出概念測試用例。
13. 用測試用例來論證使用實例、功能需求、分析模型和原型。
14. 在繼續(xù)進行設計和構造系統(tǒng)每一部分之前,重復6~1 3步。
需求獲取可能是軟件研發(fā)中最困難、最關鍵、最易出錯及最需要交流的方面。需求獲取只有通過有效的客戶?研發(fā)者的合作才能成功。分析者必須建立一個對問題進行完全探討的環(huán)境,而這些問題和產(chǎn)品有關。為了方便清晰地進行交流,就要列出重要的小組,而不是假想所有的參和者都持有相同的看法。對需求問題的全方面考察需要一種技術,利用這種技術不僅考慮了問題的功能需求方面,還可討論項目的非功能需求。確定用戶已理解:對于某些功能的討論并不意味著即將在產(chǎn)品中實現(xiàn)他。對于想到的需求必須集中處理并設定優(yōu)先級,以避免一個不能帶來所有益處的無限大的項目。
需求獲取是個需要高度合作的活動,而并不是客戶所說的需求的簡單拷貝。作為一個分析者,你必須透過客戶所提出的表面需求理解他們的真正需求。詢問一個可擴充的問題有助于你更好地理解用戶目前的業(yè)務過程并且知道新系統(tǒng)怎么幫助或改進他們的工作。
需求獲取利用了所有可用的信息來源,這些