《面向对象分析与设计》一1.6关于统一建模语言UML

    xiaoxiao2021-04-16  256

    1.6关于统一建模语言UML

    UML最初是在多种面向对象分析与设计方法相互融合的基础上形成的,后来发展成为也可以用于业务建模以及其他非软件系统建模的语言。它于1997年11月被对象管理组织(Object Management Group)采纳为建模语言规范,随后被产业界和学术界广泛接受。UML定义了建立系统模型所需要的概念并给出了表示法,但它并不涉及如何进行系统建模。因此它只是一种建模语言,而不是一种建模方法。UML是独立于开发过程的,也就是说它可以适用于不同的开发过程。UML 2.4规范由四个部分组成:基础结构(infrastructure)、上层结构(superstructure)、对象约束语言(object constraint language)和图交换(diagram interchange)。简言之,基础结构给出了用于定义建模语言的核心构造物,上层结构定义了建模语言——UML,对象约束语言用于以精确的方式描述基础结构、上层结构以及用户建立的模型中的查询表达式和约束,图交换规定了如何定义用于数据交换的XML文件的格式。可见UML 2.4不仅仅适用于软件系统建模,其中还包含了大量的用于定义自身的元素。关心如何构造建模语言以及开发建模工具的读者要掌握上述的四个部分;关心对应用系统建模的读者应该掌握上层结构部分,至少要掌握主要建模元素的定义,如果需要在模型中精确地定义查询表达式和约束,还要掌握对象约束语言。尽管UML已经得到了广泛应用,但它还存在不少缺点。对于以前的UML 1.x,来自学术界的主要批评是其语法和语义不够严格;来自产业界的主要批评是它的内容过于庞大,概念过于复杂。至今UML已经开始了版本2x的发展,目前的UML 2.4就比以前的版本有了显著的改进和提高,然而仍有不少问题没有得到令人满意的解决。特别是,它的复杂性不但没有如人们的期望那样得到控制,反而比以往更为庞大和复杂。对于UML存在的问题以及解决方法的深入讨论,请参阅文献[17,18]。针对庞大且复杂的UML,本书的原则是采用其中的在面向对象建模中常用的概念和表示法,并梳理出清楚的语义。下面就UML 2.4对面向对象建模的支持而言,对UML 24支持的14种模型图予以简介,见图1.9。

    UML 24支持的模型图在逻辑上分为两大类:结构图(structure diagram)和行为图(behavior diagram)。结构图用于对系统的静态方面建模。结构图分为: 类图(class diagram)。它是描述系统中各个对象的类型以及其间存在的各种关系的图。 组合结构图(composite structure diagram)。它是描述类和构件的内部结构的图,其中包括与系统其他部分的交互点。 构件图(component diagram)。它是描述构件的组织结构和相互关系的图,用于表达如何在实现时把系统元素组织成构件,从而支持以构件为单位进行软件制品的实现和发布。 部署图(deployment diagram)。它是描述节点、节点间的关系以及构件和节点间的部署关系的图。 对象图(object diagram)。它是描述在某一时刻一组对象以及它们之间的关系的图。 包图(package diagram)。它是描绘模型元素分组(包)以及分组之间依赖的图。 外扩图(profile diagram)。它是在UML 24 的基础上定义新建模元素的图,用以增加新的建模能力。行为图用于对系统的动态方面建模。行为图分为: 活动图(activity diagram)。它是描述活动、活动的执行顺序以及活动的输入与输出的图。 用况图(use case diagram)。它是描述一组用况和参与者以及它们之间的关系的图。 状态机图(state machine diagram)。它是描述一个对象或其他实体在其生命周期内所经历的各种状态以及状态变迁的图。 交互图(interaction diagram)。它是顺序图、交互概览图、通信图和定时图的统称。 顺序图(sequence diagram)。它是描述一组角色和由扮演这些角色的实例发送和接收的消息的图。 交互概览图(interaction overview diagram)。它是以一种活动图的变种来描述交互的图,它关注于对控制流的概览,其中控制流的每个节点都可以是一个交互图。 通信图(communication diagram)。它是描述一组角色、这些角色间的连接件以及由扮演这些角色的实例所收发的消息的图。 定时图(timing diagram)。它是描述在线性时间上对象的状态或条件变化的图。

    习题1与传统软件开发方法相比,面向对象方法有什么优点?2查阅资料,进一步讨论UML与面向对象方法的关系。3封装的目的是什么?在面向对象方法中封装的目的是如何达到的?4针对你过去使用传统开发方法所构造的系统的不足,总结一下问题的原因。考虑如果使用面向对象方法,在哪些方面可能会获益。5面向对象方法的一个主要原则是抽象。思考一下在工作和学习中你经常在什么场合下运用抽象原则。

    相关资源:UML和模式应用 面向对象分析与设计导论

    最新回复(0)