词条 | 架构师 |
释义 | 大概从21世纪初左右,软件开发领域渐渐流行起架构师的角色,特别是随着多层结构(Multi-Tier 或 N-Tier)应用开发技术的出现,如 J2EE 和 .NET 等。 现在,对一些大型软件产品或项目的开发,这一角色显得很关键。 那么,什么是软件架构师呢? 目前,还没有一个确切的定义,不同的人或公司有着不同的理解,出于各种原因。 这里,试图就其在软件项目或产品的开发过程中的职责、作用和活动,做一些说明。 软件架构师(Software Architect)是软件开发活动中的一个职位或角色,CNNMoney将其列为美国2010年前100个最佳工作中的首位。 需要说明是,如同制造业、电力行业或航天工业中的总工程师一样,软件架构师虽可以是一份工作,一个职位或角色,但不是一个职业,更不是一个职称。 有什么区别呢? 作为一个职位,尤其是一个高级的技术职位,是需要多年的努力和实际经验的,是需要相当的技术水平和能力的; 作为一个角色,跟大家一样都是整个开发团队必不可少的一员,只是出于领头的位置,要求更高,承担更多的责任,需要更努力地工作。 一般而言,架构师是团队中非常资深(Senior 或 Principal)的开发人员(Developer),非常精通产品或项目所采用的软件开发技术与工具;同时,架构师多为团队的负责人(Team Leader)或领头的开发人员(Lead Developer), 非常了解软件过程控制、配置管理与软件与产品的测试,具备一定的项目管经验,能很好地保证团队的协作与沟通,并对初级的开发人员提供一些指导;对于比较专业的软件,架构师多非常了解领域知识,能够很好地与领域专家沟通与交流;更为重要的是,架构师能很好理解团队的开发活动在公司的市场或商业层面的位置或作用,是开发团队与公司其他部门和层面的接口与桥梁。 架构师的活动贯穿与软件项目或产品的整个开发生命周期(Software Development Life Circle, SDLC),负责设计整个软件架构 / 体系结构(Software Architecture),控制软件开发过程 (Software Development Process), 协助项目规划,用户需求分析, 并协调整个开发团队的开发活动与交流(Communication)。 通常,架构师主要进行系统体系机构和软件架构设计、文档规划、软件开发过程控制等高层(high level)活动, 但大都也从事一些编程工作。 架构师是客户需求和开发者之间的桥梁。在软件行业中,一般提到的架构师是技术架构师,而忽略了领域架构师或者讲是领域工程师的概念。一个好的领域专家一定是业务领域的架构师,他能够给出某一个业务领域的架构,我们可以称为业务架构,只有技术架构和业务架构紧密结合才有可能真正创造出一个好的系统! 架构师 - 职责 软件架构师在整个软件开发过程中都起着重要的作用,并随着开发进程的推进而其职责或关注点不断地变化,在需求阶段,软件架构师主要负责理解和管理非功能性系统需求,比如软件的可维护性、性能、复用性、可靠性、有效性和可测试性等等,此外,架构师还要经常审查和客户及市场人员所提出的需求,确认开发团队所提出的设计;在需求越来越明确后,架构师的关注点开始转移到组织开发团队成员和开发过程定义上;在软件设计阶段,架构师负责对整个软件体系结构、关键构件、接口和开发政策的设计;在编码阶段,架构师则成为详细设计者和代码编写者的顾问,并且经常性地要举行一些技术研讨会、技术培训班等;随着软件开始测试、集成和交付,集成和测试支持将成为软件架构师的工作重点;在软件维护开始时,软件架构师就开始为下一版本的产品是否应该增加新的功能模块进行决策。 架构师 - 必备条件 架构师的形成是在实践中锻炼起来的,需要相当的技术水平和多年的实际经验,而并非上了几次培训班,读了几本书就可以成功的。 显而易见,在软件开发过程中,一个优秀软件架构师的重要性是不应低估的。那么如何成为优秀的软件架构师呢? - 必须具有丰富的软件设计与开发经验,这有助于理解并解释所进行的设计是如何映射到实现中去。 - 其次要具有领导能力与团队协作技能,软件架构师必须是一个得到承认的技术领导,能在关键时候对技术的选择作出及时、有效的决定。 - 具有很强的沟通能力,呵呵,其时这一点好象什么鬼角色都最好具备,软件架构师需要与各路人马经常打交道,客户、市场人员、开发人员、测试人员、项目经理、网络管理员、数据库工程师等等,而且在很多角色之间还要起沟通者的作用。在技术能力方面,软件架构师最重要也是最需求掌握的知识是构件通信机制方面的知识,比如远程过程调用、JAVARMI、CORBA、COM/DCOM、各种标准的通信协议、网络服务、面对对象数据库、关系数据库等等,另外,架构师应时刻注意新软件设计和开发方面的发展情况,并不断探索更有效的新方法。开发语言、设计模式和开发平台不断很快地升级,软件架构师需要吸收这些新技术新知识,并将它们用于软件系统开发工作中。当然,行业的业务知识对软件架构师也是很重要的,有助于设计 - 出一个满足客户需求的体系结构,优秀的软件架构师常常因为要尽快获得对行业业务的理解而必须快速学习并且进行敏锐的观察。 上面的描述是枯燥乏味的,但作为一个软件架构师,在整个软件系统的开发过程中是乐趣无穷的,因为这个角色很具有挑战性,有时需要左右逢源八面玲珑,有时又需要果断坚定不留情面。在国内,较少软件企业拥有独立的架构师,通常一个软件高手身兼数职,既是项目经理,又是软件架构师,还是软件开发者,有时还要客串一个测试人员,这对软件的开发周期和产品质量是不利的,有时一个人的观点立场是很片面的,而且繁重的工作、沉重的压力会影响一个人的情绪,情绪会影响决策,决策影响结果,所以值得我们三思而后行。 构架师不是通过理论学习可以搞出来的,不过不学习相关知识那肯定是不行的。总结构架师自我培养过程大致如下,仅供参考。 1、构架师胚胎(程序员) 学习的知识是语言基础、设计基础、通信基础等,应该在大学完成,内容包括java、c、c 、uml、RUP、XML、socket通信(通信协议)——学习搭建应用系统所必须的原材料。 2、构架师萌芽(高级程序员) 学习分布式系统、组建等内容,可以在大学或第一年工作时间接触,包括分布式系统原理、ejb、corba、com/com 、webservice(研究生可以研究网络计算机、高性能并发处理等内容) 3、构架师幼苗(设计师) 应该在掌握上述基础之上,结合实际项目经验,透彻领会应用设计模式,内容包括设计模式(c 版本、java版本)、ejb设计模式、J2EE构架、UDDI、软件设计模式等。在此期间,最好能够了解软件工程在实际项目中的应用以及小组开发、团队管理。 4、软件构架师的正是成型在于机遇、个人努力和天赋软件构架师其实是一种职位,但一个程序员在充分掌握软构架师所需的基本技能后,如何得到这样的机会、如何利用所掌握的技能进行应用的合理构架、如何不断的抽象和归纳自己的构架模式、如何深入行业成为能够胜任分析、构架为一体的精英人才这可不是每个人都能够遇上的馅饼…… 架构师 - 认证 众所周知,Java是当前最热门的软件开发语言,它具有跨平台、面向对象、强大的网络功能等特性。你不仅能在电脑上使用Java程序,还能在手机、PDA、家用电器上使用Java程序,甚至举世瞩目的火星车也全部采用Java技术。Java在不到10年时间内已经变成最流行的软件开发平台,最新的企业级Java 2.0版本(简称:J2EE)也成为企业应用系统上最受欢迎的开发标准。 事实上,全世界范围内的J2EE架构师都是紧缺的人才,只是中国更加明显而已。在英国,有经验的J2EE架构师,目前平均年薪已经飙涨到七万至十万英镑。全球著名的电子商务平台提供商SilverStream软件公司的技术服务总监Mark Ashton对J2EE人才的短缺深有感受,他表示许多求职者的履历表上都有把J2EE列进去,但是仔细查看或是面试之后就会发现大多数人只是听过J2EE,并没有真正用过这些技术。信息产业部电子信息产品管理司副司长丁文武近期也表示,目前我国Java人才还远远不够,至少短缺20万。特别是随着大量软件外包业务进入中国,许多外资或中资软件企业也开始面临着高级Java人才奇缺的问题,尤其是熟悉J2EE又能掌握一门相应外语的人才成为了众多大公司争抢的对象。 作为Java的发明者和Java开发标准的主要制定者——美国Sun公司对从事Java开发的技术人员提供了三级认证体系,即初级的程序员认证(SCJP)、中级的开发员认证(SCJD和SCWD)和高级的架构师认证(SCEA)。这也是软件行业中最权威的国际认证之一。目前国内已经有针对美国Sun公司认证体系的培训,但绝大多数主要针对初级的程序员认证,只有极少数专业培训机构能够提供三层完整培训。 |
随便看 |
百科全书收录594082条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。