UML(统一建模语言)以融合了多种面向对象建模方法,简洁的图形与符号,直观的表示和强大的表示能力,得到了工业界与学术界认可。它通过统一的表示法,使不同知识背景的领域专家、系统分析和开发人员以及用户可以方便地交流。
一、UML发展
时间 | 事件 |
---|---|
1995年 | Gray Booch和Janes Rumbaugh将他们的面向对象建模方法统一为Unified Method V0.8。 |
1996年 | Ivar Jacobson加入(三位被称为“三友”),将该方法统一为二义性较少的UML 0.9,并将早期草案应用于不同的领域。UML成了实际上的工业标准。 |
1996年 | 建模专家组成的国际性队伍”UML伙伴组织“开始同”三友“一起工作,计划将UML提议作为OMG(Object Management Group)的标准建模语言。 |
1997年1月 | 伙伴组织向OMG提交了最初的提案UML 1.0。 |
1997年9月 | 提交最终提案UML 1.1。 |
1997年11月 | 被OMG正式采纳为对象建模标准。 |
1997年11月 | UML修订任务组(Revision Task Forces,RTF),负责收集有关评论,并提出修改意见。修改了印刷和语法错误,以及明显的逻辑上的不一致;改编了规范,使之与其他OMG规范更为一致,提了了UML 1.2。 |
1999年6月 | 修正和改善了UML 1.1的遗留问题,并纠正了之前版本发现的小错误,提交并被批准了UML 1.3。UML 1.3版本是建模语言规范第一个成熟的发布。 |
2003年6月 | OMG通过了UML 2.0版本 |
… | … |
UML是用元模型来描述的,元模型是4层元模型体系结构模式种的一层。此模式的其他层次分别是元-元模型层、模型层和用户对象层。
在元模型层,UML元模型又被分解为三个逻辑子包:基础包、行为元素包和模型管理包。其中,
- 基础包由核心、扩展机制和数据类型三个子包构成,它是描述模型静态结构的语言底层结构,支持类图、对象图、构件图和部署图等结构图。
- 行为元素包是描述模型动态行为的语言上层结构,支持不同的行为图,包括用况图、顺序图、协作图、状态图和活动图。
- 模型管理包则定义了对模型元素进行分组和管理的语义,它描述了几种分组结构,包括包、模型和子系统。
二、UML基础
UML通过图形化的表示机制从多个侧面对系统的分析和设计模型进行刻画,常用到的UML图可以分为4类:
- 用例图
序号 | 视图 | 说明 |
---|---|---|
1 | 用例图(use case diagram) | 从外部用户的角度描述系统的功能,并指出功能的执行者。 |
- 静态图
序号 | 视图 | 说明 |
---|---|---|
2 | 类图(class diagram) | 描述系统的静态结构,类图的节点表示系统中的类及其属性和操作,类图的边表示类之间的联系,包括继承、关联、依赖和聚合等。 |
3 | 对象图(object diagram) | 对象图是类图的一个实例,它描述了在某种状态下或在某一时间段,系统中活跃的对象及其关系。 |
- 行为图
序号 | 视图 | 说明 |
---|---|---|
4 | 序列图(sequence diagram) | 描述对象之间的消息传递,强调对象之间下消息发送的时间序。 |
5 | 状态图(statechart diagram) | 描述类的对象的动态行为,它包含对象所有可能的状态,在每一个状态下能够响应的事件以及事件发生时的状态迁移与响应动作。 |
6 | 活动图(active diagram) | 描述系统为完成某项功能而执行的操作序列,这些序列可以并发和同步。活动图中包含控制流和信息流。 |
7 | 时序图(timing diagram) | 时序图被用来显示随时间变化,一个或多个元素的值或状态的更改。也显示时控事件之间的交互和管理它们的时间和期限约束。 |
- 实现图
序号 | 视图 | 说明 |
---|---|---|
8 | 组件图(component diagram) | 描述软件实现系统中各个组成部件以及它们之间的依赖关系。 |
9 | 部署图(deployment diagram) | 描述作为软件系统运行环境的硬件及网络的物理体系结构,其节点表示实际的计算机和设备,边表示节点之间的物理连接关系。 |
三、基于UML的开发
1、需求分析(领域专家、分析师)
- 利用用例及用例图表示需求。从业务需求描述出发获取执行者和场景;对场景进行汇总、分类、抽象,形成用例;确定执行者与用例、用例与用例图之间的关系,生成用例图。
- 利用包图和类图表示目标软件系统的总体框架结构。根据领域知识、业务需求描述和既往经验设计目标软件系统的顶层架构;从业务需求描述中提取“关键概念”,形成领域概念模型;从概念模型和用例出发,研究系统中主要的类之间的关系,生成类图。
2、细化设计(架构师)
- 利用序列图用于表示用例实现方案,精确方案实现,并精化类图。
- 利用类图表示设计技术支撑方案。
- 利用状态图、活动图、对象图等表示系统的详细设计实现。
四、系统架构文档化
软件架构用于处理软件高层次结构的设计和实施。
软件架构={元素, 形式,关系/约束}
软甲架构涉及到了抽象、分解和组合、风格和美学。我们用由多个视图或视角组曾的模型来描述它。该模型包含了5个主要视图:
- 逻辑视图(logical view):设计的对象模型
- 过程视图(process view):捕捉设计的并发或同步特征
- 物理视图(physical view):描述了软件到硬件的映射
- 开发视图(development view):描述了在开发环境中软件的静态组织结构。
架构的描述,即所做的各种决定,可以围绕着这4个视图来组织,然后由一些用例(use cases)或场景(scenarios)来说明,从而形成了第5个视图。
附1:参考资料
《系统架构设计师教程》