系统分析与设计 - 画图题注意事项
用例图
- 用例名称使用动词开头
- 有系统边界,系统名称
- 一定要有
include
或者extend
,搞不清全都include
,虚线箭头 - 所有用例和Actor关联,关联线实线没有箭头
- 支持性参与者最右边,GPS, 传感器, 外部设计, 短信, 邮件, 银行卡
- 画有用的用例,Login不要
- 判断是否要写:这个功能是否有一个单独的界面
- 不能太多层
- 外部设备<<>>
-
<<system>>
- 系统 -
<<service>>
- 服务 -
<<device>>
- 设备
-
活动图
- 起点只能一个,终点可以多个
- 有箭头的线,有循环一定有汇聚节点
- 判定/有条件一定写guard
- 注意分支循环的菱形【这里错过】
- 活动图的基本动作对应用例的子用例
领域建模
概念和属性
通过名词找概念类和属性
不要和UI, database的名词,业务流程没有关系的名词不要,任何计算出的结果,不参与业务运算,模糊术语
每个类写一两个代表属性就好
区分概念类和属性:属性为现实世界的数字文本,否则不是属性而是概念类;当需要记录信息时引入属性
一定有计算属性【没有则扣分】
描述类
- 描述类,命名xxxDescription【没有则扣分】:
- 需要商品/服务的描述,独立于实例
- 删除所有实例,导致信息丢失
- 减少冗余重复
关联
- 角色
- 多重性,可以出现多重关联,黑色三角【没有则扣分】
- 没有箭头!!
书写
类元首字母大写
关联名称首字母大写(e.g. Uses, Has)
- 关联不是动作
- 数据之间的约束
不要出现
- database
- 方法
- 小票
- selection
状态图
- 看清题目要什么东西的状态图
- 系统和用例:过程
- 对象:生命周期
- 寻找主要状态,名词/名词+动词
- 确定转换边:
触发事件[监护条件]/动作
- 事件被动动词:e.g. onKeyPressed
- 监护条件:”如果…”, “在…条件下”
- 动作别写了,写错扣分。是系统的动作
- 一定有起点
- 横着画!!!!!!
系统顺序图与操作契约
- 系统:
- System
- 前面冒号
- 直角矩形框
- Actor右边
- 下划线
- 参与者:
- Actor
- 前面冒号
- 最左边
- 下划线
- 外部实体:
- 最右边
- 消息不应该超过5个
- 命名为动作
- 实心三角实线!!!!
- 返回虚线箭头
- 控制焦点
- 后置条件【pml: 至少写一个,表示会,不要都写】【不要忘记】:
- 使用注释写在后面
- 类型
- 创建/删除xxx对象
- 修改xxx属性
- 生成xxx关联(一般创建对象伴随着生成关联)
- 看是否需要图框
- pml: 有可能有循环
- 场景名:xxxx Scenario
逻辑建模(包图)
- 三个包M, V, C
- M都来自领域建模
- 理论你是变量都在C,动作命名规则:xxxAction或xxxController, 一个用例一个控制器
- 界面都是V
- 外部资源写在foundation
- 依赖关系,都是向下指,UI, controller, domain, foundation,使用带箭头的虚线
部署建模
- 操作系统表示为
OS=XXX
- 数据库与其他东西的协议为
JDBC
- 节点之间没有箭头,实线
- 节点是软件还是物理设备需要标记
- 写清连接介质
对象动态建模(顺序图)
- 创建实例的create使用虚线实心箭头
- 遵循BCE
- 冒号
- 下划线表示的静态对象
- 最左边的方法是copy SSD的,不能多不能少
- 控制器来源于包图,控制器左侧为UI,方法和顺序图和交互图保持一致
对象静态建模(类图)
和顺序图对应
- 各种关系的连线
- 依赖:虚线箭头
- 泛化:实线空心箭头(指向父类)
- 实线:虚线空心箭头(指向接口)
- 关联先表示属性:实线箭头 + 多重性(放在目标一段)+ 角色名(目标一端)+ 不需要关联名称
- 对数据对象使用属性文本表示法,其他对象使用关联线
- 控制器一定无状态
- 不要冒号
步骤
- 抄顺序图的类,抄领域模型的属性和关联,补充类的方法(和顺序图一致)
- 领域建模的has, contains, own改为导航箭头(没有关联名)
- 多重性保持
- 不写get,set
- Domain写所有entity
- Boundary的方法都不考虑
Summary
- 顺序图和系统顺序图中,一个页面内修改的内容,直接传参,不需要一个个set方法