《系统架构:复杂系统的产品设计与开发》——第2章,第2.6节任务四:涌现

2024-02-15 20:59

本文主要是介绍《系统架构:复杂系统的产品设计与开发》——第2章,第2.6节任务四:涌现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本节书摘来自华章出版社《系统架构:复杂系统的产品设计与开发》一书中的第2章,第2.6节任务四:涌现,作者[美]布鲁斯·卡梅隆,更多章节内容可以访问云栖社区“华章计算机”公众号查看

2.6任务四:涌现
2.6.1涌现的重要性
系统的奇妙之处,在于涌现。把系统的各个实体组合起来之后,一种新的功能,就会随着由这些实体的功能与实体之间的功能交互所形成的组合而涌现出来。系统是由一系列实体及其关系所组成的,系统的功能要大于这些实体各自的功能之和。后面那半句纯粹是为了强调涌现而说的。“更大的功能”是通过涌现而产生的。
系统的形式领域中并不会发生“涌现”。把部件A和部件B拼起来之后,形式领域内的结果就是A加B,除此之外没有其他效果。通过形式的聚合而产生的属性,计算起来是相对较为容易的。系统的质量就等于部件A的质量加上部件B的质量。形式是“线性的”(linear)。
然而,在功能领域中,部件A加上部件B的效果,却要有趣得多,也复杂得多。功能并不是线性的。当部件A的功能与部件B的功能相交互时,任何事情都有可能发生。系统的强大,正是体现在涌现物的这一属性上。
系统思维的主要目标,就是努力了解并预测涌现物以及涌现物带给系统的强大能力。

2.6.2系统故障
要想理解涌现的重要性,另外一种办法是思考当预期的涌现物没能出现时,会发生什么状况。预期的涌现物未能出现;可以细分为两种情况:一是预期的良好涌现物未能出现;二是意外的不良涌现物出现了(参见表2.1)。这两种情况都很糟糕。
我们以本章所举的实例,来说明潜在的系统故障。在人体的循环系统中,如果从心脏到其他部位的血管有一部分发生了阻塞,那么就会导致系统中其他部件的血压升高,这就是一种意外的不良涌现物,它会影响整个系统。在Team X中,某位团队成员或许很好地总结了需求,但没能有效地把需求与其他成员相沟通,从而导致团队拿出了一份偏离需求的设计方案,使得公司错失了本来应该得到的一笔生意。这属于预期的良好涌现物未能出现的情况。
在四车道的城际高速公路上发生的交通拥堵,就是系统故障的典型例子。交通出现堵塞时,每辆车都在准确地发挥其功能,也就是载人,而公路的功能同样正常,也就是为车辆行驶提供支持。每位司机都保持着适当的车距,其所驾驶的车辆,也都处在适当的车道中。然而预期的良好涌现物还是没能出现,也就是说,汽车没能在道路上快速地行驶。
图2.12是一个有详细资料可查的事件,此事件是由意外的不良涌现物所导致的。一架A320飞机试图在有侧风(crosswind)的情况下通过降低顶风翼(upwind wing)来着陆。在比较滑的跑道上,机轮刹车(wheel brake)是不起作用的,因此,飞机着陆之后,飞行员尝试使用基于引擎的反推器(thrust reverser)来控制飞机,可是该装置却不起作用。这是为什么呢?这是因为:控制该装置的软件系统,基于安全原因,只有当它认为飞机确实已经“着陆”的情况下,才会部署反推器,而它判断飞机有没有着陆的依据,则是两侧的起落架是否全都压紧了。当时由于其中一个机翼比较低,因此有一侧的起落架没有压下,这就导致软件系统判定飞机尚未着陆,因而选择不打开反推器。在这个案例中,每个部件当时都按计划执行着自己的功能,结果却发生了事故,也就是出现了系统故障。


58d5f67b4cb584c2bdf28cc21349cc8c11c0be81

试着理解并预估这种系统故障,也是系统思维的一项目标。

2.6.3预测涌现物
如文字框2.8所示,系统思维的最后一项任务,是预测涌现物。当把系统中多个实体的功能组合起来时,我们很难提前预测该系统会涌现出什么东西。其中可能会涌现出预期的良好功能(系统成功),也可能不会涌现出这种功能,另外还有可能涌现出意外的不良功能(系统故障)。
文字框2.8 方法:系统思维的第四项任务


1fe5ba6f565ee1138c8a2a7b19fc5aa0ef4aa4ac

基于实体的功能以及实体之间的功能互动,来确定系统的涌现属性。
本章所举的一些例子展示了预期的功能得以涌现的情况。在放大器电路中,放大电压与设置增益这两个功能结合起来,就产生了放大功能。在Team X中,各团队成员有效地完成其工作并相互沟通,就创造出了良好的设计方案。而当系统思考者并不知道系统会涌现出何种功能时,他们是如何进行预测的呢?
预测涌现物有三种方式。第一种是根据以前做过的情况来预测,也就是根据先例(precedent)来预测。我们根据自己的经验,回想以前做过的相同或极相似的解决方案,然后对其略作修改,并把它实现出来。比如,我们会按照祖父辈所使用的方式来构建钟摆机制,因为他们就是那样做的。过去的经验表明,某一群人可以形成一个有效的团队,因此我们就以该方式把这样的一群人组合成Team X。
预测涌现物的第二种方式是做试验。依照先前所设想的关系,把相关的涌现物组合起来,看看能涌现出什么功能。要想通过这种办法来预测,有时只需要做一些小规模的操作就可以,然而,有的时候,却要构建高度结构化的原型。比如,如果想研究运算放大器的输出效果,那我们就构建出这么一个放大器,给它加上输入电压,然后监控其输出。螺旋式开发(spiral development)则是另外一种试验,我们要先把系统的某些部分构建出来,并检验其涌现物是否合意,然后再于后续的螺旋环节中逐次构建系统的其余部分。
预测涌现物的第三种方式是建模(modeling)。如果实体的功能及实体间的功能交互可以建立成模型,那就有可能根据该模型来预测涌现物。通过建模来预测涌现物并取得巨大成功的一个例子,就是集成电路(Integrated Circuit,IC)的开发。包含数十亿个逻辑门的集成电路每天都在制造着,这些电路均可以产生正确的涌现属性。这是如何做到的呢?电路的基本元件是晶体管(transistor),它可以用简单的模型表示出来,此后我们只需要执行数据计算即可。如果了解运算放大器和电阻的本构关系(constitutive relation),并且知道基尔霍夫电压定律(Kirchhoff抯 voltage law)与基尔霍夫电流定律(Kirchhoff抯 current law),那么只用几行代数式就能把放大器电路的模型建好。
如果系统既没有先例,又不能试验,而且无法可靠地建模,那该怎样预测其涌现物呢?这就问到了系统思维的核心。包括研发新产品在内的许多领域,都经常会碰到这样的事情。在这种情况下,我们必须对将要涌现出来的功能进行推理。在推理过程中,尽管我们可以从先例中得知一部分信息(这部分信息是通过对相似但不相同的系统进行观察而得到的),同时还可以通过试验和不完备的建模了解一些情况,但对涌现物的最终推定,还是必须依靠我们自己的判断力。

2.6.4涌现物依赖于实体及其关系
系统所涌现出的功能,依赖于系统中各实体的功能以及实体之间的功能交互。实体的形式使得实体的功能得以表现,而形式关系也是功能交互的载体。这意味着形式与形式关系(也就是结构)对预测涌现物有着重要的意义。我们用图2.13中这几个简单的系统,来更加清楚地说明这一点:
低通滤波器(low pass filter)是由一个电阻和一个电容构成的。把电阻放在电压输入端与电压输出端之间,把电容放在输出端与地之间,就可以使高频衰减。如果改变连接模式(pattern of connectivity),交换电阻与电容的位置,那么可以反过来使低频得以衰减。


89c89f5339043c41f7f05656d90caea8d92e7577

机械杠杆是由杠杆和支点组成的。把支点放在远离操作者的一端,就可以产生良好的涌现功能,也就是“使力得以放大”(magnify force)。若是改变支点的位置,将它放在距操作者较近的这一侧,那么刚才产生的良好涌现物就消失了。
一段简单的软件代码由条件语句和简单的计算语句构成。如果把IF条件语句放在前面,那么只有当受测条件为真时,“a=100”这条计算语句才会执行。若是改变顺序,把a=100放在前面,那么这条计算语句就总是能够得到执行。
形式关系对于涌现物起着关键的作用。电子元件的连接模式、支点的位置,以及软件指令的先后顺序,都会分别影响其所在系统的涌现功能。形式关系对特定的功能交互起着重要的引导作用,进而使得这种功能交互可以产生出系统级别的涌现物。
总之:
把实体的功能与实体间的功能交互合并起来时,会涌现出新的功能,它使得系统的功能大于“这些部件各自的功能之和”。
系统是成功还是失败,通常取决于涌现物的好坏。
涌现物可以通过先例、试验及建模来提前预测。对于前所未见且无法轻易进行试验与建模的系统来说,人类必须根据所知的信息来推断其涌现物。
涌现物依赖于实体的功能,而实体的功能是通过形式得以体现的,涌现物也依赖于实体之间的功能关系,而功能关系是以形式关系为载体的。
涌现物的属性既给系统带来了强大的力量,又为系统思考者对其进行的理解工作与预测工作带来了挑战。

这篇关于《系统架构:复杂系统的产品设计与开发》——第2章,第2.6节任务四:涌现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/712527

相关文章

Agent开发核心技术解析以及现代Agent架构设计

《Agent开发核心技术解析以及现代Agent架构设计》在人工智能领域,Agent并非一个全新的概念,但在大模型时代,它被赋予了全新的生命力,简单来说,Agent是一个能够自主感知环境、理解任务、制定... 目录一、回归本源:到底什么是Agent?二、核心链路拆解:Agent的"大脑"与"四肢"1. 规划模

Python+wxPython开发一个文件属性比对工具

《Python+wxPython开发一个文件属性比对工具》在日常的文件管理工作中,我们经常会遇到同一个文件存在多个版本,或者需要验证备份文件与源文件是否一致,下面我们就来看看如何使用wxPython模... 目录引言项目背景与需求应用场景核心需求运行结果技术选型程序设计界面布局核心功能模块关键代码解析文件大

C++多线程开发环境配置方法

《C++多线程开发环境配置方法》文章详细介绍了如何在Windows上安装MinGW-w64和VSCode,并配置环境变量和编译任务,使用VSCode创建一个C++多线程测试项目,并通过配置tasks.... 目录下载安装 MinGW-w64下载安装VS code创建测试项目配置编译任务创建 tasks.js

Nginx概念、架构、配置与虚拟主机实战操作指南

《Nginx概念、架构、配置与虚拟主机实战操作指南》Nginx是一个高性能的HTTP服务器、反向代理服务器、负载均衡器和IMAP/POP3/SMTP代理服务器,它支持高并发连接,资源占用低,功能全面且... 目录Nginx 深度解析:概念、架构、配置与虚拟主机实战一、Nginx 的概念二、Nginx 的特点

CPython与PyPy解释器架构的性能测试结果对比

《CPython与PyPy解释器架构的性能测试结果对比》Python解释器的选择对应用程序性能有着决定性影响,CPython以其稳定性和丰富的生态系统著称;而PyPy作为基于JIT(即时编译)技术的替... 目录引言python解释器架构概述CPython架构解析PyPy架构解析架构对比可视化性能基准测试测

SpringBoot中使用定时任务schedule详解

《SpringBoot中使用定时任务schedule详解》文章介绍了如何在Spring应用中使用@EnableScheduling注解启用定时任务,并创建一个配置类来定义定时任务的执行,文章还详细解释... 目录1、在spring启动类上添加注解@EnableScheduling2、创建定时任务配置类3、执

C++简单日志系统实现代码示例

《C++简单日志系统实现代码示例》日志系统是成熟软件中的一个重要组成部分,其记录软件的使用和运行行为,方便事后进行故障分析、数据统计等,:本文主要介绍C++简单日志系统实现的相关资料,文中通过代码... 目录前言Util.hppLevel.hppLogMsg.hppFormat.hppSink.hppBuf

MySQL集群高可用架构的两种使用小结

《MySQL集群高可用架构的两种使用小结》本文介绍了MySQL的两种高可用解决方案:组复制(MGR)和MasterHighAvailability(MHA),文中通过示例代码介绍的非常详细,对大家的学... 目录一、mysql高可用之组复制(MGR)1.1 组复制核心特性与优势1.2 组复制架构原理1.3

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注