复杂性

本篇笔记摘自《面向对象分析与设计》Grady Booch等著

1、系统越复杂,就越容易全面崩溃。

2、复杂系统不仅仅是层次化的,而且这种层次也代表了不同的抽象级别,一层构建于另一层之上,

没一层都可以分开来理解。在每一个抽象层中都可以发现有一组设备协作,为更高的抽象层提供服务。

可选择某个抽象层来满足特定的需求。

3、工业级软件的特征是,单个开发者要理解其设计的所有方面非常困难,几乎是不可能的。

4、软件的复杂性是一个基本特征,而不是偶然如此。我们认为这种固有的复杂性有4个原因:问题域的

复杂性、管理开发过程的困难性、通过软件可能实现的灵活性,以及刻画离散系统行为的问题。

5、在软件系统中规模大并不是太好的事情,我们追求的是通过发明一些聪明的、强大的方法来实现少些

代码,从而给我们一种简单的假象,另外也复用已有的设计和代码的框架。

6、离散系统从本质上来说具有有限数量的可能状态。在大的系统中,由于组合的缘故,导致可能的数目

变得非常大。我们试图以分离关注的方式来设计我们的系统,这样,系统某部分的行为对其他部分的影响就能

降至最低。但有一个事实仍未改变,即离散系统中的状态转移不能用连续函数来建模。软件系统之外的每个事件

都可能让系统进入一个新的状态,而且,状态与状态之间的关系并非总是确定的。

7、所有复杂系统都存在5个共同的属性:

层次结构:复杂性常常以层次结构的形式存在。复杂的系统由一些相关的子系统组成,这些子系统又有自己的系统,

如此下去,直到达到某种最低层次的基本组件。复杂系统的架构是它所有的组件以及这些组件之间的层次结构的函数。

相对本原:选择哪些作为系统的基础组件相对来说比较随意,这在很大程度上取决于子系统观察者的判断。

分离关注:组件内的联系通常比组件间的联系更强,这一事实实际上将组件中高频动作(涉及组件的内部结构)和低频

动作(涉及组件间的相互作用)分离开来。组件内部作用和组件间作用的差异让我们在系统的不同部分之间实现“分离关注”,

让我们能够以相对隔离的方式来研究每个部分。

共同模式:层次结构通常只是由少数不同类型的子系统按照不同的组合和安排方式构成的。

稳定的中间形式:复杂系统毫无例外都是从能工作的简单系统演变而来的......从头设计的复杂系统更本不能工作,也不能通过

打补丁的方式使其工作。必须从头开始,从能工作的简单系统开始。

8、发现共同抽象和机制极大促进了我们对复杂系统的理解。

原文地址:https://www.cnblogs.com/deepspace/p/10260715.html