《系统架构:复杂系统的产品设计与开发》——第2章,第2.4节任务二:确定系统中的实体及其形式与功能-阿里云开发者社区

开发者社区> 华章出版社> 正文
登录阅读全文

《系统架构:复杂系统的产品设计与开发》——第2章,第2.4节任务二:确定系统中的实体及其形式与功能

简介:

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

2.4任务二:确定系统中的实体及其形式与功能
通过刚才的论述,我们可以确立一个观点,那就是:系统本身也可以视为具备某种形式与功能的单一实体。现在,我们就来看看如何把系统分解成多个实体,使得这些实体也同样具备某种形式和功能。我们可以通过抽象思维,把这些实体有效地表示出来,并通过整体思维以及对关键问题的把握,来选出恰当的实体。系统的周围是一层边界,它把系统与系统之外的环境隔开。下面讨论如何完成系统思维的第二项任务(参见文字框2.4)。
文字框2.4 方法:系统思维的第二项任务
确定系统中的实体、实体的形式与功能,以及系统边界和系统所处的环境。


348afd58702abfc4cccfa63aa32095f865cb238f

2.4.1具备形式与功能的实体
从定义上来看,系统是由一组实体所构成的。这些实体是系统的组成部分。
一般来说,系统中的每个实体都有其形式及功能。我们有时会使用“元素”(element)一词来强调系统形式中的某个方面,它的同义词是“部分”(part)或“部件”(piece),而“实体”(entity)一词则用来泛指形式及功能,它的同义词是“单元”(unit)或“事物”(thing)。
表2.3最右侧的那一列是范例系统本身所具备的形式,而从右往左数的第二列则是由范例系统所分解而成的各个组成部分所具备的形式。比如,放大器电路可以分解为两个电阻和一个运算放大器,Team X可以分解为三名成员。从右往左看,某个系统所具备的形式,可以分拆为其各个部件所具备的形式,这叫做分解(decomposition)。从左往右看,把各个部件所具备的形式拼合起来,就是系统所具备的形式,这叫做聚合(aggregation)。
表2.3中间的两行描述了实体形式与实体功能之间的映射(mapping)。电阻1和电阻2用来设置增益。心脏用来推进血液的流动。系统中的每个实体都有其各自的形式与功能。请注意,这些实体的功能在本表格中也是按照过程加操作数的格式来撰写的。
表2.3最左侧的那一列是范例系统本身所具备的功能,从左往右数的第二列是相关的各实体所具备的功能。从左往右看,系统的功能可以拆分为系统的各个组成部分所具备的功能,这叫做细分(zooming)。从右往左看,实体的功能则可以组合为系统的功能,这就是我们所要追求的涌现(emergence)效果。
表2.3 系统中的实体及实体的形式与功能

402eaf43037ca41a8008740b4690dc9252f85b9a

系统的功能,实体的功能,实体的形式,系统的形式
放大信号设置增益电阻1放大器电路
设置增益电阻2
放大电压运算放大器
研发设计方案解释需求AmyTeam X
构思概念John
评估并批准方案Sue
为器官提供氧气推动血液心脏循环系统
与外界空气交换气体肺
与器官交换气体毛细血管
细分><涌现聚合><分解功能,是一种近乎静态的描述方式,它用来表达某个过程对其操作数所执行的操作。而当一系列功能按某种次序执行时,则会用涌现出更加动态的行为(behavior),这将在第6章中讨论。
运用系统思维时,我们可以只从系统的功能入手,对其进行细分。比如,在思考放大器电路时,我们就可以把放大信号这一总体功能,细分为放大及设定增益这两个小功能。这种功能式的思维,一般用在分析与设计的早期阶段中。与此相对,有时也可以只从形式入手,对其进行分解。比如,如果我们正在列一份“元器件清单”(parts list),那就可以把放大器电路分解为放大器、电阻1及电阻2等部件。单单从形式或功能的角度来对系统进行思考是较为便利的,但这并不意味着形式与功能最终无法同时呈现出来,也不意味着它们之间毫无联系。
我们可以从任意参考点触发,来观察系统。比如,我们可以从很高的起点开始,把整个人体视为一个系统,然后将其分解为循环系统、消化系统等。也可以从很低的起点开始,把心脏视为一个系统,然后说它是由心腔和瓣膜等更小的系统组成的。由此我们可以看出一个规律:所有的系统都是由实体组成的,那些实体本身也是系统,而且所有的系统都可以作为实体,来构成更大的系统。
由于我们可以从整个体系中的任意位置上选出一个系统,因此,无论从哪个系统开始,我们总是可以从其中发现一些小系统,而那些小系统又是由更小的系统所组成的。这就产生了两个极端问题:如果一直往上推,那么最终会来到宇宙(cosmos)层面,可是真的只有一个宇宙吗?如果一直往下推,那么最终会来到夸克(quark)层面,然而确实没有比夸克更小的东西了吗?为了避免这些问题,我们应该选出恰当的系统边界,使得自己可以把系统思维运用到最为重要的部分上。
在实际工作中,定义系统的实体及系统的边界,是一件非常重要而又比较困难的事情。系统思考者需要面对5个问题:
确定如何将系统初步分解为恰当的实体。
用整体思维找出潜在的实体。
通过对重点的分析,把注意力集中到重要的实体上。
为实体创建抽象。
定义系统的边界,并将其与外界环境隔开。
2.4节其余的部分就要解决这5个问题。

2.4.2确定如何将系统初步分解为恰当的实体
我们在确定系统中的实体进而确定系统的内部边界时,可能会遇到一定的困难,其难度取决于该系统究竟属于那种由互不相同的(distinct)元素所组成的系统,还是属于那种模块化或集成系统。某些系统由界限清晰的实体所组成,其分解方式自然是非常明确的。比如,Team X由三个人所组成,因此我们显然应该将它分解为三位成员,用其他方式来分解这个团队系统是没有意义的。与之类似,太阳系显然应该分解为太阳、行星及其他(数量众多的)小星体。如果某个系统可以用一种非常清晰的方式来分解,那么这就表明该系统确实是由彼此较为独立的一些实体所聚集并定义而成的(例如舰队、马群、树林、图书馆等)。
对于以模块化(modular)为基调的那种系统来说,其分解工作虽然会比刚才那种系统稍微麻烦一点,但与集成式系统相比,依然是较为清晰的。各模块之间(尤其是在功能上)相对较为独立。模块内部的关系比较密集,而模块与模块之间的关系则较弱,或较为稀疏。我们可以把放大器电路这一系统分解为输入端、电阻、放大器、内部节点及接线等部分。虽然对于电阻的末端位置和连接器的开端位置等问题,可能还有一些模糊之处有待厘清,但大致上依然是明晰的。
最难分解的是集成(integral)系统。集成系统很难在不影响其功能的前提下进行简单的分解。它们通常是那种内部高度互联的系统,例如汽车的转向装置系统,其各个组件(轮胎、方向盘、悬吊、转向齿轮、驾驶杆)就是紧密联系的,而且其中的某些部件同时又是其他系统(行驶质量系统、传动系统)的组成部分。真正的机械元件(例如复杂的锻造物以及经过机械加工的部件)与集成电路,都属于集成系统。很多信息系统也是高度集成的。

2.4.3用整体思维找出系统中的潜在实体
整体论(holism)强调的是整体理念,它从整体上把握事物之间的紧密联系,所谓整体地进行思考(think holistically),就是要把思维着力于整体。整体思维(参见文字框2.5中的整体原则)致力于发现对系统可能有重要意义的全部实体(以及其他相关事宜)。整体地进行思考,是为了全方位地观察当前所要处理的这个系统,促使自己发现可能会与该系统相交互的每一样东西,并考量它们带给系统的影响及后果。整体思维可以拓展我们考虑当前问题或事物所用的思路。
尽可能广地进行思考,是一种对认识系统的重要方面有所帮助的思路,我们可以借此创造一些契机,使得自己能够发现一些对系统很关键的东西。整体思维可以令这些东西浮出水面。
已知的不确定物(known-unknown)与未知的不确定物(unknown-unknown)是不同的。已知的不确定物,是你知道有它,但对它不够了解的事物。它的存在是已知的,它的特性虽然未知,但你已经知道自己应该更多地去了解它。而未知的不确定物,则是你连它有没有都不知道的事物,你没有办法衡量这种事物的重要性。整体思维能够尽可能多地找出未知的不确定物,从而使我们有机会去思考它们所潜藏的重要作用。
文字框2.5 整体原则(Principle of Holism)


ae19ccc072d3289eab78412a5a6faddf845d7d6d

“设计时总是应该把物体放在稍大一些的范围内考虑,把椅子放在房间中考虑,把房间放在住宅中考虑,把住宅放在周边环境中考虑,把周边环境放在城市规划中考虑。”
—Eliel Saarinen
“没有谁完全是孤岛。每个人都是陆地的一小块,都是主体的一部分。”
—John Donne
每个系统都作为某一个或某些个大系统的一小部分而运作,同时,每个系统中也都包含着更小的一些系统。要整体地思考这些关系,并研发出与上级系统、下级系统和平级系统相协调的架构。
整体论认为所有的事物都以整体的形式存在并运作,而不单单是其各个部件的总和。这与化约论(reductionism,还原论)相反,化约论认为我们可以通过仔细研究事物的各个部件来了解该事物。
整体地进行思考,就是要把当前系统的各个方面都涵盖进来,要考虑可能会与该系统进行交互的任何事物给系统所带来的影响及后果。
更简单地说,整体地思考就是把与当前所要处理的疑问、状况及难题有关的所有事物(例如实体及关系)都考虑到。
能够激发整体思维的办法包括结构化与非结构化的头脑风暴(brainstorm,脑力激荡)、框架、从不同视角进行思考,以及对大环境进行考量等。

激发整体思维的办法有很多,其中包括:结构化与非结构化的头脑风暴(第11章),通过研发框架来保证相关问题可以得到考虑(第4~8章),从多个视角进行思考(第10章),以及把系统明确地放在大环境下进行思考(第4章)。
本节将以Team X作为实例,来讲解系统思考者应该如何执行与系统思考有关的5个步骤。由于Team X是由个人所组成的团队,因此一开始似乎很容易指出其中的实体。我们假设一开始只考虑这个设计团队的概念生成(John的职责)和设计方案审定(Sue的职责)这两项事务,如表2.4第2列所示。然后,我们通过整体思考,找出了该团队有可能需要的其他成员,包括需求分析师、财务分析师、团队教练,以及市场、制造与供应链方面的专家等,如表2.4第2列所示。
表2.4 用系统思维来逐步思考Team X


567d44f4381636b3732d45305387f029d2751007


a503494f3fae77bae83b73f82760c4ecdd05e2b3

对实体所做
的初步思考进行整体
思考之后进行聚焦之后创建抽象之后定义系统
边界之后John提出概念  Sue评估并批准设计方案Amy解释需求Heather判断客户的需求市场人员做市场分析Chris做竞争分析Karen规划制造操作人员对制造与供应链进行规划James规划供应链Nicole解释相关的规章Meagan指导团队John为项目的融资进行建模通过整体思考,我们得出了一份较长的列表,其中列出了我们在定义系统及其环境时可能应该考虑到的每一个重要实体。然后,我们再寻找其中的重点,以缩减这份列表。

2.4.4集中注意力,找出系统中的重要实体
系统思考者所要面对的下一个步骤,就是聚焦,也就是把与当前问题有关的重要事物找出来(参见文字框2.6中的聚焦原则)。这意味着把重要的事物和不重要的事物区隔开。通过整体思维,我们发现了与系统有关的各种事物,现在则要对它们进行筛选,把其中真正重要的那些事物找出来。
文字框2.6 聚焦原则(Principle of Focus)


6a0695d61fdded03728b7775f497cf8a07c42a97

“我看到的并不比你多,但我已经学会从中发现一些东西。”
—阿瑟•柯南•道尔爵士所著《苍白的士兵探案》 (The Adventure of the Blanched Soldier)一文中,夏洛克•福尔摩斯所说的话
“问题不在于你看什么,而在于你看到了什么。”
—亨利•戴维•梭罗(Henry David Thoreau)
在任何一个点上,都能发现很多影响系统的问题,而其数量已经超出了人的理解能力。因此,我们必须找出其中最关键、最重要的那些问题,并集中精力思考它们。
在任意时间点,我们都可以通过整体思维,来找出可能影响当前系统的数十个,乃至数百个问题。
为了随时能密切关注重要的问题,我们必须学会抛开其他一些问题。
受到关注的那些方面,很少会出差错。
我们要对这一大批问题进行处理或筛选,以找出对当前的时间点或当前的运作情况较为重要的那些问题。要集中思考困难的问题,而不要先急着去解决那些简单的问题。
在聚焦过程中,关键是要把当前的疑问、状况或难题确定出来,并把其中的重要方面凸显出来。更具体地说,是要考虑对你和你的利益相关者重要的东西是什么?重要的成果是什么?这是不是系统的涌现行为?这是否满足某套标准?
然后,我们开始综观这些实体,并问自己一个简单但难于回答的问题:这个实体对我所关注的成果或涌现物来说是否重要?通过整体思考,我们可以列出很多事物,但是,在能够把握其交互关系的前提下,人脑可以同时思考的事情是有限的。一般来说,这个数量是7(左右浮动2个)[2]。
我们在聚焦时要做的事情,就是首先要意识到目前已经列出了许多对系统可能比较重要的事物,然后根据当前所关注的问题,用一份最多只含7个事物的列表,把这些事物“替换掉”。如果情况发生变化,那么我们再换上另外一份问题列表来进行思考。
回到表2.4中的这个Team X范例,我们认为团队的主要成果应该是一份良好的设计方案,其输入应该是需求,同时,对团队工作提供支援的实体应该包括对供应链及制造的掌控。因此,团队的三位成员(Sue、John及Amy)自然在考虑之中,此外,还要考虑决定客户需求的人、分析竞争环境的人,以及制造与供应链方面的专家,如表2.4第3列所示。在这次聚焦分析的过程中,我们把财务方面、团队动力方面以及规章方面的专家排除在目前的系统思维范围之外。
现在,我们来执行聚焦环节的最后一部分,也就是再度进行检查,以确认目前仍在考虑范围内的这些实体,有没有覆盖到与系统有关的每一个重要的疑问、状况或难题,同时要确定它们是不是足够精简,使得我们能够用当前的资源来仔细地检视它们。

2.4.5为实体创建抽象或从实体中发现抽象
当我们意识到那些对当前所要解决的疑问、状况或难题有重要意义的事物之后,接下来就该创建或发现适当的抽象机制,以表示系统中的实体。抽象是一种“抽离于物体的性质描述”,或一种“只含本质而不含细节的”表述。很多问题会随着预先定义好的抽象(例如人、层、控制体积等)而产生出来,这些问题可能会促进思考,也可能会阻碍思考。创建有效的抽象,可以把与实体有关的重要细节凸显出来,同时又可以把当前不需要考虑的那些细节与复杂问题隐藏在其中。
我们来看看本章这四个例子中的某些抽象。在放大器电路中,我们把运算放大器抽象为一个带有反向输入端、正向输入端及输出端的设备,它能够放大两个输入端之间的差距,如图2.4所示。实际的放大器电路是图2.8这个样子,而我们所做的抽象则把这些细节全都隐藏了起来,使得我们只需在“表面”上考虑整个电路的功能(也就是放大)即可。在Team X中,我们把生理和心理上都非常复杂的人,抽象成能够提出设计概念的“团队成员”。在循环系统中,我们把心脏这个复杂的器官,抽象成简单的泵。在太阳系中,我们把带有生态系统及人口的整个地球,抽象为一个星球。
图2.8 运算放大器这一抽象机制所隐藏的细节


7ad557ed5a67ce128ca09d93b34abe9446642bd7

从上述范例中,我们可以把创建抽象机制时的指导原则总结成下面这几条:
针对形式和功能创建抽象时,要把重要的信息凸显出来,而把不太重要的细节隐藏起来。
要创建那种使适当的关系有机会得以表现出来的抽象(参见2.5节)。
在适当的层面进行分解或聚合,并于该层面创建抽象。
在能够有效表达当前系统的重要方面这一前提下,创建数量尽可能少的抽象。有时我们创建出来的抽象,可能不那么有用。比如,如果违背第一条原则,那么我们就有可能把运算放大器抽象成热源(heat source)。尽管这样做在技术上是正确的,但它并不能把此实体在放大过程中的重要角色凸显出来。如果违背第三条原则,那我们有可能在对运算放大器进行抽象的过程中涵盖过多的细节组件。这样的抽象虽然也符合事实,但如此多的细节组件,对我们理解运算放大器在电路中的作用来说,却并不是必需的。
创建抽象时,我们当然有可能多次退回到聚焦环节,以确保我们正在创建的抽象确实抓住了目前所要解决的关键问题。若是发现系统的整体图景中漏掉了某个东西,那我们甚至可以回到整体思考环节。
请注意,抽象出来的结果并非只有一种,针对同样的实体,我们可能还会提出很多种完全合理的抽象。我们要根据当前所解决的疑问、状况或难题的本质,来选出合适的抽象。一般来说,无法做出通用的抽象。
回到表2.4中的Team X范例,我们把John、Sue和Amy这三个人都分别抽象成了三位团队成员,却把Heather与Chris合起来抽象为“市场人员”,并把其职责抽象为“进行市场分析”。与之类似,我们也把Karen与 James合起来抽象为“操作人员”,并把其职责抽象为“对制造和供应链进行规划”。将7个实体缩减为5个实体,看上去好像是件小事,但在2.5节中我们就会知道,这些实体之间的关系会呈现N2(N的平方)式的增长。通过缩减抽象物的个数,我们或许能把这些实体之间可能出现的关系数量,从49减少到25,这是相当大的改进。通过抽象环节,我们得到了一系列对系统有重要意义的抽象物,而我们尚未确定其中的哪些抽象物位于系统范围之内。换句话说,我们还没有划定系统的边界。
2.4.6定义系统的边界,并将其与外围环境隔开
在定义某个系统的实体时,通常有必要划定该系统的边界。系统边界可以清晰地划分出系统与其外围事物之间的界限。所有系统都有边界(可能宇宙是个例外)。在审视系统时,我们一般都会把系统局限在某个范围之内,这有可能是因为我们无法应对比当前范围更多的实体(这条理由是根据人类处理问题的能力而提出的),也有可能是我们觉得用不着把范围继续向外延伸了(这条理由是根据人类所做的价值判断而提出的)。
定义系统的边界,实际上也就等于将系统与其外围环境相区隔。外围环境(context,情境、上下文)就是环绕在系统外围的东西。它指的是“恰好处在系统边沿之外”但与系统相关的实体。
系统边界(system boundary)位于系统与大环境之间。在划定系统边界时,我们可能会考虑下列问题:
把需要分析的实体包括进来(如果我们的目标是理解某个机制)。
把创建设计方案所必备的要素包括进来(如果我们的目标是创建设计方案)。把我们负责实现和操作的东西包括进来(如果我们的目标是体现某种价值)。由规章、契约或其他法律制度所建立的规范边界。能够把系统与大环境区分开的传统做法或习惯做法。
我们必须遵从的一些接口定义或标准,包括与供应商之间的关系。
当某个关系跨越系统边界时,它就在系统与大环境之间定义了一个外部接口(external interface)。这些外部接口对系统特别重要,将在2.5节中讲解。
表2.4呈现了我们对Team X执行系统思维的第二项任务之后所得的成果。如果我们认为Team X的任务是制作设计方案,那么把John、Susan和Amy放在系统之内,而把市场人员和操作人员放在系统之外,自然就是一种较为合理的边界划分方式。本书总是使用虚线来表示系统边界。
当我们结束了对系统思维第二项任务(找出系统中的实体、实体的形式与功能,以及系统边界及外围环境)的讨论之后,就得到了如图2.9所示的信息。实体位于方框中,其形式与功能,用文本来描述。虚线表示系统边界,它用来隔开系统与外部环境。


1b8aa46de7a3d021e817e2055874a5496bb9d6d3

总之:
所有的系统都是由实体组成的,这些实体具备形式及功能,而且实体本身也有可能就是一种小的系统。
对于由互不相同的实体所构成的系统来说,我们很容易就能确定该系统是由哪些实体所组成的;对于模块化的系统来说,要想识别其中的实体,会有一定的难度;而对于集成式系统来说,识别其中的实体则是相当困难的。
整体地思考,有助于我们找出对系统可能有重要意义的每一个实体,并将其表示出来,而这样做所得到的实体通常比较多,其中有些实体对后续的思考没有太大用处。
聚焦环节有助于减少实体数量,以便将目前对系统真正重要的那些实体筛选出来,而实体的重要性是会随着时间和运作情况而变化的。
创建抽象,既有助于把实体的关键细节呈现出来,又能把其他一些复杂的方面隐藏起来。
定义系统边界,可以将系统与其外围环境相分离。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:

华章出版社

官方博客
官网链接