需求分析的方法,主要有结构化(SA)方法、面向对象分析(OOA)方法。另外有面向问题域的分析(Problem Domain Oriented Analysis,PDOA)方法,还有一些形式化方法例如VDM ( Vienna Design Method)和Z等。
一、结构化分析方法(SA)
SA方法的基本思想是自顶向下,逐层分解,把一个大问题分解成若干个小问题,每个小问题再分解成若干个更小的问题。经过逐层分解,每个最低层的问题都是足够简单、容易解决的,于是复杂的问题也就迎刃而解了。
SA方法分析模型的核心是数据字典,围绕这个核心,有三个层次的模型,分别是数据模型、功能模型和行为模型(也称为状态模型)。在实际工作中,一般使用E-R图表示数据模型,用数据流图(DFD)表示功能模型用状态转换图(State Transform Diagram,STD)表示行为模型。这三个模型有着密切的关系,它们的建立不具有严格的时序性,而是一个迭代的过程。
数据字典
数据字典中一般有六类条目,分别是数据元素、数据结构、数据流、数据存储、加工逻辑和外部实体。不同类型的条目有不同的属性需要描述。
(1)数据元素。数据元素也称为数据项,是数据的最小组成单位,例如,课程号、课程名等。对数据元素的描述,应该包括数据元素的名称、编号、别名、类型、长度、取值范围和取值的含义等。
(2)数据结构。数据结构用于描述某些数据元素之间的关系,它是一个递归的概念,一个数据结构可以包括若干个数据元素或(和)数据结构。数据结构的描述重点是数据元素之间的组合关系,即说明数据结构包括哪些成分。这些成分中有三种特殊清况,分别是任选项、必选项和重复项。
(3)数据流。数据流由一个或一组数据元素组成,对数据流的描述应包括数据流的名称、编号、简要说明、来源、去处、组成和流通量(含高峰时期的流通量)。
(4)数据存储。数据存储的条目主要描写该数据存储的结构,以及有关的数据流和查询要求。
(5)加工逻辑。需要描述加工的编号、名称、功能的简要说明、有关的输入数据流和输出数据流。对加工进行描述,目的在于使相关人员能有一个较明确的概念,了解加工的主要功能。
(6)外部实体。外部实体是数据的来源和去向,对外部实体的描述应包括外部实体的名称、编号、简要说明、外部实体产生的数据流和系统传给该外部实体的数据流,以及该外部实体的数量。
数据流图(DFD)
(1)数据流图(DFD)基本概念
(2)数据流图(DFD)的层次
SA方法的思路是依赖于DFD进行自顶而下的分析。这也是因为系统通常比较复杂,很难在一张图上就将所有的数据流和加工描述清楚。因此,DFD提供一种表现系统高层和低层概念的机制。也就是先绘制一张较高层次的DFD,然后在此基础上,对其中的加工进行分解,分解成为若干个独立的、低层次的、详细的DFD,而且可以这样逐一的分解下去,直至系统被清晰地描述出来。
状态转换图(STD)
大多数业务系统是数据驱动的,所以适合使用DFD。但是,实时控制系统却主要是事件驱动的,因此,行为模型是最有效的描述方式。STD通过描述系统的状态和引起系统状态转换的事件,来表示系统的行为。此外,STD还指出了作为特定事件的结果将执行哪些动作(例如,处理数据等)。
在STD中从一个状态到另一个状态的转换用箭头线表示,箭头表明转换方向,箭头线上标上事件名。必要时可在事件名后面加一个方括号,括号内写上状态转换的条件。也就是说,仅当方括号内所列出的条件为真时,该事件的发生才引起箭头所示的状态转换。
实体联系图(E-R图)
E-R图提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。构成E-R图的3个基本要素是实体型、属性和联系。
二、面向对象分析方法(OOA)
面向对象分析的基本任务是运用面向方法对问题域进行分析和理解,正确认识其中的事物及它们之间的关系,找出描述问题域和系统功能所需的类和对象,定义它们的属性和职责,以及它们之间所形成的各种联系。最终产生一个符合用户需求,并能直接反映问题域和系统功能的面向对象分析模型及其详细说明。
(1)对象:属性(数据)+方法(操作)+对象ID
(2)类:(实体类/控制类/边界类)
- 实体类映射需求中的每个实体,实体类保存需要存储在永久存储体中的信息,例如在线教育平台系统可以提取出学员类和课程类它们都属于实体类。
- 控制类是用于控制用例工作的类一般是由动宾结构的短语(“动词+名词”或‘名词+动词”)转化来的名词,例如用例“身份验证”可以对应于一个控制类“身份验证器”它提供了与身份验证相关的所有操作。
- 边界类用于封装在用例内、外流动的信息或数据流。边界类位于系统与外界的交接处,包括所有窗体、报表、打印机和扫描仪等硬件的接口以及与其他系统的接口。
(3)继承与泛化:复用机制
(4)封装:隐藏对象的属性和实现细节,仅对外公开接口
(5)多态:不同对象收到同样的消息产生不同的结果
(6)接口:一种特殊的类,他只有方法定义没有实现
(7)重载:一个类可以有多个同名而参数类型不同的方法
统一建模语言(UML)
UML是一种定义良好、易于表达、功能强大且普遍适用的建模语言,它融入了软件工程领域的新思想、新方法和新技术,它的作用域不限于支持OOA和OOD,还支持从需求分析开始的软件开发的全过程。
(1)UML的结构
从总体上来看,UML的结构包括构造块、规则和公共机制三个部分。
- 构造块。UML有三种基本的构造块分别是事物(thing )、关系( relationship)和图( diagram )。事物是UML的重要组成部分关系把事物紧密联系在一起图是多个相互关联的事物的集合。
- 公共机制。公共机制是指达到特定目标的公共UML方法,主要包括规格说明(详细说明)、修饰、公共分类(通用划分)和扩展机制四种。
- 规则。规则是构造块如何放在一起的规定,包括范围、可见性、完整性和执行四个方面
(2)UML图
UML2.0包括14种图,不再赘述。
(3)UML事物
-
UML中的事物也称为建模元素包括结构事物(structural things )、行为事物(behavioral things动作事物)、分组事物(grouping things)和注释事物(annotational things注解事物)。这些事物是UML模型中最基本的OO构造块。
(4)UML关系
-
UML用关系把事物结合在一起,主要有下列四种关系:
- 依赖(dependency)。依赖是两个事物之间的语义关系其中一个事物发生变化会影响另一个事物的语义。
- 关联(association)。关联描述一组对象之间连接的结构关系。
- 泛化(generalization)。泛化是一般化和特殊化的关系描述特殊元素的对象可替换一般元素的对象。
- 实现(realization )。实现是类之间的语义关系,其中的一个类指定了由另一个类保证执行的契约。
UML-4+1视图
UML的4+1视图是指用例视图和逻辑视图、实现视图、进程视图和部署视图。
用例图
用例图是描述一组用例、参与者及它们之间的关系。主要包括参与者、用例和通信关联三种元素。
用例图的特点如下:
- 用户角度描述系统功能;
- 参与者是外部触发因素;
- (包括用户、组织、外部系统,时间);
- 用例是功能单元。
用例图的关系包括:包含关系、扩展关系和泛化关系。
包含关系:其中这个提取出来的公共用例称为抽象用例,而把原始用例称为基本用例或基础用例系:当可以从两个或两个以上的用例中提取公共行为时,应该使用包含关系来表示它们。
扩展关系:如果一个用例明显地混合了两种或两种以上的不同场景,即根据情况可能发生多种分支,则可以将这个用例分为一个基本用例和一个或多个扩展用例,这样使描述可能更加清晰。
泛化关系:当多个用例共同拥有一种类似的结构和行为的时候,可以将它们的共性抽象成为父用例,其他的用例作为泛化关系中的子用例。在用例的泛化关系中,子用例是父用例的一种特殊形式,子用例继承了父用例所有的结构、行为和关系。
用例建模的流程如下:
- 识别参与者(必须);
- 合并需求获得用例(必须);
- 细化用例描述(必须);
- 调整用例模型(可选)