系统设计原则


本指南概述了系统设计的关键原则。该指南应帮助您基本了解系统思维和复杂性理论中的关键概念,以及如何将这些概念应用于各种复杂系统的设计。
 
整体方法
系统方法是一种整体方法,这意味着我们主要在其所属的整体的背景下寻求理解某事物。在开始更改部件之前,我们寻求了解部件存在的总体环境以及它们如何相互关联以影响彼此和整个系统。系统设计同样始于对我们有兴趣设计的系统的整体考虑。

  • 一开始就理解部件如何与整体形式相互关联  
  • 整合而不是分割它,聚集形成更大的集成系统,我们目前的设计和简化方法工程通过将复杂问题分解为小的子问题,然后逐个解决它们,然后将这些解决好的子单元重组为整体分层总体规划。这个结果是形成筒仓、边界、缺乏水平信息流,从根本上造成了瓦解的系统。系统方法强调组织原则;组件如何融入整个组织模式。它们需要被集成和水平连接而不是分解和在分层总体规划中垂直重组。
  • 处理模式不是专注于具体部件:抽象是去除连续的来自表示的细节层,以便仅捕获对所有实体通用的基本特征、种类和独立于它们的特定形式;模式形成是指一个连贯的过程 ,随着时间的推移,元素之间的一组相关性开始形成并持续存在。作为系统设计师,我们主要感兴趣的是在系统的整体格局中,形成、整合、  或这种模式的瓦解。 
  • 多维,不尝试减少或下降到下一个级别处理所有系统的维度,我们要首先尝试了解不同的整个系统的维度和质涉及不同的因素。例如,一个城市涉及社会 经济、技术和环境方面的考虑。每个维度都有自己不同的内在逻辑和工作原理;我们不会试图将一切都降低到一个层次。我们今天设计的大多数东西都是优化的单功能和输出,认为通过简化我们就可以提高产量和效率。然而,这个仅在对系统进行局部观察时才成立,例如,我们可以想到单一文化的农业,这在考虑纯食物输出时效率很高,但是当我们返回并开始考虑所有相关的环境和因素它看起来并不那么有效。

 
开放系统
复杂系统从根本上说是开放系统。互联网、城市或社交网络都是开放的,任何人都可以加入或离开,它们的边界是可渗透的。
例如,一个城市可能跨越很大的地理区域,因为不同的城市中心相互转化。我们可以在地图上画线定义司法管辖区,但从设计的角度来看,它们是很大程度上是任意的。除此之外,组件正在离开并且在动态中加入、耦合和解耦系统 。
复杂系统的这一特性从根本上改变了我们应该如何设计它们,因为没有边界条件,我们无法像设计更简单的系统时那样进行控制。如果没有能力直接将秩序强加给系统,我们就必须处理自组织和涌现的过程。 将秩序强加于系统要求作为设计师的我们学会处理上下文。(上下文为王
  • 复杂系统是网络的没有任何固定边界。
  • 系统设计涉及学习观察和工作的上下文 ,为上下文设计,复杂系统没有线性物理的因果关系 ,因此我们不能说,如果我这样做,就一定会得到那个结果。这就改变了游戏规则,需要我们重新思考,什么时候系统是开放的,我们没有权限控制,而只是影响系统,我们可以通过改变上下文来影响它。
  • 了解动态使用自组织的流程,自组织是全球范围内的自发创造最初之间局部相互作用的连贯模式、独立组件。想想人们穿越街道。有没有一个精心策划的过程?只是通过人与人之间的本地互动分化成一个独特的模式,形成协调的人流向各个方向前进。没有正式的设计和集中协调,组件以非线性网络方式交互。
  • 努力使秩序涌现,没有设计师强加的自上而下的控制,复杂系统更像是生命系统,它们通常具有很多适应性 ,遵循自己议程的行动者,例如处于组织、运输系统中的汽车或生产者、供应链。我们不试图强加秩序,而是试图为它的涌现emerge创造合适的条件,这些涌现是来自系统中代理本身的动作。我们不知道互联网未来会怎样?哪些新技术将建立在网络上,或者哪些技术将结合起来形成新技术的可能性。在这世界纷繁复杂,未来不只是未知。它可能很好但是不可知的,这种根本的不确定性改变了我们面向未来的整体方法。因为未来是不确定,我们需要以开放的方式设计系统 ,面向不同结果的涌现的开放。

 
关系法则
在连接性较低的情况下,定义实体只是关注其内部元素属性集,但随着连接性程度的提高,将整个组织定义为系统的部件之间的连接。在连接和集成的低水平上,系统的部件定义了关系和整体,但给定一个具有密集连接网络的集成系统,当部件由连接并在整体形成时,这种情况被颠倒了。在这个复杂的阶段,我们必须切换到关系设计范式,以开始查看和设计连接网络。
  • 将范式更改为我们为开放而设计的范式系统,而不是约束良好的封闭系统,就不得不放弃控制、可预测性和完美秩序的设计,(banq注:这三种体现陷入因果确定性崇拜的焦虑强迫症洁癖)。在低水平的连通性下,定义一个实体的只是它的元素集,但作为连接性被打开后,它是定义整体的部件之间的连接 (banq注:DDD聚合的设计原则),复杂性体现在我们必须切换到关系设计范式才能开始查看和设计网络的连接。(banq注:关系数据库的核心价值所在) 
  • 协议设计,系统是从连接网络中涌现的东西Object, 要设计系统,我们需要设计连接,而连接受交互规则支配,有一些规则来管理时才能成功交互,这些规则称为协议,定义协议我们可以更好地定义发生的交互以及会出现什么结果。例如互联网的HTTP协议就是一个好的协议设计。(banq:业务规则或算法属于一种协议)
  • 协同协议方法:一个整体,不同于其部分的简单总和。一个协同设计方法是一种专注于组织内各部分之间的相互作用以识别并发展协同效应。通过系统设计,我们试图将负面影响降至最低 ,协同作用并最大限度地发挥积极的协同作用。例如 噪音污染是一种负协同作用,其中系统以破坏性的方式相互作用。我们的许多系统设计时只考虑有限的协同作用,结果是产生废物和其他形式的系统污染物。污染物不是“坏东西”,而只是设计结果的产物,在错误的上下文中产生破坏性相互作用的东西,即负协同作用。当我们设计联系和协同作用,我们的目标是把事情放在一起共同努力,减少负面协同效应。 (业务流程是一种协同协作)
  • 非线性:设计复杂的系统需要高度的意识非线性,即许多系统的结果不是一些线性因果关系,而是许多的函数事物以网络方式交互。流程不仅仅需要沿着一个过程从头到尾独立地放置,而不是许多不同的过程和功能正在发生在一个并行架构,它们在进程之间和进程之间交互和域的网络方式。系统中的组件不仅仅是相互交互领域,也是跨尺度。复杂的工程系统是所谓系统的系统。它们具有多层层次结构。都市区是许多重叠的组合:来自交通和供水的并行基础设施系统、到电网和电信网络。上下文设计是考虑许多不同的系统和关系以及它们如何以非线性协同方式相互作用产生涌现的结果。
  • 反馈循环设计:系统设计需要针对反馈进行设计,研究如何流程以循环设计模式连接。大部分我们目前的设计方法侧重于优化筒仓内的零件,而没有适当考虑跨整个系统的筒仓之间的流动。结果是:输入资源到线性过程环境中的并将废物输出回环境上下文。 

 
去中心化网络
当我们从一个连接水平相对较低的系统变成一个连接水平非常高的系统时,系统的构成和行为会发生根本性的变化。在相对孤立的系统中,我们的重点是组件及其属性。由于交互成本高,系统通常被绑定到集中式单体配置中,以降低组织的整体交易成本。但是,当我们降低交互成本时——正如 IT 和其他创新所做的那样——然后连接性增加,系统可以从这种集中式配置中分离出来,允许组件通过网络分布和重新协调。
 
模块化设计
在设计系统时,我们的关键架构之一考虑将是决定我们是否正在建立一个同构系统或模块化系统。模块化设计是一种围绕自主模块的思想构建的设计模式  。
可以独立创建,易于配置,并且重新配置成不同的系统。这方面的例子可能包括由自主电气单元制成的电子电路板或由连接在一起的预制模块制成的房屋。  
模块化是复杂工程系统的一个关键特征 ,互联网是模块化架构的典范。  
模块化设计的优点包括:

  • 它们可以使分布式协作和解决问题;
  • 模块可以无休止地重复使用,就像乐高积木一样,我们可以组合和重新组合它们,使其更有可能成为循环可持续  
  • 作为解决方案;模块化系统更具通用性、适应性和可以更容易地定制;

模块化设计可以是一个非常重要的传染机制,也应该更容易管理维护系统的生命周期作为组件可以很容易地换入和换出。 
 
服务网格设计
随着连接性的激增,我们越来越远离从独立系统进入服务世界网络,系统设计师的工作是理解和使用这些动态网络、它们的结构以及如何这导致了它们的整体功能。在这种情况下系统 ,设计专注于集成网络的设计多样化和自主的(通常是用户生成的)模块 ,提供综合服务。  
这需要开发具有协议的平台  ,可以在一个共享的组件中集成不同的组件  ,连接和数据的基础设施,同时使组件通过松散耦合保持其自主性。  
服务的设计模式就是最好的例证,面向分布式 架构的一种方法,采用松散耦合服务的系统架构,  标准化的接口和协议以提供无缝跨平台集成。
 
进化的生命周期设计
复杂系统基本上是动态的、自适应的和不断发展的系统。这样做的最终结果是系统可能会发生变化,并且不会决定遵循从摇篮到坟墓的线性生命周期。它可以学习、成长和适应内部和外部条件,以更新自己。如果我们想要可再生的、有弹性的和可持续的系统,我们就必须设计出随着时间的推移而进化的系统。弹性为系统保持或返回正常运行的能力。

点击标题见原文PDF