本主题构成了系统思维知识领域(KA)的一部分。它将系统模式识别为系统思维的基本思想的一部分。描述了模式的一般概念和一些示例。最后从原理和模式的角度讨论了系统科学。
系统模式
本节首先讨论模式的定义、类型和普遍性。接下来,以层次结构和网络模式、元模式和系统工程(SE)模式的形式讨论基本模式的示例。然后以系统原型的形式展示故障模式(或“反模式”)的样本,以及软件工程和其他领域中的反模式。最后,对模式作为成熟度指标进行了简要讨论。
模式定义和类型
模式的一般定义是,它是一种可观察到的规律性的表达。模式存在于自然系统和人工系统中,并在系统科学和系统工程(SE)中使用。科学中的理论就是模式。工程广泛地使用模式。
模式是一组或一类问题、解决方案或系统中的相似性的表示。此外,一些模式也可以表示唯一性或差异,如唯一性模式或唯一标识符,如汽车车辆识别码(VIN)、消费品上的序列号、人的指纹、DNA。这种模式是一个惟一标识符,对一个类中的所有实例(比如指纹)都是通用的,用来区分该类中的所有实例。
术语模式主要用于建筑和城市规划(Alexander et al. 1977, Alexander 1979)以及软件工程(例如,Gamma et al. 1995;Buschmann et al. 1996)。他们的定义将模式描述为将设计思想捕获为原型和可重用的描述。设计模式以模板的形式为给定上下文中常见的实际问题提供通用的解决方案。设计模式不是可以直接转换为特定解决方案的完成设计。它是一个如何解决问题的描述或模板,可用于许多不同的具体情况(Gamma等人1995;维基百科2012 b)。亚历山大非常强调调解和解决竞争力量的模式作用,这是阴阳原理的一个重要应用。
自然系统和工程系统一般模式的其他例子包括:工程手册中的常规设计、适用于多个应用领域的复杂系统模型(如进化和捕食者-猎物模型)、领域分类、体系结构框架、标准、模板、体系结构风格、参考体系结构、产品线、抽象数据类型、以及阶级层次中的阶级(海伯特森2009)。Shaw和Garlan (Garlan 1996)在讨论软件架构时交替使用了模式和风格这两个术语。Lehmann和Belady (Lehmann 1985)检查了一组工程软件系统,并跟踪它们随时间的变化,观察到它们捕获的规律,作为进化规律或模式。
模式已经与基于模型的系统工程(MBSE)相结合,从而形成了基于模式的系统工程(PBSE) (Schindel and Smith 2002, Schindel 2005)。
在科学和工程的系统实践中也存在模式。在最高层次上,Gregory(1966)将科学和设计定义为行为模式:
科学方法是一种解决问题的行为模式,用于发现存在的事物的本质,而设计方法是一种行为模式,用于发明还不存在的有价值的东西。
规律不仅存在于反复出现的问题的积极解决方案中,也存在于失败的模式中,即通常尝试的解决方案总是无法解决反复出现的问题。在软件工程中,这些称为反模式,最初是由Koenig(1995)创造和定义的。反模式与模式类似,只是它给出的不是解决方案,而是表面上看起来像解决方案但实际上不是解决方案的东西。凯尼格的理论基础是,如果一个人不知道如何解决问题,了解可能的死胡同可能还是有用的。反模式可能包括病理模式(即,常见疾病)、正常功能的常见损害,以及基本的反复出现的问题情况。这些反模式可用于帮助确定问题的根本原因,并最终生成解决方案模式。这个概念被扩展到软件之外,包括项目管理、组织和其他反模式(Brown等,1998;2012年反模式目录)。
在本节的其余部分中,模式被分为基本模式和反模式(或失败模式)。
基本的功能模式
本节中的基本模式包括一组层次结构和网络模式,然后是一组元模式和SE模式。
层次结构和网络模式
第一组模式是由一对多关系类型(扩展自Hybertson 2009, 90)区分的层次结构模式的代表性类型,如下表所示。之所以首先介绍这些模式,是因为层次模式融入了本节中讨论的许多其他模式。
表 1. 层次模式。 (SEBoK 原创)
关系 |
层次结构类型或模式 |
基本:重复一对多关系 |
一般:树形 结构 |
整体的一部分 |
组合(或聚合)层次结构 |
部分+二元论:层次结构中的每个 元素 都是一个整体,即,既是具有部分的整体,又是更大整体的一部分 |
Holarchy(完整子的组合层次结构)(Koestler 1967) - 有助于识别多级系统中跨级别的相似性 |
部分+互换性:部分为克隆,即可互换 |
克隆的组成层次结构(Bloom 2005)。
注意:此模式反映了横向相似性。 |
部分+自相似:在每一层,整体的形状或结构在部分中重复,即层次在所有尺度上都是自相似的。 |
分形。
注意:此模式反映了垂直相似性。 |
零件+零件之间的联系或相互作用 |
系统组成层次 |
一人控制多人 |
控制层次结构——例如,命令结构 |
子类型或子类 |
类型或专业层次结构; 一种泛化 |
类别实例 |
分类(对象-类;模型-元模型……)层次结构; 一种泛化 |
网络模式有两种风格。 首先,传统模式是网络拓扑类型,例如总线(公共主干)、环形、星形(中央集线器)、树形和网状(多条路由)(ATIS 2008)。 其次,相对年轻的网络科学一直在研究社会和其他复杂模式,例如渗透、级联、幂律、无标度、小世界、语义网络和神经网络(Boccara 2004;Neumann et al. 2006)。
元模式
下表中识别和定义的元模式来自 (Bloom 2005)、(Volk and Bloom 2007) 和 (Kappraff 1991)。 他们将元模式描述为在广泛分离的尺度上进化系统的类似结构中表现出的收敛(Volk and Bloom 2007)。
表 2. 元模式。 (SEBoK 原创)
姓名 |
简要定义 |
例子 |
球体 |
最大体积、最小表面、容器的形状 |
细胞、行星、圆顶、生态系统、社区 |
中心 |
系统稳定性的关键组成部分 |
原型、目的、因果关系; 脱氧核糖核酸 (DNA)、社会昆虫中心、政治宪法和政府、吸引子 |
管道 |
表面转移、连接、支撑 |
网络、网格、管道、关系; 叶脉、高速公路、指挥链 |
二进制文件 |
最小且高效的系统 |
对比、二元性、反射、张力、互补/对称/互惠关系; 两性、两党政治、分叉的决策过程 |
集群,聚类 |
网络的子集,具有相互吸引力的零件的分布式系统 |
鸟群、有蹄类动物群、儿童玩耍、平等主义社会团体 |
网站或网络 |
系统内关系中的部分(可以使用克隆或完全子集中或聚集) |
细胞、有机体、生态系统、机器、社会的子系统 |
覆盖 |
物质、能量或信息的传递面 |
电影; 鱼鳃、太阳能集热器 |
边界和毛孔 |
保护,受控交换的开口 |
边界、容器、隔板、细胞膜、国界 |
图层 |
建立秩序、结构和稳定性的其他模式的组合 |
比例、部分和整体、包装、比例、平铺的水平 |
相似 |
形状相同但大小不同的图形 |
相似三角形,婴儿-成人 |
紧急情况 |
当一种新型功能源自二进制文件或 Web 时的一般现象。 |
创造(诞生),来自分子的生命,来自神经元的认知 |
组织单位或实体 |
网络的层次,其中连续的系统是更大系统的一部分 |
从生物分子到生态系统的生物嵌套、人类社会嵌套、工程设计、计算机软件 |
整体 |
功能独特的系统部分 |
身体的心肺肝(holons) |
克隆 |
系统部件可互换 |
皮肤的皮肤细胞(克隆); 建房子的砖 |
箭头 |
随着时间的推移稳定性或类似梯度的变化 |
阶段、顺序、方向、压力、成长、曲折、生物稳态、成长、自我维持的社会结构 |
循环 |
随着时间的推移,系统中的重复模式 |
交替重复、漩涡、螺旋、湍流、螺旋、旋转; 蛋白质降解与合成、 生命周期 、发电厂的动力循环、反馈循环 |
中断 |
系统行为的相对突然变化 |
变换、变化、分支、爆炸、破解、翻译; 细胞分裂、昆虫变态、成年仪式、政治选举、分叉点 |
触发器 |
内部和外部中断的引发剂 |
精子进入卵子或引发战争事件 |
渐变 |
双极之间的连续变化 |
细胞发育中的化学波,人类定量和定性价值 |
系统工程模式
已经在将模式显式应用于 SE 的各个方面进行了一些工作。 Bagnulo 和 Addison (2010) 撰写了一篇关于这项工作的评论文章,涵盖了一般模式、 能力 工程、模式语言、模式建模和其他与 SE 相关的模式主题。 Cloutier (2005) 讨论了基于架构和软件设计模式将模式应用于 SE。 Haskins (2005) 和 Simpson 和 Simpson (2006) 讨论了使用 SE 模式语言来增强 SE 模式的采用和使用。 Simpsons 确定了三种可用作组织系统模式的高级全局模式:
- 任何事物都可以被描述为一个系统。
- 问题系统总是与解决方案系统分开。
- 至少三个系统总是参与任何系统活动: 环境 系统、 产品 系统和 过程 系统。
Haskins (2008) 还提出使用模式作为促进 SE 从传统技术系统扩展到解决社会和社会技术系统的一种方式。 在这个扩展的领域中已经应用和识别了一些模式,Rebovich 和 DeRosa (2012) 将其描述为成功模式。 Stevens (2010) 还讨论了大型复杂“巨型系统”工程的模式。
应用模式的常见 SE 活动是在系统设计中,尤其是在为 感兴趣的系统 定义一个或多个解决方案选项时。 请参阅 综合可能的解决方案 进行讨论。 Emergence 主题中讨论了 使用模式(和反模式,如下所述)来理解和利用 涌现 的更具体的主题。
失败模式:反模式
系统原型
系统动力学社区已经开发了一系列所谓的系统原型。 该概念由 Forrester (1969) 提出,而 Senge (1990) 似乎引入了系统原型术语。 根据 Braun (2002) 的说法,原型描述了有助于回答以下问题的常见行为模式:“为什么我们不断看到相同的问题随着时间的推移而重复出现?” 他们专注于组织和其他复杂社会系统中的行为,这些系统反复但未成功地用于解决反复出现的问题。 这就是为什么它们在这里被归类为反模式,即使系统动力学社区没有将原型称为反模式。 下表总结了原型。 对于给定的原型,没有固定的集合,甚至没有固定的名称。 该表显示了一些原型的替代名称。
表 3. 系统原型。 (SEBoK 原创)
姓名(候补) |
描述 |
参考 |
反直观行为 |
Forrester 确定了社会系统的三种“特别危险”的反直觉行为,它们分别对应于下面讨论的三种原型:(1)低杠杆政策:无效的行动; (2) 高杠杆政策:经常被错误应用; (3) 长期与短期的权衡 |
F1, F2 |
低杠杆政策:无效行动(政策阻力) |
复杂系统中最直观的政策变化几乎没有产生变化的杠杆作用; 这是因为这种变化会引起系统其他部分的反应,从而抵消新政策。 |
F1、F3、M |
高杠杆政策:经常被错误地应用(高杠杆,错误的方向) |
系统问题通常可以通过微小的更改来纠正,但这种高杠杆解决方案通常在两个方面违反直觉:(1)杠杆点很难找到,因为它通常在时间和地点上远离问题所在出现,并且(2)如果确定了杠杆点,则通常会在错误的方向上进行更改,从而加剧了问题。 |
F1、F3、M |
长期与短期的权衡(修复失败、转移负担、上瘾) |
短期解决方案是直观的,但在复杂系统中,短期和长期目标之间几乎总是存在冲突或权衡。 因此,快速修复会立即产生积极的结果,但其不可预见和意想不到的长期后果会使问题恶化。 此外,重复的快速修复方法使得以后更难更改为更基本的解决方法。 |
F1、F3、M、S、B |
漂移到低绩效(侵蚀目标,目标崩溃) |
复杂系统目标有向下漂移的强烈趋势。 当前状态和目标状态之间的差距会产生降低目标的压力,而不是采取困难的纠正措施来达到目标。 随着时间的推移,不断降低的目标会导致危机并可能导致系统崩溃。 |
F1、F3、M、B |
官方成瘾——将负担转移给干预者 |
当干预者提供帮助并且系统变得依赖于干预者时,系统维持自身的能力会下降。 |
多发性硬化症 |
增长的限制(又名成功的限制) |
一个加速增长(或扩张)的强化过程将在接近该系统的极限时遇到一个平衡过程,随着一个人接近极限,持续的努力将产生递减的回报。 |
小号,乙 |
平衡过程与延迟 |
系统对纠正措施的响应延迟会导致纠正代理过度纠正或由于没有可见的进展而放弃。 |
小号 |
升级 |
两个系统争夺优势,每个系统都在升级其竞争行为以取得领先,以至于两个系统都受到损害。 |
乙 |
成功到成功 |
增长导致其他地方下降。 当两个同等能力的系统竞争有限的资源时,如果一个系统获得更多的资源,它更有可能成功,这导致它获得更多的资源,形成一个强化循环。 |
小号,乙 |
公共地悲剧 |
当每个系统滥用共享资源以谋取个人利益时,共享资源就会被耗尽,最终伤害到所有共享它的人。 |
H、S、B |
增长和投资不足 |
在产能投资可以克服限制的情况下,如果不进行此类投资,那么增长就会停滞,从而使进一步的投资不足合理化。 |
小号,乙 |
意外的对手 |
两个系统通过升级对感知伤害的报复来破坏他们的关系。 |
乙 |
吸引力原则 |
在系统面临多个限制或阻碍因素的情况下,倾向于分别考虑每个因素以选择首先解决哪个因素,而不是基于因素之间的相互依赖关系的策略。 |
乙 |
** B ——(
Braun
,2002 年); F1 ——(
Forrester
1969); F2 ——(Forrester 1995); F3 ——(Forrester 2009); H ——(
Hardin
1968 年); M ——(
Meadows
1982 年); S ——(
Senge
1990 年)。
系统原型之间的关系由 Goodman 和 Kleiner (1993/1994) 定义,并在 Senge 等人重新发表。 (1994)。
软件和其他反模式
反模式已在软件社区中被识别和收集,这些领域包括:架构、开发、项目管理、 用户 界面、组织、分析、软件设计、编程、方法论和 配置管理 (AntiPatterns Catalog 2012,Wikibooks 2012)。 以下是其中三个的简要说明; 前两个是组织,第三个是软件设计。
- 承诺升级 - 在证明错误时未能撤销决定。
- 道德风险 - 将决策者与他或她的决定的后果隔离开来。
- 大泥球 - 一个没有可识别结构的系统。
软件社区和系统原型之间的联系体现在软件工程研究所 (SEI) (2012) 的一个项目中,该项目在将反复出现的软件 采购 问题识别为“采购原型”的背景下探索系统原型。 他们将这两种原型都称为失败模式。
Troncale (2010; 2011) 在他的系统病理学项目中编译了通用系统领域的另一组反模式。 样本病理类型或模式包括:
- Cyberpathologies - 反馈架构中的系统级故障。
- Nexopathologies - 网络架构或动态中的系统级故障。
- Heteropathologies - 分层、模块化结构和动力学中的系统级故障。
一些反模式的处理方法,包括 Senge (1990) 和 SEI (2012),也为处理或防止反模式提供了一些建议。
模式和成熟度
模式可以用作调查领域成熟度的指标,例如系统科学或系统工程。 在一个成熟且相对稳定的领域中,问题和解决方案通常是被理解的,并且它们的相似之处在这里被称为各种模式。 在这方面,可以对系统科学在支持系统工程方面的成熟度进行一些观察。
在物理系统和技术系统领域,系统科学相对成熟; 自然物理系统和工程技术系统的许多系统模式都得到了合理的定义和理解。
在更复杂的系统领域,包括社会系统,系统科学还不够成熟。 该领域的解决方案模式更具挑战性。 Rittel 和 Webber (1973) 在他们关于邪恶问题的经典论文中表达了对科学解决社会问题的可能性的悲观观点:“寻找解决社会政策问题的科学基础必然会失败,因为...... . . 它们是‘邪恶的'问题,而科学已经发展到处理‘驯服'的问题。” 对社会问题持更乐观的态度是系统动力学社区的特征。 40 多年来,他们一直以系统原型和相关反馈回路模型的形式指出社会问题的传统解决方案存在的问题。 这是重要的第一步。 尽管如此, 他们难以实现第二步; 产生可用于解决这些问题的社会模式。 反模式表征问题,但解决这些问题的模式是难以捉摸的。
尽管困难重重,但社会制度确实表现出规律性,社会问题往往在一定程度上得到解决。 社会科学和复杂系统社区的模式集有限,例如常见的组织结构类型、常见的宏观经济模型,甚至叛乱和反叛乱的模式。 系统科学面临的挑战是更广泛地捕捉这些规律和这些解决方案的显着特征,并使它们以成熟模式的形式明确和可用。 那么也许社会问题可以更经常地得到解决。 随着系统工程将其范围从传统的强调系统的技术方面扩展到社会技术系统的社会和技术方面的相互作用, |