一、熵增定律
熵的概念最早起源于物理学,用于度量一个热力学系统的无序程度。热力学第二定律,又称“熵增定律”,表明了在自然过程中,一个孤立的系统总是从最初的集中、有序的排列状态,趋向于分散、混乱和无序;当熵达到最大时,系统就会处于一种静寂状态。
通俗的讲:系统的熵增过程,就是由原始到死亡的过程。“熵”是“活跃”的反义词,代表负能量。
非生命,比如物质总是向着熵增演化,屋子不收拾会变乱,手机会越来越卡,耳机线会凌乱,热水会慢慢变凉,太阳会不断燃烧衰变……直到宇宙的尽头——热寂。
在软件开发、维护过程中。软件的生命力总是从最初的理想状态,逐步趋向于复杂、混乱和无序状态发展,直到软件不可维护而被迫下线或重构。这种损坏软件质量的因素的逐步增长,叫做软件的熵增现象。
二、系统复杂性
表象
- 代码混乱、新人不易上手
- 代码高度冗余,复用性低,开发效率低
- 扩展和修改困难,牵一发动全身
- 业务数据错乱
- 程序性能低下
- 系统难以移置
- BUG率居高不下
深层原因
- 变更放大
- 认知负荷
- 未知的未知
三、复杂性的原因
复杂性是由两件事引起的:依赖性和模糊性。
1、依赖关系
依赖关系是软件的基本组成部分,不能完全消除。实际上,我们在软件设计过程中有意引入了依赖性