任务1.3 统一建模语言
【任务描述】
随着面向对象软件开发方法的提出和推广,面向对象方法已成为开发软件系统的主流方法,软件设计方面也出现了许多建模语言和建模的方法。那么,面向对象软件开发时应该选择哪种建模语言呢?答案是,统一建模语言UML(Unified Modeling Language),它是世界范围内软件开发的标准建模语言,是用来对软件密集系统进行描述、构造、可视化和文档编制的一种语言,为不同领域的用户提供了统一的交流标准。
【知识储备】
一、UML的定义
UML为面向对象软件设计提供统一的、标准的、可视化的建模语言。UML适用于描述以用例为驱动,以体系结构为中心的软件设计的全过程。
UML的定义包括UML语义和UML表示法两个部分。
(1)UML语义:UML对语义的描述使开发者能在语义上取得一致认识,消除了因人而异的表达方法所造成的影响。
(2)UML表示法:UML表示法定义UML符号的表示法,为开发者或开发工具使用这些图形符号和文本语法为系统建模提供了标准。
二、UML模型图的构成
UML模型图由事务、关系及图构成。事物是UML模型中最基本的构成元素,是对其代表成分的抽象;关系把事物紧密联系在一起;图是事物和关系的可视化表示。
三、UML事物
UML包含4种事物:构件事物、行为事物、分组事物、注释事物。
(1)构件事物:UML模型的静态部分,描述概念或物理元素,它包括以下几种:
①类:具有相同属性、相同操作、相同关系、相同语义的对象的描述。
②接口:描述元素的外部可见行为,即服务集合的定义说明。
③协作:描述了一组事物间的相互作用的集合。
④用例:代表一个系统或系统子集的行为,是一组动作序列的集合。
⑤构件:系统中物理存在,可替换的部件。
⑥节点:运行时存在的物理元素。
另外,参与者、信号应用、文档库、页表等都是上述事物的变体。
(2)行为事物:UML模型图的动态部分,描述跨越空间和时间的行为。
①交互:实现某功能的一组构件事物之间消息的集合,涉及消息、动作序列、链接。
②状态机:描述事物或交互在生命周期内响应事件所经历的状态序列。
(3)分组事物:UML模型图的组织部分,描述事物的组织结构。
包:把元素聚集成组的机制。
(4)注释事物:UML模型的解释部分,用来对模型中的元素进行说明,解释。
注解:对元素进行约束或解释的简单符号。
四、UML关系
UML关系包括依赖、关联、泛化以及实现。
(1)依赖是两个事物之间的语义关系,其中一个事物(独立事物)发生变化时,会影响到另一个事物(依赖事物)的语义。
(2)关联是一种结构关系,它指明一个事物的对象与另一个事物的对象间的联系。
(3)泛化是一种特殊或一般的关系,也可以看作是常说的继承关系。
(4)实现是类元之间的语义关系,其中的一个类元指定了由另一个类元保证执行的契约。
五、UML图
UML图包括用例图、类图、对象图、构件图、配置图、顺序图、协作图、状态图及活动图。
1.用例图
用例图描述系统实现的功能。从用户角度描述系统功能,是用户所能观察到的系统功能的模型图,用例是系统中的一个功能单元,如图1.6所示。
图1.6 用例图
2.类图
类图描述系统的静态结构,如图1.7所示。不仅定义系统中的类,表示类之间的联系如关联、依赖、聚合等,也包括类的内部结构(类的属性和操作)定义系统中的类,表示类之间的联系,也包括类的内部结构。类图是以类为中心来组织的,类图中的其他元素或属于某个类或与类相关联。
图1.7 类图
3.对象图
对象图是描述系统在某时刻的静态结构,是类图的实例,使用与类图非常相似的标识,如图1.8所示。它们的不同点在于,对象图显示类的多个对象实例,而不是实际的类。
4.组件图
组件图为系统的组件建模型,如图1.9所示。组件即构造应用的软件单元,还包括各组件之间的依赖关系,以便通过这些依赖关系来估计对系统构件的修改给系统可能带来的影响。
图1.8 对象图
图1.9 组件图
5.部署图
部署视图描述位于节点实例的运行构件实例的安排,如图1.10所示。节点是一组运行资源,如计算机、设备或存储器。这个视图允许评估分配结果和资源分配。
图1.10 部署图
6.顺序图
顺序图显示对象之间的动态合作关系,它强调对象之间消息发送的顺序,同时显示对象之间的交互,如图1.11所示。顺序图的一个用途是用来表示用例中的行为顺序。当执行一个用例行为时,顺序图中的每条消息对应了一个类操作或引起状态转换的触发事件。
图1.11 顺序图
7.协作图
协作图描述对象间的协作关系,协作图与顺序图相似,用来显示对象间的动态合作关系,如图1.12所示。除显示信息交换外,协作图还可显示对象及其之间的关系。协作图的一个用途是表示一个类操作的实现。
8.状态图
状态图是一个类对象所可能经历的所有历程的模型图,如图1.13所示。状态图由对象的各个状态和连接这些状态的转换组成。
图1.12 协作图
图1.13 状态图
9.活动图
活动图是状态图的一个变体,用来描述执行算法的工作流程中涉及的活动,如图1.14所示。活动图描述了一组顺序的或并发的活动。
图1.14 活动图
【案例】
使用Visio 2016绘制图形
Microsoft Visio(以下简称Visio)是微软公司发布的矢量图绘图工具软件,它是Microsoft Office套件之中的一个重要应用程序,它支持制作流程图、架构图、网络图、日程表、模型图和甘特图等。
Visio是一款便于IT人士和商务人员就复杂信息、系统和流程进行可视化处理、分析和交流的软件。是一款简单、易用的入门级示意图设计工具,可以与微软的开发工具集成,完成如数据库、程序结构等设计工作。Visio也是我们在进行软件项目开发中必不可少的辅助绘图工具。
Visio创建图形的基本流程大致会经过以下几个步骤:启动软件、创建图形、放大或缩小绘图、移动形状、调整形状大小、添加文本、连接形状、排列或对齐形状、保存绘图、打印绘图。Visio界面如图1.15所示。
图1.15 Visio界面
Visio的工作环境包括工作窗口、菜单栏、工具栏、定位工具以及帮助等内容。
(1)启动工作窗口,新建Visio文件的工作窗口。
(2)新建Visio基本框图文件的工作窗口,如图1.16所示。
图1.16 Visio绘制框图工作界面
(3)页面属性设定。在绘图文件打开状态下,可以对绘图页面的属性进行设定。在“文件”菜单中,单击“页面设置”命令,将弹出“页面设置”对话框,可在其中进行“打印设置”“页面尺寸”“绘图缩放比例”“页属性”和“布局和排列”等选项操作。
(4)增加新绘图页。当建立一个新的绘图文件时,Visio已经自动生成了一个新的绘图页,将其命名为“页-1”并显示在“页面标签”中。每个绘图文件都可以包含多个绘图页,在每个绘图页中都可以绘制各自的图形。
要增加新的绘图页,可在绘图窗口下方的“页面标签”上单击鼠标右键,在快捷菜单中单击“插入页”命令,此时,将弹出“页面设置”对话框,可在其中填入新绘图页的各项属性,如类型、名称等,然后单击“确定”按钮即可。当然,也可以使用系统默认值——直接单击“确定”按钮。
(5)删除绘图页。在“编辑”菜单中,单击“删除页”命令,或者使用右键快捷菜单,再选择“删除”命令,删除选定的绘图页。
(6)重命名绘图页。在要重命名的绘图页的“页面标签”上单击鼠标右键,在弹出的右键菜单中单击“重命名页”命令,可对绘图页名称进行修改。
(7)背景页操作。在绘图文件中加入背景页,可以使图形显得更加美观和专业。生成背景页有多种方法,最简单的方法是利用Visio提供的“背景”模具。
(8)保存文件。在“文件”菜单中单击“保存”命令,或者直接单击工具栏上的“保存文件”按钮,都可以保存文件。如果是第一次保存文件,会弹出“另存为”对话框。保存文件的时候,可以选择不同的“保存类型”,如图1.17所示。
图1.17 保存文件
选择完毕后,单击“保存”按钮,根据所选保存类型,将弹出不同的“输出选项”对话框,可对选项进行相应设置。最后,单击“确定”按钮,即完成保存操作。
【任务实施】
使用Visio绘制用例图
步骤1:启动工作窗口,新建UML用例图,如图1.18所示。
图1.18 新建UML用例图
步骤2:打开的UML用例图文件的工作窗口,如图1.19。
图1.19 UML用例图工作窗口
步骤3:绘制成绩管理用例图,如图1.20所示。
图1.20 绘制成绩管理用例图
步骤4:绘完后,单击“保存”按钮,根据所选保存类型,将弹出不同的“输出选项”对话框,可对选项进行相应设置。最后,单击“确定”按钮即完成保存操作。
【任务拓展】
绘制图书管理系统的组件图及部署图
1.组件图
图书管理系统中的组件涉及图书、图书类别、读者、借阅、处罚、预约、数据库管理等,画出组件图,如图1.21所示。
图书管理员管理图书时,通过类别ID来对图书类别进行维护;通过图书编号来对图书信息进行维护;通过读者编号来对读者信息进行维护。图书管理员管理图书的组件图如图1.22所示。
图1.21 图书管理系统组件图
图1.22 图书管理员管理图书的组件图
2.部署图
B/S架构的图书管理系统中软件和硬件组件之间的物理关系以及软件组件在处理节点上的分布情况,如图1.23所示。
图1.23 图书管理系统部署图
【知识链接】
软件开发环境、软件开发工具和软件开发平台
软件开发环境是指,在基本硬件和软件的基础上,为支持系统软件和应用软件的开发和维护而使用的一组软件。它由软件工具和集成式软件开发环境构成,前者用以支持软件开发的相关过程、活动和任务,后者为工具集成和软件的开发、维护及管理提供支持。
软件开发环境主要由软件工具组成。人机界面是软件开发环境与用户之间的一个统一的交互式对话系统,它是软件开发环境的重要质量标志。存储各种软件工具加工所产生的软件产品或半成品(如源代码、测试数据和各种文档资料等)的开发数据库是软件开发环境的核心。工具间的联系和相互交互都是通过存储在数据库中的共享数据来实现的。
软件开发环境可分成3类:
(1)按软件开发模型及开发方法分类,有支持瀑布模型、演化模型、螺旋模型、喷泉模型以及结构化方法、信息模型方法、面向对象方法等不同模型及方法的软件开发环境。
(2)按功能及结构特点分类,有单体型、协同型、分散型和并发型等多种类型的软件开发环境。
(3)按应用范围分类,有通用型和专用型软件开发环境。其中专用型软件开发环境与应用领域有关。
软件开发工具包括支持特定过程模型和开发方法的工具,如支持瀑布模型及数据流方法的分析工具、设计工具、编码工具、测试工具、维护工具,支持面向对象方法的OOA(Object-Oriented Analysis)工具、OOD(Object-Oriented Design)工具和OOP(Object-Oriented Programming)工具等;独立于模型和方法的工具,如界面辅助生成工具和文档出版工具;亦可包括管理类工具和针对特定领域的应用类工具。
软件开发平台是软件开发过程所使用的平台,可以是多语言平台,包含在开发工具之上。如.NET开发平台、Java开发平台等。
【课后阅读】
Rational Rose工具介绍
Rational Rose是由Rational软件公司开发的一种面向对象的统一建模语言的可视化建模工具,用于可视化建模和公司级水平软件应用的组件构造。软件设计师可使用Rational Rose,选择程序表中的有用的案例元素(椭圆)、目标(矩形)和消息/关系(箭头)等设计图素,来创造(或建模)应用的框架。当创建程序表时,Rational Rose会记录下这个程序表,然后以设计师选择的C++、Visual Basic、Java、Oracle、COBOL等语言或者数据定义语言来产生代码。Rational Rose的一个受人欢迎的特征是,它提供了“反复式发展”(也称进化式发展)和“来回旅程工程”的能力。
Rational Rose允许设计师利用“反复式发展”,因为在各个进程中新的应用能够被创建,通过把一个反复的输出变成下一个反复的输入。然后,当开发者开始理解组件之间是如何相互作用和如何在设计中调整时,Rational Rose能够通过回溯和更新模型的其余部分来保证代码的一致性,从而展现出被称为“来回旅程工程”的能力。Rational Rose是可扩展的,可以使用下载附加项和第三方应用软件。