您好!
欢迎来到京东云开发者社区
登录
首页
博文
课程
大赛
工具
用户中心
开源
首页
博文
课程
大赛
工具
开源
更多
用户中心
开发者社区
>
博文
>
Being Agile!简单好用的需求分析工具
分享
打开微信扫码分享
点击前往QQ分享
点击前往微博分享
点击复制链接
Being Agile!简单好用的需求分析工具
自猿其说Tech
2021-01-21
IP归属:未知
33720浏览
计算机编程
前端
大数据
成年人一次只能记住7+-2个信息\要素\细节,如何能更有效的传递信息,“可视化”是一个有效的手段; 今天先分享一个需求分析可视化的工具:**“判定矩阵"**;帮助我们在业务规则分析,需求传递时高效率的做到不重不漏,明确清晰。 #### 什么是判定矩阵? 判定矩阵是由多个条件组合决定不同操作结果的业务规则用表格的方式表达出来。如下图: ![](//img1.jcloudcs.com/developer.jdcloud.com/65db6c23-2f25-4a61-b941-65e88b2fb0dc20210111134450.png) 在我们的业务场景中,经常会遇到各种条件组合判定的情况;这些条件组合在一起,形成**“笛卡尔积”**。我是不记得这个概念是几年级学的了,有知道的同学,请评论留言。**“笛卡尔积”**不光应用在SQL的多表查询,在我们复杂的业务规则里也经常出现。 #### 示例一 需求描述:新增仓内一个SKU变更货主的功能。 使用判定矩阵整理后的规则是: ![](//img1.jcloudcs.com/developer.jdcloud.com/2e7b62a4-05c8-41b5-98e8-65cd6e8db71420210111134657.png) ##### 这里之所以把所有组合都穷举的原因在于,确认业务需求,防止遗漏,防止因不完整导致的需求变更。此处步骤千万别嫌麻烦。 #### 示例二 **需求描述:** 1. **寄付运费:**如果是散客,寄付运费是由XXX计算出来。如果是商家客户或普通大客户,运费传0; 2. **到付运费:**如果是散客,到付运费是由XXX计算出来,如果是商家客户或普通大客户,到付运费默认传0.01,到付上限为2000; **使用判定矩阵表达:** ![](//img1.jcloudcs.com/developer.jdcloud.com/b93a0dd1-04e3-4e47-bbfc-0f459cefe1c120210111134827.png) ##### 上面两种表达方式,一种纯文字,一种表格,是不是第二种要比第一种,更清晰,更容易发现问题?那你发现了这个需求有什么问题么? #### 示例三 **下面我要举例一个比较”迷幻“的需求。** **需求背景:**为上门服务的后付费场景下,建立标准收费规则,收费规则与商品SKU品类、品牌、商品属性等相关。 **需求描述:**新建收费规则时,需要与已有收费规则进行轮询,判断是否重复,是否冲突;新建收费规则分为两个场景: a. 为一个选定的品类建立通用收费规则(适用所有品牌) b. 为一个选定的品牌的特定品类建立收费规则 c. 品牌下品类的收费规则优先于通用规则 **具体规则如下:** **场景a:** 1. 判断品牌是否存在,品牌存在,判断一级、二级、三级品类是否存在,如存在,判断输入的商品属性是否存在,如不存在,则不可建立规则(同一三级品类下,不能用多个商品属性建立规则);如存在,则判断商品属性枚举值是否存在,如存在,则重复;如不存在,则允许新建。 2. 如品牌不存在,则判断通用规则里是否建立了该品类的规则,如已建立,从该通用规则里取消对该品牌品类的覆盖。如未建立,则新建该品牌品类的收费规则。 **场景b:** 1. 判断一级、二级、三级品类,是否存在;如存在,判断商品属性,是否存在,如存在则不能新建规则;如不存在,则需要判断属性枚举是否存在;如不存在,则可以新建;如存在,则判定重复,不可新建。如一级、二级、三级品类不存在,可新建规则。 如此复杂的业务逻辑,在讨论需求和评审的时候,用这种文字会花费大家很多时间,同时还极容易被绕进去。如果用判定矩阵来分析的话,结果如下: ![](//img1.jcloudcs.com/developer.jdcloud.com/e18cff4d-d72b-4fe6-bfb2-409cfd454e8220210111135214.png) 当然要得到上表,需要将所有的条件都组合一遍,经过同类项合并后得到。 #### 连验收测试用例都省了 ![](//img1.jcloudcs.com/developer.jdcloud.com/329507f8-5b08-49c5-9dcb-492093a01e7920210111135329.png) 经过判定矩阵整理出来的需求,可以直接作为验收用例,会很好得节省沟通成本、书写测试用例的成本还降低出错率。 #### 后记后记 行业里有这样一个观点:需求文档写成流水账,开发的代码就容易是一堆没有抽象的if - else…… ------------ ###### Being Agile 京东物流技术发展部效能提升部 ###### 作者:效能提升部 宋宁 ![](//img1.jcloudcs.com/developer.jdcloud.com/00fd5bf6-66ba-4e03-b421-08647441d3c120210111135455.png)
原创文章,需联系作者,授权转载
上一篇:Being Agile!契约测试看图说话
下一篇:Linux系统恢复误删除文件
相关文章
Taro小程序跨端开发入门实战
Flutter For Web实践
配运基础数据缓存瘦身实践
自猿其说Tech
文章数
426
阅读量
2149963
作者其他文章
01
深入JDK中的Optional
本文将从Optional所解决的问题开始,逐层解剖,由浅入深,文中会出现Optioanl方法之间的对比,实践,误用情况分析,优缺点等。与大家一起,对这项Java8中的新特性,进行理解和深入。
01
Taro小程序跨端开发入门实战
为了让小程序开发更简单,更高效,我们采用 Taro 作为首选框架,我们将使用 Taro 的实践经验整理了出来,主要内容围绕着什么是 Taro,为什么用 Taro,以及 Taro 如何使用(正确使用的姿势),还有 Taro 背后的一些设计思想来进行展开,让大家能够对 Taro 有个完整的认识。
01
Flutter For Web实践
Flutter For Web 已经发布一年多时间,它的发布意味着我们可以真正地使用一套代码、一套资源部署整个大前端系统(包括:iOS、Android、Web)。渠道研发组经过一段时间的探索,使用Flutter For Web技术开发了移动端可视化编程平台—Flutter乐高,在这里希望和大家分享下使用Flutter For Web实践过程和踩坑实践
01
配运基础数据缓存瘦身实践
在基础数据的常规能力当中,数据的存取是最基础也是最重要的能力,为了整体提高数据的读取能力,缓存技术在基础数据的场景中得到了广泛的使用,下面会重点展示一下配运组近期针对数据缓存做的瘦身实践。
最新回复
丨
点赞排行
共0条评论
自猿其说Tech
文章数
426
阅读量
2149963
作者其他文章
01
深入JDK中的Optional
01
Taro小程序跨端开发入门实战
01
Flutter For Web实践
01
配运基础数据缓存瘦身实践
添加企业微信
获取1V1专业服务
扫码关注
京东云开发者公众号