设计模式之美
王争
前 Google 工程师,《数据结构与算法之美》专栏作者
123425 人已学习
新⼈⾸单¥98
登录后,你可以任选6讲全文学习
课程目录
已完结/共 113 讲
设计模式与范式:行为型 (18讲)
设计模式之美
15
15
1.0x
00:00/00:00
登录|注册

23 | 实战一(上):针对业务系统的开发,如何做需求分析和设计?

每日签到赠送积分
订单金额与积分兑换比例
评论
每日签到
下订单
业务模型设计
数据库设计
接口设计
异步消息中间件
同步接口调用
消费渠道及兑换规则
积分赚取渠道及兑换规则
参与活动扣积分
积分换购
兑换优惠券
抵扣订单金额
有效期
兑换规则
赚取积分功能
模块间交互设计
合理划分模块
系统设计与面向对象设计的相似之处
产品思维
模块设计
模块间交互关系
模块划分
查询积分及明细
消费积分功能
积分系统需求
重点回顾
系统设计
需求分析
如何给业务系统的开发做需求分析和设计

该思维导图由 AI 生成,仅供参考

对于一个工程师来说,如果要追求长远发展,你就不能一直只把自己放在执行者的角色,不能只是一个代码实现者,你还要有独立负责一个系统的能力,能端到端(end to end)开发一个完整的系统。这其中的工作就包括:前期的需求沟通分析、中期的代码设计实现、后期的系统上线维护等。
前面我们还提到过,大部分工程师都是做业务开发的。很多工程师都觉得,做业务开发没啥技术含量,没有成长,就是简单的 CRUD,翻译业务逻辑,根本用不上专栏中讲的设计原则、思想、模式。
所以,针对这两个普遍的现象,今天,我通过一个积分兑换系统的开发实战,一方面给你展示一个业务系统从需求分析到上线维护的整个开发套路,让你能举一反三地应用到所有其他系统的开发中,另一方面也给你展示在看似没有技术含量的业务开发中,实际上都蕴含了哪些设计原则、思想、模式。
话不多说,让我们正式开始今天的学习吧!

需求分析

积分是一种常见的营销手段,很多产品都会通过它来促进消费、增加用户粘性,比如淘宝积分、信用卡积分、商场消费积分等等。假设你是一家类似淘宝这样的电商平台的工程师,平台暂时还没有积分系统。Leader 希望由你来负责开发这样一个系统,你会如何来做呢?
你可能会说,只要产品经理给我产品设计文档(PRD)、线框图,我照着实现就可以了。我觉得,这种想法有点狭隘。我认为,技术人员应该更多地参与到产品设计中。在 Google 工作的时候,我很明显能感受到,Google 工程师跟其他公司工程师有一个很大区别,那就是大部分人都具备产品思维,并不是完全的“技术控”。所以,Google 很多产品的初期设计都是工程师来完成的,在产品发展壮大到一定程度的时候,才会引入产品经理的角色。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了业务系统的需求分析和设计,强调了技术人员在业务系统开发中的重要作用,以及需求分析和系统设计的关键性。作者通过一个积分兑换系统的开发实战,展示了从需求分析到上线维护的整个开发套路,并强调了在业务开发中蕴含的设计原则、思想、模式。在需求分析阶段,建议技术人员更多地参与产品设计,并提出了借鉴其他产品、细化业务流程的方法。在系统设计阶段,强调了面向对象设计的四个步骤可以借鉴到系统设计中。此外,文章还介绍了模块划分、模块间交互关系设计以及模块的接口、数据库、业务模型设计。总的来说,本文强调了技术人员在业务系统开发中的重要作用,以及需求分析和系统设计的关键性。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《设计模式之美》
新⼈⾸单¥98
立即购买
登录 后留言

全部留言(213)

  • 最新
  • 精选
  • 未来小娃
    聊聊技术与业务 最近看了一些关于程序员价值方面的文章,很多人包括我自己有个疑问,面试时只看技术,进公司后做业务,两者矛盾么?这个问题的本质是哪个更有价值。如果你不喜欢做业务那就往中间件方向发展,做出类似高性能高可用的中间件不失为值得骄傲的事情。那么业务呢,要清楚的是公司的现金流都是来源于业务,业务产生价值。那么两者的关系是公司依赖业务,业务开发需要技术,也就是技术是更底层更通用的能力,所以自然也就更好评价,业务各不相同复杂度和场景天差地别不可复用,自然就没有比较好的评价标准。技术能力的高低决定了业务质量,而业务质量的高低反过来影响你的技术,业务复杂度上升了,之前的技术可能就不满足了,这也是技术不断更新的源动力,无法适应业务的技术是没有价值的,那么到底是什么造成了程序员价值的高低呢?我认为有以下几点: 第一,专业能力。虽然技术不断更新,但是底层的基础技术却没变,我们应该花更多时间掌握好底层技术,不变应万变。基本功扎实了才能走得更远 第二,落地能力。有了基本功后我们就具备完成一件开发任务的能力,但是怎么把事情做好却是需要不断提升的,结果导向,积极主动,有想法能落地才能体现你的价值。记住,当你开始积极主动思考一些事情后,你已经领先了大部分人 第三,终身学习能力。公司要持续发展,业务就会不断迭代发展,要让自己的技术能够匹配上业务的发展就需要不断学习,扎扎实实在自己想要专研的领域做精,你的价值也就体现出来了。 总结下:技术是业务的支撑,业务反过来影响技术,业务发展就需要提升技术。

    作者回复: 👍

    2020-04-20
    8
    368
  • Dawn
    上下层系统之间的调用倾向于通过同步接口,同层之间的调用倾向于异步消息调用,依据是什么?

    作者回复: 主要目的是解耦。上下层没有互相调用,只有上层调用下层,调用关系简单。同层之间互相调用,错综复杂,使用中间件异步消息解耦,让调用关系简单。

    2020-11-17
    3
    25
  • 姜玮
    课堂练习的思考,技术和业务好比生产力和生产关系的相互作用。大体上来讲,一定是相辅相成,互相作用的。当一个技术人员没有办法完成业务需求时候,那么,技术就显得更重要一些; 而当技术人员发现业务的指标都做完了,想要把业务做得更好,那么就要去深入理解业务,才能在通用技术之上构建出更贴合业务的优秀系统。 生产力,决定了整个社会价值形态的下限,而生产关系的优劣,可以影响在当前生产力局面下,社会价值形态的上限。 因此,技术可以解决温饱问题,业务可以带领走上上小康道路。

    作者回复: 嗯嗯,说的好

    2020-11-14
    9
  • 蛀牙
    "上下层系统之间的调用倾向于通过同步接口,同层之间的调用倾向于异步消息调用。比如,营销系统和积分系统是上下层关系,它们之间就比较推荐使用同步接口调用。" 老师或者哪位大神可否就这句话展开讲讲,为什么异层同步,同层异步?

    作者回复: 同层之间一方面会有互相调用的情况,另一方面从业务上来讲有平行关系,如果设计成调用,可能存在互相调用,调用关系交叉复杂,使用消息中间件,实际上就能将网状调用关系,解耦为星状调用关系,调用关系更加简洁清晰。而且,使用消息中间件,更能体现同层之间的平行关系。

    2020-08-26
    9
  • 自然
    模块的划分我理解第三种也是合理的,因为积分的所有配置和规则维护应该都有积分系统完成,符合单一职责,订单、评价系统只需要发事件消息出来就可以了,他们不需要关心积分的业务逻辑,积分系统收到消息后去处理积分内部的业务逻辑。 这块不太清楚,老师怎么看?

    作者回复: 实际上,哪种方式都可以,判断标准是: 怎么判断哪种模块划分合理呢?实际上,我们可以反过来通过看它是否符合高内聚、低耦合特性来判断。如果一个功能的修改或添加,经常要跨团队、跨项目、跨系统才能完成,那说明模块划分的不够合理,职责不够清晰,耦合过于严重。

    2020-06-25
    5
  • Rain
    我怎么感觉老师提的话题有点跑偏?还是好好想一想如何做好设计模式比较合理对吗?另外,老师本课带的思路也有点偏差我觉得,毕竟我们要设计的是一个积分模块而不是一个淘宝系统。架构和设计都是有演变过程的,个人认为任何撇开并发与用户数而不谈的需求是耍流氓。此处也应该循序渐进的讨论设计方而不是如此的过度设计,谢谢。

    作者回复: 哪里过度设计了,麻烦指出来呢

    2019-12-27
    5
    1
  • dxy_123456
    在一家国企工作,领导是个注重员工培养的人,每天都会花半个小时学习UX、产品经理相关的课程。期初都是不感兴趣的,觉得和自己无关,但今天在老师的讲课中看到一些UX相关的知识,还是非常惊喜。我觉得多学习会发现很多相关领域的知识都是可以串起来的,技术人员当然重点还是多钻研技术,但既然在公司也做业务相关的工作,为何不再花一点时间把它做得更好呢。

    作者回复: 嗯嗯 ������

    2020-11-25
  • Jevan Wu
    "上下层系统之间的调用倾向于通过同步接口,同层之间的调用倾向于异步消息调用。" 请问,这点是基于什么样的考虑,我理解应该需要同步的才用接口,其他都用异步的方式就好了吧?

    作者回复: 可以看看我对其他人的回复

    2020-11-15
  • Single
    为什么同层推荐消息,上下层推荐同步接口调用吗?

    作者回复: 同层之间可能存在交叉调用,用消息中间件,不会出现很混乱。上下层不会有交叉调用,上层调用下次,用接口就可以了

    2020-08-02
  • 小川
    老师好,请教您一个问题,针对这个案例,我有一个困扰,数据库是否要维护 用户总积分这个字段,还有就是积分过期这种是如何实现方式比较好呢? 感谢老师的回答!

    作者回复: 可以维护,也可以不维护。维护的好处是不用每次都计算,但需要处理数据一致性的问题(每条积分记录和总积分之间)。如果积分表数据量不大,不维护也可以,如果积分表数据量很大,查询总积分很慢,就要维护。

    2020-06-14
收起评论
显示
设置
留言
99+
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部