• 1.摘要
  • 2.基本信息
  • 3.工作职能
  • 4.重要作用
  • 5.具体要求
  • 6.培养过程
  • 7.具备能力
  • 8.主要分类
  • 8.1.软件架构师
  • 8.2.信息架构师
  • 8.3.网站架构师
  • 9.发展现状
  • 10.参考资料
  • 11.知识合集

架构师

职业

系统架构师是一个既需要掌控整体又需要洞悉局部瓶颈并依据具体的业务场景给出解决方案的团队领导型人物。一个架构师得需要足够的想像力,能把各种目标需求进行不同维度的扩展,为目标客户提供更为全面的需求清单。

架构师在软件开发的整个过程中起着很重要的作用。

基本信息

  • 中文名

    系统架构师

  • 外文名称

    Architect1

  • 主要分类

    软件架构师等

  • 颁布证书

    SCJPSCJDSCWDSCEA等

  • 属性

    职业

  • 类型

    团队领导型人物

  • 主要任务

    从事更高层次的开发构架工作

  • 具体要求

    软件设计与开发经验领导能力与团队协作技能很强的沟通能力

工作职能

1/3

确认和评估系统需求,给出开发规范,搭建系统实现的核心构架,并澄清技术细节、扫清主要难点的技术人员。主要着眼于系统的“技术实现”。因此他/她应该是特定的开发平台、语言、工具的大师,对常见应用场景能马上给出最恰当的解决方案,同时要对所属的开发团队有足够的了解,能够评估自己的团队实现特定的功能需求需要的代价。系统架构师负责设计系统整体架构,从需求到设计的每个细节都要考虑到,把握整个项目,使设计的项目尽量效率高,开发容易,维护方便,升级简单等。

架构师的主要任务不是从事具体的软件程序的编写,而是从事更高层次的开发构架工作2。他必须对开发技术非常了解,并且需要有良好的组织管理能力。可以这样说,一个架构师工作的好坏决定了整个软件开发项目的成败。

重要作用

1/3

软件架构师在整个软件开发过程中都起着重要的作用,并随着开发进程的推进而其职责或关注点不断地变化,在需求阶段,软件架构师主要负责理解和管理非功能性系统需求,比如软件的可维护性、性能、复用性、可靠性、有效性和可测试性等等,此外,架构师还要经常审查客户及市场人员所提出的需求,确认开发团队所提出的设计;在需求越来越明确后,架构师的关注点开始转移到组织开发团队成员和开发过程定义上;在软件设计阶段,架构师负责对整个软件体系结构、关键构件、接口和开发政策的设计;在编码阶段,架构师则成为详细设计者和代码编写者的顾问,并且经常性地要举行一些技术研讨会、技术培训班等;随着软件开始测试、集成和交付,集成和测试支持将成为软件架构师的工作重点;在软件维护开始时,软件架构师就开始为下一版本的产品是否应该增加新的功能模块进行决策。

具体要求

1/3

首先必须具有丰富的软件设计与开发经验,这有助于理解并解释所进行的设计是如何映射到实现中去。

其次要具有领导能力与团队协作技能,软件架构师必须是一个得到承认的技术领导,能在关键时候对技术的选择作出及时、有效的决定。

第三是具有很强的沟通能力,其实这一点好像什么角色都最好具备,软件架构师需要与各路人马经常打交道,客户、市场人员、开发人员、测试人员、项目经理、网络管理员、数据库工程师等等,而且在很多角色之间还要起沟通者的作用。在技术能力方面,软件架构师最重要也是最需要掌握的知识是构件通信机制方面的知识,比如远程过程调用(RPC,Remote Procedure Call)、JAVA RMI、CORBA、COM/DCOM、各种标准的通信协议、网络服务、面对对象数据库、关系数据库或者NoSQL数据库等等,另外,架构师应时刻注意新软件设计和开发方面的发展情况,并不断探索更有效的新方法。开发语言、设计模式和开发平台不断很快地升级,软件架构师需要吸收这些新技术新知识,并将它们用于软件系统开发工作中。当然,行业的业务知识对软件架构师也是很重要的,有助于设计出一个满足客户需求的体系结构,优秀的软件架构师常常因为要尽快获得对行业业务的理解而必须快速学习并且进行敏锐的观察。

但作为一个架构师,在整个软件系统的开发过程中是乐趣无穷的,因为这个角色很具有挑战性,有时需要左右逢源、八面玲珑,有时又需要果断坚定、不留情面。在国内,较少软件企业拥有独立的架构师,通常一个软件高手身兼数职,既是项目经理,又是软件架构师,还是软件开发者,有时还要客串一个测试人员,这对软件的开发周期和产品质量是不利的,有时一个人的观点立场是很片面的,而且繁重的工作、沉重的压力会影响一个人的情绪,情绪会影响决策,决策影响结果,所以值得我们三思而后行。

培养过程

架构师不是通过理论学习可以搞出来的,不过不学习相关知识那肯定是不行的。总结架构师自我培养过程大致如下,仅供参考。

1、架构师胚胎(程序员)

学习的知识是语言基础、设计基础、通信基础等,应该在大学完成,内容包括java、c、c++、uml、RUP、XML、socket通信(通信协议)——学习搭建应用系统所必须的原材料。

2、架构师萌芽(高级程序员)

学习分布式系统、组建等内容,应在大学或第一年工作时间接触,包括分布式系统原理、ejb、corba、com/com+、webservice(研究生可以研究网络计算机、高性能并发处理等内容)