background image

k,大,瓷,泰,与,载,泣

概念作简单的阐述。

所谓架构师,通俗的说就是设

计师或结构设计者,这些定义如果

用在建筑学上,则是很容易理解

的。在软件工程领域中,软件架构

师实际上就是软件项目的总体设计

师,是软件组织新产品的开发与集

成、新技术体系的构建者。对一些

大型软件产品或项目的开发,这一

角色显得很关键,因为缺乏好的软

件架构师而导致项目失败的例子不

胜枚举,一个没有经验和能力的软

件架构师也会使软件项目失败的速

度加快。正因如此,Martin

Fowler

指出:架构师是对所有重要事情作

出决定的人。

软件架构师在整个软件开发过

程中都起着重要作用,并随着开发

进程的推进而其职责或关注点不断

地变化。在需求阶段,软件架构师

主要负责理解和管理非功能性系统

需求,比如软件的可维护性、性能、

复用性、可靠性、有效性和可测试

性等。此外,架构师还要经常审查

客户和市场人员所提出的需求,确

认开发团队所提出的设计;在需求

越来越明确后,架构师的关注点开

始转移到组织开发团队成员和开发

过程的定义上;在软件设计阶段,

架构师负责对整个软件架构、关键

构件、接口的设计。在编码阶段,架

构师则成为程序员的顾问,并且经

常性地要举行一些技术研讨会、技

术培训班等;随着软件开始测试、

集成和交付,集成和测试支持将成

为软件架构师的工作重点;在软件

维护开始时,软件架构师就要开始

为下一版本的产品是否应该增加新

的功能模块进行决策。

因此,软件架构师是软件项目

68

I计算机教育2006.11 I

的总体设计师,是软件组织新产品

开发与集成、新技术体系的构建

者,是从宏观上驾驭大型系统的战

略家,是对软件项目中所有重要架

构事情作出决策的人,是策略制定

者、组织协调高手、称职的顾问与

领导者。

作为一个软件架构师,在整个

软件系统的开发过程中是乐趣无穷

的,因为这个角色很具有挑战性,

有时需要左右逢源八面玲珑,有时

又需要果断坚定不留情面。

Philippe

Kruchten曾经说过:当一

个伟大的架构师领导开发团队时,

团队的每个成员都感觉不到他的存

在。次一点的架构师使开发团队的

每个成员都喜欢他,再次一点的是

害怕他,最次的是鄙视他。在国内,

软件组织几乎没有独立的架构师,

通常一个软件高手身兼数职,既是

项目经理,又是软件架构师,甚至

还是软件开发者,有时还要客串一

个测试人员,这对软件的开发周期

和产品质量是不利的。

2软件架构师的角色

2.1

软件架构师的职责

好的软件架构师不只是一位受

到尊敬的资深技术人员,通常也是

策略制定和组织协调的高手,称职

的顾问与领导者。这是因为软件架

构规划与设计主要是以宏观的角度

切入系统架构,一般所谓的设计则

是以微观的角度切入。软件工程师

和程序员所考虑的是单个构件的功

能,而软件架构师必须从全局的角

度理解软件项目的业务目的和期望

结果,能够定义不同的构件是如何

组装在一起的。软件架构师规划系

统的角度主要是从自上而下的方式

着手,而软件设计师则多半从自下

而上的方式着手。这种从宏观/微

观的角度进行划分,在其他学科也

常看见,如宏观经济学与微观经济

学等。这种宏观角度的本质,就是

软件架构师专业领域与其他软件开

发人员最根本的区别。

从宏观的角度,举凡架构规格

与决策、排定架构审阅时程、解决

所有架构相关的问题、所有主要技

术决策的核准、维护架构规格等都

是架构设计的主要工作。通常在项

目一开始,需求与初始分析等工作

流程会产生规划的企业流程与预期

系统完成的功能。有了这些信息,

软件架构师就能草拟最初的高层架

构蓝图,并列出影晌架构的可能的

因素清单。另外,软件架构师也要

担负估算项目成本的职责,评估项

目计划对系统既有基础结构与架构

的冲击,以及计算可能付出的成本

与所带来的效益。

除了上述任务以外,检查初期

架构规划设计、影响因素与成本,

维持与组织架构决策的一致性也是

架构设计师的重要职责之一。这通

常要找出制定项目的架构决策与

其优先级的判断基准、定义问题领

域、决定可能解决方案的制约条

件、确认有关可能解决方法的假设

状况以及辨识模块重用的可能性。

软件架构师也必须负责确保需求

的达成,以及硬件、软件、基础结

构、性能、安全性、容量、可用性

和系统运行、管理与维护等属于系

统层次相关技术之间的协调与平

衡。在某些关键时刻,软件架构师

也要做出系统与架构在协调、平衡

上种种必须当机立断但又很难判

断的决策。

万方数据