读到一篇文章,其中讲到关于软件不是简单机械的建筑架构隐喻,而是一个“不断发展的生态系统”,这个观点跟小编不谋而合,特摘录与此分享大家。

是时候停止说“软件架构”了 It’s Time to Stop Saying “Software Architecture”_人工智能

“架构”是软件工程中非常常用的比喻,也是非常成功的比喻。如此成功,以至于我们在软件世界中扮演了“架构师”的角色。做建筑师真好!有人记得黑客帝国中的“建筑师”吗?是的,这很酷,但是,我们为什么要从架构的角度来思考?

  • 也许是因为两者都与“构建”某些东西有关。
  • 有一点设计。也许这就是原因。
  • 这不完全是工程,有一个“艺术”位(对某些人来说甚至是黑色艺术)。

这些都还可以,但还不够好。作为一个类比,它没有用。有很多地方是不行的。

建筑在哪里失败?

至此,你大概明白了。我不喜欢软件架构这个词。我们“制作软件的人”和他们“设计建筑的人”都画图来传达我们的想法。我认为相似之处到此为止。

就拿制作过程来说。施工是一个“瀑布”过程。建筑师是在施工工作之前创建设计和详细蓝图的人,以便工程师将遵循并实施。不再有理智的人制作这样的软件。

或者拿“业务”和“开发者”的关系来说。它假设架构师是弥合业务和开发人员之间差距的必要条件,因此将每个人都压制在自己的位置上。

是时候停止说“软件架构”了 It’s Time to Stop Saying “Software Architecture”_python_02

当我想到一个软件系统时,这些是我想到的事情:

  • 它由一起工作/操作的程序组成。
  • 这些程序相互使用,有时它们相互依赖。
  • 不同的人群设计、制作和运行这些程序。
  • 随着时间的推移,它会发展。“时间”和“时间带来的层次”在软件系统中有着巨大的影响。

如果有的话,它们构成了一个“不断发展的生态系统”,而不是一个“机制”或一个已经完成的建筑。所以,我有一个更好的建议:👇

一个软件系统实际上就像一座城市

我知道你在这一点上的想法,它同样俗气😁但是,有些奶酪比其他奶酪好。

两者都进化

是时候停止说“软件架构”了 It’s Time to Stop Saying “Software Architecture”_python_03

作为一个生态系统,它会不断变化和发展。你从一个住宅开始,然后你把它发展成一个村庄。它继续:

住宅 > 村庄 > 城镇 > 城市 > 首都圈 > 国家/帝国

它的制作永无止境。它随着时间的推移而变化,并且通常会增长。

新旧同居

是时候停止说“软件架构”了 It’s Time to Stop Saying “Software Architecture”_大数据_04

这是一张德比大教堂区的照片(取自​https://dcms.shorthandstories.com/DerbyCathedralQuarter/index.html​)。它显示了一座非常新的建筑与一座非常古老的建筑并排站立。当然,它们在本季度共享相同的基础设施,构成了整个季度。

随着系统随着时间的推移而发展,新旧共存。基础设施和上层建筑都是如此。当您想要进行更改时,您会看到不同实现、库、过去人们的风格和决定.

不用说,当你做事的时候,你会在路上留下自己的印记。

豪华与贫穷

是时候停止说“软件架构”了 It’s Time to Stop Saying “Software Architecture”_人工智能_05

肯辛顿(富)vs柯克代尔(穷)

就像豪华社区一样,也有每个人都想从事的热门项目。在那里进行投资,最好的新技术总是在那里。

有稳定的郊区,无聊但生活有自己的节奏。

而且,还有贫困社区。没有人爱,贫穷,年老,没有人喜欢那里的生活。没有投资,没有新的发展。

两者都有可怕的地方

是时候停止说“软件架构”了 It’s Time to Stop Saying “Software Architecture”_java_06

一条黑暗的小巷,类似于一个可怕、危险但仍然可以使用的应用程序

黑暗的小巷,法律不适用的粗糙街区。旧的、复杂的、脆弱的程序,你害怕接触,更不用说看代码了。没有人愿意去那里。

移民/绅士化

有时,贫困社区坐在金矿上,他们无法提取该价值。我们希望通过更好的基础设施、更好的建筑、更好的道路和交通连接、更新的框架、语言、CI/CD 管道等来升级它们。

高档化和移民项目都不容易。存在人力成本、文化冲突、意想不到的后果、未能实现承诺的结果。然而,我们继续这样做是有原因的。我们都在学习做得更好。

城市、景观永远不会停止,它们总是像我们的软件系统一样发展。有很多人为他们注入了生命。它们有多种用途,并且有多种方法可以设计和运行城市/软件系统。

我可以继续说下去。我看的越多,我看到的相似之处就越多。但是,我敢肯定,如果我反过来看,也会有很多不同。

我希望,在未来的某一天,我们的领域将拥有足够多的历史和故事,我们不需要类比来思考它。在那之前,我们需要切换到比架构更好的类比,它允许我们考虑软件生态系统中的共存、时间/历史、人的因素、治理和许多其他事情。这就是为什么在考虑软件系统时“城市”是一个更好的比喻。

本文基于我在MoneySuperMarket与我的同事进行的一次闪电谈话。在软件世界中尝试“架构”类比是一种愚蠢/有趣的尝试。我试图想出一个更好的。