UML建模
这篇文章介绍了UML(统一建模语言)及其在软件工程中的应用,并详细阐述了UML的各种图,包括结构图(类图、对象图、包图、组件图、部署图)和行为图(用例图、顺序图、通信图、状态机图、活动图)。文章首先介绍了UML的基本概念,包括事物(结构事物、行为事物、分组事物、注释事物)和关系(关联、依赖、泛化、实现),以及机制(规格说明、修饰、通用划分等)。然后,文章讨论了UML与软件工程的关系,强调了在软件生命周期中使用UML进行建模的重要性,并介绍了RUP“4+1”架构方法。接着,文章详细解释了各种UML图的构成要素和应用场景,例如用例图中的参与者和用例,类图中的类和接口等。文章还提到了各个图中的事物和关系,有助于理解UML在软件设计中的作用。
UML简介
- 事物:
- 结构事物:类、接口、协作、用例、组件、节点
- 行为事物:交互、状态机、活动
- 分组事物:也称组织事物,是UML模型的组织部分,用来组织系统设计的事物
- 注释事物:也称辅助事物,是UML模型的解释部分,用来没描述、说明和标注模型中的任何元素
- 关系:
- 关联:描述不同类元实例间的连接。关联关系中一种特殊的关系是聚合关系(我中有你的意思)
- 依赖:描述一对模型元素之间的内在联系. 若元素的某些特性受其他元素影响,则这个元素与其他元素构成依赖关系.
- 泛化:类元以便描述与具体描述之间的关系. 一种特殊到一般中的归纳和分类关系.
- 实现:规格说明与其实现元素之间的关系.
- 机制:
- 规格说明: UML元素背后有一段描述来说明构造模块的语言, 来对元素细节进行描述. 例如类中的属性、操作描述
- 修饰: UML元素大都有唯一直接的图形符号。
- 通用划分: 类型-实例划分、接口-实现划分
- 构造型: 根据已有的模型进行修改和精化, 可以创造出新的模型元素, 如接口元素就是类元素通过<<interface>>声明出来的
- 标记值: 关于模型本身的属性定义, 他一般定义在注释元素中通过
属性名=值的方式定义, 如作者属性author=zhangsan - 约束: 陈述句表达与条件或限制, 通常约束可以附加在任何元素上以表达元素上的额外语义.
- UML图:当事物及其关系确定后,需要将模型展示出来,通过UML定义的几个图来实现.
- 结构图:捕获事物间的静态关系,描述系统的静态结构. 类图、对象图、包图、组件图、部署图
- 行为图:捕获事物的交互过程如何产生系统的行为,描述系统的动态行为. 用例图、顺序图、通信图、状态机图、活动图
UML与软件工程
在软件生命周期的各个阶段对软件进行建模, 从不同视角对系统进行解读, 从而形成同一的软件过程叫描述 在软件建模的过程中, 常使用的是RUP"4+1"架构方法, 该方法中从7个不同 的视角描述系统体系结构: 逻辑视图、开发视图、进程视图、物理视图和场景视图.
- 逻辑视图: 将系统功能分解, 反映系统组织与协作. 逻辑视图主要对应UML中的类图
- 开发视图: 描述系统各个模块的组织方式. 开发视图一般由UML中的组件图描述
- 进程视图: 描述系统的运行特性, 关注性能、稳定性、并发性、集成性. 进程视图一般由UML中的顺序图、通信图、状态机图、协作图描述
- 物理视图: 描述硬件配置, 关注系统的安装配置通信以及拓扑结构问题. 物理视图一般由UML中的部署图描述
- 场景视图: 场景视图实际上不包含新内容, 它只是将以上4个视图进行整合, 描述一个特定场景内的构件关系或不同场景间的关系. 场景视图一般由UML中的用例图描述.
用例图
用例即一组动作序列,这些动作序列通常作为服务由特定的参与者触发,将结果反馈给调用者。 用例图表示是一个系统中用例与参与者之间的关系的图。
事物
参与者
参与者是与系统主体交互的外部实体类元,描述了一个或一组与系统产生交互的外部用户或外部事物
- 参与者的特点:
- 位于系统边界之外,不是系统的一部分
- 是从现实世界中抽象出来的一种形式, 客观对象抽象成参与者是多对多的关系
- 参与者之间可以有泛化关系,
- 确定参与者:
- 为系统提供输入的人或事物
- 接收系统输出的人或事物
- 接入系统的第三方系统或设备
- 时间触发的事件
- 支持和维护系统中信息的人
- 主要业务参与者
- 主要系统参与者
- 外部服务参与者
- 外部接收参与者
用例
类元(一般是系统、子系统或类)提供的一个内聚的功能单元, 表明系统与一个或多个参与者之间进行信息交换的序列, 也表明系统动作.
- 用例的特点:
- 一个用例即系统的一个目标, 描述为实现该目标的活动和系统交互的一个序列
- 用例的目的是定义系统子系统的一个行为、单不揭示系统的内部结构
- 用例是系统做某件事从开始到结束的一系列活动集合, 以及返回的有意义的结果.
- 用例使用动宾短语描述
- 用例是相对独立的
- 用例由参与者触发或启动
- 用例要有可观测的执行结果
- 用例是一个单元
- 确定用例:
- 参与者的主要任务是是什么
- 参与者系统的什么信息
- 参与者可以为系统提供什么信息
- 系统需要通知参与者发生的变化和事件吗
- 参与者需要通知系统发生的变化和事件吗
关系
- 参与者间的关系
- 泛化
- 用例间的关系:
- 泛化
- 依赖: 包含(包含用例中定义的行为将被插入到基用例定义行为中)、扩展(扩展用例中定义的行为将作为基用例的增强行为)
包图
事物
包图的事物主要就是包了。
关系
类图
类图是显示一组类、接口、协作以及他们之间关系的图。通过类以及类之间的关系描述系统的静态结构
事物
类
类是一组具有相同属性、操作、方法、关系和行为的对象描述符。类描述了一组有状态和行为的对象
- 图形符号:
- 特点
- 类的组成
- 类名
- 属性:
[可见性] 属性名[:类型][多重性][=初始值][{特性}] - 操作:
[可见性] 操作名[(参数列表)][:返回类型][{特性}] - 职责:
接口
接口是一个被命名的操作合集,用于描述类或组件的一个服务
- 图形符号
- 特点
- 接口不包含任何属性和操作的实现方法
- 接口代表一份契约,实现该接口的类元必须履行它
- 接口可以泛化,子接口包含父接口的全部内容并添加额外的内容
- 接口没有直接实例
- 接口的组成:
关系
- 关联关系:
- 关联名称
- 角色
- 多重性: 一个源端对象可与目标端对象发生关联的数目
- 导航性
- 限定符
- 关联约束
- 泛化关系:
- 依赖关系:
- 实现关系:
对象图
对象图显示了某一时刻一组对象以及他们之间的关系。对象图使用十分有限,主要用于说明系统在某一特定时刻的具体运行状态,一般在论证类模型的设计时使用.
事物
关系
组件图
事物
关系
部署图
事物
关系
顺序图
事物
关系
通信图
事物
关系
状态机图
状态机图适用于对系统的动态方面进行建模,适合描述一个对象在其生命周期中的各种状态以及状态转换。 与通信图和顺序图不同的是它描述的是单个对象行为,而不是多个对象。 对象图