《大象--Thinking in UML》
一、为什么需要UML
(1)面向过程与面向对象
面向过程方法把世界看成一个相互联系的系统,无法满足复杂多变变化软件需求。
面向对象方法把世界看成一个个独立的对象,在外力的作用下相互联系。
问题:对象是怎么抽象出来的?什么样的对象组合是好的?该如何理解对象组合表达的含义?
(2)UML带来了什么
现实世界----业务模型----概念模型----设计模型
业务模型:人——参与者 事——用例(业务场景、用例场景) 物——业务对象模型
概念模型:边界类、实体类、控制类
RUP:统一过程
二、建模基础
建模:指通过对客观事物建立一种抽象的方法用以表征事物并获得对事物本身的理解,同时把这种理解概念化,将这些逻辑概念组织起来,构成一种对所观察的对象的内部结构的工作原理的便于理解的表达。
用例驱动:逻辑视图 进程视图 部署视图 实施视图
对象分析方法:一切都是对象 对象都是独立的 对象都具有原子性 对象都是可抽象的 对象都有层次性
三、UML核心元素
版型:UML元素基础定义的扩展,一个元模型有很多版型。
参与者: 位于边界之外(可以非人)
业务主角:与业务系统有交互的人和事物,具有完整的目标,位于边界之外
业务工人:与业务系统交互,完成业务主角的目标,位于边界之内
涉众:参与者是涉众的代表
用户:参与者的实例
用例:捕获现实世界需求
用例的特征:独立 执行结果可观测 必须由参与者发起 必然是动宾短语 一个用例是一个单元
用例的粒度是抽象层次决定的
业务用例:用于业务建模,描述客户现有业务
业务用例实现:业务用例的实现方式
概念用例:获取业务模型的关键概念和核心业务
系统用例:定义软件系统范围。
系统用例实现:系统用例的实现方式
边界:边界决定视界和抽象层次
业务实体:是类的版型,代表业务角色使用业务用例时处理的事物,具有属性和方法,是抽象视角的体现
包:为元素分类的容器
分包原则:高内聚 低耦合 依赖关系不传递且单向
包的版型:领域包 子系统 组织结构 层
分析类:获取系统的职责
边界类:用于内外交互
控制类:用于控制行为
实体类:对实体对象的建模
分析类的三高:高于设计实现 高于语言实现 高于实现方式
设计类:实现代码的映射,具有属性、方法、可见性
关系: 对象之间的联系
关联关系:互相引用,“知道”对方的存在
依赖关系
扩展关系:用例场景的分支,可选的行为
包含关系
实现关系:说明基本用例的实现方式
精化关系:基本用例的细化
泛化关系:对象之间的继承关系
聚合关系:表达整体由部分构成,不是强依赖的。
组合关系:表达整体由部分构成,是强依赖的
组件:实现特定功能,具备符合标准的接口
完备性 独立性 逻辑性 透明性
组件的应用:分布式应用 应用集成 第三方系统 SOA服务
节点:软件、硬件的部署单元 应用环境:分布式 多设备