美文网首页
软件系统的复杂性

软件系统的复杂性

作者: taocore | 来源:发表于2020-02-13 16:37 被阅读0次

软件系统,就是使用软件技术来实现业务价值。所以,软件系统本身包含两个方面:

  1. 业务
  2. 技术

业务才是软件系统的核心价值之所在。试问,如果软件使用了非常先进高超的技术,但是却没有解决业务问题,这样的软件有何意义?

然而,现状是大部分开发人员更看重技术,而忽略了业务。为什么会这样?我想可能的原因是:
其一,技术虽然服务于业务,对开发这来说却是起点,如果没掌握好技术,又如何服务于业务呢?
其二,不同公司业务需求不同,对作为打工者的开发人员来说,技术经验更通用,业务经验不容易迁移。

好像跑题了。

同样的,软件系统的复杂性也分成两个方面:

  1. 业务复杂性。这部分的复杂性是业务本身的复杂性,所以是核心复杂性。是由复杂的功能性需求所驱动的。
  2. 技术复杂性。这部分是由非功能性需求所驱动的,比如安全性、可用性等。属于外围复杂性。

技术复杂性更通用,所以有普遍的解决方案,如安全框架、代理或负载均衡器等等。正因为这方面的方案更通用且看得见、摸得着,所以,不论开发者经验如何,对技术框架都是或趋之若鹜或津津乐道。

随着互联网的发展,系统面向的用户更广泛。为支撑大体量的用户和大并发量,技术架构快速发展。特别是几乎被奉为圭臬微服务架构,对运维提出了前所未有的挑战。从虚拟机到容器,云原生成了标配。纵观整个软件技术发展路径,应对技术复杂性的方法与工具,有了巨大的发展,技术复杂性得到一定程度上的解决。

再回过头来看软件的核心复杂性。虽然,十多年前《领域驱动设计》就提出通过划分子域与界限上下文(个人不喜欢这个翻译,感觉“限定语境”更简洁达意)来形成统一语言,以同步业务需求、设计与代码,至今业内在实践上并无标准。此处迷雾阵阵,正是考验架构师实力与经验之所在。

相关文章

  • 6 | 设计思想

    系统复杂性 软件系统来源与真实世界的需求,由于现实世界系统的复杂,导致了软件系统的复杂性,其复杂性常常超出了人类认...

  • 软件系统的复杂性

    软件系统,就是使用软件技术来实现业务价值。所以,软件系统本身包含两个方面: 业务 技术 业务才是软件系统的核心价值...

  • 【详解】以银行零售业务为例,一个案例说清楚可视化微服务架构

    Part 1: API设计和策略 软件系统的复杂性是一个很痛苦的问题,而且无法避免。Fred Brooks将复杂性...

  • 微服务与领域驱动设计,架构实践总结

    怎样的架构才能配得上造到飞起的变化? 一、软件复杂性 1、复杂原因 如果软件系统存在持续的迭代周期,那么其中业务、...

  • 基于插件技术的软件架构有什么优势和先进性?

    随着软件规模和复杂性的不断增加,在软件设计中,软件的局部和整体的系统结构显得越来越重要,对此人们提出了软件体系结...

  • 软件设计思考

    前言 随着需求和规模的增大,软件系统变成了一个复杂系统,除了实现业务需求和非功能需求的必要复杂性外,我们希望系统的...

  • JavaScript 中的函数式编程原理

    经过很长一段时间的学习和面向对象编程的工作,我退后一步,开始思考系统的复杂性。 “复杂性是任何使软件难以理解或修改...

  • 生命3.0(读书笔记)

    生命是什么? 生命其实就是具有一定复杂性的系统,这个系统会不断复制自我。生命有硬件也有软件,硬件是生命有形的部分,...

  • restful与webservice

    restful 本质:一种软件架构风格 核心:面向资源 解决问题: 降低开发的复杂性 提高系统的可伸缩性 ...

  • 1. Restful架构与实战(笔记)

    Restful的本质 一种基于资源的软件架构风格 核心 面向资源设计API 解决的问题 降低开发的复杂性 提供系统...

网友评论

      本文标题:软件系统的复杂性

      本文链接:https://www.haomeiwen.com/subject/nfqlfhtx.html