第3章 集成建模平台Enterprise Architect 3.1概述 3.1.1统一建模语言UML 统一建模语言(unified modeling language,UML)是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供可视化、规范制定、对象构建和文档编写支持,是面向对象的分析与设计方法的一个产物。 UML提供了一种标准的方式来描述系统的设计图,既包括概念方面,也包括具体事务。根据UML2.5的定义,UML图可根据树形结构分为14种,如图31所示。 图31UML图可根据树形结构分为14种 其中,结构图、行为图和交互图介绍如下。 结构图(structure diagram): 描述了系统中的静态结构。 行为图(behavior diagram): 描述了系统中对象的动态行为,包括它们的方法、协作、活动和状态历史。 交互图(interaction diagram): 属于行为图,描述对象的生命线及对象间的消息传递,根据不同的侧重点或结构,具体可细分为4种类型。 UML的14种图的简要描述如表31所示。 表31UML的14种图的简要描述 UML图名称UML图描述 结构图(structure diagram) 类图(class diagram)描述系统的类和接口,包括类、接口间的关系及类、接口的内部结构 组件图(component diagram)通过组件及组件间的接口和关系描述了软件系统的结构和组件间的依赖关系 对象图(object diagram)描述一组对象和对象间的关系 组合结构图(composite structure diagram)描述某一部分的内部结构,包括该部分与系统其他部分的交互点 部署图(deployment diagram)描述硬件设备和软件构件的物理架构 包图(package diagram)描述了包及包元素的组织关系。包图将系统划分为多个部分,方便进行描述 外廓图(profile diagram)描述为特定领域或系统的UML模型的通用扩展机制 行为图(behavior diagram) 活动图(activity diagram)描述系统或软件执行的一系列操作或业务工作流程中发生的事件 用例图(use case diagram)利用参与者、用例及之间的关系描述了系统的需求 状态图(状态机图)(state machine diagram)描述一个实体在某个事件下可能的状态与状态的变化情况 顺序图(sequence diagram)一种交互图,描述一个用例的具体行为,侧重于消息在生命线间的传递 交互概览图(interaction overview diagram)一种交互图,描述交互逻辑,其中的消息和生命线都被抽象出来。类似于一种高级的活动图 通信图(communication diagram)一种交互图,描述生命线的消息传递,侧重于对传递消息的描述 时序图(timing diagram)一种交互图,描述消息在不同对象间传递的时间信息 软件工程项目化教程(微课视频版) 第 3 章 集成建模平台Enterprise Architect 3.1.2Enterprise Architect Enterprise Architect(简称EA)是由Sparx Systems公司开发的,基于UML2的可视化模型与设计工具,提供了对软件系统的设计和构建、业务流程建模和基于领域建模的支持。 本章将利用EA(版本15.2)介绍如何使用该工具绘制包括用例图、类图、顺序图等在内的常见的UML图。读者可前往官方网站(https://sparxsystems.cn/products/ea/)下载EA的试用版本。 3.2基 本 使 用 3.2.1操作面板介绍 启动EA后,可以看到主界面,如图32所示。EA的界面主要分为5个部分: 菜单栏、浏览器窗口、主视图、特性窗口和笔记窗口。 图32EA主界面 3.2.2创建一个EA项目 单击左上方EA图标后再选择“新建项目”选项,如图33所示。在选定保存项目的位置后单击“保存”按钮,即可创建一个EA项目。创建完成后,EA会自动进入新的项目。 图33创建EA项目 3.3绘制“论文检索系统”的用例图 3.3.1基本概念 用例图在基于主题下利用参与者、用例及之间的关系描述了系统的需求。用例图中包括了主题、参与者、用例,以及之间的关系。 1. 基本元素 (1) 主题(subject): 代表正在考虑中的、即将要实现的系统; 主题规定了系统范围。 (2) 参与者(actor): 代表用户及和主题相关的任何其他系统。 (3) 用例(use case): 代表其所在主题执行的一组行为,这个行为将会产生一个该主题的参与者或其他涉众的有价值的可观察结果。 2. 关系 关系(association)可分为参与者和用例间的关系、参与者和参与者的关系及用例和用例间的关系。 (1) 参与者和用例间的关系代表了参与者使用或涉及了用例的活动。 (2) 用例和用例间的关系可分为包含关系(include)和拓展关系(extend)。 包含关系代表了被包含用例(addition)的行为会插入到包含用例(including case)的行为中,这段行为会在包含用例行为结束前完成。 包含关系创建的目的是在多个用例的行为间出现公共部分时使用,这个公共部分会被提取到一个单独的用例中,以便使用包含关系重用该部分(因此被包含用例要依赖于包含用例才会有意义)。 拓展关系代表了拓展用例(extension)的行为在什么时候才会插入到被拓展用例(extended case)的行为中,这段行为作为被拓展用例行为的增量而出现。 与包含用例相反,被拓展用例的定义独立于拓展用例,其本身是具有意义的,而拓展用例单独存在时不一定会有意义。 (3) 参与者之间或用例可以存在泛化关系(generalization),表示存在继承; 通常,考虑到泛化关系的强耦合,用例间基本不使用泛化关系。 3.3.2创建用例图 (1) 在EA项目中,右击Browser(浏览器)窗口的Model选项,单击Add View选项,创建一个视图,如图34所示。 图34单击Add View选项,创建一个视图 (2) 创建的视图成为一个包,在弹出的New Package对话框中对包进行设置,如图35所示。 ① 给包进行命名,这里命名为“用例图”。 ② 单击右侧按钮,选择Use Case选项。 ③ 选择Create Diagram单选按钮。 ④ 单击OK按钮确认。 图35对包进行设置 (3) 选择图的类型: 单击“UML行为”→Use Case→OK按钮确认,如图36所示。 图36选择图的类型 (4) 双击浏览器窗口的“用例图”选项后,主视图会打开用例图,如图37所示; 单击左上方的右箭头,可以打开用例图的Toolbox(工具箱),里面包含了用例图的元素。 图37双击浏览器窗口的“用例图”选项后,主视图会打开用例图 3.3.3绘制用例图元素 1. 主题 (1) 选择工具箱的“边界”工具,如图38所示,在主视图空白处单击,创建一个主题。 图38创建一个主题 (2) 给元素命名为“论文检索系统”,单击空白处即可创建完成,如图39所示。 图39完成主题的创建 拖动主题的边框,可以改变边界的大小; 将其他元素拖动到边界中,可以加入该主题,移动主题时其中的元素会一起移动。 2. 行动者 (1) 选择工具箱的“行动者”工具,如图310所示,在主视图空白处单击,创建一个行动者。 (2) 给元素命名为“用户”,单击空白处即可创建完成,如图311所示。 图310创建一个行动者 图311完成行动者的创建 如果要重命名该元素,可以双击该元素,或者右击该元素后再选择Properties选项,在弹出的窗口中可以重命名; 后续讲解中也有类似操作。 选中元素后,按下Delete键可以在图中删除该元素,但是在浏览器窗口中并没有删除该元素; 因此还需要在浏览器窗口中右击该元素,并选择“删除”选项,才能彻底删除元素。 3. 用例 (1) 选择工具箱的“用例”工具,如图312所示,在主视图空白处单击,创建一个用例。 图312创建一个用例 图313完成用例的创建 (2) 给元素命名为“搜索文献”,单击空白处即可创建完成,如图313所示。 4. 添加行动者和用例的关系 (1) 选择工具箱的“联合”工具,将鼠标悬停在行动者上,如图314所示。 (2) 按下鼠标左键后,将鼠标从行动者拖动到用例,松开鼠标后即可创建关系,如图315所示。 图314选择工具箱的“联合”工具,将鼠标悬停在行动者上 图315创建用户到参与者之间的关系 (3) 如果需要绘制关系的方向,则右击关系线条,单击Advanced→Change Direction→“Source→Destination”选项,创建从行动者指向用例的箭头,如图316所示。 图316创建从参与者指向用例的箭头 (4) 如果要添加多重值,在关系线条上需要添加多重值的那一侧右击,选择Multiplicity选项后再选择需要创建的值,为关系添加多重值,如图317所示。 图317为关系添加多重值 (5) 在两端都执行上述操作即可创建完成,如图318所示。 图318添加行动者和用例的关系 行动者多重性大于一个时,表示该用例会涉及多个行动者,例如,签订合同需要多个个体同时参与。 用例多重性大于一个时,表示行动者可以并发或并行地同时启动多个这样的用例,例如,超市中可以同时进行多个收款。 通常不会出现行动者和用例的多重性都大于一个的情况。 5. 添加包含或拓展关系 (1) 选择工具箱的“包含”或“扩展”工具,将鼠标悬停在起始用例上,如图319所示。 图319选择工具箱的“包含”或“扩展”工具