软件架构的复杂性和涌现

题图:香樟,浙江大学之江校区

计算机科学参与了复杂性学科的创立,并把复杂性引申为计算机科学的内涵。个人认为复杂性在软件架构领域引起重视有两个原因,其一是单体架构的承诺已经无效;其二是软件的使用者,即用户,开始深度参与到软件的架构设计中来。

随着单体架构的日渐式微,分布式架构的兴盛,微服务运动如火如荼,复杂性因此受到关注:目前,几乎所有的微服务文章开宗明义都会指出微服务架构是为了应对软件架构复杂性的挑战。

随着互联网的发展,特别是互联网+和移动互联网的发展,行业和用户开始深刻影响软件的架构和设计:软件架构设计再也不是架构师独立思考的产物,而是在和用户的互动中完成的。

复杂系统一般具有以下属性:具有大量组成成分的系统,成分互动关系的重要性大于成分本身;组成成分构成自我相似的多层级结构,高层级向下的因果关系,低层级向上的因果关系以及组成成分间的多重因果关系;系统是动态的,不停止的,具有突现,不可预测、不可化约、非线性;系统具有适应性,无中央控制,自我组织,正回馈或报酬递增等。

《Think Complexity》给出的定义是:复杂性科学是物理,数学和计算机科学交叉的跨学科领域,专注于具有许多组件相互作用的系统。如果想从更广泛意义上了解复杂性与进化、人工智能、计算、遗传、信息处理等领域的关系,可以参考梅拉妮·米歇尔(Melanie Mitchell) 的《复杂》一书。

在软件架构的领域研究复杂性,并不是要推翻还原论(比如模块化),而是探讨还原论在软件工业广泛应用之后,始终无法解决软件工程的组织效能问题,比如人月神话提出的挑战。复杂性更强调组件或者服务之间的关系,以及软件和用户之间的关系,用整体性思维观察软件开发的全过程。在企业中,架构的复杂属性往往对标系统架构师——那些在组织中缺位的一批人(很多国内架构师刚达到这个层级,就转向管理了)。系统架构师需要找到那些能够实现1+1>2的解决方案,实现整体最优。以飞机运输为例,乘客想要的是最快到达目的地,直接的方案是提高飞机的速度,但不能超过音速,以避免超过音速后引发的各种问题。从系统架构师的角度来看,这里要解决的问题并不是怎样飞的更快,而是如何缩短乘客从家中到机场,办理登机手续,过安检,上飞机,飞行,落地后取行李并达到最终目的地所需的总时间。

复杂性思考的本质就是从已知的未知向未知的未知延伸。这里的复杂(complex)并不是难懂的(complicated),难懂是已知的未知,复杂是未知的未知。传统软件开发是以实体为交付目标,逐层breakdown,整体等于部分之和。要做到这一点,软件各个实体从架构到实现都是需要提前study(已知的),需要探索的只是实现细节。所以传统软件开发特别强调需求的澄清,因为需求是可以澄清并且不会改变的。客户和开发者关注的都是成果本身,而不是成果的涌现物。而对于互联网软件来说,用整体性思维来看,需求变更本来就是常态。

涌现是系统运行过程中所表现,呈现和浮现的东西。涌现是我们构建系统的目标,是系统价值所在,也是系统思维的意义所在。功能是系统的第一层涌现,这里的功能包含基本功能和新的功能。性能是系统的第二层涌现,它是系统功能的对应。系统的第三层涌现是质量属性,包括可靠性,可维护性,可操作性,安全性,健壮性等。第三层涌现并不是立刻创造出价值,而是要通过系统在整个生命周期中的运作情况来体现。我觉得还存在系统的第四层涌现,就是软件设计者和开发者不能单独决定软件的功能和形态,而是和用户协同进化。

复杂性在软件架构领域的应用,首推《系统架构:复杂系统的产品设计与开发》一书。该书给出了一套具体的系统思考框架,供参考如下:

1,确定系统及其形式和功能

2,确定系统中的实体及其形式与功能,以及系统的边界及所处的环境

3,确定系统中各个实体之间的关系以及位于边界的关系,并确定这些关系的形式与功能

4,根据实体的功能及功能性的互动来确定系统的涌现属性

系统是由一组实体和这些实体之间的关系所构成的集合,其功能要大于这些实体各自的功能之和。在软件开发中,系统不能直接和产品简单对应。以微信为例,用户安装的产品是微信APP,但是在微信构建的系统中,包含了用户,数据,电商,公众号,小程序等实体。这些实体的功能要远大于各自功能之和,其架构也不能简单用APP+Cloud来描述。系统的架构原则就是对系统中的实体以及实体之间的关系进行抽象描述。

复杂性如何度量?复杂性守恒还是复杂性必然增长?在软件设计与开发的过程中如何去做?请关注我的后续文章。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,063评论 6 510
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,805评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,403评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,110评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,130评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,877评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,533评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,429评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,947评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,078评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,204评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,894评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,546评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,086评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,195评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,519评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,198评论 2 357

推荐阅读更多精彩内容