首页 > 其他分享 >VISIO 实现UML

VISIO 实现UML

时间:2023-07-28 15:06:53浏览次数:45  
标签:实现 结构图 用例 VISIO UML 静态 出仓


 http://www.qdgw.edu.cn/zhuantiweb/jpkc/2009/rjkf/xmwd/Visio_UmlModel.htm

 

使用Visio进行UML建模

内容提纲:

1、VISIO中的UML建模环境
2、用例图(USE CASE Diagram)的使用
2.1 用例图的组成
2.2 创建用例图
2.2.1 建立角色(Actor)
2.2.2 建立用例
2.2.3 建立角色和用例的通信
2.2.4 建立用例间的关系
2.2.5 建立用例图
3、活动图的建立
3.1 活动图的组成
3.2 创建活动图
4、静态结构图(Static Structure Diagram)的使用
4.1 类静态结构图的组成
4.2 创建类静态结构图
4.2.1 类的建立
4.2.2 类间关系的建立
5、序列图(Sequence Diagram)的建立
6、VISIO与MS .NET
6.1 VISIO生成.NET代码
6.2从.NET生成VISIO中的UML图
参考资料


1、VISIO中的UML建模环境

   Microsoft Visio“UML 模型图”解决方案为创建复杂软件系统的面向对象的模型提供全面的支持。包括下列工具、形状和功能:

n “UML 模型资源管理器”,它提供模型的树视图和在视图间进行浏览的手段。
   n  预定义的智能形状,表示 UML 标注中的元素并支持 UML 图表类型的创建。在程序控制下,这些形状的运行方式同 UML 语义学相符。
   n  易于访问“UML 属性”对话框,可通过这些对话框将名称、特性、操作和其他属性添加到 UML 元素。
   n  标识和诊断错误(例如丢失数据或不正确地使用 UML 表示法)的动态语义错误检查。
   n  对用 Microsoft Visual C++ 6.0 或 Microsoft Visual Basic 6.0 创建的项目进行反向工程,以生成 UML 静态结构模型的能力。
   n  使用 C++、Visual C# 或 Microsoft Visual Basic 根据 UML 模型中的类定义生成代码框架。
   n  标识特定于语言的错误的代码检查实用程序,这些错误可使代码无法用您为生成代码指定的目标语言编译出来。
   n

  模型资源管理器的使用

  当您打开“UML 模型图”解决方案时,您就打开了一个建模环境,并且从开始时模型便已经就位。

(图 1)

  如果没有显示出“模型资源管理器”,可以单击“UML”菜单—>“视图”—>“模型资源管理器”

  “UML 模型资源管理器”中的树状视图表示您的总体系统模型。您创建的图表都是该模型的视图。

  1. 表示您当前正在建模的系统中。若要添加模型,请在“UML”菜单上单击“模型”。
  2. 在这种情况下,将您系统的一个模型或抽象内容表示为静态结构模型。要重命名树状视图中的任何图标,请对图标的文本单击一次,然后再单击一次该文本。键入新的名称。
  3. 表示静态结构模型中最上层的包。包是一种容器。此软件包含有所有静态结构模型元素。
  4. 默认情况下,新模型所包括的包会含有常见的数据类型。您可以创建含有您自己的数据类型的包。
  5. 单击加号 (+) 显示包的内容。单击减号隐藏包的内容。

    得到图(1)的步骤如下:

      A.  将最顶层包的默认名称改为“PetShop”:单击右键,选择“重命名”

      B.  将包“静态模型“改名为“Design Model”:单击右键,选择“重命名”

      C.其他包命名依次类推

2、用例图(USE CASE Diagram)的使用

2.1 用例图的组成

  用例图表示处于同一个系统中参与者和用例之间的关系。是一组动作序列(包括它的变衍生物)的描述,系统执行该动作序列来为参与者产生一个可观测的结果值。在VISIO中包括三部分:

  1. 角色(ACTOR)

    表示活动的发起者,VISIO中用表示。

  1. 用例(USE Case)

    实际的场景,如登陆系统,物品进仓,VISIO中用表示

表示。

  1. 系统边界

2.2 创建用例图

  假设(1),我们有个仓库系统,有三个活动(用例):物品进仓,物品出仓和显示物品的库存.当出仓的时候要检查物品的库存情况,如果库存小于5就不能出仓。活动的执行者是仓库管理员(这些都是来自需求文档),出入仓时管理员需要开据出入仓单.本示例我们主要考虑出仓情况。

2.2.1 建立角色(Actor)

  在“图 1”中选择“Actors package”,单击右键,选择“主角”,输入“名称”,如图2、图3所示:




图 2




图 3


2.2.2 建立用例

  在图1中选择“Usercases”,单击右键,选择“用例”,输入“名称”,如图4,图5所示:




图 4




2

.2.3 建立角色和用例的通信

  在VISIO中表示为:

2.2.4 建立用例间的关系

A.使用关系

  1. 在用例图中,将“使用”关系形状拖到绘图页上;
  2. 将“使用”端点(不带箭头)粘附到使用其他用例方式的“用例”形状的连接点*上;
  3. 将“使用”端点(带有箭头)粘附到正使用的用例的连接点上;
  4. 双击“使用”形状,打开“UML 归纳属性”对话框。添加属性值,然后单击“确定”。

B.扩展关系

  1. 在用例图中,将“扩展”形状拖到绘图页上;
  2. 将不带箭头的“扩展”端点+粘附到提供扩展的用例的连接点+上;
  3. 将带有箭头的“扩展”端点粘附到基础用例的连接点上;
  4. 双击“扩展”形状,打开“UML 归纳属性”对话框。添加属性值,然后单击“确定”。

2.2.5 建立用例图

  在图 1中选择“Usecase Model”,单击右键,选择“用例图”,这里保留默认的名称。然后就可以将我们已经建立的角色和用例从左边的树拖动到右边的空白区了,同时还需要建立系统边界,从假设(1)我们得知出仓要检查物品的库存,因此用例“货物出仓”要使用用例“显示物品的库存”(没有“显示库存”用例“货物出仓”用例就不完整)。而对于用例“物品进仓”,仓库管理员也可以在进仓的同时来检查物品的库存情况,因此两者之间是扩展关系(“货物出仓”用例本身功能完整,但管理员也可以在某些时候查看库存),另外仓库管理员还可以直接查看库存信息,完成后的用例图如下:




图 6


注意:如要了解创建用例图的更多知识,请参看 Visio 联机帮助。

3、活动图的建立

3.1 活动图的组成

  1. 泳道:用来表示活动图中的责任,是个矩形;
  2. 状态:用来表示某个活动或动作,分为“动作状态”,“状态”,“初始状态”,“最终状态”;
  3. 控制流:表示从一个状态到另一个状态的变化。

3.2 创建活动图

  根据假设(1)我们创建物品出仓的活动图,步骤如下:

  1. 在图1中选择包“Usecases”,单击右键选择“活动图”;
  2. 将泳道拖到右边,双击泳道重命名为“物品出仓”。将“初始状态”从左边拖动到右边空白区



  1. 将三个“动作状态”拖到右边,分别命名为“申请出仓”,“选择仓库”和“判断库存”,然后在三者之间增加控制流;
  2. 将“判定”流程拖到右边,增加两个控制流,双击控制流分别输入临界表达式:成功和失败;
  3. 将“最终状态”拖到右边.连接步骤4中的两个控制流。

    最后的结果如下:




注意:1:该图的“合并”(由顶至下第三个菱形)是UML工业标准,Visio暂时不支持该图标。2:如要了解创建活动图的更多知识,请参看 Visio 联机帮助。

4、静态结构图(Static Structure Diagram)的使用

  在VISIO中有两种静态结构图:概念静态结构图和类静态结构图。概念静态结构图是表示现实世界中的概念以及它们之间的关系。它侧重于关系和属性而不是方法,并有助于您了解开发的系统所针对的领域内的术语。

  类静态结构图是将软件系统分解为各个部分。不过在类图中,各部分指的是类,代表已经完整定义的软件实体,而并不是代表现实世界概念的对象。除属性和关联之外,类图还可指定操作、方法、界面和依赖关系。

  我们重点介绍类静态结构图。

4.1 类静态结构图的组成

  类静态结构图是由类或对象组成的,在VISIO中用

来表示,类之间的关系主要有关联,依赖和归纳三种:  关联是用



表示  依赖是用

表示  继承(归纳)是用

表示的

4.2 创建类静态结构图

  在图1中选择“staticview”,单击右键选择“静态结构图”,然后从右边选择Class图标拖动至右边的空白区中:




图 8


4.2.1 类的建立

  将类的图标从左边拖动至于右边。输入类的名称、属性和方法:




图 9




图 10




图11


  根据假设(1),仓库系统里有如下类:

  GoodsOutput(出仓单),GoodsOutputItem(出仓项目),StoreHouse(仓库类)、Product(物品类)、Manager(仓库管理员类)、StoreHouseControl(仓库控制类)、People(人员类),依次建立。

4.2.2 类间关系的建立

  通过分析我们得知一个仓库里可以包含有很多的物品,即两者是关联关系(一对多)。而Manager是从People继承而来。因此可以使用“继承”图形。

  关联关系:

  1. 将一个“二元关联”形状从“UML 静态结构”模具拖到要关联的类旁边的绘图页上;
  2. 将关联形状的端点粘附到该类形状的连接点*上;
  3. 双击该“关联”形状,打开其“UML 属性”对话框,然后输入或选择要设定的属性值;
  4. 单击“确定”。

  继承关系:

  1. 将“继承”形状从“UML 静态结构”模具拖到要关联的类或包旁边的绘图页上。
  2. 将箭头旁边的端点粘附到更普通元素的连接点*上。将没有箭头的端点粘附到更具体元素的连接点上。
  3. 双击该“归纳”形状。在“UML 归纳属性”对话框中,添加名称、构造型、鉴别器和其他属性值,然后单击“确定”。

    静态图如下:




注意:如要了解创建静态结构图的更多知识,请参看 Visio 联机帮助。

5

、序列图(Sequence Diagram)的建立

  序列图显示参与交互作用的角色或对象,以及它们生成的按时间排序的事件。通常,序列图显示特定用例实例产生的事件。

  序列图中的纵向维代表时间,按时间先后依次向下排序。横向维代表不同的角色或对象。

  下面就根据假设(1)来画一个用例“物品出仓”的序列图

    1.在图1中选择“Usecase Realization”,单击右键选择“序列图”;




    2.将“对象生命线”

拖入右边空白区,双击“对象生命线”,输入名称“aManger”,将“分类器”设为“仓库管理员”,单击确定。这样一个对象就建立好了。类静态结构图中其它的Class依样照搬:



    3.将“激活”拖到“GoodsOutput对象生命线”上,对于其余的对象处理方式类似;

    4.添加“消息(调用)”到两个“激活”之间。例如对于GoodsOutput生命线和StoreHouse生命线,当添加了“消息(调用)”以后,表示类GoodsOutput会创建类StoreHouse的一个实例,对于物品出仓用例,我们首先需要确定出仓的货物,所以在此我们调用相应的方法,我们首先从左边的工具栏拖动“消息”,并连接相应的激活,结果如下图所示。




     5.双击“消息1”,如果GoodsOutput类没有这个方法会自动弹出一个添加方法的对话框,由于我们已经添加了这个方法,所以此处我们可以直接选择相应的操作,若果存在参数,我们可以通过实参来调整参数名称,如图:




    6.根据假设(1),出仓的时候需要检查物品的库存(小于5就不能出仓),因此StoreHouse需要一个GetProductStorage方法来得到物品的库存;

    7.库存返回后,根据库存执行不同的调用,如果库存不小于5,创建新的GoodOutputItem实例;

    8.如果返回的库存小于5,使用

来添加返回“Nothing Added”。最后得到的序列图如下:



注意:如要了解创建序列图及UML其他图的更多知识,请参看 Visio 联机帮助。

6 、VISIO与MS .NET

6.1 VISIO生成.NET代码

  从UML图生成相应的代码我们称为正向工程,在Visio中可以很方便生成.Net的代码。

    1.单击“UML”选项—>“代码”—>“生成”,此时会弹出一个对话框.在里面选择要生成代码的包;




    2.选择“目标语言”和“位置”,单击确定。

6.2从.NET生成VISIO中的UML图

  由代码生成UML图我们称为反向工程,在.Net里可以很方便的生成UML图。

  1. 打开.Net项目,选择“项目”—>“UML”—>“反向工程:



  1. 输入要生成的VISIO文件命.单击保存。

参考资料

(1) Microsoft Visio 帮助文档


标签:实现,结构图,用例,VISIO,UML,静态,出仓
From: https://blog.51cto.com/u_16174476/6882821

相关文章

  • 云图说丨初识华为云OrgID:轻松实现统一帐号、统一授权
    本文分享自华为云社区《【云图说】第282期初识华为云OrgID:轻松实现统一帐号、统一授权》,作者:阅识风云。组织成员帐号OrgID是面向企业提供组织管理、企业成员帐号管理以及SaaS应用授权管理能力的云服务。OrgID将HuaweiID帐号体系延伸到企业用户,统一华为云面向生态SaaS服务的组......
  • Unity实现camera数据注入RMP推送或轻量级RTSP服务模块
    技术背景随着技术的不断进步和应用的不断深化,Unity3DVR应用的前景非常广阔,它广泛应用于教育、医疗、军事、工业设计、虚拟数字人等多个领域。教育领域:Unity3DVR技术可以用来创建虚拟现实教室,让学生能够身临其境地体验课程内容,提高学习效果和兴趣;医疗领域:Unity3DVR技术可以用来创......
  • 图注意力网络论文详解和PyTorch实现
    图神经网络(gnn)是一类功能强大的神经网络,它对图结构数据进行操作。它们通过从节点的局部邻域聚合信息来学习节点表示(嵌入)。这个概念在图表示学习文献中被称为“消息传递”。消息(嵌入)通过多个GNN层在图中的节点之间传递。每个节点聚合来自其邻居的消息以更新其表示。这个过......
  • 微信公众号模板消息源码实现,打破服务号群发推送次数限制
    公众号服务号每个月只能群发推送四次文章,我们可以使用模板消息为公众号粉丝推送信息下面是使用golang实现的模板消息发送类库封装,轻松实现模板消息发送wechat.gopackagelibimport("github.com/silenceper/wechat/v2""github.com/silenceper/wechat/v2/cache"......
  • .Net6实现定时任务
    首先创建一个类Background实现代码:usingMicrosoft.Extensions.Hosting;usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespaceSmartMedicalCare.Web{publicclassBackground:IHostedService,......
  • 《http篇》通过curl库实现http服务
    编译和引用参考链接:https://blog.csdn.net/weixin_44122235/article/details/128969128参考链接里写的非常详细,虽然我只参考了编译和引用的部分,还是建议大家看一下。下载官方(旧):https://curl.haxx.se/download.html官方(新):https://curl.se/download.htmlgithub:https://github.......
  • Three.js使用InstancedMesh实现性能优化
    1.引言有这么一种场景:需要渲染一座桥,桥有很多桥柱,桥柱除了位置与倾斜角度不完全相同外,其他均相同,由于桥柱数量很大,使用three.js绘制较为卡顿,如何优化?注意,要求后续能选中某个桥柱2.概念2.1合并几何体three.js官方教程里提到,大量对象的优化-three.jsmanual(threejs.org),......
  • 最后的组合:K8s 1.24 基于 Hekiti 实现 GlusterFS 动态存储管理实践
    前言知识点定级:入门级GlusterFS和Heketi简介GlusterFS安装部署Heketi安装部署Kubernetes命令行对接GlusterFS实战服务器配置(架构1:1复刻小规模生产环境,配置略有不同)主机名IPCPU内存系统盘数据盘用途ks-master-0192.168.9.912450100KubeS......
  • Android 人脸识别 MTCNN Kotlin实现
    前言看见网上有一个MTCNN的Java实现,闲来无事,把Java实现用Koltin重写了一下,主要是针对使用MTCNN来识别人脸。不想罗嗦看的,可以直接去我的github上下载已经写好的demo。https://github.com/ChineseLincoln/AndroidFaceNet文章目录前言人脸识别tensorflowAndroid依赖配置MTCNN......
  • SQL2008 不用for xml 实现拼接字符串
    因为forxml有些特殊符号 不能作为分割符号,所以采用这种方式。如果是SQL2012的话 有自带的函数了--测试数据IFOBJECT_ID('tempdb..#tmp_Orgdata')ISNOTNULLDROPTABLE#tmp_OrgdataGO--GID分组IDSTRCOL字符串SELECTGID,StrColINTO#tmp_Orgdat......