UML
UML是一种建模语言,常用于建立软件系统的模型,适应于系统开发的不同阶段。
UML的语义
- 描述基于UML的精确元模型定义。
- 元模型为UML的所有元素在语法和语义上提供了简单、一致、通用的定义性说明,使开发者能在语义上取得一致,消除了因人而异的最佳表达方法所造成的影响。此外UML还支持对元模型的扩展定义。
UML表示法
- 定义UML符号的表示法,为开发者或开发工具使用这些图形符号和文本语法为系统建模提供了标准。
- 这些图形符号和文字所表达的是应用级的模型,在语义上它是UML元模型的实例。
UML融合了Booch、OMT和OOSE方法中的基本概念,而且这些基本概念与其他面向对象技术中的基本概念大多相同;
UML不仅仅是上述方法的简单汇合,而是扩展了现有方法的应用范围;
UML是标准的建模语言,而不是标准的开发过程。尽管UML的应用必然以系统的开发过程为背景,但由于不同的组织和不同的应用领域,需要采取不同的开发过程。
软件开发过程分为四各阶段:
- 初始阶段
- 细化阶段
- 构造阶段
- 移交阶段
该过程框架强调的原则:
- 用例驱动(Use Case Driven)
- 以架构为中心(Architecture-Centric)
- 迭代增量(Iterative and Incremental)
UML的用于描述模型的基本词汇(“构造块”):
- 事物(Things)
- 关系(Relationships)
- 图(Diagrames)
事物(Things)
- 结构事物(Structure Thing)
- UML中的静态元素:类、接口、协作等
- 行为事物(Behavioral Thing)
- UML中的静态元素:交互(Interaction)、状态机(State Machine)
- 组织事物(Grouping Thing)
- UML的分组元素:包(Package)
- 注释事物(Annotation Thing)
- UML的分组元素:注释(Note)
关系(Relationships)
关系(Relationships)
- 关联关系(Association) 元素间的结构化关系,是一种弱关系,被关联的元素间通常可以被独立的考虑。
- 依赖关系(Dependency) 元素A的变化会影响元素B,但反之不成立,那么B和A的关系是依赖关系,B依赖A。
- 泛化关系(Generalization) 归纳、类属关系,即通常所说的继承关系。
- 聚合关系(Aggregation) 关联关系的一种特例,表示部分和整体(整体 has a 部分)的关系。
- 组合关系(Composition) 组合是聚合关系的变种,表示元素间更强的聚合关系。对于组合关系,如果整体被破坏则个体一定会被破坏,而聚合的个体则可能是被多个整体所共享的,不一定会随着某个整体的破坏而被破坏。
- 实现关系(Realization) 元素A定义一个约定,元素B实现这个约定,则B和A的关系是实现关系,B 实现 A。这个关系最常用于接口。
图(Diagrames)
- 静态图
- 用例图:一组用例、参与者及它们的关系
- 类图:一组类、接口、协作及它们的关系
- 对象图:一组对象及它们的关系
- 构件图:一组构件及关系
- 实施图:一组接点及它们的关系
- 动态图
- 顺序图:一个交互,强调消息的时间顺序
- 协作图:一个交互,强调消息发送和接受的对象的结构组织
- 状态图:一个状态机,强调对象按事件排序的行为
- 活动图:一个状态机,强调从活动到活动的流动
UML用于软件系统开发的不同阶段
用户需求: 可使用用例图来捕获用户的需求,用例图从用户的角度来描述系统的功能,表示了操作者于系统的一个交互过程。
系统分析: 可使用类图来描述系统的 静态模型,为了实现用例、类之间需要协作,可用动态模型的状态图、顺序图、协作图来描述。 分析阶段只考虑问题域的对象建模。需要通过静态模型和动态模型来描述系统结构和系统行为。
系统设计: 对类进行细化,如引入人机交互的接口类、处理数据类、处理通信类。
系统实现: 用构件图描述代码构件的物理结构以及构件之间的关系。用配置图来描述和定义系统中软硬件的物理通信结构。
测试: 可使用类图进行单元测试;可使用构件图、协作图进行集成测试;可使用用例图进行确认测试。