上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
1.7 小结
■ 软件本质上是复杂的,软件系统的复杂性常常超出了人类智能的范围。
■ 软件开发团队的任务就是制造出简单的假象。
■ 复杂性常常以层次结构的形式表现出来,建立复杂系统的“是一种”和“组成部分”层次结构模型是有意义的。
■ 复杂系统通常是从一些稳定的中间状态演进而来的。
■ 人类的认识有一些基本的限制因素,我们可以通过分解、抽象和层次结构来克服这些限制。
■ 复杂系统可以从事物或处理过程的角度来分析,采用面向对象的分解有一些令人感兴趣的理由。在这种方法中,将世界看作是一组有意义的对象进行协作,实现某种高级的行为。
■ 面向对象分析和设计的方法实现了面向对象分解。面向对象的设计采用了一套表示法和过程来构造复杂软件系统,提供了丰富的模型,可以通过这些模型来阐明目标系统的不同方面。
[1]实际上,由于混沌的存在,即使是简单的连续系统,也可以展示出非常复杂的行为。混沌引入了一种随机性,使我们不能准确预测系统将来的状态。例如,给定两滴水在水流开始处的状态,我们无法准确预测它们在水流结束时相互之间的关系。在各种系统中都发现了混沌,如气象、化学反应、生物系统甚至计算机网络。幸运的是,所有混沌系统中似乎都存在更深层次的有序,以一种名为“吸引子”的模式存在。
[2]复杂软件系统还包含其他类型的层次结构。其中特别重要的是模块结构,它描述了系统物理组件之间的关系,以及处理层次结构,它描述了系统的动态组件之间的关系。
[3]Langdon指出,这种正交关系在很早的时候就有研究了。他说:“C.H.Waddington注意到双重观点可以追溯到古希腊时代。德谟克利特提出了一种被动的观点,他断言世界是由原子组成的。德谟克利特的观点将事物作为关注的中心。另一方面,主动观点的经典代言人是赫拉克利特,他强调处理的概念。”[34]