设计复杂功能模块时,模块之间的逻辑联系很强,数据依赖性也较高,怎样在一开始通过梳理和分析,达到简单优雅的设计呢?

B端产品怎样降低模块之间的耦合?
这是一个从混沌走向清晰的渐进明细过程,可以从以下几方面来入手:

1.了解当前业务系统,理解需求
在收集需求并明确范围后,要熟悉现有系统的实现方式,以及其与上下游系统的数据交互方式,在理解之后,需要根据自己的理解输出:

系统架构图:明确涉及到的前台业务、底层系统、各个系统模块,明确业务范围,若有改动涉及到其他系统,需要梳理并抽取出共性
状态机:就是不同的业务流,有哪几种状态,每种状态之间切换的条件是什么,到底有多少条通路,需要模拟各种情况的数据走一遍
业务流程图:架构明确了,状态清楚了,业务流程自然也就出来了,业务流程可以按不同角色来进行划分,每个角色在每个环节都需要干什么,由此也可把角色权限进行定义
2.对所影响系统的相关方进行访谈
B端产品往往会涉及到多部门多角色,不同的角色有自己的需求,这里的相关方包括:

现有系统的研发人员:系统能实现什么不能实现什么,肯定看了代码就知道了,梳理相关逻辑的时候可以分专题与研发人员进行讨论,一定要控制好不要跑题
熟悉相关业务的产品或项目经理:熟悉历史经验教训及组织过程资产往往能够降低后续的项目风险,有哪些是设计如此、哪些是遗留问题,相关的产品同事多少会知道一些
运营、最终用户及测试人员:运营人员与最终用户是使用系统最多的相关方,运营与测试人员往往能提出很多绝妙的优化建议,有利于产品同事进行梳理
3.配合营销指标及技术指标进行优化
很多时候系统的业务量或用户量达到一定程度时会遇到瓶颈,市场同事在销售时也肯定会有相关的数据指标,产品的设计、模块的解耦往往也可以与这些需求一并考虑

技术优化如:业务延迟的忍耐程度、流程的长度、数据的归档周期等
营销指标如:线索和商机的获取周期、用户的使用体验等
B端产品怎样降低模块之间的耦合?
想清楚并不简单。

一个分析框架思路
1、梳理承载业务的系统所需要的模块,然后将这些模块拆分为一个个功能点,将相似的功能点合并为一个独立的服务,提供单独的一项能力,合并服务要保证每个服务都可以单独对外提供服务且每个服务提供的能力不重合,这种称之为原子服务。(相互独立,完全穷尽)

这里面有3个比较重要的点决定梳理的质量:

1)对业务对理解能力,如果是从0-1可以参考竞品,如果不是可以参考现有系统。

2)对业务所处行业发展的思考,这很大程度决定了服务的拓展性和合理性,这个可以结合行业发展史和自己的知识认知,比较抽象。比如通讯:信件-有线电话-无线电话-手机-可穿戴设备-脑机植入-… 这个例子可能不太恰当,因为这里涉及太多硬件服务的变更,而软件最底层的服务很大程度是不变的,只会不断革新技术。

3)边界一定要清晰。

2、找出这些服务里面的共用项,把他做成最底层的配置规则,然后让其他服务来调用。举个例子,跨境电商经常涉及多语言,那么每个模块的框架语言包就是一个共用项。这样做的目的是保证各维度数据的一致性。

3、在进行完前面两个步骤以后,你会发现,有时候一个业务闭环其实需要多个服务一起提供服务,这个时候,需要再加一层服务聚合,保证原子服务的独立性。

总结一下:梳理出独立原子服务(保证独立不耦合)-找出公共底层配置项(保证维度数据统一)-聚合服务支持业务(保证原子服务解耦)

B端产品怎样降低模块之间的耦合?相关推荐

  1. 降低对象之间的耦合关系

    什么叫耦合? 耦合是指两个实体相互依赖对方的一个程度.比如在计算机硬件里,要设计一个系统,这个系统有一块主板,假如这个主板依赖于某种图形显示卡,则就意味着我们实现必须实现开发好这块图形显示卡,如果没有 ...

  2. 模块之间的耦合性到底指的是什么,js如何减少耦合性

    1.所谓低耦合,就是一个组件在多个环境,复杂的项目下,都可以运行,而不会出现不可用的情况 2.vue的组件就是使模块独立,尽量降低耦合性,达到组件高复用,低耦合 3.应尽量减少使用全局变量 4.不推荐 ...

  3. 软件模块之间耦合度的强弱排序

    高内聚.低耦合是软件设计中非常关键的概念.耦合度越低,两个模块之间相互影响越小,独立性越强,越容易维护和扩展.以下由耦合度由高向低做一说明,在软件设计中尽量降低模块之间的耦合度. 内容耦合:举个例子, ...

  4. 软件设计模块之间7种耦合关系

    一般来说,模块之间的耦合有七种类型: 1.根据耦合性从低到高为非直接耦合.数据耦合.标记耦合.控制耦合.外部耦合.公共耦合和内容耦合. 2.两个模块之间没有直接关系, 它们之间的联系完全是通过主模块的 ...

  5. java中接口降低耦合性_如何降低一个程序的耦合性

    耦合性是程序结构中各个模块之间相互关联的度量.它取决于各个模块之间接口的复杂程度.调用模块的方式以及哪些信息通过接口. 一般模块之间可能的连接方式有七种,构成耦合性的七种类型.它们之间的关系为(由弱到 ...

  6. yii2表单数据检查怎么自定义输出错误_B端产品日记——表单设计

    编辑导语:表单在很多工作和项目中都会用到,在一个项目中,会涉及到大量的数据.信息等等,这时候用表单进行记录是很重要的:本文作者详细的介绍了在B端产品设计的工程中运用到的表单设计,我们一起来看一下. 人 ...

  7. B端产品思维全解析,提升产品经理核心竞争力

    产品思维和用户思维组成了产品经理两大核心思维方法论.对两者的理解也代表了产品经理的产品理解方向. 很多人把产品思维和用户思维混在一起说,我觉得是不合适的,因为两个是互相搭配的关系,你也可以把产品思维理 ...

  8. 前众信旅游B端产品经理吴彪:如何搭建B端电商产品及用户体系

    嘉宾介绍 吴彪,北京树下科技有限公司创始人.于2016年4月1日起,脱产自学产品经理,并在豆瓣中,坚持每天记录,热心于把转型经验分享给产品新人,因此身边聚集了数百位产品经理. 2016年5月初,进入众 ...

  9. 多图长文 | 聊聊C端转型B端产品那些事

    01  当初为什么想要从C端转型到B端 首先想跟大家谈一谈我为什么想要从C端转型B端,主要有以下几个原因,第一就是自己面临的行业困境,毕业后第一家公司我选了当时还很火的互联网金融行业,因为爱情我放弃了 ...

最新文章

  1. C++ 笔记(13)— 函数(函数声明、函数定义、函数调用[传值、指针、引用]、函数参数默认值、函数重载)
  2. webscraper多页爬取_数据收集:web scraper 多页(无规律url)抓取
  3. 第五百七十二、三天 how can I 坚持
  4. 如何只下载一个github项目的某一特定文件夹或文件
  5. 物联网通讯协议:MQTT,NB-IOT,Zigbee,CoAP,RFID,BLUETOOTH,NFC,4G,HTTP
  6. java JNI调用C语言动态链接库(java.lang.UnsatisfiedLinkError: no yourClassName in java.library.path 异常的解决方法)
  7. 操作系统上机题目(多线程1)
  8. 九、Citrix服务器虚拟化Xenserver虚拟机模版
  9. 两个mysql主从同步_如何配置两个MySQL数据库之间的主从同步功能
  10. S(Stockwell)变换的Matlab代码
  11. NLP︱词向量经验总结(功能作用、高维可视化、R语言实现、大规模语料、延伸拓展)
  12. 解决尝试连接“ECONNREFUSED - 连接被服务器拒绝”失败的问题
  13. django -- url映射
  14. Windows10启用Administrator并设置任意密码(包括空密码)【解决Administrator默认没有Administrator权限的Windows默认鬼畜(有毒)设置】
  15. Crtl+Enter提交留言
  16. c语言课设菜单,c语言课程设计菜单
  17. 1173 Problem V 《C语言程序设计》江宝钏主编-习题6-2-排列数
  18. mysql基于springboot的家政系统毕业设计源码201524
  19. 第十三章 半监督学习
  20. 谷歌浏览器怎么管理收藏夹 收藏夹分类整理步骤

热门文章

  1. Mate Translate for Mac(翻译软件) V6.0.0中文破解版
  2. 单片机怎么控制水泵灭火_基于51单片机供水系统控制自动化
  3. 盛大发布nbsp;Bambooknbsp;手机:解与未解…
  4. Python计算矩阵相乘
  5. 【推荐】2020-2021 AI人工智能技术领域行业研究报告大合集(58份)
  6. 智能锁百问百答视频锁篇第4期:特斯拉线圈能破解视频锁吗?平台能看到视频锁用户存储的录像吗?化妆、戴眼镜能打开人脸视频锁吗
  7. Let's-python视频教程发布专贴(更新下载方式: 纳米,电驴,迅雷快传)(2012年10月07日更新纳米部分资源)
  8. 苹果原壁纸高清_手机壁纸 | 高清风景全面屏壁纸
  9. FPGA学习日记(七)HDMI图像数据传输
  10. 垃圾3D打印机Makerbot Replicator Z18 常见报错