如何定义软件架构师

定义1(软件架构)  软件架构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述、这些元素的相互作用、指导元素集成的模式以及这些模式的约束组成。软件架构不仅指定了系统的组织结构和拓扑结构,并且显示了系统需求和构成系统的元素之间的对应关系,提供了一些设计决策的基本原理。
=============================================
软件架构师的作用主要体现在三个方面:

  (1)行业应用架构。行业架构师往往是行业专家,了解行业应用需求,其架构行为主要是将需求进行合理分析布局到应用模型中去,偏向于应用功能布局。

  (2)应用系统技术体系架构。技术架构师往往是技术高手中的高手,掌握各类技术架构、掌握应用设计模式,其架构行为考虑软件系统的高效性、复用性、安全性、可维护性、灵活性、跨平台性等。

  (3)规范架构。规范架构师是通过多年磨砺或常年苦思顿悟后,把某一类架构抽象成一套架构规范,当然也有专门研究规范而培养的规范架构师。他们的产物往往也分为应用规范和技术规范两类。
=============================================
定义2(软件架构师) 软件架构师是软件项目的总体设计师,是软件组织新产品开发与集成、新技术体系的构建者,是从宏观上驾驭大型系统的战略家,是对软件项目中所有重要架构事情做出决策的人,是策略制定者、组织协调高手、称职的顾问与领导者。
============================================
项目管理师:掌握信息系统项目管理的知识体系,具备管理大型、复杂信息系统项目和多项目的经验和能力;能根据需求组织制定可行的项目管理计划;能够组织项目实施,对项目的人员、资金、设备、进度和质量等进行管理,并能根据实际情况及时做出调整,系统地监督项目实施过程的绩效,保证项目在一定的约束条件下到达既定的项目目标;能分析和评估项目管理计划和成果;能在项目管理进展的早期发现问题,并有预防问题的措施;能协调项目所涉及的相关人员。即项目管理师的主要职责是负责整个项目的实施和控制,协调各种资源(包括组织内部资源和客户资源)。
============================================
系统分析师:熟悉应用领域的业务,能分析用户的需求和约束条件,写出信息系统需求规格说明书,制订项目开发计划,协调项目开发与运行所涉及的各类人员;能指导制订企业的战略数据规划,组织开发项目;能评估和选用适宜的开发方法和工具;能按照标准规范编写系统分析、设计文档;能对开发过程进行质量控制与进度控制;能具体指导项目开发。即系统分析师的主要职责是获取并分析用户的需求,形成规范化的文档,指导整个项目的开发,需要与客户不断的交流,熟悉应用领域的业务。
============================================
系统架构师:能够根据用户需求,结合用户应用领域的实际情况,设计正确、合理的软件构架,维护系统构件及其接口,并确保系统构架具有良好的性能;能够对项目进行系统构架级的描述、分析、设计与评估;能够按照相关标准编写相应的设计文档;具有扎实的理论功底、广博的知识面,能够与系统分析师、项目管理师相互协作、配合工作。即系统架构师的职责是负责整体的、宏观的系统设计,重点在架构级别上。还要对架构进行描述、分析和评估,属于纯技术性的工作。

================================

软件架构师必须具备的知识体系可以分为两大方面,分别是信息系统综合知识体系和软件架构知识体系。
信息系统综合知识体系:
  (1)计算机系统综合知识:包括计算机组成与体系结构、嵌入式系统和操作系统等方面的知识。

  (2)系统配置和方法:包括系统配置技术和系统性能等方面的知识。

  (3)典型系统应用:包括网络应用、数据库应用和多媒体系统等方面的知识。

  (4)系统开发:包括程序设计语言、软件开发方法、需求分析和设计方法、测试评审方法、开发管理、应用系统构建、系统审计、外部资源使用和基于中间件的开发等方面的知识。

  (5)安全性和可靠性技术:包括数据安全与保密、防闯入和防病毒、容错技术、可靠性模型与分析技术、系统可靠性、安全规章和保护私有信息规则等方面的知识。

  (6)标准化:包括标准化的基础知识、标准化分级、编码标准、数据交换标准、软件工程标准、信息安全标准、基于构件的软件标准和标准化组织机构等方面的知识。

  (7)信息化基础:包括政府信息化与电子政务、企业信息化与电子商务、信息化的有关的法律和规定等方面的知识。

  (8)数学和英语:至少具有大学以上的数学和英语基础知识。
软件架构知识体系:
  (1)系统计划:包括项目的提出和可行性分析、系统方案的制定、评价和改进、新旧系统的分析与比较、现有软、硬件和数据资源的有效利用等。

  (2)软件架构设计:包括软件架构的概念、软件架构与设计、架构风格、特定领域的架构风格、基于架构的软件开发方法、架构评估、软件产品线和系统演化等。

  (3)设计模式:包括设计模式的概念、组成、分类和实现、模式和软件架构的关系等。

  (4)系统设计:包括处理流程设计、人机界面设计、文件与存储设计、数据库设计、网络应用系统的设计、系统运行环境的集成与设计、中间件与应用服务器、性能设计与性能评估等。

  (5)软件建模:包括定义问题与归结模型、结构化系统建模与数据流图、面向对象系统建模、数据库建模和逆向工程等。

  (6)分布式系统设计:包括分布式通信协议的设计、基于对象与web的分布式设计、基于消息和协同的分布式设计和异构分布式系统的互操作性设计等。

  (7)嵌入式系统设计:包括实施任务调度和多任务设计、中断处理和异常处理、嵌入式系统开发设计等。

  (8)系统可靠性分析与设计:包括系统故障模型和可靠性模型、系统的可靠性分析与可靠度计算、提高系统可靠性的措施、系统的故障对策和系统的备份与恢复等。

  (9)系统的安全性和保密性设计:包括系统的访问控制技术、数据的完整性、数据与文件的加密、通信的安全和系统的安全设计等。

  (10)复杂架构设计:包括操作系统的架构、编译器的架构和大型基础库的架构等。
=======================================================
根据软件架构师的职责和角色定位,以及知识体系,从实践的角度考虑,合格的软件架构师应该具有以下能力和经验:

  (1)具有8年以上的软件项目开发实际工作经验,其中至少有3年以上的代码编写工作经验,4年以上的基于面向对象和构件开发方法的软件产品设计经验。

  (2)具有5个以上大中型开发项目的总体规划、方案设计经验,有大中型应用系统开发和实施的成功案例。

  (3)对相关的技术标准有深刻的认识,对软件工程标准和规范有良好的把握。

  (4)对.Net或Java技术及整个解决方案有深刻的理解及熟练的应用,精通Web Service和J2EE等流行的架构。

  (5)对设计模式有深刻的理解,并能在此基础上设计出适合产品特性和质量属性的框架。

  (6)具有面向对象的分析、设计和开发能力,精通UML和XML,能熟练使用Rational Rose、PowerDesigner等工具进行设计。

  (7)具有良好的团队意识和协作精神,有较强的沟通能力和书面表达能力。

  (8)具有旺盛的精力和学习能力,能快速掌握新技术和新方法。

======================================================
促进和发展软件架构学课程的任务将落在现在的软件架构师身上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值