1.2系统架构师的定义与职业素质
通常从组织上划分,架构师分为以下几大类:业务架构师(BusinessArchitec)、主题领域架构师(DomainArchitect)、技术架构师(TechnologyArchitect)、项目架构师(J2E架构师、NET架构师等)以及我们本书所阐述的系统架构师(SystemArchitecture)。
1.2.1系统架构师的定义
系统架构师是系统或产品线的设计责任人,是一个负责理解和管理并最终确认和评估非功能性系统需求(如软件的可维护性、性能、复用性、可靠性、有效性和可测试性等),给出开发规范,搭建系统实现的核心构架,对整个软件架构、关键构件、接口进行总体设计并澄清关键技术细节的高级技术人员。
系统架构师主要着眼于系统的“技术实现”同时还要考虑系统的“组织协调”。因此,系统架构师是特定的开发平台、语言、工具的大师,对常见应用场景能及时给出最恰当的解决方案,同时要对所属的开发团队有足够的了解,能够评估该开发团队实现特定的功能需求目标的资源代价。可以说,系统架构师是信息系统开发和演进的全方位技术与管理人才。
1.2.2系统架构师技术素质
系统架构师通常负责公司系统的架构设计与持续改进,承担从业务向技术系统转换的桥梁作用;协助项目经理制定项目计划和控制项目进度;需要承担技术管理工作,如负责组织技术研究和攻关,负责组织和管理技术培训工作,管理技术支撑团队并给项目、产品开发实施团队提供技术保障。因此一个好的系统架构师的技术素质十分重要,通常系统架构师需要具有系统思维的能力,还必须具备以下技术素质:
具备丰富的一线大中型开发项目的总体规划、方案设计及技术队伍管理经验。具备软件行业工作经验,熟悉业务领域的技术应用和发展。具有项目管理理论基础,并在应用系统开发平台和项目管理上有实践经验。对相关的技术标准有深刻的认识,对软件工程标准规范有良好的把握。具备CS或B/S体系结构或特定领域软件产品开发及架构和设计的经验。具有面向对象分析(object-OrientedAnalysis,00A)、设计(ObjectOrientedDesignOOD)、开发(Object-orientedProgramming,oP)能力,精通UML和XML等,熟练使用RationalRose,Powerdesigner等CASE工具进行设计开发。对相关编程技术(如PHP/.Net/JAVA)及整个解决方案有深刻的理解及熟练的应用,并且精通架构和设计模式(如Webservice/J2EE),并在此基础上设计产品框架。精通大型数据库如Oracle、SqlServer、MYSQL等的开发。对计算机系统、网络和安全、应用系统架构等有全面的认识。良好的团队意识和协作精神,有较强的内外沟通能力。1.2.3系统架构师管理素质
系统架构师管理素质是必须强调的。它包括远见、诚信、果断的领导素质。系统架构师是一个高效工作团队的建造者。作为核心的高层技术管理人员,架构师必须尽可能使所有团队人员的想法保持一致,为一个项目制订一个清晰的、强制性的、有远见的目标作为整个团队的动力,从而为达到整体目标所作的权衡提供基础。作为技术的领导者,系统架构师必须提供特定的方法和模型作为理想的技术解决方案;并排除各种非系统相关因素的影响。作为一个技术管理者,系统架构师在需要做出决定时,必须避免犹豫,必须具备及时解决技术问题的紧迫感和自信心。
1.2.4系统架构师与其他团队角色的协调
关于系统架构师的定位,在很多资料中都没有明确的表述,这里可以参照系统开发中的主要角色的给出描述。
根据全国计算机技术与软件专业技术资格(水平)考试的安排,其中作为高级工程师级别的职位有项目管理师、系统分析师和系统架构师(这里的系统架构主要是指软件系统的架构)。考试大纲对这三个职位的要求和职责定义如下。
(1)项目管理师:掌握信息系统项目管理的知识体系,具备管理大型、复杂信息系统项目和多项目的经验和能力;能根据需求组织制定可行的项目管理计划:能够组织项目实施,对项目的人员、资金、设备、进度和质量等进行管理,并能根据实际情况及时做出调整,系统地监督项目实施过程的绩效,保证项目在一定的约束条件下到达既定的项目目标:能分析和评估项目管理计划和成果;能在项目管理进展的早期发现问题,并有预防问题的措施;能协调项目所涉及的相关人员。即项目管理师的主要职责是负责整个项目的实施和控制,协调各种资源(包括组织内部资源和客户资源)。
(2)系统分析师:熟应用领域的业务,能分析用户的需求和约束条件,写出信息系统需求规格说明书,制订项目开发计划,协调项目开发与运行所涉及的各类人员;能指导制订企业的战略数据规划,组织开发项目;能评估和选用适宜的开发方法和工具;能按照标准规范编写系统分析、设计文档;能对开发过程进行质量控制与进度控制;能具体指导项目开发。即系统分析师的主要职责是获取并分析用户的需求,形成规范化的文档,指导整个项目的开发,需要与客户不断的交流,熟悉应用领域的业务。
(3)系统架构师。能够根据用户需求,结合用户应用领域的实际情况,设计正确、合理的软件构架,维护系统构件及其接口,并确保系统构架具有良好的性能;能够对项目进行系统构架级的描述、分析、设计与评估;能够按照相关标准编写相应的设计文档具有扎实的理论功底、广博的知识面,能够与系统分析师、项目管理师相互协作、配合工作。即系统架构师的职责更加强调整体的、宏观的系统设计,重点在架构级别上。重点要对架构进行描述、分析和评估。
图1-1的上图反映了传统的系统开发:通过对用户的需求分析,组织必要的资源和设施,选择设计合适的架构,然后由项目经理统筹安排组织实施(包括人、财和物),这是一个反复互动,逐步契合的过程。
由上面所述可以看出,在传统的系统开发中,系统开发进度及统筹的管理主要由项目经理来完成,需求分析及技术实现主要由系统分析员或设计员来完成。由于项目经理、系统分析员或者程序员从各自职位角度出发产生冲突的制约,不可能很好地给出开发范,搭建系统实现的核心构架,并澄清技术细节、扫清主要难点的技术,或者说最终难以确认和评估技术对需求实现产生的影响。所以我们把系统架构设计师定位在图1-1的下图中两个椭圆相交的部分,他负责整个系统的战略策划和技术实现。图1-1的上图说明架构设计先行和系统架构师、系统分析师、项目管理师三者的相互关系与作用。
1.系统构架师与项目经理的关系及区别
软件项目经理是指对项目控制管理,