软件体系结构——第三章<可视化建模技术>
一、可视化建模基础与UML
1.1、可视化建模
什么是可视化建模?
以图形的方式描述待开发业务系统的业务需求、业务处理流程、处理过程。
主要用来描述一个复杂业务问题的必要处理细节(做什么、怎么做?),过滤不必要的设计与实现细节(如何做?)。
模型是对待开发系统的完整的抽象表示,建模是在不同层次上对系统的描述。
为什么要可视化建模?
-
降低复杂度
- 鉴于软件系统的复杂性和规模的不断增大,需要建立不同的模型对系统的各层次进行描述。
-
模型是一个交流工具——是业务沟通的基础
- 便于开发人员与用户的交流。
-
有助于可视化——方便沟通
- 标准的图示或符号说明系统的结构或行为,可改进跨团队的沟通。
建立怎样的可视化模型?
模型的种类 | 模型的用途 | 开发人员 |
---|---|---|
业务模型 | 对业务过程、工作流、组织的建模,描述业务 | 领域专家 |
需求模型 | 对捕获的需求进行整理和分析的工具,辅助开发人员与用户进行沟通,分析业务 | 需求分析人员 |
设计模型 | 包含高层设计(架构模型)和详细设计模型,用于统一开发人员、沟通设计信息,设计软件 | 架构师 |
数据库模型 | 设计数据库的结构、表结构以及与应用系统的交互(表间关系),管理数据 | 数据库开发人员 |
实现模型 | 用来理清软件的组成、部署方案,为安装与维护人员的工作提供指导,系统实施 | 深资开发人员 |
1.2、UML
What is UML?
UML是对象管理组织(OMG)制定的一个通用的、可视化的建模语言标准,可用来:
-
Visualizing(可视化)
-
Specifying(描述)
-
Constructing(构造)
-
Documenting(文档化)
是软件密集型系统的各种工件(Artifacts)
UML统一了:
-
开发生命周期
-
应用领域
-
实现语言和平台
-
开发过程
-
本身的内部概念
UML应用领域:
UML是一个通用的标准建模语言,可对任何具有静态结构和动态行为的任何软件系统进行建模。
UML适用于系统开发的不同阶段:需求阶段用用例;分析与设计阶段用类图;实现阶段用交互图;构造阶段用OO编程语言。
用于如:信息系统、嵌入式系统、分布式系统、商业系统
二、UML2概念建模
通用机制:
-
规格说明(Specifications)
- 图形、文本维度的模型描述
-
修饰(Adornments)
- 描述建模元素的细节信息
-
通用划分(Common Divisions)
- 建模时对事物的划分方法
- 类元和实例的划分
- 接口和实现的分离
- 建模时对事物的划分方法
-
扩展机制(Extensibility Mechanisms)
- 构造型:基于已有的建模元素引入新的建模元素
- 根据已有的模型元素定义一个新元素
- 建立在UML已定义好的模型元素基础之上
- 可以用于所有的UML模型元素,如类、关联、用例、构件等
- UML规范提供了一些预定义的构造型
- 约束:扩展UML构造块的语义,可以用来增加新的规则或修改现有的规则
- 标记值:扩展UML构造型的特性,可以用来创建构造型的详细信息
- 构造型:基于已有的建模元素引入新的建模元素
三、应用UML2建模
3.1、图书馆管理系统
-
是一个基于Web的计算机应用系统
-
读者可以查询图书信息以及借阅信息
-
读者可以通过系统预约所需的图书
-
图书馆工作人员利用该系统完成读者的借书、还书业务
-
图书馆工作人员可以对图书信息、读者信息等进行维护
-
对于到期的图书,系统会自动向读者发送催还信息
-
管理员会定期进行系统维护
3.1.1、用例图
用例图是被称为参与者(Actor)的外部用户所能观察到的系统功能的模型图——需求捕获
-
列出系统中的用例和参与者
-
表明了哪个参与者参与了哪个用例的执行
核心概念:
-
用例:系统中的一个功能单元,可以被描述为参与者与系统之间的一次交互作用,每次交互过程就是一个场景
-
参与者、参与者之间的关系是泛化
-
用例与参与者之间的关系:关联(单向、双向)
-
用例之间关系:扩展、包括、泛化
使用场合:
- 业务建模、需求获取、业务功能定义与描述、验证业务
例图元素:(必记)
图书馆管理系统用例图:
3.1.2、活动图
活动图通过动作来组织,主要用于描述某一方法、机制或用例的内部行为(活动过程)
核心概念:
-
活动、组合活动
-
对象、对象流
-
转移、分支,并发、同步
-
分区(泳道)
使用场合:
- 业务建模、需求描述、类设计
例图元素:(必记)
借书业务的活动图:
3.1.3、静态结构图(核心)
类图(Class Diagram)
- 是软件的蓝图,详细描述了系统内各个对象的相关类,以及这些类与类之间的静态关系
对象图(Object Diagram)
- 表示在某一时刻类的对象静态结构和行为
包图(Package Diagram)
- 展现由模型本身分解而成的组织单元(包、子系统)以及它们的依赖关系
组合结构图(Composite Structure Diagram)
- 描述系统中某一部分(组合结构)的内部结构,包括该部分与系统其它部分的交互点
核心概念:
-
类图:类、接口、依赖、关联、泛化、实现
-
对象图:对象、链接、多重性
-
包图:包(框架、层、子系统) 、依赖
-
组合结构图:组合结构、部件、端口、协议
使用场合:
-
系统静态结构建模的核心模型——软件的核心
-
业务建模、分析、设计、实现,贯穿于整个软件生命周期
类图、对象图、包图元素:(必记)
组合结构图元素:(必记)
图书馆静态结构图:
对象图展示某职工当前借书情况:
包图展示系统分层结构:
组合结构图展示借书内部结构:
3.1.4、顺序图
顺序图
-
用于显示多个对象间的交互活动
-
关注对象之间消息传送的时间顺序
核心概念
-
对象、生命线、激活条(控制焦点)、交互、消息
-
交互片段(Interaction Frame)
使用场合
- 用例分析、用例设计——只针对用例
顺序图元素:(必记)
“借书”用例实现的顺序图:
3.1.5、交互纵览图
交互纵览图(Interaction Overview Diagram)
-
活动图和顺序图的混合物
- 一种是以活动图为主线,对活动图中某些重要活动节点进行细化,即用一些小的顺序图对重要活动节点进行细化,描述活动节点内部对象之间的交互
- 另一种是以顺序图为主线,用活动图细化顺序图中某些重要对象,即,用活动图描述重要对象的活动细节。
-
直观地表达一组相关顺序图之间的流转逻辑
核心概念
-
交互片段
-
分支、转移
使用场合
- 用例分析、用例设计的交互过程
交互纵览图元素:(必记)
交互片段ref可以进一步细化分解片段的内部活动过程:
3.1.6、通信图
通信图(Communication Diagram)
-
UML 1.x中称为协作图(Collaboration Diagram)
-
表示两个对象间关系以及交互活动(两两协作)
核心概念
-
对象、协作角色
-
协作、交互、消息
使用场合
- 用例分析、用例设计中的两两对象间的交互过程
通信图元素:(必记)
“借书”用例实现的通信图:
3.1.7、时间图
时间图
- 也是一种交互图,展现了通信的消息跨越不同对象或角色的实际时间信息
- 可描述单个或多个对象状态变化的时间点以及维持特定状态的时间片段
- 是表示交互时间的主要手段(如:PLC中的T型图)
核心概念
-
时间约束、持续时间约束、生命线
-
状态、条件、事件
时间图元素:(必记)
电子门禁系统的时间图:
3.1.8、状态机图
状态机图(State Machine Diagram)
-
UML1.x为状态图(Statechart Diagram)
-
利用状态和事件描述对象本身的行为
主要概念
-
状态、初态、终态、复合状态
-
事件、转移、动作
-
并发
使用场合
- 只用于类设计,用来描述每个对象的状态
状态机图元素:(必记)
“图书”类的状态机图:
3.1.9、构件图
构件图(Component Diagram)
-
封装类为构件
-
描述在系统实现环境中的软件构件和构件之间的关系
核心概念
-
构件、工件、接口(所供接口、所需接口)
-
构件之间的关系:依赖、实现
使用场合
- 系统设计、实现、部署
构件图元素:(必记)
构件图描述类的实现环境表示:
3.1.10、部署图
部署图(Deployment Diagram)(配置图)
- 描述系统所需的硬件构件的物理部署
核心概念
-
节点(处理器节点、设备节点)、构件、位置
-
节点间的关系:连接、依赖
使用场合
- 系统设计、实施、部署
部署图元素:(必记)
部署图描述系统部署情况: