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