其他分享
首页 > 其他分享> > 软件体系结构——第六章<用例分析>

软件体系结构——第六章<用例分析>

作者:互联网

一、理解分析

什么是分析?

分析目标是开发一系列模型来描述软件的核心成分,从而满足客户定义的需求:建立分析模型

分析模型主要包含:

牢记:分析模型的模型元素按照构架来组织,各类视图按照用例实现来组织

二、从用例开始分析

2.1、OOA目标

开发一系列模型来描述计算机软件,从而满足不同客户定义的需求:建立分析模型

2.2、分析模型与用例模型

image.png

2.3、从需求到分析

image.png

2.4、OOA vs 用例模型

分析是建立在业务需求收集的基础上的,故分析模型则建立在用例模型的基础上;

用例模型确定了分析模型的结构——通过用例来组织分析模型;

分析是从用户视角理解用户问题(用例模型)过渡到开发团队视角分析用户问题(OOA);

分析与需求捕获都需要多次迭代。

2.5、从用例开始分析迭代

RUP方法中最重要的思想就是迭代,而迭代的基础就是用例驱动(用例建模)

从用例开始分析的基本思路:

2.6、用例实现

用例实现是分析(设计)模型中一个系统用例的表达式。主要工作有:

用例实现提供了从分析设计到需求的可追溯性

创建用例实现:

image.png

三、架构分析

架构(也称构架)Architecture ——系统的组织结构

构架分析的过程就是定义系统的高层组织结构和核心构架机制的过程。主要有:

3.1、定义备选构架

所需工作:

①创建系统

②选取在构架方面重要的用例,确定其分析类

③通过分析分析类的交互来更新用例实现

经典的三层构架:

image.png

①模型视图控制器构架M-V-C

注意:模型的更新与修改将通过控制器通知视图,保持视图与模型的一致性

image.png

MVC备选构架示意图:

image.png

②分析阶段的备选分层构架B-C-E

image.png

3.2、分析构架机制

构架机制是对通用问题的决策、方针和实践

构架机制具有三类:

示例:

image.png

常见的分析机制:

“旅游申请系统”分析机制示例:

image.png

3.3、关键架构抽象——概念模型

目的是用来理解需求,以便系统必须能够对其进行处理,其特征表现为:

“旅游申请系统”中的关键抽象:

image.png

根据此关键抽象的定义可定义类与类之间的关系

四、构造用例实现

针对每一个用例实现,必须完成5个步骤:

4.1、完善用例文档

需求阶段的用例文档是从用户角度看待用户问题,侧重描述交互事件的1(动作)、4步(响应)

分析阶段则需要从系统角度看待用户问题,重点关注交互的2、3步:即系统如何响应用户请求

image.png

要做到:细化处理步骤和流程

image.png

4.2、识别分析类

牢记:一个用例的全部行为(功能)都是由相应的类的操作来完成的,故这些行为必须被分配到相应的类中。识别规则:

构造用例准则:

什么是边界类?

边界类表示系统与参与者之间交互的边界

image.png

两类边界类:

示例:识别分界类

image.png

什么是控制类?

控制类表示系统的控制逻辑(业务处理过程)。为其它类提供工作流和会话服务,如:

image.png

示例:识别控制类

每个用例定义一个控制类

image.png

什么是实体类?

实体类是后续数据库设计的基础

image.png

示例:候选实体类

image.png

确定分析类的过程:

image.png

4.3、分析交互

面向对象系统是通过对象间的协作实现需求的

image.png

如何描述分析类——分析交互

描述对象间的交互,寻找对象行为

顺序图与用例图和类图的关系:

image.png

如何利用顺序图进行职责分配?

4.4、完成参与类(VOPC)类图

顺序图描述了用例中对象间的交互关系;而对象间的交互要用到类的方法以及类之间的关系

实例:旅游申请-绘制VOPC类图

image.png

image.png

五、定义分析类

如何定义?

从单个VOPC分析类入手,完成如下工作:

5.1、定义分析类的职责

职责即对象对外提供的行为——构造用例实现的过程实际上就是类的职责分配的过程。

如何获取类的职责?

设计阶段最终演变为类的操作或方法

“分析”操作中的创建消息,没定义的原因:属于中间结果。与普通的消息直接由操作来响应不同,创建消息一般是通过类的构造函数来创建对象,调用也是通过一些特定的方式来实现的,因此这些与对象创建和删除等生命周期相关的操作在分析阶段一般不作考虑,也就不需要定义分析操作来表示。

利用文本方式描述职责:

可以利用一种“CRC卡”,以文本的方式来更好地、更直观地描述类的职责,其组成部分为:类(Class)、职责(Responsibility)、协作(Collaborator)

image.png

范例:申请类的CRC卡

image.png

5.2、定义分析类的属性

用来存储对象的数据信息——即数据元素,最小的数据集)

为分析类添加属性:(办理申请属性)

image.png

属性的定义主要针对实体类展开的

5.3、定义分析类的关系

实际业务中任何对象不能孤立地存在,它们之间需要频繁地通过消息(特定的关系)进行交互从而完成有用的工作,并达到用例的目标

特定的关系可表现为:

对象间的链接——通过对象图:

对象图是显示系统某个时刻的对象及其关系的图

image.png

注意:可通过通信图来从对象链接的角度描述两个对象间的消息传递。

5.3.1、关联关系

关联是最常见的类与类之间的一种结构化关系,用来描述类之间的语义联系

识别关联的基本思路

关联关系的分类:

关联可分为普通关联、递归关联、限定关联、或关联、有序关联、三元关联和聚合等七种

普通关联的表示方法

image.png

关联具有:名称、端点和角色名、多重性

image.png

自反关联:一个类自身之间存在的关联。表明一个类内不同对象之间存在链接

image.png

关联类:一种被附加到关联上的类,用来描述该关联自身所拥有的属性和行为

image.png

5.3.2、聚合关系

聚合关系:一种特殊的关联关系

image.png

共享聚合:

image.png

组合关系:

image.png

5.3.3、泛化关系

泛化是指类间的结构关系、亲子关系,即继承

泛化关系主要来自业务对象模型。针对实体类,结合业务领域的实际需求,提取泛化关系主要有两种途径:

泛化关系:

image.png

5.3.4、限定分析机制

为什么进行限定分析机制?

什么是分析机制?

建立分析类和分析机制的对应表:

image.png

申请类的分析机制特性

image.png

5.3.5、统一分析类

业务的类体现了系统的静态结构,通过把所有用例实现的分析类图集成在一起可体现软件整体静态结构。

统一分析类的目的是:确保每个分析类表示一个单一的、明确定义的概念,而不会职责重叠或重复

具体实现:应从系统全局和实际业务出发,需要过滤分析类以确保创建最小数量的分析类。

ATM系统的分析类结果:

image.png

通过各个用例的VOPC图,删除那些没有引用或重复的实体类,即可得到由实体类组成的分析类图,这些是分析的关键

标签:分析,定义,构架,对象,软件体系结构,关联,用例,第六章
来源: https://www.cnblogs.com/wangzheming35/p/16217668.html