`
javafenger
  • 浏览: 246901 次
  • 来自: ...
文章分类
社区版块
存档分类
最新评论

统一建模语言UML轻松入门之基本概念

阅读更多
        20 世纪80 年代,随着面向对象技术成为研究的热点,先后出现了几十种面向对象的软件开发方法。其中,Booch、OMT 和OOSE等方法得到了广泛的认可。然而,采用不同方法进行建模不利于开发者之间的交流。而UML则统一了Booch、OMT 和OOSE 的表示方法,而且对其作了进一步的发展。1997 年,UML 被国际对象组织OMG采纳为面向对象的建模语言的国际
标准,它溶入了软件工程领域的新思想、新方法和新技术。UML不限于支持面向对象的分析与设计,还支持从需求分析开始的软件开发的全过程。数年来,UML凭借其简洁明晰的表达方式、超凡脱俗的表达能力,一路杀将出来,为业界所广泛认同!目前,在多数大型企业的正规化开发流程中,开发人员普遍使用UML进行模型的建立。作为一名软件开发人员,我们必须学会UML。因为UML就是那个统一的"文字",统一的"度"、"量"、"衡",不理解UML,作为软件设计统一王国的国民,将是艰难而痛苦的。

  作曲家会将其脑袋中的旋律谱成乐曲,建筑师会将其设计的建筑物画成蓝图,这些乐曲、蓝图就是模型(Model),而建构这些模型的过程就称为建模(Modeling)。软件开发如同音乐谱曲及建筑设计,其过程中也必须将需求、分析、设计、实现、布署等各项工作流程的构想与结果予以呈现,这就是软件系统的建模。

  那么为什么要建模呢?经典答案是:建立大厦和建立狗窝的区别是建设狗窝不需要设计,要生产合格的软件就要有一套关于体系结构、过程和工具的规范。

  OMG官方发布的UML的当前最高版本为2.0,可以从http://www.uml.org/上下载。

  UML由图和元模型组成,图是语法,元模型是语义。UML主要包括三个基本构造块:事物(Things)、关系(Relationships)和图(Diagrams)。本次连载我们将对UML的这些基本组成部分及UML工具和应用进行介绍,使读者对UML形成初步的整体印象。在其后的几次连载里,再以数个实例对这些内容逐步展开。

  1.1 UML的基本构造块

  1.1.1事物

  事物是是实体抽象化的最终结果,是模型中的基本成员,UML中包含结构事物、行为事物、分组事物和注释事物。

  (1)结构事物(Structural things)

  结构事物是模型中的静态部分,用以呈现概念或实体的表现元素,是软件建模中最常见的元素,共有以下七种:

  类(Class):类是指具有相同属性、方法、关系和语义的对象的集合;

  接口(Interface):接口是指类或组件所提供的服务(操作),描述了类或组件对外可见的动作;

  协作(Collaboration):协作描述合作完成某个特定任务的一组类及其关联的集合,用于对使用情形的实现建模;

  用例(Use Case):用例定义了执行者(在系统外部和系统交互的人)和被考虑的系统之间的交互来实现的一个业务目标;

  活动类(Active Class):活动类的对象有一个或多个进程或线程。活动类和类很相象,只是它的对象代表的元素的行为和其他的元素是同时存在的;

  组件(Component):组件是物理的、可替换的部分,包含接口的集合,例如COM+ 、JAVA BEANS等;

  结点(Node):结点是系统在运行时存在的物理元素,代表一个可计算的资源,通常占用一些内存和具有处理能力。

  (2)行为事物(Behavioral things)

  行为事物指的是UML模型中的动态部分,代表语句里的"动词",表示模型里随着时空不断变化的部分,包含两类:

  交互(ineraction):交互是由一组对象之间在特定上下文中,为达到特定的目的而进行的一系列消息交换而组成的动作;

  状态机(state machine):状态机由一系列对象的状态组成。

  (3)分组事物(Grouping things)

  可以把分组事物看成是一个"盒子",模型可以在其中被分解。目前只有一种分组事物,即包(package)。结构事物、动作事物甚至分组事物都有可能放在一个包中。包纯粹是概念上的,只存在于开发阶段,而组件在运行时存在。

  (4)注释事物(Annotational things)

  注释事物是UML模型的解释部分。

  1.1.2关系

  关系是将事物联系在一起的方式,UML中定义了四种关系:

  (1)依赖(Dependencies):两个事物之间的语义关系,其中一个事物发生变化会影响另一个事物的语义;

  (2)关联(Association):一种描述一组对象之间连接的结构关系,如聚合关系(描述了整体和部分间的结构关系);

  (3)泛化(Generalization):一种一般化-特殊化的关系;

  (4)实现(Realization) :类之间的语义关系,其中的一个类指定了由另一个类保证执行的契约。

  1.1.3图

  图是事物集合的分类,UML中包含多种图:

  (1)类图(Class Diagram):类图描述系统所包含的类、类的内部结构及类之间的关系;

  (2)对象图(Object Diagram):对象图是类图的一个具体实例;

  (3)包图(Package Diagram):包图表明包及其之间的依赖类图;

  (4)组件图(Compoment Diagram,也称构件图):组件图描述代码部件的物理结构以及各部件之间的依赖关系;

  (5)部署图(Deployment Diagram):部署图定义系统中软硬件的物理体系结构;

  (6)用例图(Usecase Diagram):用例图从用户的角度出发描述系统的功能、需求,展示系统外部的各类角色与系统内部的各种用例之间的关系;

  (7)顺序图(Sequence Diagram):顺序图表示对象之间动态合作的关系;

  (8)协作图(Collaboration Diagram):合作图描述对象之间的协作关系;

  (9)状态图(Statechart Diagram):状态图描述一类对象的所有可能的状态以及事件发生时状态的转移条件;

  (10)活动图(Activity Diagram):活动图描述系统中各种活动的执行顺序。

  上述十种图可归纳为五类,如表1.1。

  表1.1 UML图分类

类型 包含
静态图 类图、对象图、包图
行为图 状态图、活动图
用例图 用例图
交互图 顺序图、协作图
实现图 组件图、部署图

  1.2 UML工具与应用

  "工欲善其事,必先利于器",为了有效的利用UML,我们需要首先获得一个UML工具软件。

  当前,业界使用最广泛的UML建模工具为Rational Rose。Rational Rose中可实现正向(为模型产生相应的代码)、逆向(从用户原来的软件系统导出该系统的模型)和双向工程(实现模型和代码之间的循环工程),从而保证模型与代码的高度一致。Rational Rose支持C++、Visual C++、Java、Smalltalk、Ada、Visual Basic、PowerBuilder等语言和开发工具,并能为CORBA 应用生成接口定义语言(IDL),为数据库应用生成数据库描述语言(DDL)等。另外,Rational Rose为团队开发和规范的开发过程管理提供了良好的支持。
对于小规模应用,我们可以使用微软公司Office套件中的Visio,其中提供了对UML各种图的绘制支持。

  从应用的角度上来讲,面向对象的系统设计一般需要完成如下工作:

  (1)描述需求;

  (2)根据需求建立系统的静态模型;

  (3)描述系统的行为。

  (1)和(2)中所建立的模型是静态的(采用用例图、类图、对象图、组件图和部署图等),是标准建模语言UML中的静态建模机制;而(3)中所建立的模型则表示执行时的序列、状态或交互关系(以状态图、活动图、顺序图和协作图描述),是标准建模语言UML中的动态建模机制。

  由此可以看出,标准建模语言UML的主要内容也可以归纳为静态建模机制和动态建模机制两大类。

  此外,需要说明的是,UML只是一种建模语言,它独立于具体的建模过程。因此,利于它建模时,可遵循任何类型的建模过程。尽管如此,UML的作者们为我们推荐了RUP(Rational Unified Process)。RUP由Rational软件公司首创,其最重要的特点有三:

  (1)软件开发是由用例驱动的;

  (2)软件开发是以体系结构设计(Architectural Design)为中心;

  (3)软件开发是个迭代过程。

  RUP包括四个阶段,每个阶段又分为若干次迭代,每次迭代都有一个核心工作流,如图1.1所示。

统一建模语言UML轻松入门之基本概念
图1.1 RUP的流程

 

 

 

分享到:
评论

相关推荐

    统一建模语言UML轻松入门之用例

    《统一建模语言UML轻松入门之用例》是一篇介绍如何理解和应用UML中用例概念的文章。用例作为需求分析的核心,是系统设计的关键元素,它描述了系统与外部实体之间的交互,反映了系统应提供的功能和服务。本文将深入...

    统一建模语言UML轻松入门

    《统一建模语言UML轻松入门》 统一建模语言(Unified Modeling Language,简称UML)是一种标准化的图形建模语言,旨在促进软件工程领域的沟通和协作。20世纪80年代,面对众多的面向对象建模方法,如Booch、OMT和...

    统一建模语言UML轻松入门之用例.

    ### 统一建模语言UML轻松入门之用例详解 #### 一、引言 在软件工程领域,**统一建模语言**(Unified Modeling Language, UML)是一种广泛使用的标准建模语言,它帮助开发者更好地理解和构建软件系统。在UML的各种...

    UML轻松教程(全)

    **UML(统一建模语言)**是一种标准的图形化建模语言,用于软件工程和其他领域,特别是系统分析和设计。它提供了一种可视化的方式来描述软件系统的结构和行为,使得团队成员之间能够更好地理解和交流设计理念。 **...

    UML轻松入门

    ### UML轻松入门:深入解析类与对象及类图构建 #### 类与对象:软件开发中的核心概念 在软件开发的历程中,"类"与"对象"是面向对象编程的核心概念,它们代表着对现实世界实体的高度抽象。类是对一组具有相同属性和...

    uml从简单到详细三种版本集合包

    **UML(统一建模语言)**是一种标准的图形化建模语言,用于软件工程和其他领域,用于系统分析和设计。这个"uml从简单到详细三种版本集合包"提供了多种资源,包括PPT教程和PDF电子书,为初学者提供了一个全面了解和...

    DELPHI的UML建摸教程集

    在软件开发过程中,UML(统一建模语言)是一种通用的建模工具,它能够帮助开发者清晰地描绘出系统的结构和行为,提高设计质量和效率。本教程集专注于如何在DELPHI环境中利用UML进行建模,特别是通过ModelMaker这款...

    UML for Java Programmers

    《UML for Java Programmers》是一本专门为Java程序员设计的UML(统一建模语言)学习指南。本书旨在帮助读者快速掌握UML的基础知识,并能有效地应用到实际的Java编程项目中。书中通过丰富的实例和通俗易懂的语言,...

    uml 基础资料及案例

    《UML基础知识与案例解析》 UML,全称统一建模语言(Unified Modeling Language),是一...对于初学者来说,"UML轻松入门之用例.htm"是一个很好的起点,而对已经熟悉UML的开发者,这些案例则能进一步深化理解和实践。

    UML_for_C.pdf

    本文档探讨了如何将统一建模语言(UML)和基于模型的驱动开发(Model-Driven Development,简称 MDD)应用于 C 语言编程中,通过这种方式改善软件开发流程、提高代码质量并加速产品上市时间。 #### 引言 UML 和 ...

    基于uml的类图实现

    UML(Unified Modeling Language),即统一建模语言,是软件工程领域一种广泛使用的建模工具,它提供了一种图形化的方式来描述软件系统的结构和行为。类图是UML中的一种静态结构图,用于表示系统中的类、接口以及...

    Rational 内部入门教材.rar

    1. Rational Rose:一款用于建模和统一建模语言(UML)的工具,支持业务流程建模、系统架构设计和代码生成。 2. Rational Team Concert:一个协同开发工具,提供版本控制、任务管理、变更管理等功能,加强团队协作。...

    Apress - Beginning C# Objects From Concepts to Code.pdf

    - **统一建模语言(UML)应用**:教授如何使用UML进行软件系统的设计和文档化。 - **C#语言基础**:涵盖了C#的基本语法和常用特性。 #### 详细解析 **一、对象概念基础** 本书首先介绍了面向对象编程中最基本的...

    Staruml使用方法(不仅是软件教程)

    StarUML是一款专业的统一建模语言(Unified Modeling Language, UML)工具,它支持UML1.4版本,并且采用了UML2.0的表示法。这款软件的主要目的是帮助开发者和架构师高效地进行软件设计和建模工作。 **1.2 主要特征*...

    C# 入门资料(初学者必备)

    - **UML**:统一建模语言,用于可视化描述软件系统的结构和行为。 **9.3 面向对象的分析** - **识别对象**:确定系统中需要的对象。 - **定义属性和方法**:为每个对象定义属性和行为。 **9.4 面向对象的设计** ...

    The Object Primer 2nd Edition

    此外,书中还提到了几个重要的面向对象标准,例如统一建模语言(UML),这是一种广泛使用的图形化语言,用于软件系统的可视化建模。UML提供了一套标准化的符号和规则,帮助开发者清晰地表达软件设计的各个方面,包括...

Global site tag (gtag.js) - Google Analytics