background image

仍然比较模糊,没有一致的结论。
 

  作者近年来在软件架构的理论研究和实践方面做了一些工作,也取得了一定的成绩。

负责起草了全国计算机技术与软件专业技术资格

(水平)考试中的系统分析师 和系统架构设

计师考试大纲,主编了有关考试教材。本文主要讨论软件架构师的角色和培养问题。文章按
如下方式组织:第

1 节介绍软件架构和软件架构师的定义。 第 2 节讨论软件架构师在整个软

件项目中所充当的角色,包括软件架构师的职责、软件架构师与系统分析师

(系统分析员)的

区别。第

3 节研究软件架构师的资格, 包括知识体系和任职条件。第 4 节主要讨论如何评估

软件架构师的工作。第

5 节研究软件架构师的培养和认证问题。第 6 节是全文的总结。

1 软件架构与软件架构师
1.1 软件架构
  架构

(architecture)的英文本意是来源于建筑行业的建筑艺术、建筑风格和结构,引入到

软件领域后,并没有一个统一的定义

IE

EE- Std-1471-2000 认为[5]:架构是一个系统的基

本组织,它蕴含于系统的构件中、构件之间的相互关系中、构件与环境的相互关系中、以及呈
现于其

 设计和演化原则中。其实,软件架构(Software architecture,软件体系结构)一词早在

20 世纪 60 年代就被 E.W.Dijkstra 提出,但是直到 20 世纪 90 年代初才开始流行起来。为了

 

提高软件需求和软件设计的的质量,软件工程界提出了需求分析工程技术和各种软件建模
技术。但是在需求和设计之间仍然存在一条很难逾越的鸿沟,即缺乏能够反

 映做决策的中

间过程,从而很难有效地将需求转化为相应的设计。为此,软件架构的概念应运而生,并试
图在软件需求与软件设计之间架起一座桥梁,着重解决软件

 系统的结构和需求向实现平坦

过渡的问题

[6]。由于领域的不同,学术研究和应用实践的不同,人们对软件架构也有不同

的理解和定义

[7~9]。尽管各种定义 都从不同的角度关注软件架构,但其核心内容都是软件

系统的结构,并且都涵盖了如下一些实体:构件、构件之间的交互关系、配置、构件和连接件
构成的拓扑结

 构、设计原则与指导方针。

  在此,作者对软件架构的理解和认识可用定义

1 进行描述。

 

  定义 1(软件架构)  软件架构为软件系统提供了一个结构、行为和属性的高级抽象,由

构成系统的元素的描述、这些元素的相互作用、指导元素集成的模式以及这些模式的约束组
成。

 软件架构不仅指定了系统的组织结构和拓扑结构,并且显示了系统需求和构成系统的

元素之间的对应关系,提供了一些设计决策的基本原理。
 

  目前,软件架构的研究已发展为软件工程领域的一个独立学科分支,具有比较严格的

理论基础和工程指导原则

[10]。软件架构已经成为软件工程领域的研究热 点以及大型软件系

统与软件产品线开发中的关键技术之一。有许多相关的研究人员对软件架构描述语言

[11~

13],软件架构的描述与表示[14,15],软 件架构的分析与验证[16~19],基于架构的软件
维护与演化

[20,21],软件架构的可靠性[22,23]等方面进行了研究。

1.2 软件架构师
 

  一直以来,绝大多数的软件组织都缺乏软件架构师的编制。架构设计的工作基本上由

项目经理、系统分析师与软件设计师兼任或分摊,导致普遍轻视软件架构专业

 人才的培养

与任用。事实上,软件构架师是目前很多软件组织最急需的人才,也是一个软件组织中的高
级技术人才。那么,究竟什么是软件架构师、软件架构师在项

 目开发中起什么作用、如何定

位一个软件架构师和如何成为一个软件架构师呢

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

望知道的或希望参与讨论的话题。下面对软

 件架构师这一概念作简单的阐述。

  所谓架构师,通俗的说就是设计师或结构设计者,这些定义如果用在建筑

 学上,则是

很容易理解的。在软件工程领域中,软件架构师实际上就是软件项目的总体设计师,是软件
组织新产品的开发与集成、新技术体系的构建者。对一些大型

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

角色显得很关键,因为缺乏好的软件架构师而导致项目失败的例子不胜枚举,一个没有经