UML软件建模技术
上QQ阅读APP看书,第一时间看更新

1.1 软件建模概述

内容提要

模型(Model)是对现实世界的简化,软件建模则是对业务系统软件的抽象描述。通常在软件设计与分析中使用UML语言来建模。UML是一种可视化的建模语言,它可以用来创建各种不同类型的模型。本节将首先讲述建模的概念,然后引出建模语言──UML。在UML这一小节中主要介绍了UML的历史、UML的基本概念。另外,必须使用一种工具来帮助我们实现UML建模,因此在本节的最后介绍了UML建模工具Enterprise Architect。本节主要内容如下。

• 建模概述。

• UML简述。

• Enterprise Architect介绍。

1.1.1 软件建模概述

1. 什么是模型

什么是模型?在回答这个问题之前,我们先来回忆一下生活中常见的一些图表、文字:介绍天气情况的气象图;指示交通情况的交通地图;说明泡沫式灭火器如何打开的过程描述图……所有这些,都是我们身边事物的模型。那么,模型是什么呢?简单地说,模型是对现实的简化。它是现实事物的一种微缩表示,或是一种用于生产某事物的模式,也可以是一种设计或类型,还可以是一个待模仿或仿真的样例。一个好的模型应包括那些有广泛影响的主要元素,忽略那些与抽象水平不相关的次要元素,如:在对房屋进行建模中应包括房屋材料、构造结构等主要元素,忽略那些房屋中应摆放什么样的家具等次要元素。每个系统都可以从不同的方面用不同的模型来描述,如:在建筑、机械设计中就有会用正视、侧视等视图来表示事物的效果,这正如中国一句古诗所说“横看成岭侧成峰”。另外,模型不一定是可视化的,模型也可以用文字来描述,比如用文字描述车间里一个产品的生产流程,但是可视化模型可以更准确地展示模型所代表的含义。

2. 建模的目的和原则

我们为什么要建模?其主要理由是通过建模能够更好地理解我们正在开发的系统。在开发系统的时候,建模可以帮助我们沟通设计思想,理解业务内容,以及处理流程,澄清复杂的问题和场景,确保所设计的系统在实现之前能更符合用户需求。按照这种模式来思考,我们会在没有规划之前就开工建造一栋大厦吗?建造狗窝也许不需要详细的规划和设计,但想要建造好一栋大厦,不把大厦建成像狗窝一样,就需要事先仔细设计一番了。当我们使用一套好的设计图纸,并严格依照图纸施工,所建造的大厦才能经得起时间的检验。而且,越是复杂、庞大的系统,就越需要通过事先的建模来设计与规划。因为人们对复杂问题的理解能力是非常有限的,只有通过建模来帮助人们理解复杂的问题,每次只研究复杂系统的一个方面,即先把待解决的难题分解成一系列的小问题,解决了这些小问题也就解决了这个难题。

什么样的模型才是合乎要求的呢?如果所建的模型对我们的工作没有多大的帮助,或者对我们的工作反而有误导作用,这样的模型建立出来没有什么作用。因此,建模时要有明确的目的性,不要为了建模而建模,也不要事事都建模。当我们专注于建模并希望它产生效力时,就需要先分析从建模中是否能获得收益,或者说值不值得建模。事实上我们发现,项目越简单,建模发挥的功效就越小。一般来说,通过建模,要达到以下4个目的。

(1)模型帮助我们按照实际情况对系统进行可视化。

(2)模型允许我们详细说明系统。

(3)模型给出了一个指导我们构造系统的模板。

(4)模型对我们做出的决策进行模板化。

建模并不是一个刚刚冒出来的新鲜事物,事实上,在各种传统的工程科学领域都有丰富的建模历史,这些经验形成了建模的一些基本原则,有以下几点。

(1)要仔细地选择模型。

创建什么样的模型对解决问题有着重大的影响。正确的模型将清晰地阐明所要开发的系统,而错误的或是有偏差的模型将误导我们把精力放在不相关的问题上。

(2)每一种模型可以在不同的精度级别上表示所要开发的系统。

举个例子来说,修建一栋大厦,有时我们需要使用3D软件制作大厦的整体视觉图,供投资者参考;有时需要制作一份详细的电气施工图,供大厦的施工员铺设电线、光纤。由此可以看到,在项目开发中,不同的角色其视角不同,对模型的侧重方面和详细程度则有不同的要求,如:系统的使用者主要考虑“能做什么”的问题,而系统的开发人员则更多考虑的是“如何做”的问题,这两类人就需要从不同角度以不同的精度级别对系统进行可视化建模。

(3)模型要与实际相联系。

一个模型如果脱离了实际,显然这不是一个好的模型。因此,我们要注意一点,虽然模型对现实进行了简化,但不能简化掉任何重要细节,也不能改变或歪曲任何重要细节。

(4)对一个重要的系统用一组几乎独立的模型去处理。

对于复杂的或者是重要的系统,只用单个模型来描述往往是不够充分的,这时需要用多种模型对系统分别进行研究和描述,以加深我们对系统的理解。

3. 使用UML建模

前面讲述了在工程领域里建模的重要性,那么,我们该如何建模呢?先来看看其他的领域:在音乐领域,有五线谱,供作曲家和演奏家交流;在数学领域,有各种各样的数学公式和表示方法,供数学家、教师、学生交流学习。同样,在工程领域,也有一种可以提供给工程设计人员使用的公共语言:UML。UML的中文意思是统一建模语言(Unified Modeling Language),它是一种通用的可视化建模语言。UML具有灵活,表达能力强的特点。有了建模语言,就方便我们对各种工程进行描述、分析和交流。针对本书而言,论述的是如何使用UML在软件工程方面建模,所以下面将简单的介绍一下有关UML的知识,关于软件工程,将在下一节中进行论述。

1.1.2 UML简介

1. UML历史

要了解UML,就有必要从它的源头开始。20世纪80年代末,出现了许多面向对象的软件建模技术,这些技术是由不同的专家学者发明的,也使用了不同的建模技术和模型表示法。但是,采用面向对象分析与设计方法的用户,并不一定了解各种建模技术、语言之间的差异,因此很难把握为其所开发的应用系统选择合适的建模语言。直到20世纪90年代中期,有3种面向对象建模方法逐渐占据了统治地位,分别是Jim Rumbaugh的对象建模技术(OMT)、Ivar Jacobson的面向对象软件工程方法(OOSE)和Grady Booch的Booch方法。1994年,Rational公司聘请了Rumbaugh参加Booch的工作。两人合并了OMT和Booch方法中的概念与方法,并于1995年提出了第一个建议方案。同年,Jacobson也加入了Rational公司,三位最优秀的面向对象方法学的创始人终于聚在了一起,他们共同的研究成果就是统一建模语言(UML)。1997年,Rational公司正式将UML 1.0版作为标准草案提交给独立标准化组织OMG(Object Management Group,对象管理组织)并获得通过。此后,OMG承担了进一步完善UML标准的工作,并先后推出了UML的多个版本。

有了若干年使用UML的经验之后,OMG提出了升级UML的建议方案,以修正使用中发现的问题,并扩充一部分应用领域中所需的额外功能。建议方案自2000年11月开始起草,至2003年7月完成。之后,UML 2.0规范被全体OMG会员采纳并正式发布。总的来说,UML 2.0和UML 1.0大部分是相同的,尤其是核心特征。

2. UML简述

统一建模语言UML(Unified Modeling Language)是一种通用的可视化建模语言,用于对软件系统进行描述、可视化处理、构造和建立系统的工作文档。它记录了与被设计系统有关的决策和分析,可用于对系统的分析、设计、浏览、配置、维护以及控制。UML包括语义概念、表示法和指导规范,提供了静态、动态、系统环境和组织结构等类型的模型。UML能够捕捉系统静态结构和动态行为的信息。静态结构定义了系统中重要对象的属性和操作,以及这些对象之间的关系。动态行为定义了对象随时间变化的历史和对象为完成目标而进行的相互通信。UML能从不同的角度对系统进行建模,因此可以全方位的帮助用户了解和分析系统。

UML体系由3个部分组成:UML基本构造块、UML规则和UML公共机制。只有当我们掌握了这些内容,才能够读懂UML模型,并且能根据应用系统要求构建相应的系统模型。

(1)UML基本构造块。

UML有3种基本构造块,分别是事物、关系和图。事物包括结构事物、行为事物、分组事物、注释事物4种。关系包括依赖关系、关联关系、泛化关系、实现关系4种。图包括类图、对象图、用例图、顺序图、协作图、状态图、活动图、组件图、部署图9种。关于事物、关系和图这3种构造块及其各自的组成部分,本书稍后将会详细地描述。

(2)UML规则。

一个结构良好的模型在语义上应该是前后一致的,并且与所有的相关模型协调一致。因此,我们不能简单地把UML构造块随机摆放在一起堆砌成一个模型。UML通过定义一套规则来告诉我们如何使用UML构造块搭建出一个结构良好的模型。UML有用于描述如下事物的语义规则:“命名”、“范围”、“可见性”、“完整性”、“执行”等。

(3)UML公共机制。

公共机制是指达到特定目标的公共方法,在UML中有多种贯穿整个语言的公共机制,主要包括:规格说明、修饰、通用划分和扩展机制。UML规格说明提供了对构造块的语法和语义上的描述,如:对类的注释。修饰是对UML元素特性进行描述的符号,也就是说可以通过这些修饰进一步表达元素信息,如图1.1.1中的类图中,类中的属性与方法之前加上各种表示其可访问性的修饰,其中“+”表示该属性或方法为公有类型。通用划分是对UML元素按其功能与作用进行划分,目前UML包括两组公共分类——类与对象,类表示概念的抽象,而对象表示具体的事物;接口与实现,接口是用来定义契约,实现则是对契约的具体实现。扩展机制是对UML元素的扩展,包括约束、构造类型和标记值。约束可以扩展UML元素的语义,允许增加新的规则或修改现的规则;构造类型扩展了UML的词汇,它允许创建新的构造块;标记值则是扩展UML构造块的特性,允许创建新的特殊信息来扩展事件的规格说明。

35208-00-012-1.png

图1.1.1

在应用中,我们不必了解或掌握UML中的每项特征,就像我们不需要知道或使用大型项目中的每项功能一样。通常被广泛使用的只有核心概念这一小部分,其他的特征可以逐步学习,在需要的时候再使用。UML合并了许多面向对象方法中被普遍接受的概念,对每一种概念,UML都给出了清晰的定义、表示法和相关术语。这样,一个开发者用UML绘制模型,而另外一个开发者可以无歧义地解释这个模型。

UML本质上不是一门编程语言。但是,人们可使用代码生成器将UML模型转换为多种程序语言的程序代码,或使用反向生成工具将代码还原成UML模型。UML也不是一种用于定理证明的高度形式化的语言。UML本质上只是一种通用的建模语言。

3. UML的应用领域

UML的目标是以面向对象的方式来描述任何类型的系统,其中最常用的是建立软件系统模型。UML的设计初衷是支持面向对象系统建模,以及基于构件的开发。但是,在UML的设计中也考虑了其他需求,今天,通过使用UML内置的扩展和用户定制能力,UML同样也可以用来描述非软件领域的系统,如机械系统、企业机构或业务过程,以及处理复杂数据的信息系统、具有实时要求的工业系统或工业过程等。总之,UML是一个通用的标准建模语言,可以对任何具有静态结构和动态行为的系统进行建模。

UML适用于系统开发过程中从需求规格描述到系统完成测试后的不同阶段。例如,在需求分析阶段,可以用用例来描述客户的需求;在设计阶段,可以用UML动态模型来描述对象与对象之间的关系;在测试阶段,UML模型还可以作为测试的依据。

1.1.3 建模工具Enterprise Architect

Enterprise Architect(注:以下简称为EA)是由澳大利亚Sparx Systems公司设计开发的一套软件辅助开发平台。EA是基于UML 2.4标准设计开发的,具有从业务需求到软件设计,直至部署的软件开发全过程的设计与管理能力。该平台还可以根据所创建的UML模型生成Java、C#、C++等10余种源程序代码。目前EA在全球拥有30多万注册用户,是当前主流的软件建模与管理工具。

Sparx Systems公司根据用户不同需求发布了企业版、专业版和桌面版3种EA版本。企业版是针对大型开发团队的,它提供了模型审核、版本控制、以角色为基础的安全设置、思维导图、选择DBMS库等功能。专业版是适用于工作组级的开发平台,它为专家和开发人员提供了功能强大的建模与可视化工具,支模型正逆向工程、数据库工程、思维导图和需求变化跟踪等功能。桌面版是为单个的分析与开发人员定制的业务过程建模与测试管理的工具,主要提供了业务建模、思维导图与测试管理等功能。本书将以EA 9.0企业版为例来介绍使用该工具进行系统建模的方法。

1. 启动EA

启动EA 9.0后,进入到主界面,首先弹出如图1.1.2所示的对话框,在该对话框中可以创建、打开项目工程。

35208-00-013-1.png

图1.1.2

进入到EA工作界面后,该界面是由标题栏、菜单栏、工具栏、工作区和状态栏组成,如图1.1.3所示。工作区的右侧是树形视图和属性区,每选中树形视图的某个对象,文档区就会显示其对应的文档名称与内容;左侧是编辑区,在该区中可以打开模型中的任意一张图,并可利用工具栏对图进行修改。

35208-00-014-1.png

图1.1.3

2. 创建模型

使用EA创建软件模型工程有两种方法:一种是在启动EA时使用启动对话框来创建项目工程;另一种方法则是采用选择主菜单“文件→新建项目...”项的方法来创建。在创建项目工程时,首先要求输入新建的项目工程文件,EA的项目工程文件是以“.eap”为后缀名的,接着系统要求选择创建模型的类型。目前有“Basic UML 2 Technology(基本的UML模型)”、“Core Extensions(核心扩展)”、“Entity Relationship Diagram(实体关系图)”等5种类型,如图1.1.4所示。如果所创建的项目工程只是用于软件建模,则可以选择“Basic UML 2 Technology”,并在该技术类型中选择建模时需要使用到的具体的模型,如:用例图、域模型、类、组件图和部署图。

35208-00-014-2.png

图1.1.4

3. 发布模型

EA可以把建立好的模型以RTF文档或HTML网页格式文档的形式发布,这样可以让其他即使没有装EA软件的人员,也可以通过Word或网页浏览器(如Internet Explorer)浏览模型。下面以发布RTF格式文档为例来讲解发布的步骤。

(1)从项目浏览器窗口的工具栏中选择“文档→RTF报告”项,如图1.1.5所示,选该菜单之后将弹出如图1.1.6所示的对话框。

35208-00-015-1.png

图1.1.5

(2)在弹出的对话框中输入发布后文档的文件名以及文档生成模板,如图1.1.6所示。

(3)设置完毕,单击“运行”按钮,即可进行模型发布。

35208-00-015-2.png

图1.1.6

4. 设置全局属性

从菜单栏选择“工具→选项”项,将弹出如图1.1.7所示的对话框。在该对话框里可以设置一些全局属性,如字体、颜色、正向工程源代码模板设置等。

35208-00-016-1.png

图1.1.7

小结

本节我们主要学习了以下知识。

1. 建模

(1)模型的概念。

模型是对现实的简化。它可以是一个对象的微缩表示,或是一种用于生产某事物的模式,也可以是一种设计或一个类型,还可以是一个待模仿或仿真的样例。

(2)建模的目的和原则。

建模是为了能够更好地理解我们正在开发的系统。

建模的原则包括:①要仔细地选择模型;②每一种模型可以在不同的精度级别上表示所要开发的系统;③模型要与现实相联系;④对一个重要的系统用一组几乎独立的模型去处理。

2. UML概述

统一建模语言是一种通用的可视化建模语言,用于对软件进行描述、可视化处理、构造和建立软件系统的工作文档。UML的组成部分包括:UML基本构造块、UML规则和UML公共机制。

3. UML建模工具EA的使用方法