系统ooa文档_软件工程系列-面向对象分析OOA

本系列文章为笔记,内容根据北京大学《软件工程》MOOC

面向对象分析概述


OOA模型

fb33bf964fe4d20d82a2679e3eea81c8.png


OOA过程

b47400b651b50a4e17ece031c56a1628.png


识别类


研究问题域和用户需求

  1. 研究用户需求,明确系统责任

阅读:用户需求有关材料
交流:与用户交流,修正用户需求
调查:现场调查
记录、整理:产生合格的需求文档

  1. 研究问题域
  2. 确定系统边界

划出系统和用户之间的明确界限,并确定接口
确定系统内外,外部主要是人、设备和外系统
策略和启发

  1. 考虑问题域

1143d58e396d9169d7c87fd5510a04dc.png
  1. 考虑系统边界

考虑系统边界,可以启发分析员发现一些与系统边界外的参与者进行交互,并且处理系统对外接口的对象

70fe5728e12aa0fb81e323843481f44d.png
  1. 考虑系统责任

审查和筛选

  1. 舍弃无用的对象
    1. 通过属性判断
    2. 通过操作判断
  2. 对象的精简

将一对一的对象合并

c4dc4e12f4244d5b2e28d6015fcaf897.png
  1. 与现实条件有关的对象

可以放到OOD(面向对象设计)部分去考虑,暂时不用理会

b89cc8b93ca8607cd656dcf53fa94670.png
  1. 识别主动对象
    1. (分析阶段不能完全确定)考虑问题域和系统责任:哪些对象有主动行为
    2. (分析阶段不能完全确定)从需求考虑系统的执行情况是否需要并发执行
    3. 考虑系统边界以外的参与者与系统中哪些对象直接进行交互

对象分类,建立类图中的类

  1. 对象分类
  2. 异常情况的检查和调整
    1. 类属性或操作不适合全部对象实例

进一步细化对象:“汽车”分为“客车”,“货车”

  1. 属性及操作相同的类

”吸尘器“和”电子琴“在”商场“中都可以作为”商品“

  1. 属性及操作相似的类

有需要时,提升部分类:提取出“汽车”

  1. 同一事物的重复描述

“学生证”和“学生”


识别属性和操作


识别属性

  1. 策略与启发

55c4d93323e99cd04151f8f44081b3d5.png
  1. 审查与筛选

24b6c8e535e359f0fbe6fdcc1c004861.png
  1. 与实现条件有关的问题都推迟到OOD考虑

930e8d3d4c69735f5a87f4720a519fa4.png
  1. 属性的命名:原则与类的命名相同

eee83330eafbc46d6d82f2d4bb20fd2b.png
  1. 属性的详细说明

27db5419bebaf6f830c80280404dd4ca.png


识别操作

  1. 区分对象行为的类型

为了明确OOA应该定义对象的哪些操作,首先区分对象行为的不同类型

  1. 系统行为
  2. 对象自身的行为——算法简单的操作
  3. 对象自身的行为——算法复杂的操作计算或监控
  1. 发现操作的策略与启发
    1. 考虑系统责任
    2. 考虑问题域
    3. 分析对象状态
    4. 追踪操作的执行路线
  2. 审查与调整
    1. 审查对象的每个操作是否真正有用,是不是高内聚的
    2. 调整
      1. 拆分
      2. 合并
  3. 认识对象的主动行为
    1. 考虑问题域
    2. 与系统边界以外的活动者直接进行交互的对象操作
    3. 根据系统责任观察系统功能的构成层次,考虑完成最外层功能的对象操作
    4. 操作执行路线逆向追踪

OOA标注的主动对象和主动操作不一定是最终的定局,应为在OOD中可能增加一些新的主动对象

  1. 操作的命名与定位
    1. 命名:名词
    2. 定位:与对象一致
  2. 操作的详细说明

要在类规约中,要对操作进行详细说明,包括操作的解释、操作的特征标记、操作要发送的消息和约束条件等

  1. 操作的文字解释
  2. 操作名、输入输出、参数类型
  3. 消息发送
  4. 约束条件
  5. 操作流程

识别对象之间的关系


识别继承(泛化)

  1. 识别继承(泛化)关系的策略
    1. 学习当前领域的分类学知识
    2. 按常识考虑事物的分类
    3. 使用继承的定义
      1. 一种思路是把类看作对象集合,分析这些集合之间的包含关系
      2. 看一个类是不是具有另一个类的全部特征
    4. 考察属性与操作的适用范围
    5. 考虑领域范围内的复用
  2. 审查与调整
    1. 问题域是否需要这样的分类
    2. 系统责任是否需要这样分类
    3. 是否符合分类学尝试(is a kind of)
    4. 是否构成了继承关系
  3. 继承关系的简化

识别关联

  1. 识别关联的策略
    1. 认识对象之间的静态联系
    2. 认识关联的属性与操作
    3. 分析并表示关联的多重性
    4. 进一步分析关联的性质
  2. 命名与定位命名
  3. 调整对象层和特征层

识别聚合

  1. 识别聚合的策略

aa99e14be4fd97a32bb1289ab03d5dcc.png
  1. 审查与筛选

4b2223238961582f1fb4e8078d59287e.png
  1. 调整对象层和属性层

识别依赖

4fd4f2d7738fcc656f0bad9c0a62e735.png
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值