架构师负责理解系统的业务需求,并创建合理、完善的系统体系架构。架构师也负责通过软件架构来决定主要的技术选择。这典型的包括识别和文档化系统的重要架构方面,包括系统的需求、设计、实现和部署"视图"。
职责
- 负责公司系统的架构设计、研发工作;
- 承担从业务向技术转换的桥梁作用;
- 协助项目经理制定项目计划和控制项目进度;
- 负责辅助并指导 SA 开展设计工作;
- 负责组织技术研究和攻关工作;
- 负责组织和管理公司内部的技术培训工作;sss
- 负责组织及带领公司内部员工研究与项目相关的新技术;
- 管理技术支撑团队并给项目、产品开发实施团队提供技术保障。
应该具备能力
- 具备 8 年以上软件行业工作经验;
- 具备 4 年以上 C/S 或 B/S 体系结构软件产品开发及架构和设计经验;
- 具备 3 年以上的代码编写工作经验;
- 具备丰富的大中型开发项目的总体规划、方案设计及技术队伍管理经验;
- 对相关的技术标准有深刻的认识,对软件工程标准规范有良好的把握;
- 对相关编程技术(如PHP/.Net/JAVA)及整个解决方案有深刻的理解及熟练的应用 , 并且精通架构和设计模式(如WebService/J2EE),并在此基础上设计产品框架;
- 具有面向对象分析、设计、开发能力(OOA、OOD、OOP),精通 UML 和 ROSE,熟练使用 Rational Rose、PowerDesigner 等工具进行设计开发;
- 精通大型数据库如 Oracle、Sql Server、MySQL 等的开发;
- 对计算机系统、网络和安全、应用系统架构等有全面的认识,熟悉项目管理理论,并有实践基础;
- 在应用系统开发平台和项目管理上有深厚的基础,有大中型应用系统开发和实施的成功案例;
- 良好的团队意识和协作精神,有较强的内外沟通能力。
与其他角色的关系及区别
- 系统构架师与产品经理的关系及区别
- 项产品经理通常是指负责产品设计的“专人”。一个优秀的理想的产品经理,应同时具备较高的商业素质和较强的技术背景。产品经理要有深厚的领域经验,也就是说,对该软件系统要应用到的业务领域非常之熟悉。比如,开发房地产销售软件的产品经理,应该对房地产公司的标准销售流程了如指掌,甚至比大多数销售人员还要清楚。如果开发的是通用产品,他/她还具备对市场、潜在客户需求的深刻洞察力。
- 那么,系统架构师与产品经理有什么不同呢?我们不应该把二者混为一谈,这是不少论述和实践常犯的错误。我看来,如果把开发软件比作摄制电影,产品经理之于系统架构师,就正像编剧之于导演。产品经理虽然要有一定技术背景,但仍应属于“商业人士(business people)”,而系统架构师则肯定是一个技术专家。二者看待问题的立场、角度和出发点完全不同。
- 系统构架师与项目经理的关系及区别
- 软件项目经理是指对项目控制/管理,关注项目本身的进度、质量,分配、调动、协调、管理好人、财、物等资源的负责人。对于软件项目经理来讲,包括项目计划、进度跟踪/监控、质量保证、配置/发布/版本/变更管理、人员绩效评估等方面。优秀的项目经理需要的素质,并不仅在于会使用几种软件或是了解若干抽象的方法论原则,更重要的在于从大量项目实践中获得的宝贵经验,以及交流、协调、激励的能力,甚至还应具备某种个性魅力或领袖气质(Charisma)。
- 从性格因素上讲,单纯的技术人员倾向于忽视“人”的因素,而这正是管理活动的一个主要方面。项目经理能够应付开发过程中大量的偶发事件和杂务。
- 在一个项目中,推动项目发展的是系统构架师,而不是项目经理。项目经理的职责只是配合系统构架师,提供各个方面的支持。主要职责是与内外部沟通和管理资源(包括人)。系统构架师提出系统的总体构架,给出开发指导。
- 系统构架师与系统分析师的关系及区别
- 系统分析师(System analyst)是指对系统开发中进行分析、设计和领导实施的人。一般意思上讲,系统分析师的水平将影响系统开发的质量,甚至成败。但在一个完善的系统开发队伍中,还需要有业务专家,技术专家和其他辅助人员。所以,系统分析师只是其中的角色之一。但我国许多的 IT 公司,一般只有系统分析师而没有技术专家。
- 系统分析师固然是对特定系统进行分析、设计。所以他的任务、目标是明确的。他只是去执行任务,完成系统的最终设计。
- 系统架构师应该和系统分析师分开,但架构师必须具备系统分析师的所有能力,同时还应该具备设计员所没有的很多能力。
- 系统架构师是指导、检督系统分析师的工作,要求系统分析师按什么标准,什么工具,什么模式,什么技术去设计系统的。同时,系统架构师应该对系统分析师所提出的问题,碰到的难题及时地提出解决的方法。并检查、评审系统分析师的工作。
评估系统构架师
- 系统构架师是否是某一技术领域的专家;
- 系统构架师能否指导系统分析师的设计工作,发现并指出设计存在的问题并提出解决方法,评审他们的工作;
- 系统构架师能否指导软件工程师进行开发工作,发现并指出编码存在的问题并提出解决方法,评审他们的工作;
- 系统构架师能否协助好项目经理制定项目计划和控制项目进度;
- 系统构架师能否及时有效地解决设计、开发人员所提出的问题,解决技术上的难题;
- 系统构架师能否制订并规范系统设计和开发文档、工具、模型;能否让其他人员容易理解;
- 系统构架师能否经常组织并带领公司内部员工研究、学习与项目相关的新技术;
- 系统构架师能否组织和管理好公司内部的技术培训工作,技术研究和攻关工作;
- 系统构架师能否组织和管理好公司内部的技术培训工作,技术研究和攻关工作;
- 系统构架师是否有良好的团队意识和协作精神,有较强的内外沟通能力;
- 系统构架师是否能管理好技术支撑团队并给项目、产品开发实施团队提供技术保障;
- 系统构架师所设计的系统架构是否合理,技术是否先进,能否满足客户的要求;
- 系统构架是否有扩展性,安全性,能否经受压力测试,网络流量在超用户数下如何控制;系统边界如何处理,瓶颈问题如何解决等;
- 系统设计前期、中期、后期所要解决的问题,是否有阶段性,里程碑的标识;
- 是否有分析、识别并尽可能地回避风险,降低风险所引发问题成本的能力;
- 能否给公司降低开发成本,提高效率;