软件架构师的成长路程

软件架构师的成长路程

文章分类:综合技术

       软件架构师是软件行业中一种新兴职业,工作职责是在一个软件项目开发过程中,将客户的需求转换为规范的开发计划及文本,并制定这个项目的总体架构,指导整个开发团队完成这个计划。架构师的主要任务不是从事具体的软件程序的编写,而是从事更高层次的开发构架工作。他必须对开发技术非常了解,并且需要有良好的组织管理能力。可以这样说,一个架构师工作的好坏决定了整个软件开发项目的成败。
  
       软件架构师 实际上就是软件的总体设计师。首席设计师就是总设计师,打个通俗的比方:xiaoping是中国改革开放的总设计师,我们用现在的说法可以 讲,xiaoping是中国改革开放的首席架构师。架构师的形成一定是在实践中积累起来的,而并非上了几次培训班,读了几本书就可以成功的,架构师是在工程实践中培养出来的!

      架构师也并非是万能的。架构师是客户需求和开发者之间的桥梁。在软件行业中,一般提到的架构师是技术架构师,而忽略了领域架构师或者讲是领域工程师的概念。一个好的领域专家一定是业务领域的架构师,他能够给出某一个业务领域的架构,我们可以称为业务架 构,只有技术架构和业务架构紧密结合才有可能真正创造出一个好的系统!      架构师,首先让我想起的是高楼大厦的设计人员,通常一座大厦在建之前,都先由设计师将蓝图描绘出来,包括其形状、结构、尺寸、材料等等,然后建筑工程师带领工人们按照蓝图将大厦一层一层地建起来。

      近年来,软件领域也渐渐地流行起架构师的角色,特别是对一些大型软件产品或项目的开发,这一角色显得很关键,因为缺乏好的软件架构师而导致项目失败的例子不胜枚举,一个没有经验和能力的架构师也会使项目失败的速度加快。

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

如何成为优秀的软件架构师
      显而易见,在软件开发过程中,一个优秀软件架构师的重要性是不应低估的。那么如何成为优秀的软件架构师呢?
      首先必须具有丰富的软件设计与开发经验,这有助于理解并解释所进行的设计是如何映射到实现中去。
      其次要具有领导能力与团队协作技能,软件架构师必须是一个得到承认的技术领导,能在关键时候对技术的选择作出及时、有效的决定。
      第三是具有很强的沟通能力,呵呵,其时这一点好象什么鬼角色都最好具备,软件架构师需要与各路人马经常打交道,客户、市场人员、开发人员、测试人员、项目经理、网络管理员、数据库工程师等等,而且在很多角色之间还要起沟通者的作用。在技术能力方面,软件架构师最重要也是最需求掌握的知识是构件通信机制方面的知识,比如远程过程调用、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、软件构架师 的正式成型在于机遇、个人努力和天赋软件构架师其实是一种职位,但一个程序员在充分掌握软构架师所需的基本技能后,如何得到这样的机会、如何利用所掌握的 技能进行应用的合理构架、如何不断的抽象和归纳自己的构架模式、如何深入行业成为能够胜任分析、构架为一体的精英人才这可不是每个人都能够遇上的馅饼……

 

系统开发的方方面面

1 编程着眼的地方,应当是整个系统.这个系统是什么系统?哪个行业?是否能反应了这个行业当前及今后的业务.基于系统分析之上,应当采用什么软件架构.之后着手的地方,才是具体的软件编码,去实现业务逻辑.

  一个程序员的成长过程,由最初的具体的编码.累积了对软件架构的理解进而进军软件架构,希望设计出一个更加稳定/容易扩展/满足要求的软件架构.而要设计出这样一个软件架构,最终归于对系统业务需求的理解的透彻度.上升为系统分析.

 所以:

 系统分析师:

 工作职责:
1.进行管理软件项目的需求分析工作;
2.项目规划,项目交流,售前咨询和方案设计工作;
任职资格:
1.精通项目管理
2.有大型企业在建工程管理和建设经验
3.精通在建工程管理中预算,采购计划,进度,合同,项目建设规范,监理等内容

系 统分析员,通常可以担任项目经理,全面对该项目的质量和进度负责,整个项目的组织者和直接领导者。是用户需求调查的主要负责人,与用户沟通的主要协调人。与系统设计师组成系统分析小组,执笔起草用户需求报告(按道理这份报告应该用户撰写,但通常情况下都要软件开发商代劳)、系统可行性分析报告、系统需求说 明和设计任务书等,制定系统开发计划,制定系统测试方案,制定系统试运行计划。---本段拷自百度知道.http://zhidao.baidu.com/question/29858949.html

软件架构师:

 架构师要深入理解需求,进行架构分析,设计架构,验证架构方案的可行性等.架构的作用在于如何组织系统各个部分之间的关系.及核心的功能.

软件工程师:在软件架构的基础之上,实现各个部分的具体功能.

 

 

何谓系统架构师?

架构师的主要责任是提供开发人员和项目经理之间的共用沟通媒体。他们负责让业务规则及需求与工程实践及限制相适应,以确保成功系统架构师负责设计系统整体 架构,从需求到设计的每个细节都要考虑到,把握整个项目,使设计的项目尽量效率高,开发容易,维护方便,升级简单这两个解释,加起来基本说明了系统架构师的定义。

经理,就是项目的老板,所以不是来进行功能需求分析和设计的,而是为了确保项目的成功去申请各类所需的资源,如经费、人力资源,在资源到位的情况下,对任务进行分解和分配,强调进度控制,确保项目按时保质完成。

系统架构师关注的是软件的骨架,就像设计大楼的设计师一样,把大楼的框架设计好,至于里面的分隔、装修等不是他的关注点,所以系统架构师往往能够从系统需 求(规格)书中很快的抽象出今后系统将会成为怎么样的一个系统的轮廓,然后将部件、部件与部件之间的交互用类似UML这样的建模语言表达出来,供详细设计 人员参照。
系统架构师必须拥有相当的工作经验,并善于从以往的项目中总结出各种设计模式并加以引用到新的系统中来。
一方面要划分出系统的部件,然后建立部件与部件之间的交互,另外还有一点大家最不知道去做的就是作为一个产品,架构师需要去考虑软件的版本问题、版权问题、今后如何维护升级问题等等,都要在系统架构中体现出来。

系统分析师关注软件要实现的业务逻辑,应该首先很精通业务,系统分析师起码也要能够做客户的一个业务科长或营业主任,就是指这方面。当然国内企业规模小, 多数情况下把系统分析和设计放在一个或几个相同的人身上完成了。重点关注客户的业务,将客户的需求转化成类似用例图这样的表示,从而架起客户与系统设计人员之间的桥梁,所以系统分析师要朝着客户业务专家的方向发展,比如专注电信行业、电力行业、金融行业等。

项目经理一般是指软件开发项目经理,其关注点是开发计划的编制、计划的执行、计划的检查等,以按时保质开发出软件为终极目标,但涉及面却非常广,既要有良 好的技术背景,又要有与人沟通的能力(一般技术人员出身的人最欠缺的),要讲究一定的方法论,但更要掌握管理方方面面的最佳实践。

 

你可能感兴趣的:(杂文)