“涌现式” 产品架构设计

文 轻流CPO严琦东

去年我们开始组织两个活动,一个叫“超级星企”、一个是“轻朋好友聚一聚”。这两个活动有一个共同的目的:给轻流的“搭建者”人群一个发声和交流的平台。

通过这个平台,一方面同行业不同行业的搭建者可以互相交流搭建经验,分享自己设计的系统的经验。这个过程中让我很惊讶的是:

搭建者对于系统功能的运用远远地超出了设计者的预期。

从服务业到互联网再到制造业,在不同行业的业务专家手里,轻流展现了无数种功能组合方式,用户产出了大量之前从来没见过的系统形态。


一直以来我都对这种现象非常地好奇,但找不到一个词来形容这种现象。

直到去年我在玩一款游戏的时候找到了类似的感受,这款游戏叫“塞尔达传说-王国之泪”。在这个游戏里面,你可以通过一个叫“究极手”的能力,将游戏中几乎所有的物品进行设计组合,从而拼装出例如载具、桥梁甚至机器人等等。

于是我花了点时间研究了一下这款游戏的设计思路。找到了很多分析视频,其中有一个词很高频地出现,这个词叫:“涌现式设计”

“涌现式”的现象在我们所感知到的世界中非常普遍存在,这源于我们对于世界的特殊的理解方式。这一篇文章我尽可能地介绍什么是“涌现式设计”,同时也会结合轻流的实践让大家更好地理解这套方法论如何在软件设计领域落地;


抽象:人类最主要的理解世界的方式

首先我想先介绍一下人类是如何理解这个世界的。其中最常用的方法是“抽象”

“抽象”是一种降低复杂度的综合性方法,通过这种方法人类把所观察到的现象的基本特征凸显出来。

软件设计的目的是通过抽象的方式把在现实世界中所观察到的实体基本特征表达出来。

例如微信抽象了现实世界中“交流”;天猫淘宝则是抽象了现实世界中的“商场货柜”。

所以软件世界的丰富程度很大程度上是依赖于现实世界中实体的丰富程度。

“抽象”往往有三个步骤:

建模:降低对于这个世界理解的复杂度;

“抽象”的第一步是“建立模型”,主要表现为通过语言和符号表征索要研究的现象和系统的过程,最直接的表现是命名;

例如把符合某个特征的东西命名为“石头”,尽管这些东西在形状、颜色、材质等方面千差万别,但是大脑却可以抽象他们的共同特征。这是人对于世界进行心理理解的重要一步。

再比如轻流的定位是:面向业务人员的系统快速开发平台。这个定义的过程就是对于一个事物本身进行了建模。

圣经中记载神造人之后让人做的第一件事情就是给万物起名字:

耶和华 神说:“那人独居不好,我要为他造一个配偶帮助他。”耶和华 神用土所造成的野地各样走兽和空中各样飞鸟都带到那人面前,看他叫什么。那人怎样叫各样的活物,那就是它的名字。那人便给一切牲畜和空中飞鸟、野地走兽都起了名;(创世记 2:18-20 和合本)

分层:降低所建立的模型的复杂度;

完成建模之后,为了更好地理解它,我们会从观察维度上对所建立的模型进行结构分层,其中的每一层都会通过适当的抽象与上一层建立关系;

在物理学、计算机领域、软件工程等领域都被广泛运用。下图为 ChatGPT 给出的物理学的分层:

结合轻流本身,作为一个开发平台,我们将它拆解为了平台层、引擎层、组件层、属性层

属性作为用户操作的最基本操作单元构成组件,每一个具备业务意义的功能单元构成引擎,为数不多的引擎对开发范式对业务人员进行重定义从而构成整个开发平台;

通过分层一个模型的基本框架就初步建立起来了,通过分层我们可以清楚地理解一个模型是如何运作的。

模块化:降低每一个层级的复杂度;

完成分层后,为了进一步降低每一个层级的复杂度,人类倾向于在每一个层级通过模块化的方式进一步完善模型。德谟克利特提出的原子假说认为自然是由原子组成的。物理学和化学的发展就是这种“原子假说”的最好证明。

模块化主要表现在:

  1. 当前层级是由类型数量有限的模块组成的;
  2. 每一类模块具备单独不重复的特性;
  3. 每个模块可以互相组合会在高层级表现出新的属性。

这几个点单独理解可能有些不太好理解,同样回到轻流本身。轻流的门户引擎的最基本单元其实就是一个个的门户组件,每一个组件的功能独立且不重复:

每一个层级只有模块是不够的,设计好模块之间的“关系”(如何互相作用)也非常重要;门户作为交互界面的开发引擎,组件与组件之间的关系主要有:位置关系、大小关系、数据关系等等。通过这些关系的设计,让组件的组合模式具备非常大的想象空间。

在这件事情上,乐高做到了极致,乐高对于模块之间“关系”的设计几乎是最优的解决方案了,积木之间只有少数几种连接方式,但是一个 3 岁的小孩就可以在没有什么学习的情况下完成个各个角度各种方式的组合。

通过对每一个层级的组件的结构化整理,我们可以很快降低整个系统的设计复杂度,同时也在客户侧达到不错的一致性,降低使用复杂度;


涌现现象

上面我介绍了“抽象”的基本框架和方法。主要包含:建模、分层、模块化三个步骤。

通过抽象我们能够降低我们理解世界的复杂度。如今在各种专业领域被普遍运用的架构图就是“抽象”方法的重要实践运用。在软件领域尤其,下图我展示了轻流的产品架构图:

轻流架构图

前面说到,人类为了理解现实世界,进行了大量的“抽象”。通过对各种各样抽象后的概念进行观察,我们会发现一个很重要的特点:

“我们无法通过低层级的模块特性来解释高层级的模块特性”;

例如,即便我们了解了氢原子的所有特性,通过氢原子和氧原子的组合相互作用,水分子所表现出来的是完全不同的新特性。同样的情况也出现在对于大脑的研究中,即便我们能够观察到神经元的所有运动,我们依然无法理解和预测“心理以及意识”的产生。

而这种现象就是我想说的“涌现现象”

我们有能力将复杂的现象抽象成简单的概念结构,但是并没有能力从这些简单的概念结构组合得出整体的所有性质。

一个好的产品架构能够让创意涌现,你并不需要将功能进行穷举,用户依然可以涌现出大量超出设计者预期的使用方式。

你可以尝试用这套抽象的方法论(建模、分层、模块化),重新审视自己产品的架构。

封面图为 ChatGPT 绘制,名为《抽象》

展开阅读全文

页面更新:2024-03-02

标签:组合   复杂度   层级   抽象   架构   组件   模块   现象   关系   方式   世界   产品

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top