在一个项目开始之前,首先我们需要考虑一个问题就是为什么要启动这个项目,也就是说,这个项目的目标是什么?
项目的目标是系统的业务需求。在很多情况下,涉众可以清晰地表达出系统的业务需求,这时可以通过安排和涉众的面谈来明确项目的动机。但也有很多情况下,涉众无法表达他们的业务需求,或者表达的业务需求不够清晰。因此,要发现系统的业务需求,还是要从用户的问题开始。要分析涉众的问题,首先要明确问题,将它们变得清晰,变得适宜进行分析。这个过程从问题和相关的背景描述开始。
问题一般有单方涉众提出,因此在和所有涉众对其进行讨论之前,先要就问题本身达成一致,达成共识。具体的方法就是用标准化的格式描述问题,并在涉众之间取得认同。达成共识的问题是一致的问题,但一致的问题不一定是明确的问题。问题的明确性要求它们具有易于理解和能指明解决方向两个特点。
需求获取方法有:1)面谈
2)原型
3)观察与文档审查
面谈:就是在需求获取活动发生在需求工程师和用户之间的面对面的会见,它是一种使用问答格式,具有特定目的的直接会话。之后书中介绍了面谈中的问题,准备面谈的主要工作,面谈的阶段,面谈的后续工作,面谈的类别,面谈的优点和局限性,群体面谈以及和面谈相关的其他需求获取方法
原型:是在软件开发中被广泛使用的一种工具,在软件开发过程中的各个阶段,包括需求开发,都会使用不同类型的原型来达到不同的目的。之后书中介绍了原型的类别,原型方法,原型方法的风险。
观察与文档审查:用户专心于完成自己的工作,而且不需要同步地向需求工程师解释自己的工作;需求工程师则置于一旁,他们很少会打断用户的工作,同时通过观察用户的行为形成对相关信息的学习和认知。文档审查的主要获取对象包括相关产品的需求规格说明、硬数据和客户的需求文档。
这三种需求获取方法给我们以后在工作中提供了方法,不至于犯不必要的错误。书中对于每一种方法都进行了详细的介绍,还说明了优缺点以及适用情况,对我们有极大的好处。在了解面谈、原型、观察和文档审查等需求获取方法的同时,还需要懂得怎样将整个系统的需求获取行为有效地组织起来。需求获取的常见模型驱动方法有:1)面向目标的方法。2)基于场景的方法。3)基于用例的方法。书中详细介绍了这三种方法,使我们更清楚地了解了这三种常用的方法,在以后的需求工程中就有方法可循了。
一个项目的成功软件需求分析是关键的一步。为了保证项目的正常实施,并且能够顺利的完成,我们必须加强项目管理和重视项目分析工作。我们只有从实际出发,切切实实地把握用户需求,把握用户需求目标,把握用户将来功能界定,保证我们开发工作正确性方向。三种需求分析的方法:结构化分析方法、面向对象的分析方法、面向问题域的分析方法。结构化的分析方法是传统的分析法,它的好处是在需求阶段可以不需要精确地定义系统,只需要根据业务框架确定系统的功能范围,以及每个功能的处理逻辑和业务规则,功能需求规格书等, 面向对象的分析方法的最大好处是在需求阶段,就能够非常精确地描述一个系统,采用程序语言的方式和最终用户交流(最终用户必须要熟悉这种语言),能够在项目一开始就发现很多问题,避免在开发的过程中出现需求的反复,而且在系统设计和开发阶段不需要最终用户参与。在需求分析概述这一章节了解到的这些知识是以后建模的基础,对以后的学习帮助很大。
需求工程有三个主要任务:第一,需求工程必须说明软件系统将被应用的环境极其目标,说明用来达成这些目标的软件功能,还要说明在设计和实现这些功能时上下文环境对软件完成任务所用方式,方法所施加的限制和约束,也即要同时说明软件需要做什么和为什么需要做。第二,需求工程必须将目标,功能和约束反映到软件系统中,映射为可行的软件行为,并对软件行为进行准确的规格说明。需求规格说明是最为重要的成果,是项目规划,设计,测试。用户手册编写等很多后继软件开发阶段的工作基础。第三,现实世界是不断变化的世界,因此,需求工程还需要妥善处理目标、功能和约束随着时间的演化情况。同时,为了节省开支和进行需求规格说明的重用,需求工程还需要对目标,功能和约束在软件产品族中的演化和分布情况进行综合考虑与处理。