background image

术人才。那么,究竟什么是软件架构师、软件架构师在项目开发中起什么作用、如何定位一个
软件架构师和如何成为一个软件架构师呢

?这是许多组织、技术人员和管理人员都希望知道

的或希望参与讨论的话题。下面对软件架构师这一概念作简单的阐述。
  所谓架构师,通俗的说就是设计师或结构设计者,这些定义如果用在建筑学上,则是
很容易理解的。在软件工程领域中,软件架构师实际上就是软件项目的总体设计师,是软件
组织新产品的开发与集成、新技术体系的构建者。对一些大型软件产品或项目的开发,这一
角色显得很关键,因为缺乏好的软件架构师而导致项目失败的例子不胜枚举,一个没有经
验和能力的软件架构师也会使软件项目失败的速度加快。正因如此,

Martin Fowler 指出

[24]:架构师是对所有重要事情做出决定的人。
  软件架构师在整个软件开发过程中都起着重要作用,并随着开发进程的推进而其职责
或关注点不断地变化。在需求阶段,软件架构师主要负责理解和管理非功能性系统需求,比
如软件的可维护性、性能、复用性、可靠性、有效性和可测试性等。此外,架构师还要经常审查
客户和市场人员所提出的需求,确认开发团队所提出的设计

;在需求越来越明确后,架构师

的关注点开始转移到组织开发团队成员和开发过程的定义上

;在软件设计阶段,架构师负责

对整个软件架构、关键构件、接口的设计。在编码阶段,架构师则成为程序员的顾问,并且经
常性地要举行一些技术研讨会、技术培训班等

;随着软件开始测试、集成和交付,集成和测试

支持将成为软件架构师的工作重点

;在软件维护开始时,软件架构师就要开始为下一版本的

产品是否应该增加新的功能模块进行决策。
  综上所述,软件架构师的作用主要体现在三个方面:
  

(1)行业应用架构。行业架构师往往是行业专家,了解行业应用需求,其架构行为主要

是将需求进行合理分析布局到应用模型中去,偏向于应用功能布局。
  

(2)应用系统技术体系架构。技术架构师往往是技术高手中的高手,掌握各类技术架构、

掌握应用设计模式,其架构行为考虑软件系统的高效性、复用性、安全性、可维护性、灵活性、
跨平台性等。
  

(3)规范架构。规范架构师是通过多年磨砺或常年苦思顿悟后,把某一类架构抽象成一

套架构规范,当然也有专门研究规范而培养的规范架构师。他们的产物往往也分为应用规范
和技术规范两类。
  综上所述,可以通过定义

2 对软件架构师进行认识和理解。

  定义

2(软件架构师) 软件架构师是软件项目的总体设计师,是软件组织新产品开发与

集成、新技术体系的构建者,是从宏观上驾驭大型系统的战略家,是对软件项目中所有重要
架构事情做出决策的人,是策略制定者、组织协调高手、称职的顾问与领导者。
  作为一个软件架构师,在整个软件系统的开发过程中是乐趣无穷的,因为这个角色很
具有挑战性,有时需要左右逢源八面玲珑,有时又需要果断坚定不留情面。

Philippe 

Kruchten 曾经说过[25]:当一个伟大的架构师领导开发团队时,团队的每个成员都感觉不
到他的存在。次一点的架构师使开发团队的每个成员都喜欢他,再次一点的是害怕他,最次
的是鄙视他。在国内,软件组织几乎没有独立的架构师,通常一个软件高手身兼数职,既是
项目经理,又是软件架构师,甚至还是软件开发者,有时还要客串一个测试人员,这对软
件的开发周期和产品质量是不利的。
2 软件架构师的角色与定位
  

2.1 软件架构师的职责

  好的软件架构师不只是一位受到尊敬的资深技术人员,通常也是策略制定和组织协调
的高手,称职的顾问与领导者。这是因为软件架构规划与设计主要是以宏观的角度切入系统
架构,一般所谓的设计则是以微观的角度切入。软件工程师和程序员所考虑的是单个构件的
功能,而软件架构师必须从全局的角度理解软件项目的业务目的和期望结果,能够定义不