软件设计之美
郑晔
开源项目 Moco 作者
19890 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 42 讲
软件设计之美
15
15
1.0x
00:00/00:00
登录|注册

31 | 应用的设计:如何设计一个数据采集平台?

你好,我是郑晔!
上一讲,我给你讲了 Moco 的设计,这是一个程序库级别的设计。除了开发一个程序库,在日常工作中,还有一种工作是程序员们非常熟悉的,就是开发一个应用。与之对应的设计就是应用设计。
也许你会说,应用设计不就是按照之前讲的 DDD 的方法,先通过事件风暴建立通用语言,然后,再找出子域和划分出限界上下文,最后,再按照模板找出各种对象吗?
是的,设计的基本过程确实是这样的。不过,DDD 的方法只能保证我们设计出一个可以接受的方案。如果你想有一个更有扩展性的设计方案,就需要多花一点时间去构建一个更好的模型
这一讲,我就以一个金融指数系统为例,给你讲一下如何更好地设计一个应用。

一个指数系统

在金融系统中,有一个概念叫指数,用来表示金融市场的活动,比如有股票指数、期货指数等等。比较著名的指数有道琼斯指数、标准普尔指数。这个世界上的指数多得数不胜数,每个金融机构都会有自己的指数,而且,它们还会不断推出新的指数。
那指数是怎么算出来的呢?如果以股票为例,就是获取一堆股票的价格,然后根据一个公式算出一个结果。比如,我们有一个公式,A0.2+B0.3+C*0.5,我们把公式里的数据部分称为指标,也就是公式中的 A、B、C,这个公式表示这三种指标分别占比 20%、30% 和 50%。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文以金融指数系统为例,介绍了如何更好地设计一个应用。在金融系统中,指数是用来表示金融市场活动的概念,其计算过程可以分为实时获取数据和根据公式计算结果两部分。文章强调了职责划分的重要性,将指数计算过程分成数据获取和公式计算两部分,并对每部分进行细化。通过实际案例,深入浅出地介绍了应用设计的重要性和设计方法。文章还讨论了如何衡量应用的设计水平,提出了四个标准:没有自动化、开发员修改代码实现、开发员修改配置实现、业务员修改配置实现。同时,文章还探讨了如何构建一个外部 DSL,以及如何利用复合公式提升系统的处理能力。总的来说,本文通过实例详细阐述了应用设计的重要性和方法,对于开发人员和系统设计者具有一定的借鉴意义。

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

全部留言(14)

  • 最新
  • 精选
  • 人间四月天
    说的非常好,和我现在做的风控预警系统类似,同样适用于你说的这个通用模型,开发人员一定要有抽象能力,设计模式是一种特定场景的模型,同类应用系统也有通用的模型,采集,计算,分析,监测,预警,报告,如果你做的系统有这样的功能,那么就可以应用通用设计模型。 你说的编码实现,到开发人员配置,到业务人员配置,我们称为配置化,低代码,无代码化,这些目的都是快速响应需求,减少重复,减少开发投入的好方法,也是通用方法,我们同样应用于多个业务系统,我们有一个系统,要投入三分之二人力,支持开发,测试,我们做到了业务自主配置,开发完全解放出来了,因为这些工作就是低级重复,需要大量沟通,配置工作。开发人员要就是为解决问题的,一定避免低级,简单,重复工作,能自动化就不要手工,能自助化,就不要人工协作,对提升水平没有任何帮助,时间还浪费了,随着年龄增长,水平没有进步,本质上其实是在退步!

    作者回复: 非常棒的分享!

    2020-08-07
    27
  • 佟宏元
    关于:“业务人员提出的是问题,解决方案是由技术人员给出的,千万别混淆问题和解决方案。”这句话 我非常认同,业务人员提出的问题,和他们对于这个问题的处理方案,往往和我们软件编写的过程差异很大,好的代码设计,应该是结构清晰,没有冗余,不仅可以正确解决问题,又考虑到性能与可读性,因此很多情况下我们的设计,不应该按照业务实际的解决方式去做。比如人的思维是按顺序去做某件事,一件一件来,但是系统是可以并行的。所以我在小组内经常强调,不能完全按照业务实际的解决方案去做代码的设计,虽然设计来源与实践,但是系统就是为增强人类行为而创作的。

    作者回复: 很好的补充。

    2020-11-22
    9
  • 这篇我觉得我还需要看一遍,一路跟着老师学习,涨了不少见识,好多内容都是以前没听说过,又疑惑很久的,都得到解答。希望老师还有其他软件设计类作品

    作者回复: 我努力!

    2020-08-09
    4
  • 人月聊IT
    老师,下一个专栏可以分享一个大型项目从需求到交付的详细过程吗?目前市场没有这种,尤其是其中的代码重构的落地,单测的调整,399也不是问题,一定买

    作者回复: 我还没说要写新专栏,你就给我安排上了😂

    2021-05-15
    2
    2
  • 王十一
    老师还会有下一门课么

    作者回复: 暂时回答不了这个问题。

    2020-08-07
    3
    2
  • 花生无翼
    拒绝低水平重复,应用设计从一开始就应该尽可能做好设计,方便后续扩展。很多业务代码都是CRUD,怎么才能把复杂的事情简单化,这是值得思考的问题,一定要做有含金量的技术。

    作者回复: 你的理解很到位。

    2020-08-07
    1
  • Jxin
    1.跟着郑烨大佬长见识。 2.因为要学郑老师这门课,就跟了宫老师的两门编译原理课,很香,值得推荐。 3.目前调配做价格系统。定价时的价格检验项看来可以做成配置化了。除了自己写个语义分析器。引入规则引擎有时也不错。

    作者回复: 哈哈,居然成了推销课。

    2020-08-07
    1
  • 阳仔
    总结一下 分离关注点,把不同的职责划分出来。 业务人员提出问题,技术人员提供解决方案,是否有技术含量取决于技术人员怎么去实现解决方案 一个好的设计要从拒绝低水平重复开始

    作者回复: 总结得不错。

    2020-08-07
    1
  • 圈圈gor
    理论很美,然而实际上还是要权衡时间成本,最后还是沦为了低水平的重复劳动…唉

    作者回复: 没看到美好的未来,怎么知道往哪里努力呢。

    2020-10-20
  • ifelse
    一个更好的设计从拒绝低水平重复开始,把工作做成有技术含量的事情--记下来
    2022-05-22
收起评论
显示
设置
留言
14
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部