作者:王洋(古训)
前言
大型系统的本质问题是复杂性问题。互联网软件,是典型的大型系统,如下图所示,数百个甚至更多的微服务相互调用/依赖,组成一个组件数量大、行为复杂、时刻在变动(发布、配置变更)当中的动态的、复杂的系统。而且,软件工程师们常常自嘲,“when things work, nobody knows why”。
本文将重点围绕软件复杂度进行剖析,希望能够帮助读者对软件复杂度成因和度量方式有所了解,同时,结合自身的实践经验谈谈我们在实际的开发工作中如何尽力避免软件复杂性问题。
导致软件复杂度的原因
导致软件复杂度的原因是多种多样的。
宏观层面讲,软件复杂是伴随着需求的不断迭代日积月累的必然产物,主要原因可能是:
1.对代码腐化的退让与一直退让。
2.缺乏完善的代码质量保障机制。如严格的 CodeReview、功能评审等等。
3.缺乏知识传递的机制。如无有效的设计文档等作为知识传递。
4.需求的复杂性导致系统的复杂度不断叠加。比如:业务要求今天 A 这类用户权益一个图标展示为✳️,过了一段时间,从 A 中切分了一部分客户要展示
标签:系统,复杂度,关于软件,接口,困局,模块,软件,代码 From: https://blog.51cto.com/u_13778063/6195206