系统分析与设计 - 画图题注意事项

用例图

  1. 用例名称使用动词开头
  2. 系统边界系统名称
  3. 一定要有include或者extend,搞不清全都include虚线箭头
  4. 所有用例和Actor关联,关联线实线没有箭头
  5. 支持性参与者最右边,GPS, 传感器, 外部设计, 短信, 邮件, 银行卡
  6. 画有用的用例,Login不要
  7. 判断是否要写:这个功能是否有一个单独的界面
  8. 不能太多层
  9. 外部设备<<>>
    1. <<system>> - 系统
    2. <<service>> - 服务
    3. <<device>> - 设备

活动图

  1. 起点只能一个,终点可以多个
  2. 有箭头的线,有循环一定有汇聚节点
  3. 判定/有条件一定写guard
  4. 注意分支循环的菱形【这里错过】
  5. 活动图的基本动作对应用例的子用例

领域建模

概念和属性

  1. 通过名词找概念类和属性

    不要和UI, database的名词,业务流程没有关系的名词不要,任何计算出的结果,不参与业务运算,模糊术语

    每个类写一两个代表属性就好

  2. 区分概念类和属性:属性为现实世界的数字文本,否则不是属性而是概念类;当需要记录信息时引入属性

  3. 一定有计算属性【没有则扣分】

描述类

  1. 描述类,命名xxxDescription【没有则扣分】:
    1. 需要商品/服务的描述,独立于实例
    2. 删除所有实例,导致信息丢失
    3. 减少冗余重复

关联

  1. 角色
  2. 多重性,可以出现多重关联,黑色三角【没有则扣分】
  3. 没有箭头!!

书写

  1. 类元首字母大写

  2. 关联名称首字母大写(e.g. Uses, Has)

    1. 关联不是动作
    2. 数据之间的约束

不要出现

  1. database
  2. 方法
  3. 小票
  4. selection

状态图

  1. 看清题目要什么东西的状态图
    1. 系统和用例:过程
    2. 对象:生命周期
  2. 寻找主要状态,名词/名词+动词
  3. 确定转换边:触发事件[监护条件]/动作
    1. 事件被动动词:e.g. onKeyPressed
    2. 监护条件:”如果…”, “在…条件下”
    3. 动作别写了,写错扣分。是系统的动作
  4. 一定有起点
  5. 横着画!!!!!!

系统顺序图与操作契约

  1. 系统
    1. System
    2. 前面冒号
    3. 直角矩形框
    4. Actor右边
    5. 下划线
  2. 参与者
    1. Actor
    2. 前面冒号
    3. 最左边
    4. 下划线
  3. 外部实体
    1. 最右边
  4. 消息不应该超过5个
    1. 命名为动作
    2. 实心三角实线!!!!
    3. 返回虚线箭头
    4. 控制焦点
  5. 后置条件【pml: 至少写一个,表示会,不要都写】【不要忘记】:
    1. 使用注释写在后面
    2. 类型
      1. 创建/删除xxx对象
      2. 修改xxx属性
      3. 生成xxx关联(一般创建对象伴随着生成关联
  6. 看是否需要图框
  7. pml: 有可能有循环
  8. 场景名:xxxx Scenario

逻辑建模(包图)

  1. 三个包M, V, C
    1. M都来自领域建模
    2. 理论你是变量都在C,动作命名规则:xxxAction或xxxController, 一个用例一个控制器
    3. 界面都是V
  2. 外部资源写在foundation
  3. 依赖关系,都是向下指,UI, controller, domain, foundation,使用带箭头的虚线

部署建模

  1. 操作系统表示为OS=XXX
  2. 数据库与其他东西的协议为JDBC

img

  1. 节点之间没有箭头实线
  2. 节点是软件还是物理设备需要标记
  3. 写清连接介质

对象动态建模(顺序图)

  1. 创建实例的create使用虚线实心箭头
  2. 遵循BCE
  3. 冒号
  4. 下划线表示的静态对象
  5. 最左边的方法是copy SSD的,不能多不能少
  6. 控制器来源于包图,控制器左侧为UI,方法和顺序图和交互图保持一致

对象静态建模(类图)

和顺序图对应

  • 各种关系的连线
    • 依赖:虚线箭头
    • 泛化:实线空心箭头(指向父类)
    • 实线:虚线空心箭头(指向接口)
  • 关联先表示属性:实线箭头 + 多重性(放在目标一段)+ 角色名(目标一端)+ 不需要关联名称
    • 对数据对象使用属性文本表示法,其他对象使用关联线
  • 控制器一定无状态
  • 不要冒号

步骤

  1. 抄顺序图的类,抄领域模型的属性和关联,补充类的方法(和顺序图一致
  2. 领域建模的has, contains, own改为导航箭头(没有关联名)
  3. 多重性保持
  4. 不写get,set
  5. Domain写所有entity
  6. Boundary的方法都不考虑

Summary

  • 顺序图和系统顺序图中,一个页面内修改的内容,直接传参,不需要一个个set方法