角色:架构师
架构师(Architect )负责定义软件的架构,包括做出关键技术决策,该决策指定了对系统设计和实现的整体约束。
角色集:基础角色
关系
主要描述

此角色领导或协调系统的技术设计,并全面负责促进重大技术决策,这些决策被表达为软件架构。这通常包括识别并文档化系统架构的重要方面,这些方面是表达需求、设计、实现和部署的视图。

此角色还负责提供这些决策的基本原理、平衡不同利益相关人观点、减少技术风险,以及确保决策被高效沟通、验证并跟随。

此角色在人员和项目策划上与项目经理紧密合作,因为建议团队围绕架构进行组织。

此角色同样和分析人员、开发人员紧密合作,从而确保架构上重要的需求被分配到合适的系统组件。

人员配备
技能

架构师必须是一个面面俱到的人,拥有成熟、视野,以及深度的经验,使其能够快速的把握问题,并能够根据不完整的信息做出良好、重大的判断。特别是,必须具备以下资格的组合:

  • 在问题和软件工程领域的经验 拥有深入理解需求以解决问题,以及积极参与开发的证据。如果是一个团队,此经验可能被不同的团队成员表达,但是至少有一位团队成员能够描述项目的整体愿景。 
  • 领导能力 激发和维护不同团队之间技术工作的动力,并在压力下做出决策,再加上对这些决策的坚持。为了有效,此角色必须有权做出技术决策。此角色不能依靠命令进行领导,只能靠其他项目成员的认可。为了有效,此人必须获得团队成员的尊敬,项目经理、客户、用户社区,以及管理团队。
  • 优秀的沟通技能  为了获取信任、说服、激励和指导。担任此角色的人必须拥有良好的沟通技能,包括口头和书面的能力。
  • 关键的评审技能 为了确保清晰一致的构建了需求以及开发的系统符合架构 
  • 目标导向以及不断的关注结果积极进取 此人是项目背后技术发展的推动力,而不是空想家。成功的架构师生涯是在不确定性和压力下不断的做出一长串次优决策。只有那些专注于需要做的事的人才会成功。

从专业角度看,架构师也需要显示设计和实现的能力。然而,从设计的角度,一个有效的架构师通常展示了这些特质:

  • 往往是一个多面手,而不是一个专家,在高级别上知道很多技术但不知道技术细节。
  • 做出广泛的技术决策,从而展示广泛的知识面和经验,以及沟通和领导技能。
分配方法

承担此角色的人应该始终在项目中,从项目的开始到结束。

对于较小的项目,一个人可以同时承担架构师和项目经理的角色。然而,最好由不同的人来承担不同的角色,从而保证来自某角色的压力不会使其忽视另一个角色。架构师和项目经理必须紧密合作。

为了系统扩展,拥有一个架构委员会是种常见的最佳实践,此架构委员会有每个系统的架构师组成,加上一个或两个首席架构师。在这种情况下,架构委员会中的成员集体扮演架构师的角色。