软件架构与企业架构
2018-02-27周红
周红
摘要
在企业信息化战略过程中企业架构的重要性不言而喻,从基本的信息共享、业务管理集成平台到企业分析决策支持系统和商业智能系统都需要建立统一高效的企业架构策略和决策机制,但在企业的信息化实践中如何发挥系统架构师和企业架构的优势,提高企业信息资产的利用率需要企业管理者重视。
【关键词】软件架构 企业架构 EA
软件产业经过多年的发展,与各行业的融合逐渐深入,传统制造业和服务业的信息化程度日益提高,但一个个独立的“信息孤岛”却也逐渐成为企业的负担,企业IT部门的投资比例逐年上升,但是对企业核心竞争力的提升和经营目标的贡献却未能达到预期。企业的IT部门在反思,同样软件研发企业也在反思,如何对企业的信息资产进行重构,打造一个符合企业实际需要的企业架构?
企业架构旨在解决企业信息资产的管理问题,特别是对存在遗留软件基础设施进行二次信息化改造的企业来说,重构企业的软件架构尤为重要。
软件产业与传统制造业和服务业无论在研发、销售还是在服务模式上均有不同,近几年软件产业虽然发展势头旺盛,发展速度也较快,但是软件行业的生产成本过高、周期过长、无法规模化生产,这些制约软件产业的核心和根本问题至今尚未解决。目前,软件业界虽然有不少优秀的方法论和新技术新产品,如SOA、软件即服务(SAAS)、云计算,但是如何将这些方法论落到实处,形成有效的最佳实践指导软件开发,这将是我们面临的重要课题。
1 架构师及其职责和能力
架构师是软件研发过程中一种比较重要的角色,其工作职责是在一个软件项目开发过程中,将客户的需求转换为规范的开发计划及需求规格说明书,并制定这个项目的总体软件体系架构,指导整个开发团队完成这个软件系统的构建。架构师是软件开发活动中众多角色之一,它可能是一个人、一个小组,也可能是一个团队。微软对架构师有一个分类参考,他们把架构师分为4种:企业架构师EA(Enterprise Architect)、基础结构架构师IA(Infrastructure Architect)、特定技术架构TSA(Techno10Gy-Specific Architect)和解决方案架构师SA(Solution Architect)。微软的这个分类是按照架构师专注的领域不同而划分的。
架构师其实关键便在架构二字,架构这个词语是借鉴于传统的建筑学领域,其初始本义应该是描述一个建筑整体的设计、风格,包括了框架、结构、以及审美观念等。它被引入到软件工程领域,有些像汉语中常用的比喻意。一个软件系统如同一栋建筑,它的设计、风格,它的结构也就相当于建筑中的设计理念、风格与具体的框架结构,我们把这些也称之为体系结构。除此外,同时它还包括一种扩展的概念,也就是架构模式。其原因在于我们希望在软件系统的设计上能找到最高层次的软件复用。架构师的主要任务不是从事具体的软件程序的编写,而是从事更高层次的软件体系构架工作,因此必须对开发技术非常了解,对专业领域的业务知识也比较熟悉,并且需要有良好的组织管理能力。
架构师在整个软件开发过程中都起着重要的作用,并随着软件开发生命周期的演进而其职责或关注点不断地变化。在需求阶段,架构师主要负责理解和管理非功能性系统需求,比如软件的可维护性、性能、复用性、可靠性、有效性和可测试性等等,此外,架构师还要经常审查和分析客户及市场人员所提出的需求,确认开发团队所提出的设计;在需求越来越明确后,架构师的关注点开始转移到组织开发团队成员和开发过程定义上;在软件设计阶段,架构师负责对整个软件体系结构、关键构件、接口和开发策略的设计;在编码阶段,架构师则成为详细设计者和代码编写者的顾问,并且经常性地要举行一些技术研讨会、技术培训班等;随着软件开始测试、集成和交付,集成和测试支持将成为软件架构师的工作重点;在软件维护开始时,软件架构师就开始为下一版本的产品是否应该增加新的功能模块进行决策。
架构师需要参与项目开发的全部过程,包括需求分析、架构设计、系统实现、集成、测试和部署各个阶段,负责在整个项目中对技术活动和技术说明进行指导和协调。概括起来架构师主要职责有4条:
1.1 确认需求
在项目开发过程中,架构师是在需求规格说明书完成后介入的,需求规格说明书必须得到架构师的认可。架构师需要和分析人员反复交流,以保证自己完整并准确地理解用户需求。
1.2 系统分解
依据用户需求,架构师将系统整体分解为更小的子系统和组件,从而形成不同的逻辑层或服务。随后,架构师会确定各层的接口,层与层相互之间的关系。架构师不仅要对整个系统分层,进行“纵向”分解,还要对同一逻辑层分块,进行“横向”分解。软件架构师的功力基本体现于此,这是一项相对复杂的工作。
1.3 技术选型
架构师通过对系统的一系列的分解,最终形成了软件的整体架构。技术选型主要取决于软件架构。Web Server运行在Windows上还是Linux上?数据库采用MSSql、Oracle还是Mysql?需要不需要采用MVC或者Spring等輕量级的框架?前端采用富客户端还是瘦客户端方式?类似的工作,都需要在这个阶段提出,并进行评估。
1.4 制定技术规格说明
架构师在项目开发过程中,是技术权威。他需要协调所有的开发人员,与开发人员一直保持沟通,始终保证开发者依照它的架构意图去实现各项功能。
架构师与开发者沟通的最重要的形式是技术规格说明书,它可以是UML视图、Word文档,Visio文件等各种表现形式。通过架构师提供的技术规格说明书,保证开发者可以从不同角度去观察、理解各自承担的子系统或者模块。
我所在的单位在这方面已有多个项目的实践经验,在需求规格说明书确认后,由架构组进行系统架构设计,根据组织已定义的流程要求,架构组必须提供一个以上的架构方案,由项目管理委员会进行架构评审和验证架构的可行性,最终形成软件架构说明书文档和软件系统的框架代码。在此过程中架构组作为一个团队进行工作,其产出的架构说明书文档一般都是通过Ration Rose进行制作,包括整个软件的体系结构以及软件依赖的软件硬件平台、软件运行的内部外部环境,软件子系统和模块的分解视图,软件横向和纵向的分层结构视图,各层间进行数据传递和交换的对象和协议,系统内部和外部的数据交换接口设计,系统总体通用组件的设计视图。如果需要采购商业组件,也需要在架构说明书文档中说明,并经过相关部门的审批。
软件架构师在软件研发中的作用如此重要,那么软件架构师需要具备什么样的素质和能力呢?我们可以参考图1的“架构师能力模型”。
首先软件架构师必须具备丰富的计算机软件研发经验和特定领域的专业知识。在具体的实践中,担任软件架构师的人员均要求在相应的领域至少有两个以上的系统架构经验,必须熟悉架构所依赖的基础设施和软硬件平台。这有助于理解并解释所进行的设计是如何映射到实现中去。
其次要具有领导能力与团队协作技能。软件架构师必须是一个得到承认的技术领导,能在关键时候对技术的选择作出及时、有效的决定。
第三是具有很强的沟通能力和技巧。现实中的软件架构师一般来自软件研发领域,对沟通和交流能力的培养和锻炼尤其重要。软件架构师需要与多种角色打交道,客户、市场人員、开发人员、测试人员、项目经理、网络管理员、数据库工程师等等,而且在很多角色之间还要起沟通和协调的作用。
另外,架构师应时刻注意软件设计和开发方面的最新发展情况,并不断探索更有效的新方法。开发语言、设计模式、架构模式和开发平台不断很快地升级,软件架构师需要吸收这些新技术新知识,并将它们用于软件系统架构工作中。当然,行业的业务知识对软件架构师也是很重要的,有助于设计出一个满足客户需求的软件体系结构,优秀的软件架构师常常因为要尽快获得对行业业务的理解而必须快速学习并且进行敏锐的观察。
上面的描述是枯燥乏味的,但作为一个架构师,在整个软件系统的开发过程中是其乐无穷的,因为这个角色很具有挑战性,有时需要左右逢源八面玲珑,有时又需要果断坚定不留情面。在国内,较少软件企业拥有独立的软件架构师角色,通常是一个资深软件开发人员身兼数职,既是项目经理,又是软件架构师,还是软件开发者,有时还要兼顾软件测试工作,这对软件的开发周期和产品质量是不利的,有时一个人的观点立场是很片面的,而且繁重的工作、沉重的压力会影响一个人的情绪,情绪会影响决策,决策影响结果,所以在软件企业发展到一定规模的时候,会考虑软件架构师的定位问题。我所在的单位也是在近两年才把架构师角色独立出来,在部门级别组建独立的架构师职位和需求设计团队。
架构师也并非是万能的。架构师是客户需求和开发者之间的桥梁。在软件行业中,一般提到的架构师是技术架构师,而忽略了领域架构师或者讲是领域工程师的概念。一个好的领域专家一定是业务领域的架构师,他能够给出某一个业务领域的架构,我们可以称为业务架构,只有技术架构和业务架构紧密结合才有可能真正创造出一个好的系统!
2 企业架构的定义
目前国内企业在政府相关职能部门和利好政策的驱动下,信息化建设的力度、深度和广度都在不断加深,信息化的范围从高新科技领域逐渐向传统工业及制造领域延伸,信息技术与企业的具体业务之间的关联性越来越紧密。但是,在企业信息化过程中由于信息技术与具体业务之间的自然属性不同导致诸多问题尚需解决,包括信息资产未能转化成企业核心竞争力、技术体系混杂、基础平台不兼容、技术产品互操作性差、信息资产管控不规范等。回顾信息化的建设过程我们可以发现,产生这些问题的一个重要原因就是企业缺乏信息化的总体规划和设计。以前往往是无论哪个业务单位提出信息化需求,企业的信息技术部门会以不同的技术架构和软件硬件产品去解决,长此以往企业积累的就是一个个零散的企业架构,虽然每个业务单位和部门都有对应的IT支撑系统,但是从整个企业层面来说显得零乱、无序和复杂,对企业总体业务能力的协调和改进没有起到应有的作用,其结果必然降低企业的业务盈利能力,危及企业的长期发展。
在这种情况下,就需要一种体系架构,在企业的总体层面上将需求、业务和信息技术进行有效结合,并进行规范化管理。近年来企业架构的理论和实践方法越来越显示其效果和优势,并广泛受到企业和政府部门的重视。对企业架构的基本期望是,在对业务战略和管理流程充分理解的基础上,进行信息化资产整体的高层次的规划设计,形成灵活、稳定、健壮的IT基础设施和应用架构,将企业信息化资产转化为企业核心竞争力。
企业和架构本来是两个领域内的概念。企业,指的是有共同目标的组织集合。可以是公司或者公司的部门,政府机构或机构的单个处\科室。架构,指的是事物的基本组织和结构,包括它的组成部分,各部分之间的关系,以及管理、设计和演变的规律。对于企业架构,不少学术机构和组织都给出了自己的定义:
麻省理工学院(MIT)的信息系统研究中心定义;企业架构是指业务流程的组织逻辑和IT基础设施,反映了该组织运行模式的整合和标准化的需求。
IBM的定义:企业架构是记录在企业内所有的信息系统、它们的相互关系以及它们如何完成企业使命的蓝图。
从以上的定义可以看出,企业架构如同战略规划,其主旨是辅助企业完成业务及IT战略规划。企业的战略服务于企业的愿景和使命,制定正当、明确、清晰、合适的战略是企业的首要工作,而高效和优化的企业架构是实现企业战略目标的有效途径和保障手段。
3 企业架构的发展
企业架构最早的思想雏形来自于企业的领域建模。上世纪80年代当时还是IBM员工的John Zachman率先提出“信息系统架构框架”的概念,从信息、流程、网络、人员、时间、基本原理等6个角度分析企业,他还描述了与这6个角度对应模型,包括定义、概念、逻辑、物理、构件、功能等模型。只是他当时并没有明确的使用“企业架构”这个概念,但是这被公认是企业架构领域最早的思维模型。1996年美国的Clinger-Cohen法案定义了“IT架构”的概念,该法案要求政府机构的CIO要负责开发、维护和帮助一个合理的和集成的IT架构的实施,当时的IT架构按照现在的观念来理解就是IT企业架构。1999年9月美国联邦CIO委员会提出“联邦企业架构框架”,它的目标是提供一个架构的公共结构,以利于组织间的公共业务流程、技术、信息资产和系统投资的协调。到2002年2月该机构建立企业架构程序管理办公室,专门负责企业架构的相关标准的定义和实施。
在欧洲其他国家,特别是欧盟内部各国,当提供软件产品和服务的时候,供应商需要明确其产品和服务使用的标准的企业架构。这些强制性规定有利于政府机构和企业在信息化建设过程中遵守统一的标准,形成统一的企业架构规范。随着全球化的进展和国家信息化的推进,可以乐观的预计未来企业架构在我国的政府部门和企事业单位具有良好的应用前景和发展空间,也将受到越来越多的关注。
4 企业架构的研究领域
在企业架构的研究中,一般会按照架构所涵盖的领域进行细分。企业架构的研究领域目前包括如下4个:业务架构、数据架构、应用架构、技术架构。如图2所示。
业务架构:定义了业务策略、治理、组织和关键业务过程。它是企業架构的核心内容,承接了企业的战略,直接决定了企业战略的实现能力,是其他架构领域工作的前提条件。
数据架构:描述了企业的逻辑、物理数据资产和数据管理资源的结构。
应用架构:为要部署的单个应用系统、它们之间的交互和它们与企业的核心业务流程之间的关系提供蓝图。应用架构和数据架构一起构成信息系统架构。
技术架构:描述了需要支持的业务、数据、应用服务的软件和硬件能力,包括IT基础设施、中间件、网络、通信、流程、标准等。
简言之,企业架构是承接企业的业务战略和IT战略之间的桥梁和标准接口,是组织进行信息化规划的核心。我们可以用一句话概括企业架构的意义:“有效的企业架构是组织核心竞争力的放大器,是其通过IT资产获得竞争优势的不可或缺的手段”。企业架构规划是当今与未来企业进行大规模信息化建设的重要方法论。通过发展企业架构,制定战略,梳理流程,识别关键业务和差异化服务,这将是成功SOA实施的真正起点。
5 企业架构的统一有利于企业并购和产品线整合
国家相关部委在推进信息化、工业化的同时,也在着力培育和打造中国特色的高新科技产业链,培养一批具有国际品牌价值和国际竞争力的高新科技企业。在国家宏观背景下一批业绩优异的高新科技企业纷纷走上并购和整合之路,企业的并购和整合必然会发生两个企业产品线不统一的情况,在基础设施和应用架构上都存在不同程度的冲突和异构设计,这时就需要站在企业高层和全局的视角,重新梳理和整合企业架构。企业并购的主要目标之一是为了丰富其产品线,提高其产品市场份额,但是如果没有合理有效的产品整合方案和整体企业架构,必然存在异构的信息资产,包括异构的基础设施、异构的硬件和网络、以及异构的中间件和应用软件平台,这势必会导致并购后的企业无法整合有效地信息资产,对提升企业效率,优化企业资源配置并无帮助。目前不少提供软件即服务(Software And Service)的软件供应商企业已经在重构企业架构,在企业内部整合信息资产、数据和服务,形成统一的应用软件架构,对外提供统一的服务接口。
在实施面向服务的软件架构(SOA)过程中,软件架构师要在宏观上把握企业整体的体系架构,软件架构师无论是在硬件、网络还是软件上均要定义企业架构,并形成标准。在企业研发新产品,或者采购新软件的时候严格按照己定义的企业架构标准进行操作,确保企业架构标准落到实处,这样才能形成完整统一的信息资产。我所在的单位一直在积极的研发和实施面向服务的软件架构(SOA),06年我单位成功的实施了基于SOA架构的专业服务软件,并通过科技部的验收。目前正在筹备软件即服务(Software And Service)的相关产品,我们的先期单行项目是对单位内部的各个部门进行信息资产的重构,抽象和梳理各部门的业务流程和协作,最终形成各部门统一的工作平台。该平台在基础设施、硬件、网络、中间件、应用软件架构等层面均符合我们己定义的企业架构规范和标准,在各部门间能够做到信息资产、数据和业务流程的互联互通,企业垂直维度和水平维度各个层次的人员都能融入到这个统一的平台,加强了各部门间工作协调的力度,同时也增加了各部门、各项目的透明度。
参考文献
[1]Buschmann,F.等著.贲可荣等译,面向模式的软件体系结构 卷1:模式系统[M].北京:机械工业出版社,2003.
[2]Larman,C.著.方梁等译.UML和模式应用[M].北京:机械工业出版社,2004.
[3]Alan Shalloway&James R.Trott著.熊节译.设计模式精解[M].北京:清华大学出版社,2004.
[4]Robert C.Martin著.敏捷软件开发一原则、模式与实践[M].北京:清华大学出版社,2003.
[5]冯冲,江贺,冯静芳编著.软件体系结构理论与实践[M].北京:人民邮电出版社,2004.
[6]David M.Dikel等著.软件架构[M].北京:机械工业出版社,2003.
[7]蔡敏,徐慧慧,黄炳强编著.UML基础与Rose建模教程[M].北京:人民邮电出版社,2006.
[8]余雪丽主编.软件体系结构及实例分析[M].北京:科学出版社,2004.
[9]Luke Hohmann著.蓝莉、曾永和译.超越软件架构:创建和维护优秀解决方案[M].中国电力出版社,2004.
[10]Martin.Fowler著.王怀民、周斌译.企业应用架构模式[M].机械工业出版社,2010.