本文共 4240 字,大约阅读时间需要 14 分钟。
统一建模语言 UML 轻松入门( 1 )――基本概念 --------------------------------------------------------------------- 宋宝华 email: [email]21cnbao@21cn.com[/email] --------------------------------------------------------------------- 公元前 260 年,秦、赵之间发生了空前惨烈的长平之战。赵军战败, 40 多万人被坑杀。从此,六国再也无力抵御秦军的进攻。前 230 ~前 221 年,秦王嬴政陆续灭掉六国,建立起我国历史上第一个统一的中央集权的封建国家。秦朝的统一,结束了诸侯长期割据混战的局面。其后,秦始皇在全国范围内统一文字及度、量、衡,为后世建立了不朽的功勋。 UML ( Unified Modeling Language ,统一建模语言)者,建模界强秦也! 20 世纪 80 年代,随着面向对象技术成为研究的热点,先后出现了几十种面向对象的软件开发方法。其中, Booch 、 OMT 和 OOSE 等方法得到了广泛的认可。然而,采用不同方法进行建模不利于开发者之间的交流。而 UML 则统一了 Booch 、 OMT 和 OOSE 的表示方法,而且对其作了进一步的发展。 1997 年, UML 被国际对象组织 OMG 采纳为面向对象的建模语言的国际标准,它溶入了软件工程领域的新思想、新方法和新技术。 UML 不限于支持面向对象的分析与设计,还支持从需求分析开始的软件开发的全过程。数年来, UML 凭借其简洁明晰的表达方式、超凡脱俗的表达能力,一路杀将出来,为业界所广泛认同!目前,在多数大型企业的正规化开发流程中,开发人员普遍使用 UML 进行模型的建立。作为一名软件开发人员,我们必须学会 UML 。因为 UML 就是那个统一的“文字”,统一的“度”、“量”、“衡”,不理解 UML ,作为软件设计统一王国的国民,将是艰难而痛苦的。 作曲家会将其脑袋中的旋律谱成乐曲,建筑师会将其设计的建筑物画成蓝图,这些乐曲、蓝图就是模型 (Model) ,而建构这些模型的过程就称为建模 (Modeling) 。软件开发如同音乐谱曲及建筑设计,其过程中也必须将需求、分析、设计、实现、布署等各项工作流程的构想与结果予以呈现,这就是软件系统的建模。 那么为什么要建模呢?经典答案是:建立大厦和建立狗窝的区别是建设狗窝不需要设计,要生产合格的软件就要有一套关于体系结构、过程和工具的规范。 OMG 官方发布的 UML
的当前最高版本为 2.0 ,可以从 上下载 。 UML 由图和元模型组成,图是语法,元模型是语义。 UML 主要包括三个基本构造块:事物( Things )、关系( Relationships )和图( Diagrams )。本次连载我们将对 UML 的这些基本组成部分及 UML 工具和应用进行介绍,使读者对 UML 形成初步的整体印象。在其后的几次连载里,再以数个实例对这些内容逐步展开。 事物是是实体抽象化的最终结果,是模型中的基本成员, 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 )依赖( Dependencies ):两个事物之间的语义关系,其中一个事物发生变化会影响另一个事物的语义; ( 2 )关联( Association ):一种描述一组对象之间连接的结构关系,如聚合关系(描述了整体和部分间的结构关系); ( 3 )泛化( Generalization ):一种一般化—特殊化的关系; ( 4 )实现 (Realization) :类之间的语义关系,其中的一个类指定了由另一个类保证执行的契约。 ( 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) :活动图描述系统中各种活动的执行顺序。 “工欲善其事,必先利于器”,为了有效的利用 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 )中所建立的模型是静态的(采用用例图、类图、对象图、组件图和部署图等),是标准建模语言 UML 中的静态建模机制;而( 3 )中所建立的模型则表示执行时的序列、状态或交互关系(以状态图、活动图、顺序图和协作图描述),是标准建模语言 UML 中的动态建模机制。 由此可以看出,标准建模语言 UML 的主要内容也可以归纳为静态建模机制和动态建模机制两大类。 此外,需要说明的是, UML 只是一种建模语言,它独立于具体的建模过程。因此,利于它建模时,可遵循任何类型的建模过程。尽管如此, UML 的作者们为我们推荐了 RUP ( Rational Unified Process )。 RUP 由 Rational 软件公司首创,其最重要的特点有三: ( 2 )软件开发是以体系结构设计( Architectural Design )为中心; RUP 包括四个阶段,每个阶段又分为若干次迭代,每次迭代都有一个核心工作流,如图 1.1 所示。 本文转自 21cnbao 51CTO博客,原文链接:http://blog.51cto.com/21cnbao/120274,如需转载请自行联系原作者