学会多摸鱼至少2小时 | 复杂逻辑的分析方法 — 考勤打卡案例
第19期:复杂逻辑的分析方法
某大型超市,有一天HR带着一份考勤逻辑来找开发团队,希望开发团队来开发一个考勤打卡程序,原始需求如下所示。
1.公司雇佣的员工有如下几种:
正式员工、外包员工、小时工、留学生。
2.考勤打卡限制规则
正式员工和外包员工每周出勤小时数不低于30小时。
在合同有效期。
留学生的留学资格要在有效期时间段内。
正式员工和外包员工每次出勤小时数不可以少于6小时。
小时工和留学生每次出勤小时数上限为4小时。
留学生的留学资格要在有效期时间段内。
年少者(16-18周岁)每周(按周一-周日为一周算)不允许超过4次出勤,累计不能超过16小时。
深夜打卡(23:00-25:00)不能超过连续4天。
只能在计划出勤的时间之前15分钟到计划出勤起始时间内打上班卡。
在计划出勤时间之后打卡视为迟到。
只能在出勤计划结束之后打下班卡,否则视为早退。
不允许连续工作超过13天。
在合同有效期内。
在计划出勤日,非计划出勤日打卡无效。
其实可能还有很多内容,这里只列出一些例子条款。HR顺便说了,这个是试行规则,之后可能会变。
作为BA/产品经理,处理这样的复杂逻辑有两种方式可以选择:
1.直接转发原文给开发团队
但如果这样做,那自己就没有价值了。
2.分析后以合适的形式传递给开发团队
但是这个问题似乎又不知道如何下手,同时需要充分考虑到需求分析的质量要保证,不能出现错误,还要考虑需求未来会变更,现在就要考虑清楚未来发生变更的时候怎么办。
采用职责链模式,可以将各种规则分类后进行细化排队。
这样当校验发生的时候,这些规则逐个排队进行校验,任何一个规则校验失败之后就会返回具体的错误消息,而停止后续的校验。
分类的方式可能各有不同,但是分类处理是解决这个问题的比较好的一个方法。
1.质量保证分析
这样的分析方法,需求的质量得到了保证。
如果采用了嵌套非常深if-else结构,会造成很大的复杂度,并且无法确保需求分析的完整(完整性缺失),各种细节都考虑清楚了。而且可能造成理解困难等问题(可读性下降)。
2.需求变更的响应-如果增加了新的规则
那么就将新的规则按照上述分类找到合适的位置增加进去就可以了。并且新的规则对旧的没有影响,在if-else结构下无法保证影响性。
如果增加的新的规则是属于新的分类,则在原来的链条上增加新的节点就可以了。也是没有影响性。
3.需求变更的响应-如果调整了旧的规则
单独的规则调整对其他的没有影响,在if-else结构下无法保证影响性。
回复【电子书】领取需求分析实用技巧。数万名产品经理、BA汇聚地,深入需求分析与产品设计、产品运营,帮助你提升产品思维与洞察能力。原创知识体系:可视化需求分析。