1. 概述
用来描述如何使用UML来进行代码分析。
具体的visio的模板详见: \Study\trunk\文档模板和IE收藏夹\visio2019\徐文山_UML.vstx。
2. 静态图
2.1. 静态结构表示
在模板中,指出了三类静态结构的表示图,分别是普通类、接口、枚举。
对于其他结构,比如数组、结构体、抽象类等,可以类似的采用如下方式。
2.2. 静态结构之间的关系
2.2.1. 概述
类与类之间由弱到强关系是:没关系 > 依赖 > 关联 > 聚合 > 组合。
2.2.2. 依赖关系
什么是依赖关系。其用虚线箭头表示,由客户C指向提供者P。表示,当提供者发生改变时,必然对客户产生影响;且提供者对客户是可见的。
依赖可以视为耦合。所谓的耦合,即系统中各模块的关系。
何时使用依赖?在实际使用中,主要分为两种情况。其实泛化、组合、关联也属于依赖,但其有专用的符号,没有必要用依赖。P的成员或其本身对C可见。即P的成员或本身在C中被使用。比如作为C中函数的参数。
在C中调用P的方法。及所谓的静态方法依赖。依赖标签。可以分为以下几类。
2.2.3. 关联关系
关联关系采用有箭头的实线表示。
2.2.4. 依赖关系与关联关系
依赖是客户使用提供者完成某项功能,是动态的。关联是客户和提供者一种静态的关系,比如父子,订单和产品说明等。正如在<<软件建模与设计>>中提到的,关联是一种静态的,结构化的关系。
关联标签直接写,依赖标签使用<<>>标识。
如上图。A类对象包含B类对象。只要类A对象存在,其中的B类对象必然存在,所以是一种静态稳定的关系,采用关联的方式表示。
如上图,A类调用B类的接口创建对象。两个类只有在创建的过程中有关系,创建开始前和创建结束后,两个类之间没有创建关系,采用依赖的方式表达。
关联标签直接写,依赖标签使用<<>>标识。
2.2.5. 关联和聚合
首先,聚合也是一种关联关系。但其是一种整体和部分的关联关系。比如父子关系以一种关联关系,但不是聚合关系。员工团队即是一种关联关系,也是一种聚合关系。
注意这里的整体和部分关系,一定是类对象之间的整体和部分关系,而非具体实现的整体和部分关系。比如汽车类和轮胎类,是整体和部分的关系。如果在汽车类中有一个拖拉机的对象,不能说汽车类和拖拉机类是整体和部分的关系。
2.2.6. 聚合和组合关系
都是整体和部分的关系。聚合部分离开整体仍然具有意义,比如学生是班级的一部分;而组合的部分离开整体,就没有意义,比如手指是手的一部分。
在模板图,组合关系就是复合关系。关于组合关系的特点。在UML与模式应用中16.13中,有一定的论述。
2.2.7. 继承关系和组合关系
仔细区分类的三种容易混淆的关系。
2.3. 类图的visio绘制
2.4. 静态图的绘制次序
在绘制类图时,按照从下到上的顺序进行。箭头指向下面的类或对象。下面为基结构或被依赖的结构,上面为顶层结构。这个也符合代码的阅读次序。
3. 活动图
3.1. 数据流图
什么是数据流图?系统是一个网络系统,是多个功能的流程合成的一个网络系统。如果直接去观察这个网络系统,会感觉到非常乱。所谓的数据流图,是针对某个功能的流程图,是从这个网络系统提取出来的。如果需要针对这个功能开发的话,数据流图是非常必要的。
关于数据流图的思考。经过UML相关资料的查阅,只能用活动图来表示。在活动图中,有两点需要标注。
3.1.1. 引脚和对象的区别
3.2. Visio绘制
3.3. 具体实例
4. 序列图
4.1. 几个图例表示
下面为循环图中几个逻辑块的表达,参考visio2016的表示。
关于循环和条件图的用法如下图。
图 ‑:顺序图的循环表示方法,visio2016中的循环片段
图 ‑:顺序图的if else表示方法,visio2016中的备用片段
图 ‑:顺序图的if表示法,visio2016中可选片段
图 ‑:顺序图中子顺序图的表示方法
图 ‑:包括顺序图的框图
4.2. 发给自身消息的绘制
在<>中的15.4,提到了这一点。
4.3. 序列图Visio绘制
5. 包图
5.1. 包图
包图是什么?根据相关书籍的内容,包是具有相同属性和具有内聚性的软件元素的组合。具体表现为工程、目录、文件、命名空间等。
在文档中利用UML中的包图描述多个软件项目之间的关系,用于指定各个目录之间的关系为以后的软件开发提供信息。
在包图中使用数据流,因为在表达包之间的数据流向时,这种方法更加直观有效,值的注意。
6. UML并行分析
资料汇总:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。