复杂系统不仅仅是层次化的,而且这种层次也代表了不同的抽象级别,一层构建于另一层之上,每一层都可以分开来理解。 同一层抽象中的所有部分之间以某种定义良好的方式进行交互。
关系越靠近,或者联系越大的对象之间的交互越频繁。
软件的复杂性是一个基本特征,造成这种复杂性的原因有4个: 问题域的复杂性、管理开发过程的困难性、通过软件可能实现的灵活性、刻画离散系统行为的问题。
问题域,可以说成是功能集合。 先要理解要实现的复杂系统有哪些功能,然后将这些功能表述成需求,实现一个需求就是完成了这个系统的一个功能。
复杂系统的5个属性:
1. 层次结构,复杂系统都有几乎可分解的层次结构,正是这一事实让我们能够理解、描述甚至‘看到’这样的系统和它们的组成部分。
2. 相对原本,选择哪些作为系统的基础组件相对来说比较随意,这在很大程度上取决于系统观察者的判断。
3. 分离关注,组件内的联系通常比组件间的联系更强。 这一事实实际上将组件中高频率的动作(组件内部结构)和低频率的动作(组件间的相互作用)分离开来。