前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用系统架构中的系统思维分析一个咖啡厅系统

用系统架构中的系统思维分析一个咖啡厅系统

作者头像
Frank909
发布2022-05-16 08:35:58
4620
发布2022-05-16 08:35:58
举报
文章被收录于专栏:Frank909Frank909

此文是对《系统架构》中第2章系统思维的笔记,前前后后看了很多遍,为了达到活学活用,尝试用系统思维分析一个生动的现实生活中的案例,这样有助于更深刻的理解及现实的建模能力。现分享给大家一起讨论。

1. 什么是系统思维?

系统就是整体看待事情。把一个问题、一个现象、一种状态等等以更全面的视角去当成一个系统看待,关心它的结构和内部元素之间的关系。

系统思维和其他思维是并列的,比如批判性思维、分析思维、创新思维等等。

比如乘坐汽车去旅行,车发生意外冲到了路边差点撞到书。然后,不同的人看待这件事的时候,一般都会指责司机不小心,不专注,技术不行。

那系统思维大概会如何看待这件事情呢?

把车、道路、人看成一整个系统,人驾驶车、车在道路上行驶、道路状况不断变化。然后,车子发生意外这件事,就不能当当只指责司机本身。有可能车子本身内部系统异常,道路环境异常,最终导致了司机操作失效或者失当。

系统思维有利于我们整体看待问题,跳出局部思维的陷阱。

系统思维需要关注系统涌现两大概念。

1.1 什么是系统?

系统是由一组实体和这些实体之间的关系所构成的集合,其功能大于这些实体各自的功能之和。

这个世界有很多东西是一个系统,很多东西不是系统。

一堆沙子不是系统,沙子之间没有强作用关系,一粒沙子和许多沙子没有什么区别。

但是,一堵墙面可以看作是一个系统。砖块、水泥之间强相互作用,一堵墙的作用大于单个砖块、水泥之间的功能组合。

人是一个系统,太阳系也是一个系统,然后,我们上学、上班的集体也是一个系统。

既然是系统,那么就可以运用系统思维分析它们。

1.2 涌现

前面讲到整体大于部分之合的现象,有一个统一的名称就是:涌现

系统的功能其实就是一个系统的涌现物,也是一个系统最重要的特征。

试想一下,如果一个系统没有功能,那么结合前面的定义,那么就不得称为系统。

功能有预期的,也有非预期的,有令人满意的,也有不合人意的。

所以,它们之间的组合方式式有多种,涌现的功能就出现了 4 种。

  • 令人满意的预期功能
  • 令人满意的非预期功能
  • 不合人意的预期功能
  • 不合人意的非预期功能

不合人意的预期功能就是程序员口中的BUG,我让你做A但你没有做到做好,需要专门处理。

不合人意的非预期功能一般就是故障,是意料之外不好的事情。比如,我驾驶汽车过程中,左轮子从车轱辘脱离并滚到路边。

在汽车软件开发中这种不合人意的非预期功能是很头痛和需要重点考虑的。

2. 系统思维 4 大流程及咖啡厅案例演练

运用系统思维时,遵循下面 4 个步骤流程

  1. 确定系统及它的形式和功能
  2. 确定系统中的实体及它们的形式和功能
  3. 确定实体相互之间的关系
  4. 处理涌现

听起来挺虚的,实际上生活中也常见。

我们以一个咖啡厅为例子,说明系统化思维。

2.1 确定咖啡厅是个什么系统

我们知道,咖啡厅是卖咖啡的地方。按照系统思维第一步,确定系统的形式和功能。

那么形式是什么呢?在咖啡厅这个系统中,形式就是一间咖啡屋。

功能是什么呢?

在程序开发中

代码语言:javascript
复制
功能=过程(process)+操作数(operand)

可以简化为我们常见的函数、参数及返回值的组合。

那么,最简化版本的咖啡厅系统就长这样。

系统

形式

功能

咖啡厅

咖啡屋

提供咖啡服务

然后,提供咖啡服务这项功能,按照公式定义:

功能

过程

操作数

提供咖啡服务

制作咖啡

咖啡

有读者可能会想,这太小儿科了吧,是个小学生都能够分析。

确实是这样的,虽然咖啡厅的本质是卖咖啡,但我们显示不想只停留在整体粗略的分析上。

2.2 确定咖啡厅的内部实体的形式和功能

打开咖啡厅内部,我们大概可以得到如下结构。

我们不难得出咖啡厅系统内部有 5 个实体。

  • 收款员
  • 收款系统
  • 咖啡师
  • 咖啡机
  • 服务员

系统中的实体也可能是一个子系统,实体和系统一样同样具备自己的形式和功能。

系统或实体

形式

功能

咖啡厅

咖啡屋

提供咖啡服务

收款员

员工

收银

咖啡系统

订单系统

下单结算

咖啡师

员工

使用咖啡机生产咖啡

咖啡机

机器

生产咖啡

服务员

员工

递送咖啡

2.3 确定咖啡厅各实体之间的关系

我们讲形式和功能,其实就是讲它们之间的结构和交互关系。

形式是功能的载体,没有形式,功能将不存在。

从顾客要求喝咖啡到最终服务员将咖啡送到餐桌上,这其中经过多个实体,实体间有多个交互,而这些实体和交互其实就构成了一个完整的咖啡厅。

注意,系统内实体的划分根据划分维度不同可能不同,也就是说,不同的系统架构师他们认为的系统可能长的不一样,实体划分的范围也不一样。

系统是有边界的,系统的边界非常重要。

比如,上图中顾客就不应当出现在咖啡厅系统内部当中,即使它们有交互。

系统与外部的交互叫做外部接口。 这些外部接口非常重要,一般越清晰越简单越好。你想象一下,一个顾客看见咖啡厅中有3个员工,他是知道找谁点单好,还是随机问要好?

2.4 对待咖啡厅系统的涌现

前面讲到过功能是一个系统的涌现物,一般可以分为 4 类。

  • 令人满意的预期功能
  • 令人满意的非预期功能
  • 不合人意的预期功能
  • 不合人意的非预期功能

那么,以咖啡厅为例,讲讲这4种涌现。

令人满意的预期功能
  • 咖啡非常好喝
  • 价格实惠

这些都能预想到,算系统的基础功能项。

令人满意的非预期功能
  • 喝咖啡送礼物
  • 参加活动名单
  • 咖啡竟然还有这种奇妙的味道组合

这些不能预料到的,但会给顾客惊喜的东西就是属于令人满意的非预期功能,这个算系统的加分项。

不合人意见的预期功能
  • 口味不符
  • 它加奶油了、加糖了

这些不难预料到的,但顾客不喜欢,这说明咖啡厅服务不到位,所以出现了非预期效果。也说明这个系统需要改善。

不合人意见的非预期功能
  • 烫伤顾客了
  • 顾客食物中毒了

这些谁也料想不到,然后是非常危险的事情,是一个系统要避免的东西。

我们都希望有好的预期,避免坏的预期,所以就需要做功课,一般有 4 种:

  1. 借助过往类似成熟经验来预测
  2. 反复试验
  3. 建模
  4. 推理

第1种,以前开过咖啡厅,现在再开一家,大多经验可以借鉴。 第2种情况,为了获取顾客最青睐的饮品,我们可以反复试验得到结果。 第3种情况,创建一种商业模式,前期充分验证,然后根据地域差距,调整参数,最后大致也能得到结果,这个也常见,比如那些连锁的咖啡厅就借助了这样的方式。 第4种情况,没有前面的3种可以借鉴,那可以好好开个研讨会,推断它的功能。

3. 总结

本文描述的系统思维显得非常简陋,主要说明了系统的形式、功能、涌现。那实际也这么简单吗?如果是,那么是不是每个人都可以做系统架构师?

答案:是也不是。

是的原因:系统思维本来就是一种思考方式,世界上所有的思考方式都可以很简单,如果太复杂,没几个人会用、愿意用。

不是的原因:现实中的系统种类繁多,大到上天的火箭,下到文中描述的一堵墙。问题是,我们并不能保证以下问题:

  • 正确确认一个系统的形式和功能,比如说你能告诉我元宇宙是什么系统吗?
  • 正确确认一个系统中内部的实体的形式和功能,比如说你能告诉我元宇宙里面有什么?
  • 正确确认一个系统中的实体之间的关系,比如说元宇宙中的东西有什么关系?
  • 正确对待一个系统的涌现,比如说在元宇宙中会发生什么,会对你现实造成什么冲击?会对你的钱财造成影响吗?

系统思维简单,但要准确运用需要在无数次实际案例反复运用、思考、调整、迭代。这是属于一个技术人员的内功心法,虽简单,但别轻视它,虽有效,但你不一定能用好。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-05-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 什么是系统思维?
    • 1.1 什么是系统?
      • 1.2 涌现
      • 2. 系统思维 4 大流程及咖啡厅案例演练
        • 2.1 确定咖啡厅是个什么系统
          • 2.2 确定咖啡厅的内部实体的形式和功能
            • 2.3 确定咖啡厅各实体之间的关系
              • 2.4 对待咖啡厅系统的涌现
                • 令人满意的预期功能
              • 令人满意的非预期功能
                • 不合人意见的预期功能
                  • 不合人意见的非预期功能
                  • 3. 总结
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档