第296页 把分解作为复杂度管理工具
- 章节名:把分解作为复杂度管理工具
- 页码:第296页
整个13章都在讲复杂度和分解,还是讨论的比较深入的。
这本书中也给复杂性下了一个比较简单的定义
A system is complex if it has many interrelated, interconnected, or interwoven entities and relationships. 引自 把分解作为复杂度管理工具 对于具体的复杂度,书中认为可以选定具体的计算方式从而使其成为系统的一个绝对属性。比如说可以将其定义为(对象的数量 * 对象类型的数量 * 接口的数量)。
系统要达到相应的功能和性能,因此总会需要一个最小的复杂度,这称为系统的本质复杂度(essential complexity),这部分往往是由要解决的问题本身的复杂度决定的。那么整体复杂度中不属于本质复杂度的部分,可以称为无端复杂度(gratuitous complexity),也是在系统设计中要尽量避免的。
这本书同样提到了难懂(complicated)的概念,和前面的定义类似,并称其为表面复杂度(apparent complexity)。表面复杂度和实际复杂度是相互独立的,抽象、分解、分层等手段在降低表面复杂度的同时,却会增加实际复杂度。例如下图所示,我们给对象分组后,能够使得我们更加容易理解系统从而降低表面复杂度,但却会使得系统内部的接口增加从而使得实际复杂度增加。
书中提到了,系统的实际复杂度应当是我们要关注的最重要指标,但也需要把表面复杂度控制住人类能够处理的范围之内。
我觉得上述对于复杂度的讨论还是非常清晰的,可惜这本书并没有讨论到变化(不论是需求的变化还是系统本身的变化)对于复杂度的影响,有点美中不足。
244人阅读
说明 · · · · · ·
表示其中内容是对原文的摘抄