一、目标
需求分析是软件计划阶段的重要活动,也是软件生存周期中的一个重要环节,该阶段是分析系统在功能上需要“实现什么”,而不是考虑如何去“实现”。需求分析的目标是把用户对待开发软件提出的“要求”或“需要”进行分析与整理,确认后形成描述完整、清晰与规范的文档,确定软件需要实现哪些功能,完成哪些工作。此外,软件的一些非功能性需求(如软件性能、可靠性、响应时间、可扩展性等),软件设计的约束条件,运行时与其他软件的关系等也是软件需求分析的目标。
实例化需求是一组方法,它以一种对开发开发团队有所帮助的方式(理想情况下表现为可执行的测试)描述计算机系统的功能和行为,让不懂技术的利益相关者也可以理解,即使客户的需求在不断变化,它也具有很好的可维护性,可以保持需求的相关性。从而帮助团队交付正确的软件产品。
在我看来,这就是这套方法最牛的地方——帮助团队交付正确的软件产品。正确这个词,说起来简简单单,但实现起来却真的很难。
将不明确的,不清晰的、表述不清的,转换成可测试、可开发、场景描述准确的需求说明。
分析的几个角度:
1、等价替换
2、创新方案
3、追根溯源,弄清用户最原始的诉求,挖掘深层次的需求
需求实例化怎么做
1、从目标中获取范围。
与客户沟通协作,以用户的业务目标为起始,通过团队协作找出可以实现目标的范围。
Tip1:不要把用户自以为的解决方案当做系统需求。问他为什么,想解决什么问题。由你的团队讨论解决方案,划定范围。
Tip2:需要牢记业务目标,为什么做这件事情,因为开发团队很容易把关注焦点转移到怎么做上。
2、从协作中制订需求说明。
协作是关键词。目的是让项目的干系人,包括产品、设计、开发以及测试都参与进来,发挥整个团队的知识和经验,排除理解的不一致性,尽量减少个人认知造成的局限。
3、举例说明。
举例说明是项目需求交流过程中不可或缺的,团队中的人领域背景不同,对同一个事物的理解也可能不尽相同,通过举例说明的方式可以让目标更一致。
在书中,作者提出,功能模块的例子必须具有精确性(不是简单的是或否的答案,使用具体的例子)、真实性(使用真实数据,从客户那儿获取真实的例子)、完整性(使用不同的数据组合去试验,利用其他方式去检验和测试),并易于理解(不用试验所有组合,寻找隐含的概念)。
4、提炼需求说明。
虽然协作过程中的需求讨论可以建立大家对相关领域的共识,但得到的实例往往包含很多不必要的细节。关键实例是从这些实例中提炼出来的,虽然精简但足以说明业务的实例。并且这些提炼好的实例本身就可以当作交付的验收条件。
5、在不修改需求的前提下,用自动化测试来验证需求。
6、频繁验证。
7、利用工具,提取组织良好的、易于寻找的、前后一致的活文档。
维护需求文档,通常是件让人头疼的事情。过于繁琐的需求文档会让人丧失维护的动力。可是,系统的重构和更新又偏偏需要这样一份文档。怎么办呢?所幸的是,实例化需求为我们提供了这样一种省时省力的方式——从自动化测试用例中提取文档!
二、原则
为了促进软件研发工作的规范化、科学化,软件领域提出了许多软件开发与说明的方法,如结构化方法、原型化法、面向对象方法等。这些方法有的很相似。在实际需求分析工作中.每一种需求分析方法都有独特的思路和表示法,基本都适用下面的需求分析的基本原则。
(1)侧重表达理解问题的数据域和功能域。对新系统程序处理的数据,其数据域包括数据流、数据内容和数据结构。而功能域则反映它们关系的控制处理信息。
(2)需求问题应分解细化,建立问题层次结构。可将复杂问题按具体功能、性能等分解并逐层细化、逐一分析。
(3)建立分析模型。模型包括各种图表,是对研究对象特征的一种重要表达形式。通过逻辑视图可给出目标功能和信息处理间关系,而非实现细节。由系统运行及处理环境确定物理视图,通过它确定处理功能和数据结构的实际表现形式。