background image

论软件架构师的角色和培养【论文精品】

  随着软件系统的规模越来越大,复杂程度越来越高,软件设计的核心已经超越了传统

“算法+数据结构=程序”的设计模式,取而代之的是对系统的总体结构的设计和规范[1]。

软件架构在软件系统中充当着重要的角色,软件架构也是软件工程中迅速发展的一个研究
实践领域,有很多的文献

[2~4]讨论了如何构架一个好的软件系统。软件架构师作为软件架

构的设计者是关系到软件成败的关键因素。然而,有关软件架构师的角色定位以及教育培养
问题,仍然比较模糊,没有一致的结论。
  作者近年来在软件架构的理论研究和实践方面做了一些工作,也取得了一定的成绩。负
责起草了全国计算机技术与软件专业技术资格

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

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

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

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

(系统分析员)的区

别。第

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

件架构师的工作。第

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

  

1 软件架构与软件架构师

  

1.1 软件架构

  架构

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

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

IEEE-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 软件架构师

  一直以来,绝大多数的软件组织都缺乏软件架构师的编制。架构设计的工作基本上由项
目经理、系统分析师与软件设计师兼任或分摊,导致普遍轻视软件架构专业人才的培养与任
用。事实上,软件构架师是目前很多软件组织最急需的人才,也是一个软件组织中的高级技