This commit is contained in:
2025-12-27 11:44:50 +08:00
commit ccd43fac1f
1193 changed files with 384161 additions and 0 deletions
@@ -0,0 +1,206 @@
---
theme: default
backgroundImage: url('https://marp.app/assets/hero-background.svg')
---
# 需求与版本管理内容整理
**整理人:高宇**
---
# 目录
1. 引入
2. 敏捷需求管理
3. 敏捷工具猪齿鱼
---
# 引入
**快餐式的学习**
网上大多数的教程都在告诉你怎么做,不告诉你为什么这么做。
**快餐式的管理**
网上大多数的管理文章都在告诉怎么使用某管理模型,却不说管理的目标和意义。
**主题**
需求与版本管理。
**问题**
为什么要做需求与版本管理。
---
# 敏捷思想 - 用户故事
**定义**
> 作为一个<角色>,我希望可以<活动>,以实现<价值>。
> 作为一个食品安全管理人员,我希望将每一个视频都接入AI进行口罩配置的分析,以减少视频监管人员的工作。
**三要素**
* 角色,即用户,哪个用户关注这个价值。
* 活动,说明为哪些用户提供的功能,通过什么方式,实现这个价值。
* 价值,价值本身的定义,说明。
**用户故事编写**
* 参考[故事的颗粒度说明](https://blog.51cto.com/cheny/5688132)[用户故事与估算](https://www.bilibili.com/read/cv12959512/)[敏捷与用户故事](https://zhuanlan.zhihu.com/p/404920450)
---
# 敏捷思想 - 史诗:大的用户故事
更大的用户故事,里程碑。
> 作为一个<角色>,我希望可以<活动>,以便于<价值>。
> 作为一个食品安全管理部门领导,想希望有一个安全管理系统,可以对整合公司生产线进行食品安全管理。
---
# 问:为什么从用户的角度去描述需求?
> 作为一个<角色>,我希望可以<活动>,以便于<价值>。
1. 目标是为用户去创造价值
2. 工作的意义?
---
# 敏捷思想 - 聚焦价值
敏捷要求,按照用户价值进行严格的排序,必须从排序最高的需求做起。
常规二八定率:20%的功能可以创造出80%的商业价值,
软件行业:7%的功能就能够创造出80%的商业价值!
* 7%的功能是大家经常使用的,15%左右的功能是偶尔使用的,钱投在了正确的地方
* 33%的功能是基本不用的,钱扔在了大家基本不需要的东西上
* 45%的功能是从来没有被用到的!钱被完全浪费了!
---
# 优先级评估 - MoSCow模型
* M-must have:即必须有的
需求和特性是系统必须组成部分,是对开发很重要的产品特征,没有这些系统将无法正常工作或不能增加价值。
* S-should have:即应该有的
特性也非常重要,对开发不是很重要,但是有重要的商业价值的产品特征。如果缺少这些特性,解决方法会变得繁琐或昂贵。
* C-could have:即可能有的
特征能增加一些商业价值的产品特征。
* W-Wont have this time: 即希望有的,这次不会有
指的是这个功能虽然不错,但不是必需的需求,带有一点商业价值的产品特征。
---
# 优先级评估 - 卡诺(KANO)模型
![bg right:35% fit](https://picbed-1253586264.cos.ap-guangzhou.myqcloud.com/notes/af3kxr.png)
1. 魅力属性:用户意想不到,如不提供,满意度不会降低,如提供,满意度会有很大提升;
1. 期望属性:当提供此需求,用户满意度会提升,当不提供此需求,用户满意度会降低; 
1. 必备属性:当优化此需求,用户满意度不会提升,当不提供此需求,用户满意度会大幅降低;
1. 无差异属性:无论提供或不提供此需求,用户满意度都不会有改变,用户根本不在意;
1. 反向属性:用户没有此需求,提供后满意度会下降,一般缘于魅力属性需求的错误预期。
* 参考[利用「KANO」分析需求,排优先级](https://baijiahao.baidu.com/s?id=1681420606029205154)
---
# 问:为什么做优先级评估?
1. 找到最大的价值在哪里。
2. 集中力量在最重要的事上。
---
# 工作量评估 - 故事点
**故事点(单位人天)**
* 即故事对应工作的规模。
假设2个人,对同一个用户故事去评估,一个人觉得需要5天,一个人觉得需要7天,这两个人会针对这个故事的复杂度重新讨论,最终达成一致的评估数值。
**工作量评估方法**
* 参考[故事扑克](https://mp.weixin.qq.com/s?__biz=MzU1NjAzMjQ2Mg==&mid=2247483843&idx=1&sn=15dc4fd5bb0d95779033255676c6217a&chksm=fbca0962ccbd80743e7408327967d8323980995b73a3a6668b08a0173595f42c42197003896a&cur_album_id=1338081455171518465&scene=189#wechat_redirect)
---
# 冲刺计划会议 - 冲刺目标
设定冲刺目标以及为冲刺选择用户故事
* 讨论并设定冲刺目标:PO和开发团队为冲刺确定目标。冲刺目标应该是由产品代办列表中最高优先级的用户故事所支持的一种总体的描述。用冲刺目标来确定冲刺的用户故事。
* 评审产品代办列表中用于支持冲刺目标的用户故事,并修订它们的相关估算
* 确定团队在当前的冲刺中可以做出哪些承诺
---
# 冲刺计划会议 - 任务拆分
1. 创建与每个用户故事相关联的冲刺代办列表任务,且确保任务围绕着完工定义的每一部分:已开发,已集成,已测试,已归档;给每个任务分配数小时的时间
2. 再次检查确认团队可以在冲刺的可用时间内完成的任务,确保团队可用的工作小时数与总体的任务估算是合理匹配的,否则调整冲刺里的用户故事。避免过度承诺,参考一下指导:
1. 团队认为可完成任务的25%,包括学习新流程和开始新的项目工作
2. 团队认为可完成任务的50%
3. 团队认为可完成任务的75%
4. 团队认为可完成任务的100%
3. 开发团队成员应该选择他/她的首要完成的任务。团队成员一次只关注一个任务
---
# 需求处理流程
![bg right:30% 95%](https://picbed-1253586264.cos.ap-guangzhou.myqcloud.com/notes/GoBwtK.png)
1. **需求收集与整理**
* 以用户使用的场景描述描述用户需求,史诗/故事。
* 根据[用户故事拆分方法总结](https://blog.csdn.net/yatou1125/article/details/125588997)拆分用户故事,并评估工作量(故事点/人天)。
1. **价值分析**
* 从整体上分析每一个用户需求的总体价值,并根据价值排出每一个需求的**优先级**。
2. **计划冲刺**
* 计划冲剌周期,添加故事,统计包含故事点。
* 工作量评估
---
# 整体规划
![bg right:70% fit](https://picbed-1253586264.cos.ap-guangzhou.myqcloud.com/notes/kz4gZS.png)
---
# 猪齿鱼 - 需求管理
1. 需求收集与整理
2. 评估
1. 工作量评估
2. 价值评估
4. 冲刺计划
5. 版本管理
---
# 猪齿鱼 - 故事管理
![bg right:55% fit](https://picbed-1253586264.cos.ap-guangzhou.myqcloud.com/notes/gViZXR.png)
* 负责人,对这个用户故事负责的人,讲得清楚这个故事的人。
* 经办人,研发团队直接负责这个功能的人。
---
# 猪齿鱼 - 史诗管理
![bg right:55% fit](https://picbed-1253586264.cos.ap-guangzhou.myqcloud.com/notes/gxXmWv.png)
* 包含几个用户故事
* 故事点合计
---
# 猪齿鱼 - 冲刺管理
![bg right:55% fit](https://picbed-1253586264.cos.ap-guangzhou.myqcloud.com/notes/8Wpsot.png)
---
# 猪齿鱼 - 版本管理
![bg right:55% fit](https://picbed-1253586264.cos.ap-guangzhou.myqcloud.com/notes/9G79lt.png)
* 版本的规划:
* 包含几个用户故事
* 故事点合计
* 版本基本信息:
* 介绍
* 预计发布时间
@@ -0,0 +1,189 @@
---
theme: default
backgroundImage: url('https://picbed-1253586264.cos.ap-guangzhou.myqcloud.com/notes/hero-background.svg')
---
# 猪齿鱼实战需求与版本管理
整理人:高宇
---
# 目录
1. 需求收集
2. 优先级分析
3. 冲刺规划
4. 版本与整体规划图
---
# 需求收集
---
## 概念 - 用户故事
**定义**
> 作为一个<角色>,我希望可以<活动>,以实现<价值>。
> 作为一个食品安全管理人员,我希望将每一个视频都接入AI进行口罩配置的分析,以减少视频监管人员的工作。
**三要素**
* 角色,即用户,哪个用户关注这个价值。
* 活动,说明为哪些用户提供的功能,通过什么方式,实现这个价值。
* 价值,价值本身的定义,说明。
---
## 猪齿鱼 - 故事管理
![bg right:55% fit](https://picbed-1253586264.cos.ap-guangzhou.myqcloud.com/notes/gViZXR.png)
* 负责人,对这个用户故事负责的人,讲得清楚这个故事的人。
* 经办人,研发团队直接负责这个功能的人。
---
## 概念 - 史诗
**更大的用户故事。**
> 《哈利波特》系列有七个故事
> 《指环王》系列有三部曲
**用户故事编写**
* 参考[故事的颗粒度说明](https://blog.51cto.com/cheny/5688132)[用户故事与估算](https://www.bilibili.com/read/cv12959512/)[敏捷与用户故事](https://zhuanlan.zhihu.com/p/404920450)
---
## 猪齿鱼 - 史诗管理
![bg right:55% fit](https://picbed-1253586264.cos.ap-guangzhou.myqcloud.com/notes/gxXmWv.png)
* 包含几个用户故事
* 故事点合计
---
# 优先级分析
---
## 优先级评估 - MoSCow模型
* M-must have:即必须有的
需求和特性是系统必须组成部分,是对开发很重要的产品特征,没有这些系统将无法正常工作或不能增加价值。
* S-should have:即应该有的
特性也非常重要,对开发不是很重要,但是有重要的商业价值的产品特征。如果缺少这些特性,解决方法会变得繁琐或昂贵。
* C-could have:即可能有的
特征能增加一些商业价值的产品特征。
* W-Wont have this time: 即希望有的,这次不会有
指的是这个功能虽然不错,但不是必需的需求,带有一点商业价值的产品特征。
---
## 优先级评估 - 卡诺(KANO)模型
![bg right:35% fit](https://picbed-1253586264.cos.ap-guangzhou.myqcloud.com/notes/af3kxr.png)
1. 魅力属性:用户意想不到,如不提供,满意度不会降低,如提供,满意度会有很大提升;
1. 期望属性:当提供此需求,用户满意度会提升,当不提供此需求,用户满意度会降低; 
1. 必备属性:当优化此需求,用户满意度不会提升,当不提供此需求,用户满意度会大幅降低;
1. 无差异属性:无论提供或不提供此需求,用户满意度都不会有改变,用户根本不在意;
1. 反向属性:用户没有此需求,提供后满意度会下降,一般缘于魅力属性需求的错误预期。
* 参考[利用「KANO」分析需求,排优先级](https://baijiahao.baidu.com/s?id=1681420606029205154)
---
## 问:为什么做优先级评估?
敏捷要求,按照用户价值进行严格的排序,必须从排序最高的需求做起。
常规二八定率:20%的功能可以创造出80%的商业价值,
软件行业:7%的功能就能够创造出80%的商业价值!
* 7%的功能是大家经常使用的,15%左右的功能是偶尔使用的,钱投在了正确的地方
* 33%的功能是基本不用的,钱扔在了大家基本不需要的东西上
* 45%的功能是从来没有被用到的!钱被完全浪费了!
---
# 冲刺规划
---
## 冲刺规划 - 确定冲刺目标
* 讨论并设定冲刺目标
* 确定目标:产品代办列表中最高优先级的用户故事的总体描述。
* 相关人员:PO和开发团队为冲刺确定目标。
* 关联任务与用户故事
* 关联代办列中的用户故事。
* 拆分为更小的用户故事,并修订他们的估算。
* 创建具体的任务/补充故事来完善冲刺目标。
---
## 冲刺规划 - 工作量评估
**故事点(单位人天)**
* 即故事对应工作的规模。
假设2个人,对同一个用户故事去评估,一个人觉得需要5天,一个人觉得需要7天,这两个人会针对这个故事的复杂度重新讨论,最终达成一致的评估数值。
**工作量评估方法**
* 参考[故事扑克](https://mp.weixin.qq.com/s?__biz=MzU1NjAzMjQ2Mg==&mid=2247483843&idx=1&sn=15dc4fd5bb0d95779033255676c6217a&chksm=fbca0962ccbd80743e7408327967d8323980995b73a3a6668b08a0173595f42c42197003896a&cur_album_id=1338081455171518465&scene=189#wechat_redirect)
---
## 冲刺规划 - 承诺,冲刺预期
确定团队在当前的冲刺中可以做出哪些承诺
团队认为可完成任务的75%,包括学习新流程和开始新的项目工作。
---
## 猪齿鱼 - 冲刺管理
![bg right:58% fit](https://picbed-1253586264.cos.ap-guangzhou.myqcloud.com/notes/cNHpRH.png)
1. 当前冲刺
2. 计划冲刺
3. 待办事项
---
## 冲刺 - 站会
1. 冲刺看板,任务可视化
2. 讨论,聚焦首要完成的任务
![bg right:56% fit](https://picbed-1253586264.cos.ap-guangzhou.myqcloud.com/notes/FCmhpq.png)
---
## 需求处理流程
![bg right:30% 95%](https://picbed-1253586264.cos.ap-guangzhou.myqcloud.com/notes/GoBwtK.png)
1. **需求收集与整理**
* 以用户使用的场景描述描述用户需求,史诗/故事。
* 根据[用户故事拆分方法总结](https://blog.csdn.net/yatou1125/article/details/125588997)拆分用户故事,并评估工作量(故事点/人天)。
1. **价值分析**
* 从整体上分析每一个用户需求的总体价值,并根据价值排出每一个需求的**优先级**。
2. **计划冲刺**
* 计划冲剌周期,添加故事,统计包含故事点。
* 工作量评估
---
# 版本管理
![bg right:70% fit](https://picbed-1253586264.cos.ap-guangzhou.myqcloud.com/notes/kz4gZS.png)
---
## 猪齿鱼 - 版本管理
![bg right:55% fit](https://picbed-1253586264.cos.ap-guangzhou.myqcloud.com/notes/9G79lt.png)
* 版本的规划:
* 包含几个用户故事
* 故事点合计
* 版本基本信息:
* 介绍
* 预计发布时间
@@ -0,0 +1,94 @@
{
"nodes":[
{"type":"group","id":"f78531d9d9762bb9","x":-1079,"y":318,"width":1439,"height":442,"label":"需求处理流程"},
{"type":"group","id":"0a52587f4bff8840","x":-918,"y":1260,"width":912,"height":320,"label":"版本1.0.0"},
{"type":"group","id":"5acbba5b3f6590e7","x":-1079,"y":840,"width":880,"height":282,"label":"迭代与版本管理"},
{"type":"group","id":"bd224b2b9a626f67","x":-720,"y":-560,"width":361,"height":640,"label":"未命名组"},
{"type":"group","id":"f4cf387361a31096","x":-917,"y":1640,"width":912,"height":100,"label":"版本1.0.1"},
{"type":"group","id":"10833f2499c4ae97","x":-897,"y":1460,"width":871,"height":100,"label":"第一次迭代"},
{"type":"group","id":"0cb879c2f26ab903","x":-897,"y":1320,"width":871,"height":90,"label":"第二次迭代"},
{"type":"group","id":"60b6c9ea5f944d06","x":-1059,"y":980,"width":324,"height":122,"label":"一次迭代"},
{"type":"text","text":"收集整理\nEpic/Story","id":"568684ae9ccc2feb","x":-877,"y":338,"width":257,"height":82},
{"type":"text","text":"用户角度的需求描述","id":"1059e802292c65c4","x":-1059,"y":520,"width":182,"height":100},
{"type":"text","text":"实施经理","id":"d6cbfaf2926eddf1","x":-957,"y":680,"width":151,"height":60},
{"type":"text","text":"产品经理","id":"856208af63e12f58","x":-777,"y":680,"width":157,"height":60},
{"type":"text","text":"需求分析拆解\nStory -> Task","id":"7eff5f99fe029c8a","x":-146,"y":338,"width":226,"height":82},
{"type":"text","text":"研发待办\nBacklog","id":"0f994b9f51f42fac","x":180,"y":338,"width":160,"height":82},
{"type":"text","text":"故事 8","id":"0e324e2f422b4556","x":-253,"y":1340,"width":156,"height":55},
{"type":"text","text":"收集整理\nStory","id":"a5323fb04ae20158","x":-668,"y":-520,"width":257,"height":82},
{"type":"text","text":"需求分析拆解\nStory -> Backlog","id":"ec948a58c1af70f2","x":-668,"y":-360,"width":257,"height":80},
{"type":"text","text":"人员","id":"cc35612c387dcfcb","x":-810,"y":520,"width":124,"height":60},
{"type":"text","text":"价值分析\nStory","id":"ad33ba6364e4fca1","x":-668,"y":-199,"width":257,"height":82},
{"type":"text","text":"研发待办\nBacklog","id":"2a3cf0d48946ef00","x":-668,"y":-40,"width":257,"height":82},
{"type":"text","text":"故事 3","id":"c560166e54ea94f5","x":-875,"y":1490,"width":156,"height":50},
{"type":"text","text":"故事 7","id":"c8ca33fcb8d76e58","x":-360,"y":1490,"width":156,"height":50},
{"type":"text","text":"故事 4","id":"b954dd67f0cd1913","x":-780,"y":1340,"width":156,"height":50},
{"type":"text","text":"研发待办\nBacklog","id":"9af4bdde670b43ac","x":-1039,"y":1000,"width":160,"height":82},
{"type":"text","text":"研发待办\nBacklog","id":"cd6e708121cd1463","x":-998,"y":1000,"width":160,"height":82},
{"type":"text","text":"研发待办\nBacklog","id":"56252eeb6a5aee44","x":-957,"y":1000,"width":160,"height":82},
{"type":"text","text":"研发待办\nBacklog","id":"55d85c7087ea3129","x":-918,"y":1000,"width":160,"height":82},
{"type":"text","text":"版本","id":"7b57c7489c018089","x":-460,"y":860,"width":160,"height":82},
{"type":"text","text":"可交付功能","id":"e6baa0fcecde4032","x":-380,"y":1000,"width":160,"height":82},
{"type":"text","text":"价值分析\nStory","id":"017c3c816cbff356","x":-559,"y":338,"width":180,"height":82},
{"type":"text","text":"冲刺","id":"b86c98fad5161404","x":-639,"y":1000,"width":160,"height":82},
{"type":"text","text":"价值分析","id":"57da5abae0c44b7e","x":-566,"y":530,"width":140,"height":60},
{"type":"text","text":"产品负责人","id":"6a7bbfd0b0db6d57","x":-407,"y":680,"width":157,"height":60},
{"type":"text","text":"研发团队","id":"64e3d9e5b6b2918c","x":175,"y":680,"width":170,"height":60},
{"type":"text","text":"优先级","id":"f2f19398ca753271","x":-566,"y":680,"width":140,"height":60},
{"type":"text","text":"人员","id":"32e5a0c2f5a1b254","x":-312,"y":530,"width":124,"height":60},
{"type":"text","text":"研发团队","id":"98d6cb5b928f73fe","x":-224,"y":680,"width":142,"height":60},
{"type":"text","text":"任务依赖","id":"aaaaaed60fbf58e3","x":-60,"y":680,"width":140,"height":60},
{"type":"text","text":"人员","id":"d21d04a631ff17c3","x":198,"y":530,"width":124,"height":60},
{"type":"text","text":"任务拆解","id":"43fc3773f78c2e4b","x":-60,"y":530,"width":140,"height":60},
{"type":"text","text":"版本","id":"fbe14c00bdbde9a9","x":10,"y":2000,"width":250,"height":60},
{"type":"text","text":"史诗 - 里程碑(篇章)","id":"92a46dc9b1056489","x":-358,"y":1800,"width":334,"height":80},
{"type":"text","text":"史诗 - 里程碑(篇章)","id":"ef2d0dfc4aa94fab","x":-877,"y":1800,"width":320,"height":80},
{"type":"text","text":"故事 1","id":"6d84d25a19d182bf","x":-876,"y":1670,"width":156,"height":50},
{"type":"text","text":"故事 2","id":"7b7650b2cb8e11fa","x":-714,"y":1670,"width":156,"height":50},
{"type":"text","text":"故事 5","id":"2c50be66bb84eda5","x":-359,"y":1670,"width":156,"height":50},
{"type":"text","text":"故事 6","id":"ae25e551d0358182","x":-181,"y":1670,"width":156,"height":50},
{"id":"193def51d2c8b53c","x":420,"y":1340,"width":180,"height":50,"type":"text","text":"故事点 2人天"},
{"id":"024d9c6d443c746e","x":662,"y":1580,"width":50,"height":60,"type":"text","text":""},
{"type":"text","text":"负责人:负责讲清故事逻辑的人","id":"cc011156533dc84e","x":420,"y":1543,"width":180,"height":130},
{"type":"text","text":"经办人:统管这个任务实现的人。","id":"a488d287e9c69d8e","x":420,"y":1400,"width":180,"height":123},
{"id":"226413f08954dfcf","x":662,"y":1518,"width":50,"height":50,"type":"text","text":""},
{"id":"7da4dba489361c0c","x":662,"y":1350,"width":50,"height":50,"type":"text","text":""},
{"id":"4280ce76a1381022","x":662,"y":1340,"width":500,"height":333,"type":"file","file":"000-WorkingNotes/创医元/2023年/03月份工作/需求与版本管理/Pasted image 20230309144924.png"}
],
"edges":[
{"id":"f5eff04c2cf190db","fromNode":"568684ae9ccc2feb","fromSide":"right","toNode":"017c3c816cbff356","toSide":"left"},
{"id":"66e2c0fd80c0c683","fromNode":"017c3c816cbff356","fromSide":"bottom","toNode":"57da5abae0c44b7e","toSide":"top"},
{"id":"efba63645f03fbf5","fromNode":"568684ae9ccc2feb","fromSide":"bottom","toNode":"1059e802292c65c4","toSide":"top"},
{"id":"7aa78c505fc21d0c","fromNode":"568684ae9ccc2feb","fromSide":"bottom","toNode":"cc35612c387dcfcb","toSide":"top"},
{"id":"b85462c982728d59","fromNode":"cc35612c387dcfcb","fromSide":"bottom","toNode":"856208af63e12f58","toSide":"top"},
{"id":"ec0a36f1c680b7af","fromNode":"cc35612c387dcfcb","fromSide":"bottom","toNode":"d6cbfaf2926eddf1","toSide":"top"},
{"id":"660c2442c01b73d5","fromNode":"017c3c816cbff356","fromSide":"bottom","toNode":"32e5a0c2f5a1b254","toSide":"top"},
{"id":"4fd75a34eaf761ae","fromNode":"32e5a0c2f5a1b254","fromSide":"bottom","toNode":"6a7bbfd0b0db6d57","toSide":"top"},
{"id":"ab95e291138d7623","fromNode":"32e5a0c2f5a1b254","fromSide":"bottom","toNode":"98d6cb5b928f73fe","toSide":"top"},
{"id":"c82972a1526e6ea4","fromNode":"57da5abae0c44b7e","fromSide":"bottom","toNode":"f2f19398ca753271","toSide":"top"},
{"id":"d153c215a1a927aa","fromNode":"b86c98fad5161404","fromSide":"right","toNode":"e6baa0fcecde4032","toSide":"left"},
{"id":"64ba9839597ec0de","fromNode":"60b6c9ea5f944d06","fromSide":"right","toNode":"b86c98fad5161404","toSide":"left"},
{"id":"efcd394926ecbd6b","fromNode":"b86c98fad5161404","fromSide":"top","toNode":"7b57c7489c018089","toSide":"left"},
{"id":"1713285e536a3fd0","fromNode":"017c3c816cbff356","fromSide":"right","toNode":"7eff5f99fe029c8a","toSide":"left"},
{"id":"8d0a2b295d0287b6","fromNode":"7eff5f99fe029c8a","fromSide":"right","toNode":"0f994b9f51f42fac","toSide":"left"},
{"id":"577e3f34589711f0","fromNode":"7eff5f99fe029c8a","fromSide":"bottom","toNode":"32e5a0c2f5a1b254","toSide":"top"},
{"id":"e412197683d3bb26","fromNode":"7eff5f99fe029c8a","fromSide":"bottom","toNode":"43fc3773f78c2e4b","toSide":"top"},
{"id":"f990062ec315f30d","fromNode":"43fc3773f78c2e4b","fromSide":"bottom","toNode":"aaaaaed60fbf58e3","toSide":"top"},
{"id":"604a221d4e670069","fromNode":"0f994b9f51f42fac","fromSide":"bottom","toNode":"d21d04a631ff17c3","toSide":"top"},
{"id":"81a0190be8b27075","fromNode":"d21d04a631ff17c3","fromSide":"bottom","toNode":"64e3d9e5b6b2918c","toSide":"top"},
{"id":"035de8d5cefae86c","fromNode":"a5323fb04ae20158","fromSide":"bottom","toNode":"ec948a58c1af70f2","toSide":"top"},
{"id":"49fbe1ff77a72e24","fromNode":"ec948a58c1af70f2","fromSide":"bottom","toNode":"ad33ba6364e4fca1","toSide":"top"},
{"id":"7bd33f895779b40d","fromNode":"ad33ba6364e4fca1","fromSide":"bottom","toNode":"2a3cf0d48946ef00","toSide":"top"},
{"id":"f994cb7e4b0520a3","fromNode":"6d84d25a19d182bf","fromSide":"bottom","toNode":"ef2d0dfc4aa94fab","toSide":"top"},
{"id":"04e1cb95444312a8","fromNode":"7b7650b2cb8e11fa","fromSide":"bottom","toNode":"ef2d0dfc4aa94fab","toSide":"top"},
{"id":"4346c50b55e6d303","fromNode":"c560166e54ea94f5","fromSide":"bottom","toNode":"ef2d0dfc4aa94fab","toSide":"top"},
{"id":"c75b17f738a81469","fromNode":"b954dd67f0cd1913","fromSide":"bottom","toNode":"ef2d0dfc4aa94fab","toSide":"top"},
{"id":"9f4a8ed581153e56","fromNode":"2c50be66bb84eda5","fromSide":"bottom","toNode":"92a46dc9b1056489","toSide":"top"},
{"id":"1fbadc106b8a91e4","fromNode":"ae25e551d0358182","fromSide":"bottom","toNode":"92a46dc9b1056489","toSide":"top"},
{"id":"04afdfa4a8f200bd","fromNode":"c8ca33fcb8d76e58","fromSide":"bottom","toNode":"92a46dc9b1056489","toSide":"top"},
{"id":"5afa2a0988d3663c","fromNode":"0e324e2f422b4556","fromSide":"bottom","toNode":"92a46dc9b1056489","toSide":"top"},
{"id":"a5117226c407a285","fromNode":"193def51d2c8b53c","fromSide":"right","toNode":"7da4dba489361c0c","toSide":"left"},
{"id":"a8cdb2a9f4ea25ae","fromNode":"cc011156533dc84e","fromSide":"right","toNode":"024d9c6d443c746e","toSide":"left"},
{"id":"2ac543300acd71f3","fromNode":"a488d287e9c69d8e","fromSide":"right","toNode":"226413f08954dfcf","toSide":"left"}
]
}