本帖介绍软件需求涉及的诸多基本概念,通过对这些概念的阐述,剖析软件需求的来源、层次、类别、作用等重要知识~
目录
一.引言
需求开发阶段的主要任务就是分析问题,研究问题所发生的现世界(即问题域),寻找实现软件系统与现实世界有效互动的办法,并严格描述该互动方法------即建立软件解决方案,又称为软件规格说明~
进行严谨的需求开发是非常重要的,开发软件系统最为困难的部分就是准确说明开发什么~
二.需求工程基础
1.简介
3个主要任务:
- 需求工程必须说明软件系统将被应用的环境及其目标,说明用来达到这些目标软件的功能,即同时要说明软件"需要做什么"和"为什么需要做"~
- 需求工程必须将目标和功能反映到软件系统当中,映射为可行的软件,并对软件行为进行准确的规格说明
- 现实世界时不断变化的世界,因此需求工程还需妥善处理目标和功能随着岁见演化的变动情况
2.活动
主要包括需求开发和需求管理两个方面~
- 需求开发
- 需求管理:跟踪后续阶段中的需求实现与需求变更情况,确定需求得到正确的理解并被正确得实现到软件产品当中~
3.需求获取
从人、文档或者环境中获取需求的过程,需要各种方法和技术来"发现"需求
- 目标分析:根据问题确定目标/通过分享厉害人关系确定目标
- 用户需求获取:面谈、集体获取方法、头脑风暴、原型
4.需求分析
通过建模来整合各种信息,以使得人们更好地理解问题
- 边界分析:系统的边界定义了项目的范围
- 需求建模:将大量的信息以清晰、条理的方式集成到一个模型当中,让需求工程师对问题形成更为深刻的理解
5.需求规格说明
获取的需求要编写成文档,编写文档的主要目的是在系统用户之间交流信息,因此对文档的质量有一定要求~
- 定制文档模板:团队通常会在其内部为各种需要编写的文档维护一些文档模板
- 编写文档:选择最准确的表达方式
6.需求验证
保证需求规格说明中定义的需求必须能正确、准确地反映用户的意图
- 文档内每条需求度正确、准确地反映了用户的意图
- 文档记录的需求集在整体上具有完整性和一致性
- 文档的组织方式和需求的书写方式具有可读性和可修改性
(同级评审是最通用有效的需求验证方式)
7.需求管理
在需求开发活动之后,设计、测试、实现等后续的软件系统开发活动都需要围绕需求开展工作~
三.需求基础
1.需求
- 用户为了解决问题或达到某些目标所需要的条件或者能力
- 系统或者系统部件为了满足合同、标准、规范或者其他正式文档所规定的要求而需要具备的条件和或者能力
- 对上述两者中的一个条件或者一种能力的一种文档化表述
2.需求的层次性
期望可能会发生在多个抽象层次上:
- 业务需求:抽象层次最高的需求,是系统建立的战略出发点,表现为高层次的目标,描述了组织为什么要开发系统
- 用户需求:执行实际工作的用户对系统完成的具体任务的期望
- 系统级需求:用户对系统行为的期望
3.结合层次性的需求开发
不同抽象层次的需求之间的联系:
4.区分需求、问题、规格说明
需求:是一种期望,源于现实但又高于现实
问题域:对现实世界运行规律的一种反映,是需求的产生地,也是需求的解决地
规格说明:软件产品的方案描述,以软件产品的运行机制为主要内容(不是需求但实现需求,不是问题域但需要与问题域互动)
四.需求分类
1.需求谱系
2.软件需求的分类
- 功能需求:不考虑物理约束的情况下,用户希望系统能够执行的活动,这些活动可以帮助用户完成任务(最重要的需求)
- 性能需求:定义了系统必须多好和多快地完成专门的功能(速度、容量)
- 质量属性:用户的期望(通常情况下是隐式的)(安全性、可移植性)
- 对外接口:系统和软件中其他系统之间需要建立的接口(输入、输出)
- 约束:系统构造时需要遵守的规定(运行环境、商业规则)
- 数据需求:功能需求的补充(各个功能实用的数据信息、实用频率)