本节书摘来自华章出版社《系统架构:复杂系统的产品设计与开发》一书中的第2章,第2.5节任务三:确定实体之间的关系,作者[美]布鲁斯·卡梅隆,更多章节内容可以访问云栖社区“华章计算机”公众号查看
2.5任务三:确定实体之间的关系
2.5.1关系的形式与功能
从定义上来看,系统是由实体及其关系组成的。讲到这里,大家应该会感觉到,这些关系可以按特征分为两类:功能关系和形式关系。
功能关系,是指用来完成某件事情的实体之间所具备的关系,此关系可能涉及实体之间对某物的操作、传输或交换。为了强调其动态性,我们有时也把功能关系称为交互(interaction,互动)关系。在交互过程中,相关的实体可能会交换操作数,也可能会协同对操作数执行操作。比如,心脏与肺交换血液,某位团队成员与同事分享成果。第5章将会更为全面地讲解功能交互。
形式关系,是某段时间内稳定存在或有可能稳定存在的实体之间所具备的关系。这里的形容词“formal”(形式的),是从名词“form”(形式)中派生而来的,与描述一场晚宴所用的那个形容词“formal”(正式的)有所区别。形式关系通常体现为连接关系或几何关系。比如,肺与心相连,或是某人加入团队中,这些都会构成形式关系。为了强调其静态性,我们有时也把形式关系称为结构(structure)关系。第4章将会详细讨论形式关系。
一般来说,功能关系通常需要以形式关系为前提。形式关系是功能关系的载体。假如心脏不与肺相连,那它就无法同肺部交换血液。假如两位团队成员离得不是很近,或是彼此之间没有交换信息所用的链接,那他们就无法分享成果。
形式关系与功能关系既可以表示为关系图,也可以表示为N×N的表。图2.10是一张关系图,演示了系统内的两个实体与系统外围环境中的一个实体之间的关系。形式交互以双箭头线来表示,而功能交互,则会根据交互的性质,用单箭头线或双箭头线来表示。某些关系位于系统内部,某些则跨越了系统边界。对于跨越系统边界的关系,其表示方法与系统内的关系相似,只不过它是用虚线而非实线来表示的。画这种关系图时,应该把实体的形式及功能写出来,同时最好能给关系加上标注,不过这样做通常会令关系图显得比较杂乱。
我们现在用实例来演示系统思维的第三项任务(参见文字框2.7)。图2.11是放大器电路的关系图。通过图中的结构关系,我们可以看出:电路的电压输入端与电阻1相连
而电阻1的另一端则与电阻2及运算放大器(Op Amp)相连。电阻2的输出端与运算放大器的另一个端口相连,此外电阻2还与电路的输出端相连。这样的连接方式,在运算放大器周围形成了一条回路。在电路图中,我们把这些结构化连接或形式关系,称为电气连接(electrical connection),功能交互中的箭头,在电路图中指的是电流的流动。与2.11中的关系图不同,这块电路的标准电路图(参见图2.4),只会用一条关系来表示电子元器件之间的联系,电气工程师在看到那一条关系之后,会明白元器件之间既有连接关系,又有电流经过。
文字框2.7 方法:系统思考的第三项任务
找出系统内及系统边界处的那些实体之间所具备的关系,以及那些关系的形式与功能。
还有一种表示关系的方法,是使用两张N×N的表,如表2.5所示。每张表的上方和左侧,都分别写有这N个实体。第一张表列出形式关系,第二张表列出功能关系。表中虚线上方和左侧的实体,指的是位于系统边界内的实体。位于对角线之外的每一个单元格,都表示一种内部关系或外部接口。关系图和N×N的表各有其意义,关系图的好处是更加直观,而N×N表的好处则是能够体现更多的细节,而且当节点和连接数量变多之后,不会显得特别杂乱。
表2.5 表示放大器电路的形式关系及功能关系的N×N的表
形式关系
电阻1
电阻2运算放大器输入端输出端
电阻1在V-端相连在V-端相连在输入端相连
电阻2在V-端相连在V-端及输出端相连在输出端相连运算放大器在V-端相连在输出端相连输入端在输入端相连输出端,在输出端相连,在输出端相连
功能关系
电阻1,在V-端交换电流,在V-端交换电流,在输入端交换电流
电阻2 在V-端交换电流,在V-端及输出端交换电流,在输出端交换电流,运算放大器,在V-端交换电流,在V-端及输出端交换电流,在输出端交换电流,形式关系通常更为具体一些,因此我们在思考关系时,可以从这种关系入手。在检视每一条形式关系时,也应该试着去思考它所承载的功能关系。形式关系的重要性,主要体现在它对功能关系的承载上。由于涌现物出现在功能领域里,因此功能交互才是真正重要的关系,这将在2.6节中深入讲解。
2.5.2外部接口
形式关系与功能关系可以跨越系统边界,它们可以发生在系统内部的实体与系统外围环境中的实体之间。这叫做系统的外部接口。在表2.5这个N×N的表中,凡是出现在预留给系统内部的那个区域之外的关系(例如写有“在输入端相连”的单元格),都是外部接口。在图2.11这张关系图中,这些外部接口以跨越系统边界的箭头线表示,同时还有写着“接口”字样的大箭头对这些关系进行标注。与放大器电路类似,Team X系统的团队成员与支持人员之间的关系,以及循环系统与空气之间的关系,也属于外部接口。实际上,几乎很难找到那种与边界外的实体不通过外部接口发生某种联系的系统。
总之:
在系统的定义中,一个较为关键的方面,就是实体之间必须要具备关系,这些关系可以是形式上的(用来表示相关的实体已然存在或有可能存在,这种关系又叫做结构关系),也可以是功能上的(用来表示相关的实体会对某物执行操作,这种关系又叫做交互关系)。
一般来说,系统内的某些实体会与系统外围环境中的实体发生形式关系或功能关系,这种关系会跨越外部接口。
形式关系与功能交互,既可以用关系图来表示,也可以用N×N的表来表示。