4 蕴含的道理
4.1 软件架构技术的发展的推动力是满足日益增长的复杂性
简单性一向是现代自然科学、特别是物理学的一条指导原则。许多科学家相信自然界的基本规律是简单的。爱因斯坦曾是这种观点的突出代表者。虽然复杂现象比比皆是,人们还是努力要把它们还原成更简单的组分或过程。事实上不少复杂的事物或现象,其背后确实存在简单的规律或过程。应当学会比较和刻画来自简单机理的复杂性,否则很难期望会正确分析那些机理不明的复杂事物或现象。
某些软件系统并不复杂,它们通常是由一个人提出、构建、维护和使用的,这个人通常是编程新手或独立工作的专业开发人员。然而企业级的应用的复杂性却越来越高。这些系统表现出非常丰富的行为,由真实世界的事件驱动或发出驱动事件。这些应用维护着数百万条信息记录的完整性,同时允许并发的更新和查询。这些系统包含了众多离散且相互作用的对象,发出命令并控制真实世界的实体。这样的软件系统通常具有很长的生命周期,随着时间的推移,许多用户渐渐依赖于这些软件系统的正常工作。
企业级软件的特征是,单个开发者要理解其设计的所有方面非常困难,几乎是不可能的。武断地说,这些系统的复杂性超出了人类智能的范围。不幸的是,我们所说的这种复杂性似乎是所有大型软件系统的基本特征。从根本上来说,我们可以掌握这种复杂性,但不能消除这种复杂性。我们认为这种固有的复杂性有4个原因:问题域的复杂性、管理开发过程的困难性、通过软件可能实现的灵活性以及刻画离散系统行为的问题。
复杂性常常以层次结构的形式存在。复杂的系统由一些相关的子系统组成,这些子系统又有自己的系统,如此下去,直到达到某种最低层次的基本组件。许多复杂系统都有几乎可分解的层次结构,正是这一事实让