【设计模式】UML、RUP、元素、关系、视图
1、UML
UML全称是Unified Modeling Language,直译是“统一建模语言”
统一:就像秦始皇统一语音和度量衡,为了让人人都能看懂。对于软件项目就是,无论是项目经理、QA、CM、程序员(又分C、C++、java、python等各种程序员)都能看懂的一种语言。还可以理解为,可以让人和机器都能读懂的一种语言。
2、RUP
RUP全称是Rational Unified Process,译为“统一过程”。
统一过程是一种采用面向对象思想、使用UML设计语言、并且结合项目管理、质量管理等等的软件方法。因此RUP包含了UML。
RUP包含了四个阶段和九个核心工作流程。
四个阶段:启动(初始)阶段、精化(细化)阶段、构建阶段、产品化阶段;
九个核心:业务建模、需求、分析设计、实施、测试、部署、配置和变更管理、项目管理、软件开发环境
3、UML核心元素
3.1 主角
主角,也叫参与者,注意并不是所有的“参与”了业务流程的都是参与者,只有处于系统边界之外的才是,为了防止混淆,最好称为主角,系统边界之内的人,可以视为“配角”。
3.2 业务主角
业务主角是一种特殊的主角,确定了业务范围(业务模型),就可以称为业务主角。
3.3 业务工人
系统边界之内的人,可以理解为配角,称为业务工人,他不主动向系统发起动作,是为主角服务。
3.4 用户
用户是主角之一,并不是所有的主角都是用户,但是一个用户可以代理多个主角。他是直接使用系统的主角,并不是所有的主角都会直接使用系统。
3.5 角色
角色是一个抽象的概念,它是从主角的职责中抽象出来相同的一部分,并命名为角色。一个角色代表系统中的一类职责。
角色、主角、用户的关系:
一个用户可以代理多个主角,因此一个用户可以拥有多个职责,也就是说可以被抽象成多个角色。
3.6 用例
用例:Use Case
用例必须有主角发起,做了一个有意义的、完整的事,一般用一个动宾短语描述。
比如:“人喝水”是一个完成的用例,“人喝”“喝水”都不是一个完成的用例。
用例的粒度:不同阶段,选择不同的粒度,随着项目的进展,粒度不断细化;
用例和功能的区别:描述功能时不需要主角参与,因此可以这个功能可能会和主角的愿景有差异,就是这个功能可能不是客户想要的。
3.7 业务用例
业务用例专用于业务建模,业务建模的一个关键点是,描述时可以没有计算机参与,比如不使用计算机,用笔算、打算盘也能输出结果。对应的是业务主角和业务边界,与系统建模(详细设计)的边界有区别。
3.8 系统用例
系统用例即我们平时所说的用例,可以直接称为用例。用例是连接系统模型和软件实现之间的桥梁。
3.9 边界
什么是边界?其实就是需求的集合,在需求没有整理出来之前,假定有这么一个边界。
3.10 业务实体
业务实体也是一种类的别称,具有类的所有性质,包括属性和方法。
3.11 包
包是一种容器,可以容纳其他元素,主要用途是为了分类元素
3.12 分析类
分析类用于从需求分析到系统实现的“第一步”;
分析类有三种:边界类、控制类、实体类;
边界类:用于系统内外的交互(例如接口,可以认为就是接口类);
控制类:用于分析用例的操作、行为、限制动词之类的;从架构角度来说,控制类位于业务逻辑层;
实体类:描述实体对象,从架构角度来说,实体类位于数据持久层;
分析类高于设计实现(不考虑设计方法)、高于语言实现(不考虑使用哪种编程语言)、高于实现方式(不考虑实现方式)
3.13 设计类
设计类是系统实施(代码实现)中一个或多个对象的抽象,直接使用于编程语言相同的语言来描述。
3.14 组件
组件是系统中一部分物理实施,表示软件的一组功能,有一套标准接口,可以被替代。
3.15 节点
一个服务器、工作站或客户机都可以称为一个节点。
4、关系
关联:用一条直线表示,静态关系,强关联关系;
依赖:用一条带箭头的虚线表示,临时性关系,弱关系,在一定场景下才成立,最终代码提现是类的构造或方法的传入参数;
扩展:用一条带箭头的虚线+<< extends>>表示,在基本用例上扩展,可选非必须;
包含:用一条带箭头的虚线+<< include>>表示,是基本用例必须的,没有它,基本用例将不完整;
实现:用一条带空心箭头的虚线表示,基本用例描述一个业务目标,该目标有多种实现的可能;
精化:用一条带箭头的虚线+<< refine>>表示,基本用例细化、精化而来的用例;
泛化:用一条带空心箭头的实线表示,继承关系;
聚合:用一条带空心菱形箭头的直线表示,表示整体和部分的关系,并且不是强依赖的,即整体不存在了,部分依然存在;
组合:用一条带实心菱形箭头的直线表示,表示整体和部分的关系,并且是强依赖的,即整体不存在了,部分也将不存在;
5、UML核心视图
元素是UML的基本词汇,视图是UML的基本语法,UML通过视图将基本元素组织在一起,形成有意义的句子。
核心视图包括:用例图、类图、包图、活动图、状态图、时序图、协作图