架构起源

最近重读了Dewayne E. Perry和Alexander L. Wolf写的Foundations for the Study of Software Architecture”这篇文章,这次来谈谈这篇文章。

虽然软件架构可能在更早就被研究或者实践,但众所周知,标志着软件架构的正式起源就是这篇据说1989年开始投稿,被无数次拒稿后,直到1992年才被发表在ACM SIGSOFT的文章。要知道ACM SIGSOFT完全开放,谁都可以在上面发表文章。

回到文章本身,该文首次提出并解释了什么是软件架构,即 elements + form + rationale。

elements指的是系统中的任何的处理、数据或者连接元素;

form指的是元素的属性以及这些元素之间的关系以及约束;

rationale则是软件架构的基础原理,表示的是系统需求到软件设计的映射。


除了明确描述什么是软件架构,该文章的另一个突出贡献我认为在于提出了架构视图和架构模式,这些概念不管是在学术界还是工业界都得到了相当广泛的应用。

想想我们要建一栋大楼,我们可能会有房屋的结构视图、消防视图、电气视图等,而不同的视图从不同的视角看待这栋大楼。我们说软件架构其实和楼房架构有一定类似的地方,在这里,我们同样可以从不同视角来看待软件架构,当然具体细分起来可以分为很多种。比如按角色划分,可以包括架构师的视角、客户的视角、项目经理的视角等;比如按活动划分,可以包括分析视图、评估视图等。还是那句老话,没有万能的理论,只有最适合的理论。不同的项目环境、不同的公司文化、不同的人员配置等都是需要考虑的因素。


至于架构模式,与设计模式并不是一回事。我曾经就在这方面遇到囧事。以前公司工作的时候自学了不少设计模式,然后去荷兰,一个教授开了门课叫architectural pattern,我就跟他说正好我也懂,让我来做做TA吧(助教)。然后那个教授就问我,你真的知道架构模式吗?我说我知道啊,不就是design patterns吗,然后还列了几个出来。那个教授说,不是不是,这是设计模式,你不应该做助教,而应该来上我的真门课。


虽说软件架构的历史仅仅二十多年,但不可否认其理论体系已经演化多次,从最初的软件架构 = elements + form + rationale,到中期的软件架构 = components + connectors,再到现在的软件架构 = architectural design decisions + rationale,已经至少到了第三个版本。随着这个领域的多样化,以后也将衍生出更多的话题。

相信软件架构4.0将在不久到来。

猜你喜欢

转载自blog.csdn.net/ytomc/article/details/53212063