用例图:include vs extend vs 泛化
包含(include):基本用例必然调用包含用例。箭头从基本用例指向包含用例。
扩展(extend):基本用例条件性调用扩展用例。箭头从扩展指向基本。
泛化:子用例继承父用例的行为和关系。参与者之间只能是泛化关系。
📌 登录(include)验证密码 | 搜索(extend)高级筛选 | VIP客户(泛化)普通客户
类图:版型 Stereotype 三重划分
类的版型是UML扩展机制,用<>标注:
边界类:系统与外部交互的界面(UI、API)
控制类:业务逻辑协调(Controller、Service)
实体类:持久化数据对象(Entity、Model)
📌 MVC模式天然对应:View=边界, Controller=控制, Model=实体
顺序图 vs 协作图(交互图)
同为交互图(Interaction Diagram),属于动态建模:
顺序图:强调消息的时间顺序。纵轴=时间,横轴=对象
协作图:强调对象的组织结构。节点=对象,边=消息
同步消息→实线实心三角箭头(⟶);返回消息→虚线箭头(⇢)
📌 顺序图像时间线回放,协作图像网络拓扑
活动图:并发与泳道
活动图描述工作流和并发行为(分叉/汇合):
泳道按职责划分活动归属,每个活动只能属于一个泳道。
并发(Concurrent):分叉(Fork)分出多个并发流,汇合(Join)等待所有流完成后继续。
📌 订单处理泳道=顾客|系统|仓库,每个操作在唯一泳道内
包图:高内聚低耦合
包是组织模型元素的容器,按逻辑关系分组(非按类型):
高内聚:包内元素紧密相关
低耦合:包间依赖少且单向
访问控制:严格管理包内容对外可见性
包间依赖具有传递性(A→B→C 则 A间接→C)
📌 Java的package、C#的namespace都是包的实现
构件图 vs 部署图
构件图:描述物理模块(.dll .jar .exe)及其相互依赖关系,可对源代码/可执行文件建模。
部署图:描述硬件节点和软件构件在物理层面的分布。
构件≠对象:构件=物理实现单元,对象=逻辑实例。
📌 构件图=代码编译产物关系;部署图=服务器+进程分布
Rational Rose 视窗体系
Rose有四大视图:
Use Case View:用例图、活动图
Logical View:类图、顺序图、状态图
Component View:构件图
Deployment View:部署图
类图既可画在Logical View,也可画在Use Case View中。
📌 Rose没有"Login View"这个视图
用例与需求 & ER图
用例只描述功能性需求,不覆盖性能/安全/可维护性等非功能需求。
ER图(实体-联系图):传统数据库概念设计的工具,从ER图映射到关系模式再到物理表。
用例建模要站在用户视角,排除后台实现细节(如"邮寄商品")。
📌 用例=FRS(功能需求);非功能需求=性能、安全、可靠性等