需求工程
什么是需求分析?
1.软件工程的子领域
2.对系统应该提供的服务和所受到的约束进行理解、分析、建立文档、检验的过程
需求工程的重要性和意义
1.没有需求就没有软件
2.项目失败原因中,最突出两大原因,缺乏最终用户的参与以及完整的需求又是两大首要原因
需求工程困难性
- 应用领域的广泛性
- 非功能性需求建模技术的缺乏
- 沟通上的困难
需求分类
功能需求
对系统应该提供的服务、功能以及系统在特定条件下的行为的描述。它与软件系统的类型、使用系统的用户等相关,有时需要详细描述系统的功能、输入/输出、异常等,有时还需要申明系统不应该做什么。
领域需求
是由软件系统的应用领域所决定的特有的功能需求,或是对功能的约束。
需求分析的作用
- 定义软件的范围及必须满足的约束
- 确定软件的功能和性能及与其他系统成分的接口
- 建立数据模型、功能模型和行为模型
- 最终提供需求规格说明,并用于作为评估软件质量的依据
需求分析基本活动
- 获取需求:深入实际,在充分理解用户需求的基础上,获取系统需求
- 需求分析与建模:进行需求建模、对模型或原型进行分析
- 确认需求:确保需求说明准确、完整地表达系统的主要特性
- 进化需求:客户的需要总是不断(连续)增长的,进化需求是必要的
需求获取的要弄清的三个问题
- 明确需要获取的信息(What )
- 明确所获取信息的来源和渠道(Where )
- 怎样获取需求(How )
需求获取方法
1.面谈法
2.问卷调查
3.需求专题讨论会
4.观察用户的工作流
5.原型化的方法
6.基于用例的方法
需求分析常用技术
- 分解 将大问题分解为小问题,通常是自顶而下,不断细化的过程
- 抽象 抓住问题的本质特性,从不同抽象层次进行分析,提出解决问题的方案
- 多视点 注意从各类开发人员和不同用户的角度考虑问题,才能获得对系统的全面完整的需求