Su的技术博客

  • 首页
  • 原创
  • 视频
  • Java
  • MySQL
  • DDD
  • 事故复盘
  • 架构方案
  • AI
  • Other
  • 工具
    • AI工具集
    • 工具清单
    • JSON在线格式化
    • JSON在线比较
    • SQL在线格式化
  • 打赏
  • 关于
路很长,又很短
  1. 首页
  2. 架构方案
  3. 正文
                           

【转载】1.软件架构编年史(译)

2023-08-28 1718点热度 0人点赞 0条评论

原文:https://herbertograca.com/2017/07/03/the-software-architecture-chronicles/

译者:最早看到的是作者的这篇文章(译文),其中的那副信息图可谓集软件架构之大成。后来发现这是作者学习和思考软件架构发展史的系列文章之一。“以史为鉴,可以知兴替”,阅读历史就是学习的过程。翻译也不例外,我也是通过阅读和翻译来学习软件开发的历史,联系作者获得授权之后便有了这一系列译文。

这是软件架构系列的第一篇文章。我将我对软件架构的学习过程和思考以及我是如何运用这些知识的写成这一系列文章。

我把这一系列文章称为“软件架构编年史”,并不是因为我觉得自己的文笔不错,而是想用一种有趣的方式旧调重弹!😀

在第一篇文章里,我将谈谈我撰写这一系列的原因和接下来的计划。

学习历史的重要性

不学习历史的人注定要重复错误。——温斯顿.丘吉尔

我发现从历史中学习十分重要,历史可以教给我们很多东西。在个人层面,我们(最终有望)从自己的失败中学习。在国家层面,历史帮助形成我们的文化,创造群体思想,“我们”的思想,国家的同一性。它还能帮助我们从祖先的错误中学习,比如错信一些人的疯狂思想,想想第二次世界大战...

对我们开发者来说,历史帮助我们在前辈们的知识上前进。它帮助我们从前辈们的知识:错误、经历和经验中学习。它帮助我们“站在巨人的肩膀上”更上一层楼!

在我向更好开发者前进的成长之路上,我浏览过许多文章,观看过许多会议演讲,也阅读过许多书籍。我尽可能地站在巨人的肩膀上!

然而我一直有一个困惑,这些观点发展出其它许多观点,又继续发展出更多的观点...这就好比“传话游戏”,论文、文章或者书籍原本要表达的思想最后终会被扭曲。

于是我开始在互联网上淘宝,寻找表达这些概念的原始论文、文章和书籍,我觉得它们是我工作中最重要的概念,我自己也时常思考它们。

在我尝试以某种考古方式理解这些概念如何形成的过程中,我的思考就形成了这一系列文章。

撰写这些文章强迫我大量阅读和思考这些主题,这帮我理解现代软件开发中使用的技术。我希望这些文章内帮到更多后来的开发者。

然而,如果你读到任何不理解或者有异议的内容,请让我知晓。我对这些主题的讨论持完全开放的态度,希望可以从他人那里学习,当我被证明犯错时我会改变我的观点。

软件架构编年史系列

  1. 软件架构编年史(译) //原文
  2. 软件架构预述(译) //原文
  3. 编程语言的演化(译) //原文
  4. 架构风格 vs. 架构模式 vs. 设计模式(译) //原文
  5. 单体架构(译) //原文
  6. 分层架构(译) //原文
  7. MVC 及其变种(译) //原文
    • 1979 – Model-View-Controller(译) //原文
    • 1987/2000 – PAC / Hierarchical Model-View-Controller(译) //原文
    • 1996 – Model-View-Presenter(译) //原文
    • 1998 –”Model 1″ & “Model 2” (译) //原文
    • 2005 – Model-View-ViewModel(译) //原文
    • ???? – Model-View-Presenter-ViewModel(译) //原文
    • 2008 – Resource-Method-Representation(译) //原文
    • 2014 – Action-Domain-Responder(译) //原文
  8. EBI 架构(译) //原文
  9. 包与命名空间(译) //原文
  10. 领域驱动设计(译) //原文
  11. 端口和适配器架构(六边形架构)(译) //原文
  12. 洋葱架构(译) //原文
  13. 整洁架构(译) //原文
  14. 事件驱动的架构(译) //原文
  15. 从 CQS 到 CQRS(译) //原文
  16. 面向服务的架构(SOA)(译) //原文
  17. 清晰架构(01):融合 DDD、洋葱架构、整洁架构、CQRS...(译) //原文
  18. 清晰架构(02):超越同心圆分层 (译) //原文
  19. 清晰架构(03):在代码中展现架构和领域 (译) //原文
  20. 清晰架构(04):用文档描述架构 (译) //原文
  21. 一个项目的演进:从 MVP 到 P
  22. 4 + 1 架构视图模型
  23. 架构的质量属性

时间线

下面是我在阅读所有这些主题的文章和书籍之后总结的一条软件开发发展的粗略的时间线。我找到的关于确切时间的参考资料都作为链接加入了时间线,拿不准的时间我都加上了“~”,表示“大约”是这个时间。我们还可以在维基百科的编程范式主页上找到大量相关的内容。

这里列出的大多数话题都将在这个系列中谈及。

  • 20 世纪 50 年代
    • 非结构化编程
    • ~1951 – 汇编
  • 20 世纪 60 年代
    • 结构化编程
    • 分层: 用户界面、业务逻辑数据存储都在一层。
    • ~1958 – Algol
  • 20 世纪 70 年代
    • 过程式/函数式编程
    • ~1970 – Pascal
    • ~1972 – C
    • 1979 – MVC 模式(Model-View-Controller)
  • 20 世纪 80 年代
    • 面向对象编程 (但其思想在 20 世纪 60 年代晚期已经第一次提出)
    • 分层: 两层,第一层是用户界面,第二层是业务逻辑和数据存储
    • ~1980 – C++
    • CORBA – 通用物件请求代理架构(尽管1991年才推出第一个稳定版,但最早使用可以追溯到 20 世纪 80 年代)
    • ~1986 – Erlang
    • ~1987 – Perl
    • 1987 – PAC 即 HMVC 模式(Hierarchical Model-View-Controller)
    • 1988 – LSP(里氏替换原则) (~SOLID)
  • 20 世纪 90 年代
    • 分层: 三层,第一层是用户界面,第二层是业务逻辑(以及浏览器作为客户端时的用户界面展现逻辑),第三层是数据存储
    • ~1991 – 消息总线
    • ~1991 – Python
    • 1992 – EBI 架构(Entity-Boundary-Interactor) 即 EBC 或 EIC
    • ~1993 – Ruby
    • ~1995 – Delphi, Java, Javascript, PHP
    • 1996 – MVP 模式(Model-View-Presenter)
    • 1996 – OCP, ISP, DIP (~SOLID), REP, CRP, CCP, ADP
    • 1997 – SDP, SAP
    • ~1997 – 面向方面编程
    • ~1997 – Web 服务
    • ~1997 – ESB – 企业服务总线 (尽管创造该术语的书籍2004年才出版,但这个概念早已被使用)
  • 21 世纪 00 年代
    • 2002 – SRP (~SOLID)
    • 2003 – 领域驱动设计
    • 2005 – MVVM 模式(Model-View-ViewModel)
    • 2005 – 端口和适配器架构即六边形架构
    • 2006? – CQRS 与 ES (命令查询职责分离与事件溯源)
    • 2008 – 洋葱架构
    • 2009 – 微服务(Netflix)
  • 21 世纪 10 年代
    • 2010 – DCI 架构(Data-Context-Interaction)
    • 2012 – 整洁架构
    • 2014 – C4 模型

译者注:C4模型的介绍可以参考我的同事仝键的介绍文章“可视化架构设计——C4 介绍”。

本文仅供学习!所有权归属原作者。侵删!文章来源:https://www.jianshu.com/p/b477b2cc6cfa

更多文章:

  1. 7. MVC及其变种(译)
  2. 你所说的“事件驱动”是什么? What do you mean by “Event-Driven”?
  3. 9.包和命名空间(译)
  4. 3.编程语言的演化(译)
  5. 8. EBI 架构(译)
  6. Go整洁架构实践
  7. 2.软件架构预述(译)
  8. 10.领域驱动设计(译)
  9. 京东平台研发朱志国:领域驱动设计(DDD)理论启示
  10. 搞懂六边形架构、洋葱架构、整洁架构
标签: 转载 架构 系统架构 编程语言 软件架构
最后更新:2023-08-30

coder

分享干货文章,学习先进经验。

打赏 点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

广告
文章目录
  • 学习历史的重要性
  • 软件架构编年史系列
  • 时间线
最新 热点 推荐
最新 热点 推荐
微服务架构:必懂的6大性能维度 Anthropic Code with Claude 开发者大会:开启 AI Agent 新时代 视频笔记-微服务架构P4:必懂5种设计模式 视频笔记:微服务架构P4 设计模式:每服务数据库、API 网关和事件驱动架构 干货 | 论Elasticsearch数据建模的重要性 马蜂窝消息总线——面向业务的消息服务设计 基于 MySQL Binlog 实现可配置的异构数据同步 视频笔记:Google发布Agent2Agent协议
视频笔记:微服务架构P4 设计模式:每服务数据库、API 网关和事件驱动架构干货 | 论Elasticsearch数据建模的重要性视频笔记-微服务架构P4:必懂5种设计模式Anthropic Code with Claude 开发者大会:开启 AI Agent 新时代微服务架构:必懂的6大性能维度
大型系统架构重构10步法 系统设计 | 如何表达技术架构?(规划篇) DDD系列第五讲:聊聊如何避免写流水账代码 生产环境JVM崩溃问题排查解决 线上问题处理案例1:出乎意料的数据库连接池 2000 字教你画项目架构图(建议收藏) Eureka源码剖析之五:服务下线 Elasticsearch 使用误区之五——单次请求获取大量数据

CRUD (1) Event Sourcing (1) graphql (1) id (1) NoSQL (1) quarkus (1) rest (1) RocketMQ (2) Spring Boot (1) zk (1) zookeeper (1) 上下文 (1) 事务消息 (1) 二级缓存 (1) 值对象 (1) 关系数据库 (1) 分布式缓存 (1) 原子性 (1) 唯一ID (1) 商品 (1) 多对多 (1) 子域 (1) 字符集 (1) 客户端心跳 (1) 幂等 (2) 干货 (1) 并发 (1) 应用场景 (1) 应用架构图 (1) 康威定律 (2) 异步复制 (1) 微服务架构 (3) 总体方案 (1) 技术方案 (2) 技术架构 (2) 技术架构图 (1) 技能 (1) 持续集成 (1) 支撑域 (1) 故障恢复 (1) 数据架构图 (1) 方案选型 (1) 日记 (1) 服务发现 (1) 服务治理 (1) 服务注册 (2) 机房 (1) 核心域 (1) 泄漏 (1) 洋葱架构 (1) 消息队列 (5) 源码剖析 (1) 灰度发布 (1) 熔断 (1) 生态 (1) 画图工具 (1) 研发团队 (1) 线程 (2) 组织架构 (1) 缓存架构 (1) 编码 (1) 视频 (20) 读写分离 (1) 贵州 (1) 软件设计 (1) 迁移 (1) 通用域 (1) 集群化 (1) 雪花算法 (1) 顺序消息 (1)

推荐链接🔗
  • AI工具集
  • 工具箱🛠️

COPYRIGHT © 2014-2025 verysu.com . ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

粤ICP备15033072号-2