一、UML概述
1、什么是UML
统一建模语言(Unified Modeling Language)。用于说明、可视化、构建和编写一个正在开发的、面向对象的、软件密集系统的开发方法。
UML展现了一系列最佳工程实践,这些最佳实践在对大规模,复杂系统进行建模方面,特别是在软件架构层次已经被验证有效。
项目开发的说明书(设计图)。
2、UML是做什么的
帮助建立软件开发过程和各种模型
主要目的是为了让开发者之间进行有效的交流。
开发者与设计者之间的交流
开发者与开发者之间的交流
开发者与管理者之间的交流
适合大型项目和大型团队的开发
3、UML的应用领域
UML的目标是以面向对象的方式来描述任何类型的系统,常用于建立软件的模型。
4、我对UML的看法
不建议用UML生成代码。
没有完美的UML图,够用就行,图是死的,人是活的。
UML主要功能是为了更好的让开发团队与用户之间进行沟通交流。
先结对学习UML目的以应用、看懂为主(有利于后期工作),以画图为辅。
但需要长期学习,为后期成为系统分析师、架构师、产品经理、项目经理打下基础。
二、Rational Rose四种视图与UML的8中图形关系
Rose启动后自动创建四种视图:
用例视图: Use Case View
帮助理解和使用系统,这种图展示了系统的参与者和用例是怎么相互作用的,包括了系统中的所有角色。
用例图:Use Case Digram
时序图:Sequence Digram
协作图:Collaboration Digram
活动图:Activity Digram
这种视图的主要使用都是用户、分析人员、项目管理人员。
逻辑视图: Logical View
逻辑视图关注的是系统如何实现用例中提出的功能,它提供系统的详细图形,描述了组件间如何关联。
类图:Call Digram
状态图:Statechart Dirgam
这种视图的主要使用者是开发人员,开发人员包括:程序员、需求分析师、测试工程师、项目经理。
构件视图: Component View
这种视图关注的是代码模板间的关系,通过组件视图可以知道哪些代码是组件,哪些是代码库,哪些是运行组件,会默认有一个Component图表。
这种视图的主要使用者是负责控制代码、编译、部署应用程序的人员。
部署视图: Deployment View
这种视图关注的是系统的实际部署,进程和设备间的实际连接。
这种视图的使用者是用户和软件的发布人员。
三、用例图:详细表示所有的用例需求,不考虑细节
1、用例图的作用
主要用它来描述需求,画图时要从用户的角度出发,主要用于与用户之间的交流。
2、用例图的要点
正确反应用户的需求
每个用例的内部实现
细节不是本阶段要考虑的问题
3、用例图包括
参与者
用例
用例之间的关系
4、如何确定参与者
谁使用系统
谁负责启动、关闭系统
谁查询数据
谁提供数据
谁安装、升级系统
5、什么是用例
是系统的使用过程,一个用例就是一个功能需求。
四、类图:主要表示类与类之间的关系,不用详细考虑类的属性和方法
1、类图的主要作用
主要用来描述类的内部结构和类与类之间的关系。
类图中不显示暂时性的消息,是面向对象剑魔时的主要组成部分。
2、类图主要包括
名称:类名
属性:类的成员变量
访问权限
变量名
类型
操作:类的成员函数
访问权限
函数名
参数名
参数类型
返回值类型
职责:说明此类具体负责的任务,解决什么问题
3、类之间的关系
继承关系:空心箭头实线来表示继承关系,子类指向父类
一个类Test继承Base类的属性和行为,并可以增加自己的属性和行为。
实现关系:空心箭头虚线来表示继承关系,子类指向父类
一个类Test继承一个抽象类,父类中的函数定义为纯虚函数,子类继承后覆盖所有纯虚函数。
依赖关系:箭头和虚线来表示依赖关系,依赖者指向被依赖者
一个类A中使用到类B(类A中的函数的参数或返回值类型是类B),这种关系是一种偶然、临时的,是一种非常弱的关系。
关联关系:箭头和实线来表示关联关系,依赖者指向被依赖者
是一种强依赖关系,类A的属性(成员变量)是类B。
聚合关系:实心菱形和箭头实线来表示聚合关系,菱形指向整体,箭头指向部分。
聚合关系是一种关联关系的特例,它体现的是整体与部分。
整体与部分之间是可分离,它们可以具有各自的生命周期。
从代码层面来讲与关联是一致的。
组合关系:实心菱形和箭头实线来表示组合关系,菱形指向整体,箭头指向部分。
组合关系也是一种聚合关系的特例,这种关系比聚合更强,也称为强聚合,同样也体现出整体与部分,但此时的整体与部分是不可分隔的。
从代码层面来讲与关联是一致的。
从代码实现层面只有继承、包含、依赖。
用例图和类表示对象之间消息的发送顺序,值考虑正确情况。
五、时序图:主要表示对象之间消息的发送顺序,只考虑正确情况。
用来表示对象之间的关系,同时强调对象之间的交互。
时序图向用户表示时间随着时间的推移,清晰的可视化轨迹。
时序图用来表示项目中的某个操作中如何进行的,具体的步骤是什么。
六、状态图
用来表示对象的状态变化,用于帮助开发人员理解系统中对象的行为。
主要有状态,生命周期,条件,状态转换,事件和动作。
七、活动图
活动图的本质就是流程图,它描述了系统的活动、判断点和分支。
侧重于操作而不是对象,重点表示逻辑变化。
一个动作的流程图一般包括起点、终点、操作。
泳道:用于多种角色参与一个过程,一个活动只能属于一个泳道。
八、协作图
主要用来描述对象之间的交互关系,强调参与交互的各对象的组织。
需要按照组织对控制流程进行建模时选择画协作图。
协作图与时序图的区别:
时序图描述了交互过程中的时间顺序,但没有表达对象之间的关系。
协作图描述了对象间的关系但时间顺序必须从时序图中获得。
合格的协作图和时序图主义相同,可互换,而不丢失信息。