2.3 需求工程
- 需求开发*:包括需求获取、需求分析、编写规格说明书(需求定义)和需求验证4个阶段。
- 需求管理:通常包括定义需求基线、处理需求变更及需求跟踪等方面的工作。
*需求开发的4个阶段:
- 在需求开发阶段需要确定产品所期望的用户类型、获取每种用户类型的需求、了解实际的用户任务和目标,以及这些任务所支持的业务需求。
- 同时还包括分析源于用户的信息、对需求进行优先级分类、将所收集的需求编写成为软件规格说明书和需求分析模型,以及对需求进行评审等工作。
需求开发是努力更清晰、更明确地掌握客户对系统的需求;而需求管理则是对需求的变化进行管理的过程。
2.3.1 需求开发概述
需求开发主要确定开发软件的功能、性能、数据和界面等要求。
1.需求开发的工作
- 问题识别:用于发现和描述需求,并预先估计以后系统可能达到的目标。
- 分析与综合:对问题进行分析,然后在此基础上整合出解决方案。
- 编制需求分析的文档:也就是对已经确定的需求进行文档化描述,该文档通常称为软件需求说明书(需求规格说明书)
- 需求分析与评审:它是需求分析工作的最后一步,主要是对功能的正确性、完整性和清晰性,以及其他需求给予评价。
2.需求开发的原则
在软件需求开发的过程中,必须遵循以下原则:
- 必须能够表达和理解问题的信息域和功能域。
- 必须表示软件的行为(作为外部事件的结果)。
- 必须划分描述信息、功能和行为的模型,从而可以以层次的方式揭示细节。
- 分析过程应该从要素信息移向细节实现。
- 必须按自顶向下、逐层分解的方式对问题进行分解和不断细化。
- 要给出系统的逻辑视图和物理视图。
3.需求的分类
软件需求就是系统必须完成的事,以及必须具备的品质。具体来说,软件需求包括功能需求、非功能需求和设计约束3个方面的内容。
- 功能需求:是指系统必须完成的那些事,即为了向它的用户提供有用的功能,产品必须执行的动作。
- 非功能需求:是指产品必须具备的性能或品质,例如,可靠性、容错性等。
- 设计约束:也称为限制条件、补充规约,通常是对解决方案的一些约束说明,例如,某系统必须采用国有自主知识版权的数据库,必须运行在UNIX系统之下,等等。
除了这3种需求之外,还有业务需求、用户需求和系统需求这3个处于不同层面下的概念,充分理解这些需求才能够更加清晰地理清需求的脉络。
- 业务需求:是指反映组织机构或客户对系统、产品高层次的目标要求,通常问题定义本身就是业务需求。
- 用户需求:是指描述用户使用产品必须要完成什么任务、怎么完成的需求,通常是在问题定义的基础上进行用户访谈、调查,对用户使用的场景进行整理,然后建立的从用户角度的需求。
- 系统需求:是从系统的角度来说明软件的需求,它包括了用特性说明的功能需求,质量属性及其他非功能需求,还有设计约束。
2.3.2 需求获取
在需求获取的过程中,主要解决需求调查的问题。要想做好需求调查,必须清楚地了解三个问题。
(1)What:应该搜集什么信息。
&