何鑫个人博客

领域驱动设计之认识软件复杂度

  • 2021-09-08 23:26:31
  • 技术
  • 151

软件复杂度主要表现在两个方面,第一个是理解能力,第二个是预测能力。

理解能力

理解能力指的是软件难以理解,它来源于软件的规模和软件的结构。软件的规模与业务密切相关,需求的增长和业务关系的混杂带来软件规模的指数级增长,最直接的表现就是代码量的增长,技术债越来越多,最终将软件拉向深渊。软件结构的复杂来源于我们对软件质量的要求,为了应对高并发,实现高可用,我们拆分业务,引入框架,增加各种中间件,看似提高了软件的质量,实际也使得软件结构越来越复杂。

预测能力

预测能力指的是预测软件变化的能力。技术革新,业务变化,世界无时无刻不在改变,软件设计也需要去适应各种技术和业务上的变化,一方面要避免设计不足导致牵一发而动全身,另一方面也要防止过度设计而导致维护成本的增加。预测能力难的就是在设计不足与过度设计之间找到比较完美的平衡。