处理”、“支持”或“管理”某些事情时,你应该能理解客户的意图。由于需求的编写是层次化的,因此,能把顶层不明确的需求向低层周详分解,直到消除不明确性为止。
文件的编写人员不应该把多个需求集中在一个冗长的叙述段落中。在需求中诸如“和”,“或”之类的连词就表明了该部分集中了多个需求。务必记住,不要在需求说明中使用“和/或”,“等等”之类的连词。
八.需求分析的过程
需求获取是在问题及其最终解决方案之间架设桥梁的第一步。获取需求的一个必不可少的结果是对项目中描述的客户需求的普遍理解。一旦理解了需求,分析者、研发者和客户就能探索出描述这些需求的多种解决方案。参和需求获取者只有在他们理解了问题之后才能开始设计系统,否则,对需求定义的所有改进,设计上都必须大量的返工。把需求获取集中在用户任务上?而不是集中在用户接口上?有助于防止研发组由于草率处理设计问题而造成的失误。
需求获取、分析、编写需求规格说明和验证并不遵循线性的顺序,这些活动是相互隔开、增量和反复的。当你和客户合作时,你就将会问一些问题,并且取得他们所提供的信息(需求获取)。同时,你将处理这些信息以理解他们,并把他们分成不同的类别,还要把客户需求同可能的软件需求相联系。然后,你能使客户信息结构化,并编写成文件和示意图。下一步,就能让客户代表评审文件并纠正存在的错误。这四个过程贯穿着需求研发的整个阶段。
由于软件研发项目和组织文化的不同,对于需求研发没有一个简单的、公式化的途径。下面列出了1 4个步骤,你能利用他们指导你的需求研发活动。对于需求的所有子集,一旦你完成了第十三步,那么你就能非常有信心地继续进行系统的每一部分的设计、构造,因为你将研发出一个好的产品:
1. 定义项目的视图和范围。
2. 确定用户类。
3. 在每个用户类中确定适当的代表。
4. 确定需求决策者和他们的决策过程。
5. 选择你所用的需求获取技术。
6. 运用需求获取技术对作为系统一部分的使用实例进行研发并设置优先级。
7. 从用户那里收集质量属性的信息和其他非功能需求。
8. 周详拟订使用实例使其融合到必要的功能需求中。
9. 评审使用实例的描述和功能需求。
10. 如果有必要,就要研发分析模型用以澄清需求获取的参和者对需求的理解。
11. 研发并评估用户界面原型以助想像还未理解的需求。
12. 从使用实例中研发出概念测试用例。
13. 用测试用例来论证使用实例、功能需求、分析模型和原型。
14. 在继续进行设计和构造系统每一部分之前,重复6~1 3步。
需求获取可能是软件研发中最困难、最关键、最易出错及最需要交流的方面。需求获取只有通过有效的客户?研发者的合作才能成功。分析者必须建立一个对问题进行完全探讨的环境,而这些问题和产品有关。为了方便清晰地进行交流,就要列出重要的小组,而不是假想所有的参和者都持有相同的看法。对需求问题的全方面考察需要一种技术,利用这种技术不仅考虑了问题的功能需求方面,还可讨论项目的非功能需求。确定用户已理解:对于某些功能的讨论并不意味着即将在产品中实现他。对于想到的需求必须集中处理并设定优先级,以避免一个不能带来所有益处的无限大的项目。
需求获取是个需要高度合作的活动,而并不是客户所说的需求的简单拷贝。作为一个分析者,你必须透过客户所提出的表面需求理解他们的真正需求。询问一个可扩充的问题有助于你更好地理解用户目前的业务过程并且知道新系统怎么帮助或改进他们的工作。
需求获取利用了所有可用的信息来源,这些