(转)1、软件架构编年史

本文是软件架构系列的第一篇,作者探讨了软件架构的理解、应用以及历史的重要性。文章追溯了从20世纪50年代至今的编程范式和技术,如模型-视图-控制器、分层架构、面向服务架构等,旨在理解这些概念如何形成并影响当今的软件开发。作者强调从历史中学习,避免重蹈覆辙,并鼓励读者分享观点以共同进步。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

翻译转帖

原文链接

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

软件架构编年史

这篇文章是关于软件架构系列文章中的第一篇。在它们中,我写了我对软件架构的了解,我如何看待它,以及我如何使用这些知识。

我称这些系列文章为“软件架构编年史”,不是因为我认为自己是一个伟大的作家,而是因为我觉得这个名字很有趣,有点老生常谈!

在第一篇文章中,我将讨论我为什么要写这一系列文章以及接下来会发生什么。

了解我们的历史的重要性

那些不学习历史的人注定要重蹈覆辙。

乔治·桑塔亚纳, 《理性的生活》,1905 年

我发现从历史中学习很重要,它可以教会我们很多东西。在个人层面上,我们(最终并希望)从我们的个人错误中吸取教训。作为一个国家,历史有助于塑造我们的文化,有助于创造群体观念、“我们”观念和民族认同。它还可以帮助我们从祖先的错误中吸取教训,比如相信有非常奇怪想法的人,想想二战……

对于我们作为开发人员来说,它可以帮助我们在前辈开发人员的知识基础上再接再厉。它帮助我们从他们的错误、他们的道路、他们的经验中学习:他们的知识。通过“站在巨人的肩膀上”帮助我们达到更高的境界

在成为一名更好的开发人员的道路上,我阅读了很多文章,观看了很多会议演讲,并阅读了大量书籍。我努力站在巨人的肩膀上

不过,让我感到困惑的一件事是,有很多基于意见的意见……这就像“中国窃窃私语游戏”一样,我们最终对论文、文章或书籍的真实陈述产生了扭曲的想法。

因此,我开始在互联网上搜寻原始论文、文章和书籍,这些论文、文章和书籍陈述了我认为对我的工作最重要的概念,并自己进行推理。

这些帖子是这种推理的结果,因为我试图以某种时间顺序的方式理解这些概念是如何形成的。

写这些帖子迫使我阅读和推理所有这些主题,并帮助我理解当今软件开发中使用的技术,我希望这些帖子对更多的开发人员有所帮助。

尽管如此,如果您阅读了一些您不理解或不同意的内容,请告诉我,我非常愿意讨论这些主题,向其他人学习并在我被证明是错误的时候改变我的观点。

软件架构编年史中的帖子

  1. 软件架构编年史
  2. 软件架构前提
  3. 编程语言演变
  4. 架构风格 vs. 架构模式 vs. 设计模式
  5. 单体架构
  6. 分层架构
  7. MVC 及其替代方案
    1. 1979 年 - 模型-视图-控制器
    2. 1987/2000 – PAC / 分层模型-视图-控制器
    3. 1996 年 – 模型-视图-演示者
    4. 1998年——“模型1”和“模型2”
    5. 2005 年 - 模型-视图-视图模型
    6. ???– 模型-视图-演示者-视图模型
    7. 2008 - 资源-方法-表示
    8. 2014 – 动作域响应者
  8. EBI架构
  9. 包装和命名空间
  10. 领域驱动设计
  11. 端口和适配器架构(又名六边形架构)
  12. 洋葱建筑
  13. 干净的架构
  14. 事件驱动架构
  15. 从 CQS 到 CQRS
  16. 面向服务的架构 (SOA)
  17. 显式架构 #01:DDD、Hexagonal、Onion、Clean、CQRS……我是如何把它们组合在一起的
  18. 显式架构 #02:不仅仅是同心层
  19. 显式架构 #03:在代码中反映架构和领域
  20. 显式架构 #04:记录架构
  21. 项目演进:从MVP到P
  22. 4 + 1 架构视图模型
  23. 架构质量属性

时间轴

这是软件开发演变的粗略时间表,因为我在阅读了有关所有这些主题的文章和书籍后才意识到这一点。我添加了指向我找到日期参考的位置的链接,并在我不太确定日期的地方加上了“~”,意思是“大约”。我们还可以通过维基百科的主要编程范式页面找到关于这些事情的大量信息。

我将在本系列文章中讨论大多数这些主题。

  • 1950年代

    •   非结构化编程
    • ~1951 – 组装
  • 1960年代

    •   结构化编程
    •   分层:1 层,包含 UI、业务逻辑和数据存储
    • ~1958 年 – 阿尔戈勒
  • 1970年代

    •   过程/函数式编程
    • ~1970 年 – 帕斯卡
    • ~1972 – C
    •   1979 年-模型-视图-控制器
  • 1980年代

    •  面向对象的编程(不过,第一个想法是在1960年代后期)
    •   分层:2 层,第一层是 UI,第二层是业务逻辑和数据存储
    • ~1980 – C++
    •   CORBA – Common Object Request Broker Architecture(虽然第一个稳定版本是在1991年才发布的,但第一次使用是在1980年代)
    • ~1986 – Erlang
    • ~1987 – Perl
    •   1987 年– PAC 又名分层模型-视图-控制器
    •   1988 – LSP (~ SO L ID )
  • 1990年代

    •   分层: 3 层,第一层带有 UI,第二层业务逻辑(以及浏览器作为客户端的情况下的 UI 呈现逻辑),第三层带有数据存储
    • ~1991 –消息总线
    • ~1991 – Python
    •   1992 年-实体边界交互器 架构又名 EBC 又名 EIC
    • ~1993 – 红宝石
    • ~1995 – Delphi、Java、Javascript、PHP
    •   1996 年模型-视图-演示者
    •   1996 年– OCP、ISP、DIP(~ S O L ID)、REP、CRP、CCP、ADP
    •   1997 年– SDP、SAP
    • 1997 – 面向方面的编程
    • ~1997 –网络服务
    • 1997 – ESB – Enterprise Service Bus(虽然创造这个术语的书是在 2004 年出版的,但这个概念之前已经被使用过)
  • 2000年代

    • 2002 – SRP (~ S OLID)
    • 2003 -领域驱动设计
    • 2005 年-模型-视图-视图模型
    • 2005 年端口和适配器架构又名六边形架构
    • 2006 年?– CQRS 和 ES(命令查询职责分离和事件溯源
    • 2008 年– 洋葱建筑
    • 2009年-微服务(Netflix的)
  • 2010年代

    • 2010 –数据-上下文-交互架构 
    • 2012 年清洁架构
    • 2014 – C4 模型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值