《系统架构:复杂系统的产品设计与开发》——第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

相关文章

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

Java异常架构Exception(异常)详解

《Java异常架构Exception(异常)详解》:本文主要介绍Java异常架构Exception(异常),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. Exception 类的概述Exception的分类2. 受检异常(Checked Exception)

Spring定时任务只执行一次的原因分析与解决方案

《Spring定时任务只执行一次的原因分析与解决方案》在使用Spring的@Scheduled定时任务时,你是否遇到过任务只执行一次,后续不再触发的情况?这种情况可能由多种原因导致,如未启用调度、线程... 目录1. 问题背景2. Spring定时任务的基本用法3. 为什么定时任务只执行一次?3.1 未启用

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

Linux系统之主机网络配置方式

《Linux系统之主机网络配置方式》:本文主要介绍Linux系统之主机网络配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、查看主机的网络参数1、查看主机名2、查看IP地址3、查看网关4、查看DNS二、配置网卡1、修改网卡配置文件2、nmcli工具【通用

Linux系统之dns域名解析全过程

《Linux系统之dns域名解析全过程》:本文主要介绍Linux系统之dns域名解析全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、dns域名解析介绍1、DNS核心概念1.1 区域 zone1.2 记录 record二、DNS服务的配置1、正向解析的配置