架构师必看-架构之美第14章-两个系统的故事:现代软件神话(一)
架构是一种很浪费空间的艺术。 —Philip Johnson
软件系统就像一座由建筑和后面的路构成的城市—由公路和旅馆构成的错综复杂的网络。在繁忙的城市里发生着许多事情,控制流不断产生,它们的生命在城市中交织在一
起,然后死亡。丰富的数据积聚在一起、存储起来,然后销毁。有各式各样的建筑:有的高大美丽,有的低矮实用,还有的坍塌破损。随着数据围绕着它们流动,形成了交通堵塞和追尾、高峰时段和道路维护。软件之城的品质直接与其中包含多少城市规划有关。某些软件系统很幸运,创建时由有经验的架构师进行了深思熟虑的设计,在构建时体现出了优雅和平衡,有很好的地图,便于导航。另一些软件系统就没有这么幸运,基本上是一些通过偶然聚集的代码渐渐形成的,交通基础设施不足,建筑单调而平凡,置身于其中时会完全迷失,找不着路。
你的代码愿意待在怎样的“城市”中?你愿意构建哪一种城市?
在本章中,我将讲述这样两个软件城市的故事。这是真实的故事,就像所有好的故事一样,这个故事最终是有教育意义的。人们说经验是伟大的老师,但最好是别人的经验,如果你能从这些项目的错误和成功之中学习,你(和你的软件)可能会避免很多的痛苦。本章中的这两个系统特别有趣,因为它们有很大不同,尽管从表面上看非常相似:
? 它们具有相似的规模(大约500 000行代码)。
? 它们都是“嵌入式”消费音频设备。
? 每种软件的生态系统都是成熟的,已经经历了许多的产品版本。
? 两种解决方案都是基于Linux的。
? 编码采用C++语言。
? 它们都是由“有经验的”程序员开发的(在某些情况下,他们本应知道得更多)。
? 程序员本身就是架构师。
在这个故事中,人名都已改变,目的是保护那些无辜的人(和有罪的人)。