第一章:系统架构设计师概述

系统架构设计师概述

从组织上划分,架构师通常可分为:业务架构师 (Busines Architect)、主题领域架构师 (Domain Architect)、技术架构师 (Technology Architect)、项目架构师 (Project Architect)和系统架构师 (System Architecture)等5类。如果参考微软公司对架构设计师的分类,这里根据架构师关注的领域不同,可将系统架构设计师分为4种:企业架构师EA (Enterprise Architect)、基础结构架构师IA (Infrastructure Architect)、特定技术架构师TSA (Technology Architect)和解决方案架构师SA(Solution Architect)

架构设计师的定义

架构设计师是负责系统架构的人、团队或组织(IEEE1471-2000)。架构设计师是系统或产品线的设计责任人,是一个负责理解和管理并最终确认和评估非功能性系统需求(如软件的可维护性、性能、复用性、可靠性、有效性和可测试性等),给出开发规范,搭建系统实现的核心构架,对整个软件架构、关键构件和接口进行总体设计并澄清关键技术细节的高级技术人员。

架构设计师的职责

架构设计师的职责应该是技术领导,这意味着架构设计师除了拥有专门技能外,还必须拥有领导能力。在组织中的职位方面,架构设计师是项目中的技术领导,应该拥有进行技术决策的权威。拥有专门技能主要体现在除了必须非常清楚项目的总体目标和实施方法外,还应是特定的开发平台、语言、工具的大师,对常见应用场景能及时给出最恰当的解决方案,同时要对所属的开发团队有足够的了解,能够评估该开发团队实现特定的功能需求目标的资源代价。架构设计师必须非常关注交付的实际结果,并必须赋子项目在技术方面的驱动力,还必须能够进行决策并确保这些决策被传达、理解并始终被执行。

架构设计师的任务与组成

架构设计师在项目中的主要任务可概述如下。

  • 领导与协调整个项目中的技术活动(分析、设计和实施等)。
  • 推动主要的技术决策并最终表达为系统架构。
  • 确定系统架构,并促使其架构设计的文档化,这里的文档化应包括需求、设计、实施和部署等"视图"。

从技术角度看,架构设计师的职责就是抽象设计、非功能设计和关键技术设计等三大任务

架构设计师角色可以由一个人或一个团队来履行。如果架构设计师角色由一个团队履行,这个团队是拥有共同目标和执行目标,拥有使他们可以相互负责的方法,同时技能相互补充的一小部分人,并且拥有一个首席架构设计师角色非常重要,他不仅具有先知先明的能力、还是架构团队的单点协调人。没有这个协调人,架构团队的成员要创造出内聚的架构或做出決策是困难的。

优秀的架构设计师应知道他的优势和弱势。无论架构设计师的角色是否由一个团队来履行,架构设计师都应有好几个可信顾问的支持,这样架构设计师不仅可以了解其弱点,还可以通过获取必要的技能或与他人一起合作来弥补其知识的缺陷,进而弥补这些弱点。最优秀的架构通常由一个团队而不是个人创建,这仅仅因为当有多人参与进来时,使见识更广和更深。

架构设计师应具备的专业素质

架构设计师作为项目的技术领导,他应熟悉业务领域知识并熟练掌握软件开发知识。一个优秀的架构设计师通常可以做到在软件开发知识和业务领域知识之间的平衡。因此,架构设计师应该具备以下专业知识。

  1. 掌握业务领域的知识
  2. 掌握技术知识
    架构设计师不必是一个技术专家,它必须关注技术的重要因素,而不是细节。架构设计师需要理解像JavaEE或.NET这类平台上的可用关键框架,但是不必理解访问这些平台可用的每个应用程序接口(API)的细节。由于技术的发展相当快速,架构设计师必须跟得上这些技术的发展。
  3. 掌握设计技能
    设计过程是架构设计的核心内容,架构是关键设计决策的具体化,因此,架构设计师应该拥有很强的设计技能。关键设计决策指关键结构设计决策、特定模型的选择和指导规格说明书等。
  4. 具备编程技能
  5. 具备沟通能力
    与架构设计师相关的所有软技能中,沟通最重要。架构设计师应该具各有效的口头和书面表达能力。有效的沟通可使开发组织能够充分理解架构设计师的思想,同时开发组织也能够及时将架构设计实现中遇到的问题及时反馈给架构设计师。有效的沟通是项目成功的基础。
  6. 具备决策能力
    决策是架构设计师必须具备的能力,尤其是在很多不很明确的情况下,而且没有充足的时间研究所有可能性时,架构设计师不能果断决策会延误项目,失去信任。优秀的架构设计师应承认这种情况,即使在决策时咨询其他人并营造共同参与决策的环境,进行适当的决策仍然是架构设计师的职责,而这些决策并不总是正确的,但是架构设计师必须学会纠正这些错误决策。
  7. 知道组织策略
    成功的架构设计师并不仅仅关心技术,他们还应对政治敏感并知道其在组织中的权利,他们利用这些知识与怡当的人进行沟通,并确保项目在适当的周期中获得支持。
  8. 应是谈判专家
    架构设计师需要与许多利益相关者进行交流,其中的一些交流需要谈判技巧。架构设计师应特别关注的一点是在项目中尽可能早地把风险降到最低,这对稳定架构所花费的时间有直接影响。因为风险与需求有关,消除风险的一个途径是通过精炼需求以使这种风险不再出现,因此,必须回退需求以便利益相关者和架构设计师达成一致。这种情形要求架构设计师是一位有效的谈判专家,能够清晰明白地表明各种折中方案的后果。

架构设计师的知识结构

架构设计师综合的知识能力结构主要包括10个方面。

  1. 战略规划能力。
  2. 业务流程建模能力。
  3. 信息数据架构能力。
  4. 技术架构设计和实现能力。
  5. 应用系统架构的解决和实现能力。
  6. 基础IT知识及基础设施、资源调配的能力。
  7. 信息安全技术支持与管理保障能力。
  8. IT审计、治理与基本需求的分析和获取能力。
  9. 面向软件系统可靠性与系统生命周期的质量保障服务能力。
  10. 对新技术与新概念的理解、掌握和分析能力。
相关推荐
小江的记录本14 分钟前
【Spring注解】Spring生态常见注解——面试高频考点总结
java·spring boot·后端·spring·面试·架构·mvc
大新新大浩浩24 分钟前
Deerflow部署-X86架构-在ubuntu2204操作系统上使用docker模式部署
docker·容器·架构
斯普信专业组42 分钟前
Kubeasz快速部署k8s混合架构集群
java·架构·kubernetes
无忧智库1 小时前
零信任安全体系:从“围墙城堡”到“零信任动态管控”的架构演进与实战洞察(PPT)
安全·架构
Coder个人博客1 小时前
10_apollo_docker_scripts子模块软件架构分析
架构
Coder个人博客1 小时前
08_apollo_scripts_scripts子模块软件架构分析
架构
Coder个人博客1 小时前
09_apollo_docker_build子模块软件架构分析文档
架构
云深19332 小时前
解剖某头部AI编程工具:一个终端原生 AI IDE 的工程哲学与架构全景
架构
爱浦路 IPLOOK2 小时前
分布式UPF架构:让低时延与大带宽不再是难题
分布式·架构
universeplayer2 小时前
我花了一天读完 Claude Code 泄露的全部源码,这是我发现的
架构