如何模块化设计B端系统?先思考这3个问题

时间:2020-01-03 23:57来源:公司产品
产品经理都希望能做出一个可复用性强、灵活性好的B端系统出来。那么,模块化设计就是其中一个很好的方法。 希望减少重复性造轮子的可能,抽离出共通性、形成标准化,最终达到

  产品经理都希望能做出一个可复用性强、灵活性好的B端系统出来。那么,模块化设计就是其中一个很好的方法。

  希望减少重复性造轮子的可能,抽离出共通性、形成标准化,最终达到减少人力物力的大量浪费,提高业绩的同时还减少了成本开支,何乐而不为?

  最近鼓吹得如日中天的中台概念、流行了许久的敏捷开发,无不都是为了此目的。

  写代码的同学都知道,代码要讲究可复用性、灵活性。前端开发与后端开发,采用接口式方法来进行信息之间的交互。

  模块化设计,专业术语讲是为了我们做的产品,将来灵活性强、扩展性好。不需要开发修改代码,就可以实现部分新的业务逻辑。

  通俗点讲,就是堆积木。我们可以将任意小方块,任意拼凑成我们想要的形状,从而达到目的。

  不同的系统,不同的业务,要根据实际情况分析,这里我以电商系统为例,总结了些许模块化设计经验,分享一二。不到之处,还请大佬们批评指正。

  首先,一定要搞清楚为什么要去模块化设计,千万不要为了模块化而模块化,这个是很大的忌讳。模块化设计,很多时候短期是看不到任何效果的,而且让系统变得更麻烦。

  以添加商品为例:要新建一个商品,必不可少的有商品基本信息、商品类目、商品属性信息等等。

  添加商品,本就不是很复杂的事,此简单的方案不是不可行。只是不利于系统的可扩展性和灵活性。

  为什么?在固定的表单中填写商品所有信息,你就能保证所有的商品都是一样的业务逻辑,一样的商品信息吗?根本保证不了,那么一旦做成固定模板,系统后期就要不断的根据新的业务逻辑和商品去不断的改代码来实现业务方的需求。

  方案:将商品信息打散,将其拆分为三大类信息组合:商品共性信息(所有的商品都有的属性)、商品类目、动态属性(区分商品唯一性的属性)。

  说明:要想成功添加A商品,必须关联某个A商品类目。A商品类目必须关联某个A模板,A模板必须关联对应属性。

  属性管理:管理了商品的所有类别的属性信息,一定要做好分类。比如:关键属性、规格属性、非关键属性等等。

  模板管理:不同的商品,可能由不同的属性构成。那么我将属性形成一个又一个模板,就可以灵活的去满足各种类别的商品。

  商品类目:商品的分类管理。所有的商品,肯定有自己的分类,也就是商品类目。同一类商品归为一类,便于商品的维护和管理。

  商品管理:所有商品的管理。现在要添加一个商品,通过模板化设计,就变得非常灵活。要想添加商品:

  模板设计的好处就是,我可以随时更换关联关系,也可以随时在下一层关联关系中做任何CRUD操作却不影响当前层级新的数据。

  别把后台系统设计想的那么玄乎,没有那么复杂。咱之所以觉得复杂,是因为咱还不够熟悉业务,不清楚正向逆向各种流程,并不是系统设计难。

  下图是我认真画的真实数据,认真观察后发现没有?哪个版块的管理离开的了CRUD?先讲页面的根(CRUD)想好,什么批量克隆、启用、停用无非添砖加瓦而已;

  功能结构图也就是功能列表,只是功能列表会描述的更细,而结构图只是列出大的框架,方便参阅,没你想象的那么复杂;

  虽不复杂,但每一层的关联关系可别忘记加上,这可是咱这篇模块化设计的核心。

  信息结构图:将你看到的页面信息,抽象处理到一个对象的维度,然后把同一个对象的信息放在一起。

  咱们产品人画的信息结构图,不需要与开发同学设计的数据库表结构一模一样,按你的理解将其以单个对象维度抽离出来即可。

  有没有觉得设计信息结构图很难,根本无从下手,不知所措?根本原因在哪?在于咱们脑海中没有面向对象的概念和对数据库表结构的理解。

  对象:指具体的某一个事物,即在现实生活中能够看得见摸得着的事物。在面向对象程序设计中,对象所指的是计算机系统中的某一个成分。

  在面向对象程序设计中,对象包含两个含义,其中一个是数据,另外一个是动作。对象则是数据和动作的结合体。对象不仅能够进行操作,同时还能够及时记录下操作结果。方法是指对象能够进行的操作,方法同时还有另外一个名称,叫做函数。方法是类中的定义函数,其具体的作用就是对对象进行描述操作。

  对象解析:对象由属性和方法构成。private开头的全是对象应有的属性,也就是咱们看到的信息架构图中,员工对应的信息。至于方法,咱们产品经理不需要关注,知道有就好。

  表结构:表名+字段。详情可以看我另一篇文章的文末,这里不再说了哈!《后台系统架构设计-商务咨询系统》

  表解析:员工信息表用来储存员工的基本信息。一般由表明+字段构成,我们产品人不需要去关注数据类型,是否主键这些信息。

  PS:原型只是案例展示,并不是真实功能,有很多按钮和规则,都没有写入,仅供参考。

  说明:属性分类与属性分组是不同概念。属性分组是将一类属性进行分组,是站在业务维度划分。属性分类,是站在产品设计维度分析。

  作者:会飞的猪,微信公众号:刻意练习产品经理(ID:kylxpm520)

  关注本公众号: kylxpm520,输入【模块】即可获得本文中所有文件内容。

  人人都是产品经理(是以产品经理、运营为核心的学习、交流、分享平台,菲翔蓝牙模块集媒体、培训、社群为一体,全方位服务产品人和运营人,成立9年举办在线+期,线+场,产品经理大会、运营大会20+场,覆盖北上广深杭成都等15个城市,在行业有较高的影响力和知名度。平台聚集了众多BAT美团京东滴滴360小米网易等知名互联网公司产品总监和运营总监,他们在这里与你一起成长。

编辑:公司产品 本文来源:如何模块化设计B端系统?先思考这3个问题

关键词: 菲翔蓝牙模块