学习系统方法论:开篇
系统思维和系统思考,是思考领域内的“易筋经”,是具有提纲挈领的思想与方法论。
系统的特征
五大特征
整体大于部分之和
整体大于部分之和,是关于系统的经典名言。
为什么整体大于部分之和呢 ? 原理在于部分在形式与功能上的互补性、组合与协作。比如一个开发、一个设计、一个产品,可以组成一个产品开发团队,因为他们的技能是互补的、通过组合和协作创造了一个具备产品开发能力的系统;而三个擅长开发而不通设计与产品的人,却不能组成一个产品开发团队,因为其技能不是互补的,在开发产品层面上难以组合和协作。
稳定性
系统相对稳定地存在。其稳定性在于,部件及部件之间满足充分必要的形式关系。
开放性
系统不是孤立存在的,而是与周围的环境系统有密切的关联。系统与环境的交换与协作,构成了更高层次的系统的基础。
层次性
系统是由多个层次的子系统构成的,每个子系统都满足系统的特征,具备递归性。稳定性和开放性构成了层次性的基础。
动态变化
在稳定性和开放性的基础上,系统与外界进行物质和能量的交换,这促使系统也进行着动态的变化。这种动态变化,既可能使系统的稳定性衰减,也可能增强系统的稳定性。
示例:软件系统
软件系统,集中体现了系统的五大主要特征。
- 整体大于部分之和。软件系统是由大量的逻辑单元共同协作而成,每一个逻辑单元都只完成单一的功能,而只有逻辑单元的融洽协作,才构成了软件的可见功能与服务。
- 稳定性。软件系统的稳定性,取决于代码编写的准确性和健壮性,运行程序的服务器的稳定性,以及请求流量与服务负载在可控范围内。
- 开放性。 人机交互的软件系统,通过客户端,提供给用户操作的空间,并将操作的响应返回给用户,从而达到与外部交互的开放性目标;无人机交互的软件系统,通过与其他软件系统进行数据的交换,从而实现开放性。
- 层次性: 软件系统的内部,是由多个子系统、子模块、子组件及其形式关系构成的,每个子系统、子模块、子组件又是由更低层的子系统、子模块、子组件及其形式关系构成。
- 动态变化: 随着更多的代码、组件、模块、子系统添加到现有的软件系统,其承载能力、稳定性、开放性等都在发生着变化。如果软件能够持续适应所需,就能发展壮大;反之,不能适应所需,或者稳定性不佳,或者被竞争软件打败,它就只能退出市场逐渐消亡。
系统的认识
系统是什么 ? 系统是一组元素及元素之间的形式关系所构成的具备一定功能和价值的整体。
从基本层面来认识系统,需要:
- 熟悉系统的功能与边界;
- 识别系统的元素及其功能;
- 识别系统的元素之间的组合与协作。
以上是认识系统的先决要件。在此基础上,探究系统的实现、系统的影响、系统的适用性、系统的改造与优化等。
系统的实现可以从功能与形式上来认识。
- 功能:是系统存在的意义。系统通过输出一定的功能和价值来提供服务。
- 形式:是功能支撑的载体,实现功能的充分必要的关系。
功能和形式,满足层次性和稳定性的特征。形式通常决定功能。
功能分析
功能分析,可以采用 OPM,是过程与操作数的结合。通常可以用 “动词 + 名词” 来表达,比如汽车的功能是“载+人”,空调的功能是“调节+温度与湿度,令人感到舒适”,网络的功能是“传输+数据”。功能分析,需要识别系统中的操作数及过程、操作数的转换、过程的组合。
功能关系,以共享操作数为交换。操作数在过程中进行流动,发生预期的转变,输出到外界提供服务。过程的组合和操作数的共享与交换,构成了系统功能的价值通路。
从人类需求的角度出发,系统的功能,分为四个维度:满意、失望、惊喜、意外。满意是指系统功能符合预期;失望是指系统功能未能满足人的预期;惊喜是指系统的附带功能带给人很大的价值;意外是指系统的附带功能给人带来了很大的麻烦。
形式分析
形式,是系统的元素以相对稳定的结构关系的组合与协作。由于元素的性质多种多样,而结构关系相对固定,因此,可以先探究结构关系。
探究结构关系,常用方法是分解。分解,是将复杂系统分解为多个更简单的子系统及其组合与协作。分解,可以得到系统的体系结构。这个体系结构,既包括了处于不同层次的子系统的基本结构关系,也包括了同一层次上的子系统的基本结构关系。
基本结构关系有:
- 层次关系:低层次为高层次提供服务,构成高层次的基础;
- 序列关系: 事件发生的先后,并行与顺序;
- 位置关系: 上、下、左、右、前、后、环绕;
- 接触关系: 支撑、容纳、贴合、粘合、嵌入、搅、无触;
- 连接关系: 排列、链式、密铺、网状、引用;
- 映射关系:比如 1:1, 1: N, N:N ;
- 互补关系:接口、插槽、共同体;
- 交换关系:数据与信息、物质与能量的交换;
- 逻辑关系:真与假,与或非,条件与循环;
- 力学关系:引力、动量、作用力;
示例:软件系统
软件系统的根本功能,就是数据的处理。输入指定的数据,输出并展示指定的数据,符合人们的预期。
软件系统的形式,主要包含数据、指令、以及数据与指令的形式关系。数据与指令的形式关系,主要体现在指令对数据具有处理转换能力;指令与指令的形式关系,主要体现在逻辑与序列关系。
此外,指令的执行可具有层次性。多个指令可以组合成更层次的例程,比如组件。在组件层面,主要结构关系是映射、互补、连接、交换、层次关系。这些构成了软件系统的形式关系。
系统的方法
自顶向下与自底向上
系统的方法,通常有自顶向下与自底向上两种。
自顶向下是从系统的高层次功能作为起点,逐层往下分解,设计和构思多个层次的子系统的功能;自底向上,则从最底层的元素作为起点,先弄清楚元素及形式关系,然后逐层向上组合,实现不同层次的子系统的形式和功能。
在设计阶段,通常采用自顶向下,避免在系统的迷宫中迷失;在实现阶段,通常采用自底向上,因为要根据元素的特性及形式关系来实现子系统的功能。
在构建(子)系统的形式与功能的过程中,往往要在形式与功能领域之间交替地跳跃地思考。先在形式领域持续深入地思考,再跳跃到功能领域持续深入地思考。反之亦然。
视图与投影
要使系统的功能和形式更加直观化,需要借助一定的可视化工具来描绘系统。
有两种视图:集成视图与投影视图。集成视图,主要描绘系统的高层次的视图,包含其子系统的功能及形式关系;投影视图,主要描绘构成子系统的低层次子系统的功能及内部的形式关系,或者说,从某个角度观察到的系统的剖面图。 可以先创建一个集成视图,然后通过不同角度的投影,得到投影视图。
集成视图,可以采用 OPM ;投影视图,可以采用 UML 或 SysML。读者可自行查阅资料,此处不再详述。
系统的影响
系统是开放的。系统与环境的交换,体现了系统的影响。
系统功能与环境需求是双向影响的,相互适配的。一方面,环境需求的变化,要求系统功能去适应,系统的功能要发生变化,则其形式也会发生变化,这促成了系统的演化,人的进化就是例子;另一方面,系统形式与功能的先进性,也会引领和影响环境,促使环境在一定程度上去适配系统,比如苹果手机在IT行业的引领。无论哪种情形,系统功能与环境都会达到最终的相互适配。
通常情况下,是环境变化引领系统的适应。当环境变化起主导作用,系统必须做出改造和优化,去适应环境的变化,否则,系统就会逐渐衰退和消亡。系统的改造与优化,必定是在形式与功能的基础原理上进行。改变形式,从而改变功能,去适应环境变化。
小结
系统思维和系统思考,是一种非常强大的思想和方法论。本文探讨了系统的主要特征、系统的形式与功能、系统的基本方法、系统的影响,初步勾勒了系统认识的轮廓。系统之路,路漫漫其修远兮。