1.为什么要有需求工程?
获取和分析需求是软件开发的前提。
需求工程(requirements engireering, RE)是系统工程和软件工程之间的重要桥梁。
2.何为软件需求?
软件本身的角度,是用于解决问题时所表现出的功能和性能要求;
软件利益相关者的角度,是对软件系统的功能和质量以及软件运行环境、交付进度等方面提出的期望和要求。
3.软件系统的利益相关者:
用户、客户、其他系统、开发者群体
4.软件需求的类别:
1)功能需求(functional requirements, FR)
2)软件质量需求(quality requirements)
包括内部质量需求和外部质量需求。
3)软件开发约束需求(constraint requirements):开发成本、交付进度等。
5.需求工程:对系统应该提出的服务和所受到的约束进行理解、分析、建立文档、检验的过程。
将获得高质量的软件需求视为一项工程,有其明确的任务和目标。
6.需求工程的一般性过程:
获取 -> 分析 -> 文档化 -> 确认和验证
7.需求工程的方法学:抽象、建模、分析。
20世纪70年代,产生了DFD建模语言,面向数据流的需求分析方法学,可绘制对应的DFD图。
20世纪90年代,产生了面向对象建模语言UML,绘制软件的用例图、交互图、分析类图。
8.SA方法(结构化需求分析方法学)(structured analysis)
基本思想:分解和抽象。自顶向下、逐步求精、模块化设计
以DFO(dataflow-oriented)方法为例, 首先给出了一系列图形化符号。
数据流:有向边表示
转换:圆形或者椭圆形
外部实体:矩形框
数据存储:两条水平线
9.DFO需求分析步骤和策略:
1)建立顶层DFD图
2)精化转换,产生下一层DFD图
3)建立数据字典(DD)
数据字典:每一个条目用于详细描述各个数据流、外部实体、数据存储、不再被精化的转换。
10.面向对象分析(object-oriented analysis, OOA)方法学:
OOD,object-oriented design, 面向对象设计
OOP, object-oriented program, 面向对象编程
基础概念:
1)对象
2)类
3)消息
4)继承
5)关联
6)多态:
7)覆盖:
8)重载
11.面向对象建模语言UML(unified modeling language)
基于以上概念及抽象,提供图形化的符号,用来表示软件系统的一种语言。
本质上就是画图。
UML的多视角建模:
1)结构观点:包图,类图,对象图,构件图
2)行为观点:交互图、状态图、活动图
3)部署观点:部署图
4)用例观点:用例图
12. OOA的需求分析步骤和策略:
1)明确问题边界,获取软件需求,建立用例模型
2)开展用例分析,精化软件需求,建立分析模型
3)汇总需求模型,撰写需求文档,评审软件需求
13.软件需求制品:
软件需求模型
软件需求文档
软件原型