3.1 MTDD是什么MTDD的全称是:Module Tree Drive Design, 模块树驱动设计,也可以叫做能力树驱动设计 。MTDD是一种系统设计模式,并同时提供了战术层的SDK 。
MTDD主要思想是让业务,产品、研发共同对复杂业务系统中的模块进行分析,并对这些业务模块做好分层分类,最终形成各方达成一致的一棵模块树;研发人员开发可以通过给定的SDK,将系统中的代码按照模块的方式进行打标分类,系统根据代码中打标分类,自动生成一颗可视化的模块树 。通过这个方式,让系统与业务保持高度一致 。
MTDD思想主要体现在:
- 当业务和产品需要对系统能力进行新增、修改、或者扩展时,可以对照系统这颗可视化的模块树进行沟通,然后进行思考和设计具体的哪个或者哪些模块需要进行修改或者扩展,并产出修改后的最终结果 。
- 研发人员接到接到需求后开发完成后,新开发的功能就会自动的在系统的模块树上进行呈现 。
- 产品和业务验收时,就可以对照系统上的模块树,进行功能验收 。
3.2 MTDD的特点3.2.1 模块化在系统设计中,模块是指一组相互依赖的程序元素,通常是在模块内部完成特定的工作 。模块也可以被组合以形成更大的、更复杂的系统 。子模块则是模块的一部分,通常是实现特定的功能 。
在MTDD中, 模块化更多的是从业务的角度上来说的,比如一个营销触达模块,比如仓储系统中的入库模块;模块下面还可以有子模块,子模块也可以有子子模块, 这个可以根据一定的颗粒度进行灵活拆分,重点是业务,产品、研发三方达成一致,并且明确模块的关系(父子关系) 。
3.2.2 分类与分层将模块化的模板进行分层分类 。
在系统设计中,分层和分类是非常重要的,这有助于提高系统的可扩展性和可维护性,也能很好的降低人的认知负荷 。
- OOD(面对对象设计)本质就是一种分类思想 。
- DDD(领域驱动设计)本质也是一种分类思想 。
分层设计:
在现实世界中,所有我们见到的事物,人类都自然的对其给与了分层,比如:
文章插图
图片
再比如在仓储管理中,也会有天然的分层:
文章插图
图片
分层分类-复杂度分解:
我们的目标是将一些同类型的提高一个抽象层次,将大脑比较难处理的9个概念简化成3个,这样就无需记忆其中的每个概念,另外由于较高层次的思想总是能够提示下面一个层次的思想,所以记忆起来会更方便 。所有的思维过程(思考、记忆、解决问题)都应该使用这样的分组和概括的方法,将大脑中的无序信息组成一个相关关联的金字塔结构 。
每个模块下又可以有多个子模块 。
总而言之,设计人员对模块进行分层分类后,可以大大降低思考复杂度, 这个很好理解 。
文章插图
图片
3.2.3 可视化分层分类的模块以树状接口进行可视化呈现 。
文章插图
左边图描述的是:业务、产品、研发对齐需求后,认为的业务系统上需要建设两个子模块的能力 。右边的图是:研发实现产品需求后,系统自动生成的能力树的样子 。
3.2.4 强大的配置化能力所有的业务配置,都是业务相关的,系统用来控制业务的逻辑,本质就是业务的一部分 。在传统的业务系统中一般有两种方式来实现:
- 使用需要一个配置中心,配置中心一般都使用key-value的方式来存储 。业务系统根据配置的key到配置中心来获取value,并解析value的值 。业务人员直接在配置中心来做配置值的修改 。
- 每个配置单独开发配置页面,业务人员在配置页面上进行值修改 。