`

软件架构师 PS 建筑架构师

阅读更多
软件架构师不是建筑架构师。他们之间除了名字,没有任何的共同之处。把软件架构师和建筑架构师类比,甚至把他们等同起来,是一种错误的观念。

    建筑是实体的,软件是形式的。实体的建筑以结构为其主要内容,辅以少量动态的考虑(给水、排水及其他)。软件则是静态的结构和动态的行为的结合体。从这个角度,建筑师的建模主要是静态的建模,比一个机械工程师,他多了蓝图的绘制的工作;而一个软件架构师不仅要对软件的结构进行建模,还要对软件的运行时刻的行为建模。

    建筑是一次性的,软件是演变的。虽然我们也说“旧城改造”,但那是拆了重建,而不是在原基础上改造。一栋造好的楼房,是不能在上面再增加一层的。软件则是在原基础上修改,以满足用户需要。在这个前提下,建筑的架构是不会改变的;而软件在多次修改的情况下很可能触及架构上的变动。所以软件架构师必须在软件的整个生命周期中时刻注意架构是否会变化,并且可能会主动调整它

    在建筑设计中,必须满足结构力学等基本原理,否则生产出来的建筑本身的使用质量没有保证,这是一个强制的要求,也存在相关标准。而软件在设计上只有一堆原则,指导我们设计。即使你没有遵循这些原则,生产出来的产品一般也是可用的,具有使用质量,但产品改进的质量就难说了。因此软件的设计也比较难以把握,生产一堆可用的垃圾的情况比较普遍。

    建筑投资商往往给出一些量化的数据,建筑师把这些量化的数据转变成一个实际的建筑,在这个过程中一般不会有大的偏差。而软件尤其是应用软件,强烈依赖于用户的需求。我们设计应用软件,基本上等同于对用户的行为进行建模,在目前对于人类行为的研究远远低于对于基础数学、物理学研究的情况下,一次成型的软件是不可能存在的。应用软件的开发,基本可以描述为“在变化的基础上工作”。

    在满足使用质量的前提下,建筑师极力追求建筑的外形。而软件也有这样做的(国产的一些网页,大家是否也觉得恶心呢?)。但一般用户在满足其开始的外在表现的要求之后,慢慢就越来越关注软件的内容,关注软件是否真的帮助到了他们的生活,并且开始发起一次次的修改请求。

    综上所述,软件架构师和建筑师的差别巨大,试图以建筑师的角度解释软件架构师,甚至想找到一个类似的解决之道,是不可行的。而对于初步接触架构师的人来说,总是把架构师和建筑师对比也很容易误导他们。类比固然可以帮助理解,但也可能造成误解。

    从另一个角度考虑,假设软件架构师和建筑师确实可以互通,那么如果存在一个既是软件架构师又是建筑师的人,他就可以领导软件产业一往无前了。可是这么多年来,为什么没有这样一个人呢?

建筑是一次性的,软件是演变的。一个特定的建筑是一个时代的象征,它不仅不能变,人们还希望它能以老样子一直存在下去。我们的故宫,长城。总不能把故宫再利用成某某步行街,某某大卖场。软件的关键就在这个软字上了。
分享到:
评论

相关推荐

    DevOps软件架构师行动指南

    DevOps:软件架构师行动指南 首部从软件架构师视角全方位解读DevOps实践的完全指南,通过经典案例,系统讲解在不同场景下应用DevOps实践的方法,盛大游戏和唯品会的资深DevOps专家联合倾情翻译

    软件架构师教程,系统架构师讲义

    软件架构师教程全套,是系统架构师考试的很好的参考教材,免费提供

    软件架构师培训资料,软件架构师培训资料,软件架构师培训资料

    软件架构师培训资料:01_软件流程实施方案选择.pdf,02_软件架构规范的制订.pdf,03_软件架构文档设计.pdf,04_软件架构风险管理.pdf...26_软件工厂.pdf

    高级软件架构师培训讲义

    高级软件架构师培训讲义,共分24章: 00_架构师与设计师 01_软件流程实施方案选择 02_软件架构文档设计 03_软件架构风险管理 04_如何描述和评估软件架构质量 05_设计模式与软件架构设计 06_AOP开发实践 07_软件架构...

    软件架构师教程

    软件架构师教程

    《高级软件架构师培训讲义》.rar PDF

    非常棒的一部内部讲义,强烈推荐高级软件架构师 目录: 00 架构师与设计师 01 软件流程实施方案选择 02 软件架构文档设计 03 软件架构风险管理 04 如何描述和评估软件架构质量 05 设计模式与软件架构设计 06 AOP开发...

    软件架构师成长之路

    很多人都想成为软件架构师,但很少有人知道软件架构师都要会些什么,这篇文章介绍了。。。。。。

    高级软件架构师阶段一大纲

    高级软件架构师阶段一大纲高级软件架构师阶段一大纲高级软件架构师阶段一大纲高级软件架构师阶段一大纲

    高级软件架构师教材

    中科院高级软件架构师培训教材,适合有一定软件理论基础的程序员学习

    软件架构师教程1

    软件架构师教程 面向对象应用建模 软件设计师的必经之路

    软件架构师教程 软件架构

    0_架构师与设计师.pdf 01_软件流程实施方案选择.pdf 02_软件架构文档设计.pdf 03_软件架构风险管理.pdf 04_如何描述和评估软件架构...因附件大于16M被分成了两个包上传,请下载软件架构师教程1.rar 软件架构师教程2.rar

    天翼云认证解决方案架构师

    天翼云认证解决方案架构师题库知识点,帮你直接通过天翼云解决方案架构师认证考试。天翼云认证解决方案架构师题库知识点,帮你直接通过天翼云解决方案架构师认证考试。天翼云认证解决方案架构师题库知识点,帮你直接...

    【系统架构设计师】论软件架构师的角色和培养

    第2节讨论软件架构师在整个软件项目中所充当的角色,包括软件架构师的职责、软件架构师与系统分析师(系统分析员)的区别。第3节研究软件架构师的资格,包括知识体系和任职条件。第4节主要讨论如何评估软件架构师的...

    软件架构和架构师

    随着软件系统的规模越来越大,复杂程度越来越高,软件设计的核心已经...软件架构师作为软件架构的设计者是关系到软件成败的关键因素。然而,有关软件架构师的角色定位以及教育培养问题,仍然比较模糊,没有一致的结论

    软件架构师入门教程,成功架构你的软件

    软件架构师入门教程,培训软件工程师在软件架构方面的经验和能力,

    架构之美(全球19位顶尖架构师智慧结晶)

    本书通过一系列优秀的文章回答了这个问题,这些文章来自于十几位当今一流的软件设计师和架构师。在每篇文章中,作者都向我们展示了一个著名的软件架构,并分析了什么让其具有创新性,让其极其符合设计目标。.  本书...

Global site tag (gtag.js) - Google Analytics