首页 > 其他分享 >研究思考丨关于软件复杂度的困局

研究思考丨关于软件复杂度的困局

时间:2023-04-17 15:01:36浏览次数:28  
标签:系统 复杂度 关于软件 接口 困局 模块 软件 代码

作者:王洋(古训)

前言

大型系统的本质问题是复杂性问题。互联网软件,是典型的大型系统,如下图所示,数百个甚至更多的微服务相互调用/依赖,组成一个组件数量大、行为复杂、时刻在变动(发布、配置变更)当中的动态的、复杂的系统。而且,软件工程师们常常自嘲,“when things work, nobody knows why”。

本文将重点围绕软件复杂度进行剖析,希望能够帮助读者对软件复杂度成因和度量方式有所了解,同时,结合自身的实践经验谈谈我们在实际的开发工作中如何尽力避免软件复杂性问题。

导致软件复杂度的原因

导致软件复杂度的原因是多种多样的。

宏观层面讲,软件复杂是伴随着需求的不断迭代日积月累的必然产物,主要原因可能是:

1.对代码腐化的退让与一直退让。

2.缺乏完善的代码质量保障机制。如严格的 CodeReview、功能评审等等。

3.缺乏知识传递的机制。如无有效的设计文档等作为知识传递。

4.需求的复杂性导致系统的复杂度不断叠加。比如:业务要求今天 A 这类用户权益一个图标展示为✳️,过了一段时间,从 A 中切分了一部分客户要展示

标签:系统,复杂度,关于软件,接口,困局,模块,软件,代码
From: https://blog.51cto.com/u_13778063/6195206

相关文章

  • 研究思考丨关于软件复杂度的困局
    作者:王洋(古训)前言大型系统的本质问题是复杂性问题。互联网软件,是典型的大型系统,如下图所示,数百个甚至更多的微服务相互调用/依赖,组成一个组件数量大、行为复杂、时刻在变动(发布、配置变更)当中的动态的、复杂的系统。而且,软件工程师们常常自嘲,“whenthingswork,nobodyknow......
  • 时间复杂度
    算法引入a+b+c=1000且a^2+b^2=c^2,求出a,b,c所有组合结果解题思想:枚举法,列出所有可能结果forainrange(1001):forbinrange(1001):forcinrange(1001):ifa+b+c==1000anda**2+b**2==c**2:print......
  • 什么是时间复杂度?
    原文点此跳转什么是时间复杂度?定性描述该算法的运行时间,一个函数、用大O表示,例如O(1)、O(n)、O(logN)...常见的时间复杂度量级常数阶O(1)对数阶O(logN)线性阶O(n)线性对数阶O(nlogN)平方阶O(n²)立方阶O(n)K次方阶O(n^k)指数阶(2^n)上面从上至下依次......
  • 关于软件测试领域的 Happy Path
    在软件测试领域,happypath是指一组测试用例,其中每个测试用例都覆盖了一个顺畅运行的路径,即一组不需要任何异常处理的输入和操作,以及相应的预期输出和结果。通常,这些测试用例被设计为模拟最常见、最基本和最常用的用户行为和用例场景,以确保软件在正常操作条件下可以正确地运行和处......
  • 由数据范围反推算法复杂度以及算法内容
    一般ACM时间限制是1-2秒这种情况下,c++代码操作次数控制在1e7~1e8下面给出在不同数据范围下,代码时间复杂度和算法如何选择1.n<=30,指数级别,dfs+剪枝,状态压缩dp2.n<=100=>O(n3),floyd,dp,高斯消元3.n<=1000=>O(n2),O(n2logn),dp,二分,朴素版Dijkstra,朴素版Prim、Bellman-Ford4.......
  • 故障设备扫码报修,一招打破企业报修困局
    很多行业都实现了机械化自动化的生产阶段,但是设备出现故障还是需要设备管理者进行报修,传统的报修方式又累又麻烦,如今微信扫码报修就能打破企业报修困局,从而提高了企业的管理水平。一、快速扫码报修故障扫码报修系统,区别于传统的电话、纸质报修的方式,故障报修人通过手机故障报修系统......
  • 排序复杂度
    常见的排序算法中,效率高到低的排名如下:1.快速排序(QuickSort):时间复杂度平均情况下为O(nlogn),是最快的排序算法之一。2.归并排序(MergeSort):时间复杂度稳定为O(nlogn),但需要消耗额外的内存空间。3.堆排序(HeapSort):时间复杂度为O(nlogn),实现简单,不需要额外的内存空间。4.希......
  • 【DS】算法的时间复杂度与空间复杂度
    文章目录算法的时间复杂度与空间复杂度1.算法效率2.时间复杂度2.1时间复杂度的概念2.2大O渐进表示法2.3常见时间复杂度计算实例实例1——实例2——实例3——实例4——时间复杂度是做悲观预期实例5——冒泡排序·思想计算实例6——二分查找·思想计算实例7、8-——递......
  • 根据数据量来判断算法的复杂度
    根据数据量来判断算法的复杂度通过运行时间判断数据量1000ms即1s,大概可以运行10的7次方数量级的运算左边的复杂度在1s内能处理的数据量大小......
  • 时间复杂度和空间复杂度分析
    1.七种时间复杂度__上  2.七种时间复杂度__下  3.例题1+n  4.递归的四种情况:后续需要对每一条做出详细描述  5.思考题  ......