2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

利用残余理论构建更好的软件架构

  • 2025-10-11
    北京
  • 本文字数:1692 字

    阅读完需:约 6 分钟

大小:825.76K时长:04:41
利用残余理论构建更好的软件架构

软件架构之所以很难做,是因为它融合了编码、数学和业务系统几大领域。由于意外情况,架构往往会随着时间变得无足轻重,Barry O'Reilly 在哥本哈根的Goto会议上这样说。他提出了残余理论,建议对简单的架构施加压力,以揭示复杂业务系统中隐藏的“吸引子”。这使得设计能够更好地适应变化和不确定性。

 

软件架构之所以很难做,是因为它需要广泛的技能集,O'Reilly 说。我们必须掌握代码、数学和逻辑的世界,以及人类和业务系统的世界,并理解这两个世界如何相互关联和影响。

 

在大学里,他们只教我们技术。当我们开始设计系统时,我们意识到业务环境的复杂性不断给我们带来意外情况,使我们的架构变得无足轻重,O'Reilly 说。使像软件架构这样静态和僵化的东西在不断变化的流动世界中生存,并不是一件容易的任务,他补充说。

 

残余性假设对简单架构的随机压力模拟将产生比传统的需求工程、风险管理或对变化做出反应的方法更好的架构,O'Reilly 解释说:

 

这最初是一个好奇的观察,在过去的 10 年里,我不得不构建理论解释和实验来证明这确实是事实。有了这些知识,我们可以以不同的方式思考软件架构并构建新工具。

 

作为西方科学的学生,我们的第一个办法是将任何复杂系统简化为其多个组成部分,并详细研究这些部分。这是软件工程师的默认做法,O'Reilly 说。在复杂系统中,元素的数量和潜在的相互作用和状态使得这种以细节为导向的分析变得无法实现。前几代架构师试图将业务环境的复杂性简化为一系列逻辑、结构或开发过程。

 

复杂系统的关键之一是它们永远不会实现其元素组合所允许的所有可能状态。相反,元素之间的相互作用将系统限制在非常少量的潜在状态中,我们称之为“吸引子”,O'Reilly 说。因此,复杂的业务系统不是作为一系列交互元素及其关系来建模的,而是作为一系列吸引子来建模,他解释说:

 

当我们构建架构时,架构必须在这些吸引子中生存。因此,吸引子提供了一种更简单、更容易、更实用的方式来应对环境的复杂性。

 

问题是我们不知道吸引子是什么,但通过随机模拟压力,我们可以发现许多吸引子,O'Reilly 说。如果你回想一下你看到的架构失败的重大案例,你会发现它们大多数失败是因为错过了吸引子,他提到。

 

残余性理论是一个非常简单的过程。有时,人们因为证明残余性有效所需的理论工作非常繁重而感到沮丧,但应用它却很容易,O'Reilly 解释说:

 

我们从一个建议开始,一个解决功能问题的简单架构。从那里我们用潜在的环境变化来施加压力。这些压力允许我们发现吸引子,这里通常是通过与领域专家的对话。对于每个吸引子,我们识别残留物,即在这个吸引子中我们的架构留下了什么,然后我们改变简单的架构,使其更好地生存。

 

我们这样做很多次,最后将所有这些增强的残留物整合到一个连贯的架构中。然后我们可以测试它,以证明它比我们的简单架构更能承受未知形式的压力。

 

在充满不确定性的复杂业务环境中,残余性使得快速创建架构成为可能,而不是追逐哪些提出具体要求或回答业务本身未知的问题的利益相关者,O'Reilly 说。它将技术架构师从细节中拉出来,并教会他们如何在没有传统企业架构的线条和框框的情况下,有成效地参与业务环境,他总结说。

 

InfoQ 采访了 Barry·O'Reilly 关于残余性的问题。

 

InfoQ:我们如何证明我们创建的残余架构比天真架构有所改进?

 

Barry·O'Reilly:一个简单的测试是使用第二组压力测试来检查我们的残余架构是否比我们的简单架构更能承受更多的未知事件。你可以很容易地看到这与 ML 的训练/测试集之间的相似性。残余性理论最终表明,架构应该被训练,而不是被设计。

 

InfoQ:你从残余分析中看到了什么好处?

 

O'Reilly:高级架构师报告说,它为许多人已经想出的做法提供了理论依据,并为团队提供了一个共享的词汇来讨论架构。最终,它使架构更加明确、定义更清晰、更容易教授。结果是能让我们相信的架构和可追溯的决策。

 

它同样面临挑战。一小部分开发者发现,从我们训练有素的线性、逻辑、数学世界跳跃到横向、富有想象力的技术非常困难。面向对象编程(OOP)是一个与 OOP 一样庞大的主题,需要同样多的努力去学习。

 

原文链接:Producing a Better Software Architecture with Residuality Theory

2025-10-11 12:006060

评论

发布
暂无评论

望繁信科技与华恒生物正式签约,共同开启流程数字化转型新篇章

望繁信科技

数字化转型 流程挖掘 流程资产 流程智能

来云栖大会!探展云上开发,沉浸式体验云原生 + AI 新奇玩法

阿里云云效

阿里云 云原生

mcgs笔记 构件 查看位置坐标与大小

万里无云万里天

自动化 HMI mcgs

2024年职教展-2024全国职业教育产业博览会

秋硕展览

【开源鸿蒙】调试OpenHarmony轻量系统QEMU RISC-V版本

码匠许师傅

gdb qemu OpenHarmony risc-v

mcgs笔记 画面 由全屏回到缩小的窗口状态

万里无云万里天

自动化 HMI mcgs

手工转测试开发轻松实现薪资 50%涨幅的逆袭之路

霍格沃兹测试开发学社

悲惨!刚入职没几天,无意间把数据库删了,很尴尬,原因很奇葩

五阳

程序员 java 架构

火山引擎携手地瓜机器人,加速大模型在机器人场景规模落地

火山引擎边缘云

IoT 机器人 AIOT 智能IoT边缘服务 大模型

mcgs笔记 工程上传功能

万里无云万里天

自动化 HMI mcgs

mcgs笔记 构件 水平移动与垂直移动

万里无云万里天

自动化 HMI mcgs

mcgs笔记 画面 百分比缩放

万里无云万里天

自动化 HMI mcgs

828华为云会议Flexus版重磅亮相,让每一场会议都高效!

轶天下事

inBuilder的业务领域划分

inBuilder低代码平台

微服务 低代码

mcgs笔记 按钮 按下与抬起的差异设置

万里无云万里天

自动化 HMI mcgs

mcgs笔记 构件 标签的闪烁效果

万里无云万里天

自动化 HMI mcgs

【YashanDB知识库】执行sql语句时报YAS-04401 data type - expected, but BLOB got异常

YashanDB

yashandb 崖山数据库 yashandb知识库

技术干货 | YashanDB+Zabbix搭建监控可视化平台,手把手实操!

YashanDB

yashandb 崖山数据库

什么是 Rainbond?打破 Kubernetes 的复杂性

北京好雨科技有限公司

Kubernetes 云原生 rainbond 企业 9 月 PK 榜

残疾人辅具展|2024年广州国际残疾人用品展会

秋硕展览

mcgs笔记 构件 动画显示构件模拟设备转动

万里无云万里天

自动化 HMI mcgs

摊牌了!一文教会你轻松上手豆包MarsCode 编程助手!

TRAE.ai

人工智能 AI 代码 教程 分享工具

Kotlin协程的取消机制:深入理解和优雅实现

伤感汤姆布利柏

搭建Jellyfin、Plex、Emby媒体服务,贝锐花生壳轻松内网穿透远程访问

贝锐

NAS 群晖 #docker

mcgs笔记 工具箱 元件库(公共图库)展示(下)

万里无云万里天

自动化 HMI mcgs

来云栖大会!探展云上开发,沉浸式体验云原生 + AI 新奇玩法

阿里巴巴云原生

阿里云 云原生

图像检测【YOLOv5】——深度学习

芯动大师

深度学习 模型 Anaconda

6个 Spring websocket注解:整体架构分析与注解应用案例(必须收藏)

肖哥弹架构

Java spring websocket

利用观测云实现云资源FinOps优化

观测云

云服务 FinOps

【开源鸿蒙】运行OpenHarmony轻量系统QEMU RISC-V版本

码匠许师傅

qemu OpenHarmony risc-v

利用残余理论构建更好的软件架构_软件工程_Ben Linders_InfoQ精选文章