目录
一、软件需求概述
1.1软件需求定义
软件需求可定义为: 用户需解决某一问题或达到某一目标所需的软件功能。 必须满足或具备的软件功能
1.2成功项目的影响要素
1.用户参与(用户输入)
2.高层管理支持
3.清晰的需求说明
4.切合实际的期望
5.清晰的目标和前景
6.需求变化
二、需求工程
2.1需求工程的概述
它关注于软件系统所应予实现的现实世界目标、软件系统的功能和软件系统应当遵守的约束,规格说明之间的联系
2.2需求工程的基本活动
补充需求工程 与 系统工程
2.3需求工程的特性
1.必要性
利用通用的计算机结构,构建一个有用的软件系统,来满足人们的某些目的
2.复杂性
处理范围广泛 涉及诸多参与方 处理内容多样 处理活动互相交织 处理结果要求苛刻
三、需求基础
3.1相关概述
需求是用户对问题域当中的实体状态或事件的期望描述
3.2问题解决的两个方面 ——问题域与解系统
需求工程的主要工作:
(1)进行需求开发,确定用户的期望效果R;
(2)研究问题背景,描述问题域特性E;
(3)构建解系统,描述解系统行为S;
需求规格说明书包括两个部分:
(1)对共享现象(模型)的描述
(2)对系统对共享现象所施加的操作的描述。
3.3需求的类型
需求的3个层次: 业务需求,用户需求,系统需求
3.3.1层次性
补充对应三个文档
业务需求 前景和范围文档
用户需求 用例说明文档
系统需求 需求规格说明文档
具体说明
业务需求
描述了组织为什么要开发系统 定义系统应该具备的特性 共同的前景 系统的范围
用户需求
执行实际工作的用户对系统所能完成的具体任务的期望,描述了系统能够帮助用户做些什么
系统需求
1.发现问题域和计算机系统的共享知识,建立系统的知识模型
2.定义一系列的系统行为,每一个系统行为即为一个系统需求。
3.建模与分析活动。
3.3.2广义的需求分类
包括项目需求、过程需求、系统级需求
1.项目需求:针对项目核心的计划,包括项目成本、资源、时间和进度等。
2.过程需求,针对软件开发过程,包括开发人员、工具和方法等。
3.系统级需求:针对系统工程的需求,包括硬件需求、软件需求以及其他需求。
4.不切实际的期望:根本无法实现的期望,包括技术上的不可行、在有限资源条件下不可行以及超出软件所能影响的问题范围
3.3.3严格意义上的需求分类※※
包括功能需求和非功能需求。 非功能需求包括性能需求、质量属性、接口和约束条件(补充规约)。
性能需求:速度 容量 吞吐量 负载 实时性
质量属性:
- A. 功能性、可靠性
- B. 可用性、效率
- C. 可维护性
- D. 可移植性
3.4需求工程的步骤
1.问题分析和背景分析
2.需求获取
3.需求分析
4.文档化和验证
3.5优秀需求的特性(原则)※
1.完整性 功能需要的所有信息
2.正确性(真实性)
3.可行性 需要进行一定的分析和研究 必要的时候要通过开发原型来加以验证
4.必要性(精确性)
5.无歧义 定义一个可以共同理解的词汇表
6.可验证 分析、检查、模拟或者测试等方法
补充常见的需求定义错误
四、需求工程过程
4.1相关概述
需求工程过程是系统开发当中需求开发活动的集成,它的模版是产生一个能够在用户环境下解决用户业务问题的系统方案
4.2需求工程过程的活动
1.需求获取
需求获取是从人、文档或者环境当中获取需求的过程
需求工程师必须要利用各种方法和技术来“发现”需求
2.需求分析
为问题定义出一个需求集合
背景分析
确定系统边界(用例图,上下文图)
需求建模(DFD数据流图、ERD实体关系图、STD状态转换图,类图等)
需求细化(用户需求->系统需求)
确定优先级
需求协商
3.需求规格说明
业务需求被写入项目前景和范围文档
用户需求被写入用户需求文档(或者用例文档)
系统需求被写入需求规格说明
4.需求验证
确保需求规格说明文档能正确、准确的反映用户的意图
确保文档的高质量※ 执行验证(同级评审、原型或模拟)
5.需求管理
保证需求作用在整个软件的产品生命周期中
4.3需求工程过程的并发和迭代性
实际的需求开发过程是获取-分析-重构的不断交织和迭代的过程。