翻译转帖
原文链接
https://herbertograca.com/2017/07/03/the-software-architecture-chronicles/
软件架构编年史
这篇文章是关于软件架构的系列文章中的第一篇。在它们中,我写了我对软件架构的了解,我如何看待它,以及我如何使用这些知识。
我称这些系列文章为“软件架构编年史”,不是因为我认为自己是一个伟大的作家,而是因为我觉得这个名字很有趣,有点老生常谈!
在第一篇文章中,我将讨论我为什么要写这一系列文章以及接下来会发生什么。
了解我们的历史的重要性
那些不学习历史的人注定要重蹈覆辙。
乔治·桑塔亚纳, 《理性的生活》,1905 年
我发现从历史中学习很重要,它可以教会我们很多东西。在个人层面上,我们(最终并希望)从我们的个人错误中吸取教训。作为一个国家,历史有助于塑造我们的文化,有助于创造群体观念、“我们”观念和民族认同。它还可以帮助我们从祖先的错误中吸取教训,比如相信有非常奇怪想法的人,想想二战……
对于我们作为开发人员来说,它可以帮助我们在前辈开发人员的知识基础上再接再厉。它帮助我们从他们的错误、他们的道路、他们的经验中学习:他们的知识。通过“站在巨人的肩膀上”帮助我们达到更高的境界!
在成为一名更好的开发人员的道路上,我阅读了很多文章,观看了很多会议演讲,并阅读了大量书籍。我努力站在巨人的肩膀上!
不过,让我感到困惑的一件事是,有很多基于意见的意见……这就像“中国窃窃私语游戏”一样,我们最终对论文、文章或书籍的真实陈述产生了扭曲的想法。
因此,我开始在互联网上搜寻原始论文、文章和书籍,这些论文、文章和书籍陈述了我认为对我的工作最重要的概念,并自己进行推理。
这些帖子是这种推理的结果,因为我试图以某种时间顺序的方式理解这些概念是如何形成的。
写这些帖子迫使我阅读和推理所有这些主题,并帮助我理解当今软件开发中使用的技术,我希望这些帖子对更多的开发人员有所帮助。
尽管如此,如果您阅读了一些您不理解或不同意的内容,请告诉我,我非常愿意讨论这些主题,向其他人学习并在我被证明是错误的时候改变我的观点。
软件架构编年史中的帖子
- 软件架构编年史
- 软件架构前提
- 编程语言演变
- 架构风格 vs. 架构模式 vs. 设计模式
- 单体架构
- 分层架构
- MVC 及其替代方案
- EBI架构
- 包装和命名空间
- 领域驱动设计
- 端口和适配器架构(又名六边形架构)
- 洋葱建筑
- 干净的架构
- 事件驱动架构
- 从 CQS 到 CQRS
- 面向服务的架构 (SOA)
- 显式架构 #01:DDD、Hexagonal、Onion、Clean、CQRS……我是如何把它们组合在一起的
- 显式架构 #02:不仅仅是同心层
- 显式架构 #03:在代码中反映架构和领域
- 显式架构 #04:记录架构
- 项目演进:从MVP到P
- 4 + 1 架构视图模型
- 架构质量属性
时间轴
这是软件开发演变的粗略时间表,因为我在阅读了有关所有这些主题的文章和书籍后才意识到这一点。我添加了指向我找到日期参考的位置的链接,并在我不太确定日期的地方加上了“~”,意思是“大约”。我们还可以通过维基百科的主要编程范式页面找到关于这些事情的大量信息。
我将在本系列文章中讨论大多数这些主题。
-
1950年代
- 非结构化编程
- ~1951 – 组装
-
1960年代
- 结构化编程
- 分层:1 层,包含 UI、业务逻辑和数据存储
- ~1958 年 – 阿尔戈勒
-
1970年代
- 过程/函数式编程
- ~1970 年 – 帕斯卡
- ~1972 – C
- 1979 年-模型-视图-控制器
-
1980年代
-
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年代
-
2010年代