软件架构师不是建筑架构师。他们之间除了名字,没有任何的共同之处。把软件架构师和建筑架构师类比,甚至把他们等同起来,是一种错误的观念。
建筑是实体的,软件是形式的。实体的建筑以结构为其主要内容,辅以少量动态的考虑(给水、排水及其他)。软件则是静态的结构和动态的行为的结合体。从这个角度,建筑师的建模主要是静态的建模,比一个机械工程师,他多了蓝图的绘制的工作;而一个软件架构师不仅要对软件的结构进行建模,还要对软件的运行时刻的行为建模。
建筑是一次性的,软件是演变的。虽然我们也说“旧城改造”,但那是拆了重建,而不是在原基础上改造。一栋造好的楼房,是不能在上面再增加一层的。软件则是在原基础上修改,以满足用户需要。在这个前提下,建筑的架构是不会改变的;而软件在多次修改的情况下很可能触及架构上的变动。所以
软件架构师必须在软件的整个生命周期中时刻注意架构是否会变化,并且可能会主动调整它。
在建筑设计中,必须满足结构力学等基本原理,否则生产出来的建筑本身的使用质量没有保证,这是一个强制的要求,也存在相关标准。而软件在设计上只有一堆原则,指导我们设计。即使你没有遵循这些原则,生产出来的产品一般也是可用的,具有使用质量,但产品改进的质量就难说了。因此软件的设计也比较难以把握,生产一堆可用的垃圾的情况比较普遍。
建筑投资商往往给出一些量化的数据,建筑师把这些量化的数据转变成一个实际的建筑,在这个过程中一般不会有大的偏差。而软件尤其是应用软件,强烈依赖于用户的需求。我们设计应用软件,基本上等同于对用户的行为进行建模,在目前对于人类行为的研究远远低于对于基础数学、物理学研究的情况下,一次成型的软件是不可能存在的。应用软件的开发,基本可以描述为“在变化的基础上工作”。
在满足使用质量的前提下,建筑师极力追求建筑的外形。而软件也有这样做的(国产的一些网页,大家是否也觉得恶心呢?)。但一般用户在满足其开始的外在表现的要求之后,慢慢就越来越关注软件的内容,关注软件是否真的帮助到了他们的生活,并且开始发起一次次的修改请求。
综上所述,软件架构师和建筑师的差别巨大,试图以建筑师的角度解释软件架构师,甚至想找到一个类似的解决之道,是不可行的。而对于初步接触架构师的人来说,总是把架构师和建筑师对比也很容易误导他们。类比固然可以帮助理解,但也可能造成误解。
从另一个角度考虑,假设软件架构师和建筑师确实可以互通,那么如果存在一个既是软件架构师又是建筑师的人,他就可以领导软件产业一往无前了。可是这么多年来,为什么没有这样一个人呢?

建筑是一次性的,软件是演变的。一个特定的建筑是一个时代的象征,它不仅不能变,人们还希望它能以老样子一直存在下去。我们的故宫,长城。总不能把故宫再利用成某某步行街,某某大卖场。软件的关键就在这个软字上了。
分享到:
相关推荐
0_架构师与设计师.pdf 01_软件流程实施方案选择.pdf 02_软件架构文档设计.pdf 03_软件架构风险管理.pdf 04_如何描述和评估软件架构...因附件大于16M被分成了两个包上传,请下载软件架构师教程1.rar 软件架构师教程2.rar
软件架构师作为一个专业领域的高级职位,其核心职能包括确保软件系统的稳定性、可扩展性和安全性等。根据提供的文件内容,软件架构师应该了解的知识和技能是多维度的。以下是对文件内容中提到的关键知识点的详细阐述...
《软件架构师:构建高效系统的关键》 在信息化社会中,软件架构师的角色日益凸显,他们不仅是技术专家,更是项目中的灵魂人物。软件架构师负责设计和规划软件系统的整体结构,确保系统的可扩展性、可维护性和性能。...
软件架构师是IT行业中至关重要的角色,他们负责设计和规划软件系统的整体结构,确保系统能够高效、稳定地运行。这份“软件架构师培训资料”涵盖了软件开发过程中的多个关键环节,旨在帮助学员全面掌握架构师所需的...
《软件系统架构师》这本书是为那些希望深入理解软件架构设计和实践的读者精心准备的。作为一本电子读物,它涵盖了软件架构的基础知识、关键概念以及实际应用,旨在帮助读者提升在软件开发领域的专业素养。 软件系统...
《高级软件架构师培训讲义》是一份专门为这一领域专业人士准备的深入学习材料,它全面覆盖了软件架构设计的核心知识和技能。 在讲义的开篇中,首先明确了架构师和设计师的角色定位。架构师的角色远不止于技术细节的...
软件架构师,这一职业在IT行业中扮演着至关重要的角色,它是连接技术和业务的桥梁,是软件开发过程中的领航者。软件架构师不仅需要具备深厚的技术功底,还需要有卓越的沟通能力和战略思维,以便设计出高效、可扩展且...
根据提供的文件标题、描述、标签及部分内容链接,我们可以推断出该资料主要涉及软件架构师相关的学习内容。接下来,我们将对各个章节所涵盖的关键知识点进行详细的解析。 ### 一、考试简介 本章节主要介绍了软件...
软件架构设计的实施和实践是软件架构师的核心工作,包括软件架构的设计、实现和维护。软件架构师需要具备技术全面、成熟练达、洞察力强、经验丰富等多种能力。 七、软件架构师的知识体系 软件架构师的知识体系非常...
在IT行业中,软件架构师是一个至关重要的角色,他们负责规划、设计和指导软件系统的构建,确保系统的可扩展性、稳定性、可维护性和性能。本文将深入探讨“做一回软件架构师”这一主题,旨在帮助读者理解软件架构设计...
### 软件架构与架构师的关键知识点 #### 1. 软件架构的重要性及其定义 - **背景**: 随着软件系统的规模日益扩大,复杂性也随之增加,传统的“算法+数据结构=程序”设计模式已无法满足当前的需求。软件架构作为一种...
《软件架构师教程》是一份全面且深入的学习资源,旨在帮助程序员逐步成长为专业的软件架构师。这份教程涵盖了软件架构设计的各个方面,对于那些希望在IT领域提升自我、迈向更高层次的专业人士来说,无疑是一份宝贵的...
软件架构师的12项修炼 软件架构师是软件开发领域中非常重要的职业之一,他们负责设计和规划技术方案,确保软件系统的可用性、可维护性和可扩展性。为了成为优秀的软件架构师,需要具备深厚的软件工程知识、技术经验...
非常棒的一部内部讲义,强烈推荐高级软件架构师 目录: 00 架构师与设计师 01 软件流程实施方案选择 02 软件架构文档设计 03 软件架构风险管理 04 如何描述和评估软件架构质量 05 设计模式与软件架构设计 06 AOP开发...
在当今的软件开发行业中,软件架构师扮演着至关重要的角色。他们不仅需要具备深厚的技术实力,还需要具备沟通、管理以及对业务的深刻理解。《软件架构师应该知道的97件事》这本书,通过分享一系列心得,为软件架构师...
【软件架构师入门教程,成功架构你的软件】 作为软件开发领域的关键角色,软件架构师承担着设计和指导软件系统整体结构的重要职责。本教程旨在帮助初级软件工程师掌握软件架构的基础知识,逐步提升到架构师的水平。...
### 软件系统架构师的关键知识领域与实践 #### 软件架构设计的核心概念与价值 软件系统架构师负责设计和构建软件系统的基本结构,确保系统满足业务需求、性能标准以及未来发展的灵活性。他们不仅需要具备深厚的...
第2节讨论软件架构师在整个软件项目中所充当的角色,包括软件架构师的职责、软件架构师与系统分析师(系统分析员)的区别。第3节研究软件架构师的资格,包括知识体系和任职条件。第4节主要讨论如何评估软件架构师的...
### 如何成为软件架构师:综合能力与实践经验 #### 技术能力与开发经验 成为一名优秀的软件架构师,首先必须具备丰富的开发经验和技术主管的角色。这意味着不仅需要了解各种技术细节,还需要能够评估技术的可行性...