软件架构师不是建筑架构师。他们之间除了名字,没有任何的共同之处。把软件架构师和建筑架构师类比,甚至把他们等同起来,是一种错误的观念。
建筑是实体的,软件是形式的。实体的建筑以结构为其主要内容,辅以少量动态的考虑(给水、排水及其他)。软件则是静态的结构和动态的行为的结合体。从这个角度,建筑师的建模主要是静态的建模,比一个机械工程师,他多了蓝图的绘制的工作;而一个软件架构师不仅要对软件的结构进行建模,还要对软件的运行时刻的行为建模。
建筑是一次性的,软件是演变的。虽然我们也说“旧城改造”,但那是拆了重建,而不是在原基础上改造。一栋造好的楼房,是不能在上面再增加一层的。软件则是在原基础上修改,以满足用户需要。在这个前提下,建筑的架构是不会改变的;而软件在多次修改的情况下很可能触及架构上的变动。所以
软件架构师必须在软件的整个生命周期中时刻注意架构是否会变化,并且可能会主动调整它。
在建筑设计中,必须满足结构力学等基本原理,否则生产出来的建筑本身的使用质量没有保证,这是一个强制的要求,也存在相关标准。而软件在设计上只有一堆原则,指导我们设计。即使你没有遵循这些原则,生产出来的产品一般也是可用的,具有使用质量,但产品改进的质量就难说了。因此软件的设计也比较难以把握,生产一堆可用的垃圾的情况比较普遍。
建筑投资商往往给出一些量化的数据,建筑师把这些量化的数据转变成一个实际的建筑,在这个过程中一般不会有大的偏差。而软件尤其是应用软件,强烈依赖于用户的需求。我们设计应用软件,基本上等同于对用户的行为进行建模,在目前对于人类行为的研究远远低于对于基础数学、物理学研究的情况下,一次成型的软件是不可能存在的。应用软件的开发,基本可以描述为“在变化的基础上工作”。
在满足使用质量的前提下,建筑师极力追求建筑的外形。而软件也有这样做的(国产的一些网页,大家是否也觉得恶心呢?)。但一般用户在满足其开始的外在表现的要求之后,慢慢就越来越关注软件的内容,关注软件是否真的帮助到了他们的生活,并且开始发起一次次的修改请求。
综上所述,软件架构师和建筑师的差别巨大,试图以建筑师的角度解释软件架构师,甚至想找到一个类似的解决之道,是不可行的。而对于初步接触架构师的人来说,总是把架构师和建筑师对比也很容易误导他们。类比固然可以帮助理解,但也可能造成误解。
从另一个角度考虑,假设软件架构师和建筑师确实可以互通,那么如果存在一个既是软件架构师又是建筑师的人,他就可以领导软件产业一往无前了。可是这么多年来,为什么没有这样一个人呢?
建筑是一次性的,软件是演变的。一个特定的建筑是一个时代的象征,它不仅不能变,人们还希望它能以老样子一直存在下去。我们的故宫,长城。总不能把故宫再利用成某某步行街,某某大卖场。软件的关键就在这个软字上了。
分享到:
相关推荐
软件架构师作为一个专业领域的高级职位,其核心职能包括确保软件系统的稳定性、可扩展性和安全性等。根据提供的文件内容,软件架构师应该了解的知识和技能是多维度的。以下是对文件内容中提到的关键知识点的详细阐述...
软件架构师是IT行业中至关重要的角色,他们负责设计和规划软件系统的整体结构,确保系统能够高效、稳定地运行。这份“软件架构师培训资料”涵盖了软件开发过程中的多个关键环节,旨在帮助学员全面掌握架构师所需的...
DevOps:软件架构师行动指南 首部从软件架构师视角全方位解读DevOps实践的完全指南,通过经典案例,系统讲解在不同场景下应用DevOps实践的方法,盛大游戏和唯品会的资深DevOps专家联合倾情翻译
### 软件架构师成长之路的关键知识点 #### 一、软件架构师的角色与价值 - **定义**:软件架构师通常被视为一个组织中的技术领袖,他们负责制定软件产品的技术路线和技术框架,确保产品的可扩展性和高效性。 - **...
《高级软件架构师培训讲义》是一份针对高级软件架构师的专业学习资料,涵盖了软件架构设计的多个核心领域。这份讲义旨在提升架构师的设计能力,帮助他们更好地理解和实施复杂的软件项目。 首先,讲义从“架构师与...
软件架构师,这一职业在IT行业中扮演着至关重要的角色,它是连接技术和业务的桥梁,是软件开发过程中的领航者。软件架构师不仅需要具备深厚的技术功底,还需要有卓越的沟通能力和战略思维,以便设计出高效、可扩展且...
在IT行业中,软件架构师是一个至关重要的角色,他们负责规划、设计和指导软件系统的构建,确保系统的可扩展性、稳定性、可维护性和性能。本文将深入探讨“做一回软件架构师”这一主题,旨在帮助读者理解软件架构设计...
### 软件架构与架构师的关键知识点 #### 1. 软件架构的重要性及其定义 - **背景**: 随着软件系统的规模日益扩大,复杂性也随之增加,传统的“算法+数据结构=程序”设计模式已无法满足当前的需求。软件架构作为一种...
《软件架构师教程》是一份全面且深入的学习资源,旨在帮助程序员逐步成长为专业的软件架构师。这份教程涵盖了软件架构设计的各个方面,对于那些希望在IT领域提升自我、迈向更高层次的专业人士来说,无疑是一份宝贵的...
软件架构师的12项修炼 软件架构师是软件开发领域中非常重要的职业之一,他们负责设计和规划技术方案,确保软件系统的可用性、可维护性和可扩展性。为了成为优秀的软件架构师,需要具备深厚的软件工程知识、技术经验...
非常棒的一部内部讲义,强烈推荐高级软件架构师 目录: 00 架构师与设计师 01 软件流程实施方案选择 02 软件架构文档设计 03 软件架构风险管理 04 如何描述和评估软件架构质量 05 设计模式与软件架构设计 06 AOP开发...
.NET 软件架构师职业要求 .NET 软件架构师职业要求概述: .NET 软件架构师是一种高级的技术职位,需要具备深入的技术知识和丰富的开发经验。该职业要求掌握.NET 平台和相关技术,并具有丰富的系统分析和设计经验。...
中科院高级软件架构师培训教材,适合有一定软件理论基础的程序员学习
《软件架构师考试资料》是一份综合性的学习资源,涵盖了软件架构师所需的重要知识点和实践经验。这份资料集合了多种文档,旨在帮助考生深入理解和掌握软件架构设计的核心技能,以通过相关的资格认证考试,如中国的...
【软件架构师入门教程,成功架构你的软件】 作为软件开发领域的关键角色,软件架构师承担着设计和指导软件系统整体结构的重要职责。本教程旨在帮助初级软件工程师掌握软件架构的基础知识,逐步提升到架构师的水平。...
天翼云认证解决方案架构师题库知识点,帮你直接通过天翼云解决方案架构师认证考试。天翼云认证解决方案架构师题库知识点,帮你直接通过天翼云解决方案架构师认证考试。天翼云认证解决方案架构师题库知识点,帮你直接...
本书通过一系列优秀的文章回答了这个问题,这些文章来自于十几位当今一流的软件设计师和架构师。在每篇文章中,作者都向我们展示了一个著名的软件架构,并分析了什么让其具有创新性,让其极其符合设计目标。. 本书...
在软件开发领域,架构师扮演着至关重要的角色。他们不仅要设计系统的整体结构,还要确保这个结构能够满足业务需求,支持可扩展性、性能、安全性和可靠性。此外,架构师还需要具备良好的沟通能力,能够与项目经理、...
这份压缩包包含的三期PDF文件——“架构师(第1期).pdf”,“架构师(第2期).pdf”以及“架构师(第3期).pdf”,无疑是深入探讨架构师角色、技能、挑战和解决方案的宝贵资料。 第一期可能涵盖了架构基础,定义了架构师...