06-一般软件的领域对象分析
一般软件的领域对象分析
领域对象分析是建领域模型的第一步:从现实问题里把对象一个一个找出来。一般软件(GUI、服务器、工具类)找对象的方法有固定套路——从业务名词、用户操作目标、数据流里挖。这条线和「游戏/建模的领域对象分析」是两条不同的线:一般软件的对象来自业务流程,游戏的对象来自世界规则。
一、对象不是「想出来的」,是「分析出来的」
新手做软件,常常直接从界面或类开始:
1 | ❌ 先画界面 → 再补数据 → 对象随机出现 |
领域对象分析的正确顺序是从业务出发:
1 | 业务问题 |
对象不是发明的,是在业务里发现的——它本来就存在于问题描述里,只是需要分析动作把它挖出来。
二、三个分析来源
1. 业务名词(最常用)
业务描述里的名词就是对象候选:
1 | 「用户可以创建项目,把图片按文件夹整理,搜索时按元数据过滤, |
1 | 用户 / 项目 / 图片 / 文件夹 / 搜索 / 元数据 / 原文件 |
但名词要筛:不是所有名词都是对象。
1 | 对象:有属性、有状态、有关系、会变化的实体 |
判断标准:
一个名词,如果它有自己的属性、状态、或与其他对象的关系,它就是领域对象;如果只是修饰语或动作的一部分,就不是。
2. 用户操作目标(补充来源)
从用户用软件「要完成什么」倒推:
1 | 用户目标:管理一批图片 |
操作目标里的动作对象往往就是领域对象。
3. 数据流(验证来源)
画出「数据从哪里来到哪里去」,每个被传递/被转换的东西都是对象:
1 | 文件系统 → 读入 → ImageFile → 处理 → 编辑文档 → 保存 → 文件系统 |
这条流上的节点:ImageFile、EditorDocument——都是领域对象。数据流能验证名词分析的结果是否完整。
三、完整例子:图片管理器
用三个来源交叉验证:
1 | 业务名词:项目/文件夹/图片/搜索/元数据 |
分析出领域对象:
1 | Project 项目 |
每个对象再补属性、关系、状态:
1 | ImageFile |
这就完成了「一般软件」的领域对象分析。
四、另一类一般软件:调试器
调试器是工具类软件,对象分析同样从业务来:
1 | 业务问题:调试一个正在运行的程序 |
发现没有:调试器的对象分析套路和图片管理器完全一样——从业务名词 + 操作目标出发,判断哪个名词有属性/状态/关系。
五、一般软件 vs 游戏/建模:两条线的分界
| 维度 | 一般软件 | 游戏 / 建模 |
|---|---|---|
| 对象从哪来 | 业务流程、用户操作目标 | 世界规则、实体、交互 |
| 对象是什么 | 业务实体(图片、订单、进程) | 世界实体(玩家、敌人、道具) |
| 分析依据 | 「用户要完成什么任务」 | 「这个世界里有什么东西、什么规则」 |
| 核心问题 | 软件帮用户做什么 | 世界如何运转、玩家如何行动 |
一般软件的对象来自用户与业务的交互;游戏/建模的对象来自世界的结构。所以领域对象分析是两条独立的线(本线和下一篇)。
六、和其他线的关系
1 | 领域对象分析(本线)→ 领域模型 |
收束
1 | 对象不是发明的,是在业务里发现的 |
先分析业务,再发现对象。 一般软件的对象分析,起点永远是「用户要通过这个软件完成什么」。
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
