需求案例
以坤同平台系统为基础样例,客户为ZKH、KT为
客户需求
- ZKH想购买KT的设备,它们会将设备免费或租赁给他们自己的客户使用,设备里放的是ZKH自己的商品,商品来自ZKH的各大仓库。客户会从设备里面领料,ZKH自己会不定期给设备进行补货,并能对设备进行盘点、校准、下架等操作。
- KT提供一个平台系统
- 系统能实时展示设备的商品库存和剩余的货道容量
- 管理所有设备(分析师分析设备详细信息,如设备类型、厂家等),监控设备的在线状态
- 可实时查询设备的交易数据(
分析师
需要分析交易包含哪些) - 对设备的不同货道(分析详情)进行商品绑定、货道冻结、更换商品、合并货道等
- 设备可以进行布机撤机,撤机后还可以再部署到其他客户那
- 和ZKH自己的主数据服务对接商品(分析师分析商品具体信息)、仓库、员工、组织架构等信息
- 可配置设备的补货仓库
- 可配置ZKH自己客户的成本中心
- 实时展示设备的领料、补货、校准、盘点等操作记录
- 可发送定制化报表邮件(存在疑问:When、What、Who)
- 员工可以绑定机器
需求点
- 客户需要一个设备管理系统
需求分析流程
需求分析
5W1H8C(518)
5W
- When:
- Where:
- Who:
- What:
- Why:
用例方法
用例方法三段法:1. 正常处理 2. 异常处理 3. 替代处理
正常处理
【用例名称】:客户需要一个设备管理系统
【场景】- 用例发生的环境
-
Who:
-
When:
-
Where:
【用例描述】- 详细的用例描述,对应What和How(客户需要什么,用例的流程)
【用例价值】- 描述需求价值,对应Why
【约束和限制】- 对应8C
异常处理
例:货道商品冻结后,机器断网无法通知机器该如何处理
【用例名称】:客户需要一个设备管理系统
【场景】
【用例描述】
【用例价值】
【约束和限制】
替代处理
【用例名称】:客户需要一个设备管理系统
【场景】
【用例描述】
【用例价值】
【约束和限制】
提取功能
提取功能可通过用例中的动词,然后对它们分析过提炼滤,输出功能列表
功能编号 | 功能描述 | 涉及用例 |
---|---|---|
001 | ||
002 | ||
003 |
领域模型
领域建模是需求分析走向面向对象设计的桥梁
领域建模三字经:1. 找名词
2. 加属性
3. 连关系
,最后输出领域模型图
找名词
从用例模型中找名词
加属性
从用例模型中分析名词相关的属性,有些属性可能再用例中找不到,最后输出类属性表
名词 | 属性 | 备注 |
---|---|---|
机器 | ||
货道 | ||
商品 |
连关系
找出领域类之间的关系
领域模型图
领域类之间的模型图
设计模型
类模型设计
领域类映射
包含名称映射、属性映射、提炼方法
【名称映射】
【属性映射】
【方法提炼】
从用例模型中找动词,并精选提炼出需要的动词,根据动词得出类的方法
设计模型图(类模型图)
设计原则和设计模式
设计过程中为了更好的软件质量(可扩展性),设计类和类之间的关系时可以应用
设计原则
,设计类之间的调用关系可以应用设计模式
。
SOLID原则
首字母 | 英文缩写 | 中文名称 |
---|---|---|
S | SRP | 单一职责原则 |
O | OCP | 开闭原则 |
L | LSP | 里氏替换原则 |
I | ISP | 接口隔离原则 |
D | DIP | 依赖反转原则 |
设计原则 VS 设计模式
设计原则 | 设计模式 | |
---|---|---|
设计类别 | 静态设计 | 动态设计 |
设计包含 | 类的定义(类、属性、方法) | 类的行为(交互) |
4R架构包含关系 | 4R(Ralation、Role、Rank-类分层) | 4R(Rule) |
可扩展性 | 保证软件可扩展性 | 提高软件可扩展性 |
设计中使用先后顺序 | 先设计原则 | 后设计模式 |
先设计原则和设计模式,即现设计好Ralation、Role、Rank,再设计具体的交互规则,设计原则和设计模式都是为类做出更好的软件设计,它们是互补关系。
动态模型
为了更好的理解和分析业务,我们可以对一些核心关键的业务点使用合适的模型图表述出来
顺序图/时序图
活动图
关注某个业务或者功能的实现流程
状态图
关注单个对象或者业务的变化
实现模型
根据设计模型,选择合适的开发语言,比如用C++、Java实现客户需求
如:选择Java语言实现
- 设计Java类(Role)
- 设计类之间的关系(Relation、Rank)
- 设计类实例之间的调用规则(Rule)
总结
用面向对象方法实现复杂业务需求
- 需求模型
- 领域模型
- 设计模型
- 实现模型