一个软件要做的内容从何而来?——需要一个对系统应该提供的服务和所受到的约束进行理解、分析、建立文档、检验的过程——需求工程
软件需求的内容
功能需求:对系统应该提供的功能及特定环境下的行为描述
领域需求:由软件系统的应用领域所决定的特有的功能需求
需求工程的基本活动
获取需求:深入实际,在充分理解用户需求的基础上,获取系统需求
需求分析与建模:进行需求建模、对模型或原型进行分析
确认需求:确保需求说明准确、完整地表达系统的主要特性
进化需求:客户的需要总是不断(连续)增长的 ,进化需求是必要的。
以大学图书管理系统为例的需求获取:
功能需求
- 基本数据维护功能(读者及图书信息的录入、删除、更新)
- 基本业务功能(借书、还书、预留书等)
- 数据库管理功能
- 信息查询功能
非功能需求:
- 系统安全性需求(用户权限设置等)
- 对系统可用性的需求
- 对系统查询速度的需求
- 对系统可靠性的需求
领域需求:
与图书管理业务相关的需求。(如符合相关法律法规)
需求分析及建模
需求分析和建模又包含三个层次的工作:
1、需求分析
2、需求建模(分为企业建模、功能需求建模和非功能需求建模等)
3、需求规格说明—不同的描述方式
SA法的描述方法
1、分层的数据流图(DFD图)
2、数据词典
3、描述加工逻辑的结构化语言、判定表及判定树
面向对象的分析方法(OOA):
“基于用例的方法”来识别和获取需求,是从外部的角度来看系统功能,描述外部执行者(Actor)所理解的系统功能。即待开发系统的功能需求。
需求的有效性验证
为什么需要进行需求验证?
首先,需求是软件开发的第一阶段,直接影响后面各阶段的开发;其次由于需求的可变性必须进行验证。
那么,需要验证些什么呢?
- 有效性检查——指功能需求是否符合用户所提出的需求(你讲的是不是我要的)
- 一致性检查——系统功能描述及约束是否一致(你讲的前言搭不搭后语)
- 完备性检查——是否包含所有系统用户的需求和约束(我要的你都讲全了没有)
- 可检验性检查——是否能设计出一组验证方法,确定了检验的标准(你有方法证明你自己么)
需求管理
其中,最重要的是——“需求变更管理”