Web|敏捷构建-面向企业应用的开发平台

最近写了篇文章,贴出来供大家分享

题目敏捷构建-面向企业应用的开发平台

摘要:随着企业软件应用的逐步深化,客户对软件开发的工期、质量等要求越来越高,软件开发成本持续升高,所以软件企业的应用开发必须从高效率、高质量的角度出发,采用敏捷构建的方法,实现快速开发、交付、实施,而这一切必须依托一套完成的软件开发平台解决方案,只有这样才能适应当前软件行业的需要,在激烈的竞争中,特别是参与国际化的竞争中,保持领先地位。
当前业界,无论是高级管理者还是普通开发人员,都已经达成共识,对于IT技术公司,平台是基础设施,不管面向的业务领域是什么,都必须基于一个平台去构建,无论是个性化IT服务,软件产品,还是电子商务,门户网站,抑或是SOA,SAAS,云服务,云计算,凡是成规模的企业,都是基于平台运作。凡是还在从头开始编码的公司,要么被淘汰了,要么即将被淘汰。是否具备基础平台或构建平台的能力已经成为软件企业核心竞争力之一。
企业应用软件提供商可以通过多年积累对主要的行业解决方案和主打的项目类别进行一些产品、系统的固化,形成积累,从而在后续同类方案、同类项目中实现以往研发成果的复用、减少人员投入,这样就可以解放出更多的人力来拓展其他项目,获取更多收入,提高企业的生产效率。瑞友科技的GAP平台就是这样的研发积累形成的平台产品。GAP平台全称是UFIDA Software Engineering Global Application Platform,是北京瑞友科技股份公司集多年应用开发实施经验所提炼的快速应用开发平台。
本文主要阐述了GAP平台的整体架构,以及在平台的开发过程中采用的一些创新性的技术,包括面向业务服务的开发(SOA),领域驱动设计(Domain-Driven Design),基于资源文件的组件技术,工作流技术等,基于此可以实现企业应用软件开发的敏捷构建,并形成一个完成的企业应用软件生态圈,技术、业务、解决方案、外围应用集成相辅相成,将极大的提高IT服务企业的核心竞争力,也是企业应用开发领域中的模式创新。

关键词:企业应用,开发平台,领域驱动,业务服务,组件技术

1综述 1.1背景 随着企业软件应用的逐步深化,客户对软件开发的工期、质量等要求越来越高,软件开发成本持续升高,所以软件企业的应用开发必须从高效率、高质量的角度出发,采用敏捷构建的方法,实现快速开发、交付、实施,而这一切必须依托一套完成的软件开发平台解决方案,只有这样才能适应当前软件行业的需要,在激烈的竞争中,特别是参与国际化的竞争中,保持领先地位。
从应用开发和应用外包的具体内容综合来看,两者有很大一部分其实描述的是相同的服务内容,只是具体实施者或服务提供者有所不同,由于服务提供方和提供形式的差异形成不同的商业形态,但从服务内容根本上完全可以看作是同类内容。对于这部分相同的内容,就是围绕企业级应用系统生命周期而产生的各种IT服务。这部分内容可以统称为“应用服务”。
所谓应用服务,就是专业服务商为企业客户的管理类应用系统提供他们需要所有服务的统称。应用服务是IT服务的一个重要细分市场。它的主要特点有三个:(1)必须基于统一的平台;(2)提供覆盖应用系统的全生命周期服务;(3)服务形式多样。所以,一般情况下,应用服务也可以笼统地称为“基于平台的IT服务”。
由此可见,对于应用软件开发商,平台是基础设施,不管面向的业务领域是什么,都必须基于一个平台去构建,无论是个性化IT服务,软件产品,还是电子商务,门户网站,抑或是SOA,SAAS,云服务,云计算,凡是成规模的企业,都是基于平台运作。如何去构建平台,有多种方式,一般情况下,企业应用软件提供商可以通过多年积累对主要的行业解决方案和主打的项目类别进行一些产品、系统的固化,形成积累,从而在后续同类方案、同类项目中实现以往研发成果的复用、减少人员投入,这样就可以解放出更多的人力来拓展其他项目,获取更多收入,提高企业的生产效率。
瑞友科技的GAP平台就是这样的研发积累形成的平台产品,是北京瑞友科技股份公司集多年应用开发实施经验所提炼的快速应用开发平台。
Global Application Platform(以下简称GAP)平台不仅是一套快速开发应用软件的辅助工具,而且提供了很高复用度的大规模软件定制开发模式。作为开放性的开发平台,GAP致力于解决当前软件开发过程中的三个关键问题:软件过程问题,软件复用问题,快速开发问题。并通过对这些问题的解决为客户提供更好的软件质量、降低客户的总体成本。GAP平台致力于解决大规模的 JavaEE 项目中遇到的共性问题,提供完整的 JavaEE 架构库,解决JavaEE项目中遇到的80%以上共性的技术问题。提供集成快速开发工具,支持快速业务应用定制开发,从而提高开发效率,增加软件的复用度,提升企业的项目交付能力,提高整个软件企业的敏捷性。
GAP平台基于SOA思想构建,强调面向业务服务的架构体系,基础框架采取了轻量级的构建方法,同时在开发中使用领域驱动开发方法和组件式设计来提高组件的复用率和灵活性。核心架构控制在灵活轻量的规模内,以CBD(Component-Based Development)的方式集成平台中的众多模块,强调组件内部高内聚,组件间保持松耦合,各组件既能独立运行,也可以插件的方式集成到整个平台体系中来,实现企业应用开发的敏捷构建。
1.2应用平台特点 一般来说,面向企业应用的快速开发平台,应该具备如下特点:
一、稳定性
n成熟清晰的分层架构
n具备多年项目积累
二、安全性
n提供安全可靠的数据传输和存储
n多维度、细粒度的权限控制
三、规范性
n基于业界成熟规范
n完善的开发规范和指南
n学习曲线低
四、扩展性
n平台基于SOA思想进行构建
n开放的API,面向接口编程
n基于组件的设计,分层的开发思想
n灵活适应业务需求变更
五、全面的系统监控
n提供对日志、流程、数据和性能的分析监控功能
六、提升开发效率
n提供大量可复用组件和业务引擎
n提供集成开发环境
n敏捷构建,快速实施

2系统架构 2.1技术体系 GAP平台的技术框架主要基于JavaEE技术体系构建,遵循业界国际标准,采用先进技术,分层领域驱动,采用Spring技术、OSGi技术和O/R Mapping技术,整合Web框架Struts和JSF,形成核心技术框架GAP-Mainframe,屏蔽异构底层环境,为上层建筑提供各类基础服务。目前GAP平台的应用系统、通用组件库、业务组件库和业务套件等,都是基于该技术体系进行构建。
2.2分层架构 层级理论是构建复杂系统的一个基本原则。对于软件这样复杂的人造事务,发现层级和运用层级,是分析和解决问题的基本原则。软件层级的划分不但为解决复杂软件开发探索一条可行的方法,同时也为应用软件产业链的完善起到推动作用,使得企业之间的协作关系更加清晰。
层(layer)这个概念在计算机领域是一个应用相当广泛的概念。计算机本身就体现了一种层的概念:系统调用层、设备驱动层、操作系统层、CPU指令集。每个层都负责自己的职责。网络同样也广泛存在层的概念,最著名的是OSI的七层协议。
使用层级理论最难的问题还是各个层都有些什么,以及要承担何种责任。以往的软件开发过程中大都自觉或者不自觉的利用层级理论来帮助提高开发效率。如抽象公共控件,开发基础类,编写开发辅助工具等行为都是层级理论的具体应用。但是目前开发过程中普遍存在的问题是缺乏对整个应用软件进行系统、完整的层次划分,从而导致软件中各部分之间的服务关系不明了,对支撑平台的开发缺乏明确的进度规划和目标。
GAP平台在设计初期就对企业应用软件的层级进行了细致的划分,并在长达6年的开发、构建、完善过程中一直遵循这一分层架构。GAP平台的分层架构图如下:


(图一)分层架构图
n技术环境
主要指异构的项目实施环境,由于瑞友科技提供的是个性化的IT服务而非标准化的产品,我们在项目开发、测试、实施的过程中必须面对各种各样软硬件环境,包括各种服务器、操作系统、应用中间件、数据库等。基于GAP平台构建的项目能够保证项目可以运行在各种异构的技术环境中,目前GAP平台支持的操作系统有Windows Server、Aix、 Solaris、HP-Unix、Linux等,应用中间件有WebLogic、WebSphere、Sun APP Server、JBoss、 Tomcat等,数据库有Oracle、SQLServer、DB2等。
n服务框架
是GAP平台的核心和基础,它为构建上层应用系统提供各种基础服务和扩展机制,包括日志服务、缓存服务、异常处理、事务处理、集群支持策略、分布式调用、配置服务、数据持久化、数据源服务、监控服务等,除此之外,服务框架层还集成了多个web框架,包括struts和jsf,基于领域驱动思想提供了对JavaEE四层架构的支持:
展现层:提供完善的界面展示框架和丰富的界面控件,解释来自UI层的命令
控制层:用来协调应用活动,转发请求,处理调用方式等,它不包含业务逻辑,它不持有业务对象的状态
领域层:本层包含关于领域的信息。这是业务软件的核心所在。在这里保留业务对象的状态,对业务对象和它们状态的持久化被委托给了持久化层。
持久化层:本层作为其他层的支撑库存在,它提供了数据对象之间的通信,实现对业务对象的持久化,屏蔽数据存储层的环境影响。
n引擎、组件和工具
服务框架层之上是基本的业务支撑引擎、通用组件和快速开发工具,支撑引擎包括工作流引擎、规则引擎、全文检索引擎、报表引擎,通用组件包括组织权限、工作流平台、消息平台、接口服务平台、业务日志、任务调度、站内短信、预警平台、内容管理等,快速开发工具包括GAP-IDE、项目管理器、代码生成器、数据字典等,这一层的组件把技术环境和具体业务逻辑进行了很好的隔离,在商业环境的运行规则发生改变的情况下,依然能保证整个系统的稳定性。
n业务组件

业务组件与通用组件不同,业务组件层主要包含为解决企业特定业务职能而抽象的业务模型及其实现。每个业务组件代表企业某个相对独立业务或者业务链条,每个业务组件都具备相关的领域知识,基于每个领域的成熟解决方案构建而成,这样的业务组件不同于某个应用系统中简单划分的业务模块,它是高度抽象化,高度可扩展的。目前我们规划的领域主要包括金融领域业务组件、保险领域业务组件、物流领域业务组件。
n业务套件
业务组件层之上是业务套件,业务套件的概念是由GAP平台项目创新性提出,它既不是传统意义上的标准化成品,也不是细粒度的业务组件和技术组件,而是粗粒度的业务组件集合,每个领域的业务套件基于GAP平台底层框架构建,选取通用组件,引擎和该领域的业务组件进行扩展开发,形成一系列该领域的业务套件。业务套件可以理解为传统意义上的准产品,
n领域应用
领域应用层就是针对特定用户特定项目进行的个性化项目开发,解决特定领域的应用问题,领域应用层通常会依赖一个或多个业务套件,同时根据客户的个性化需求还会使用到相关的业务组件、通用组件和支撑引擎。这是整个软件结构中的最上层,它调用下面各个层次的服务,形成最终呈现给客户优质的软件产品。

五个层级自定向下依赖,形成一个完整的企业应用开发解决方案。
2.3功能架构 目前GAP平台的功能架构如下:

(图二)功能架构
整个GAP平台由以下几部分组成:
n基础框架,提供各种基础服务,包括主框架,通用列表控件和性能监控等
n统一的集成开发环境GAP IDE,在提供标准IDE开发调试功能的基础上,又开发和集成了大量快速的开发和部署插件,以满足业务开发人员的使用
n应用系统,包括工作流平台,组织权限系统,接口服务平台,消息平台和数据字典
n组件库,包括业务日志,规则引擎,WEB控件,全文检索引擎,任务调度,报表工具,站内短信,论坛等

在整个平台的开发过程中,我们使用了大量纷繁复杂的技术,进行了持续的自主研发,不断创新与完善,同时基于不重新发明轮子的原则,选用了部分优秀的开源项目进行集成和二次开发。整个平台的技术体系,敏捷的开发过程和技术创新,都保证了平台的先进性和创新性,同时保证了瑞友科技的技术先进性和业务敏捷性。
3技术创新 在长达六年的平台建设过程中,我们进行了大量的技术创新,来保证平台的敏捷性和先进性,一下简要介绍几个主要的技术创新点。
3.1面向业务服务的开发 3.1.1什么是业务服务
SOA是一套成熟的方法论和架构体系,随着相关技术体系和标准的成熟,OSOA组织在2007年3月发布了SCA 1.0(服务组件架构) 和SDO 2.1(服务数据对象),同时市场上的ESB(企业服务总线)产品逐渐成熟,这标志着无论是在方法论还是技术实现方面,SOA已经成为企业新一代首选的、先进的、成熟的、标准的应用架构。
SOA是一个完整的软件软件架构体系,包括运行环境、编程模型、技术标准、策略及其方法论,其核心思想是服务,并涵盖服务的整个生命周期:建模、开发、装配、运行、管理。基于对SOA体系的理解,我们认为SOA的核心理念是业务驱动,其目标是为了满足随需应变的业务需求,所以我们在GAP平台的体系架构中创新性提出了业务服务(Business Service)的概念。
每个业务服务表示一个完整的业务单元,多个业务服务组成一个完整的业务模块,多个业务模块组成一个子系统,多个子系统组成一个完成的项目或产品。例如针对订单的管理,其业务逻辑是由业务服务OrderService及其相关的领域对象实现,OrderService构建完成之后,由于其基本覆盖了订单相关的所有业务逻辑,是一个相对独立的业务单元,所以它可以被多个业务模块复用,甚至可以被系统外部的环境访问,整个系统都是有这样的Business Service,其复用率和扩展性将大大增强。
从语义上来看,我们提出的业务服务并不特指某一种技术或标准,比如Web Service。在不同的软件环境中,业务服务的具体表现形式可以进行动态转换。例如在容器内部,每个BS将以Service Bean的形式为上层环境提供服务,属于直接调用,而在容器外部(异构环境或同构环境不同应用系统),BS又会根据具体的业务需求表现为Web Service,RMI,HttpInvoke等,与其他系统进行远程交互。

3.1.2面向业务服务的开发

基于Business Service的技术架构图如下

(图三)基于Business Service的技术架构图一

从上图可以看出,GAP平台技术体系的核心是Business Service,我们完全面向业务服务编程,所有的业务服务以IOC的方式注入到系统中,系统的业务逻辑,事务,领域模型,数据仓库都由业务服务单元处理,各个业务单元通过组合,可以形成一个业务组件(Component)为上层体系提供服务。
由于整个系统是基于业务服务构建的,我们可以很容易基于业务服务提供多种类型的访问方式,包括最普通的本地调用,为异构系统提供基于SOAP和WSDL的Web Service访问,为富客户端提供RMI远程调用,同时还提供一些轻量级的远程访问方式,例如HttpInvoker和hessian、burlap等分布式远程访问等,可以支撑各种异构系统的集成和数据交换。
业务服务管理模块可以为内外部系统提供服务注册功能,把基础框架,各应用系统和组件库中的组件提供的各种业务功能注册为一个服务,具体的技术实现包括Web Service,RMI,MQ等,同时提供服务的订阅、发布和监控机制,还可以引入其他系统的标准Web Service。通过对业务服务的管理,可以使GAP平台在构建业务应用时变得更灵活且能够更快的响应不断变化的业务需求和业务整合,针对异构系统的整合和交互,变得透明而简单。
【Web|敏捷构建-面向企业应用的开发平台】同时业务服务还可以注册到工作流系统中,通过业务表单的形式为企业流程管理提供服务。

GAP平台的技术体系和基于业务服务的设计思想,可以在下图中完整的体现出来:

(图四)基于Business Service的技术架构图二

3.2领域驱动设计 3.2.1领域驱动设计简介
2004年著名建模专家Eric Evans发表了他最具影响力的著名书籍:《Domain-Driven Design –Tackling Complexity in the Heart of Software》(中文译名:领域驱动设计—软件核心复杂性应对之道),书中提出了“领域驱动设计(简称DDD)”的概念。
领域驱动设计事实上针对是OOAD的一个扩展和延伸,DDD基于面向对象分析与设计技术,对技术框架进行了分层规划,同时对每个类进行了策略和类型的划分。领域模型是领域驱动的核心思想,采用DDD的设计思想,业务逻辑不再集中在几个大型的类上,而是由大量相对小心的领域对象(类)组成,这些类具备自己的状态和行为,每个类是相对完整的独立体,领域模型就是由这样许多的细粒度的类组成。基于领域驱动的设计,保证了系统的可维护性、扩展性和敏捷性,在处理复杂业务逻辑方面有着先天的优势。
领域驱动设计分层结构如下:

(图五)DDD分层架构
(表一)DDD各层含义

用户界面/展现层
负责向用户展现信息以及解释用户命令。
应用层
很薄的一层,用来协调应用的活动。它不包含业务逻辑。它不保留业务对象的状态,但它保有应用任务的进度状态。
领域层
本层包含关于领域的信息。这是业务软件的核心所在。在这里保留业务对象的状态,对业务对象和它们状态的持久化被委托给了基础设施层。
基础设施层
本层作为其他层的支撑库存在。它提供了层间的通信,实现对业务对象的持久化,包含对用户界面层的支撑库等作用。

领域模型的基本要素包括:实体、值对象、工厂、仓库、服务,如下图所示

(图六)DDD要素和模式关系

3.2.2基于DDD的创新
我们基于DDD的创新点主要有两个:
第一,我们在GAP平台的开发过程中,结合我们的产品特点,针对领域驱动的四层模型进行了细分,形成了GAP平台自己独有的分层架构模型。
如下图所示:

(图七)GAP平台分层架构模型
View:展示层,由于GAP平台主要面向B/S架构,展示层主要由web资源文件组成,包括JSP,JS和大量的界面控件,采用了AJAX技术,负责向用户展现丰富的界面信息,并执行用户的命令
Control:控制层,负责展示层请求的转发、调度和验证,同时处理后台返回的异常信息,同时控制层可以通过Action做远程的请求
Domain:领域层,是系统最为丰富的一层,主要负责处理整个系统的业务逻辑。这一层主要包括上一章提到业务服务和领域模型,同时负责系统的事务管理
Persistence:持久化层,主要负责数据持久化,支持O/R Mapping和JDBC,对数据源的访问提供多种访问方式。
另外,我们引入了Spring的IOC容器,系统的控制层、领域层和持久化层元素都有IOC容器统一管理,实现完全的接口分离和解耦。


第二,在保证DDD核心思想的基础上,我们对DDD的基本要素进行了扩展,以满足GAP平台的实际需求,如下图所示:

(图八)GAP平台领域模型
GAP平台领域驱动设计要素主要分为以下几种:
业务服务:遵循GAP平台的设计思想,核心仍然是业务服务(Business Service),一个业务服务可以由一个或多个领域模型(DomainModel),值对象(VO),实体(Entity)和数据访问对象(DAO)组成,去完成一个完成的业务逻辑单元。业务服务主要负责事务处理和维护各个领域对象之间的关系,同时为上层访问提供服务。
领域模型:真正处理业务逻辑的类,例如订单(OrderModel),具备自己的属性和行为、状态,可以聚合VO和Entity,持久化数据可以委托给Entity,如果没有聚合Entity,也可以直接被持久化。
实体类:只具备需要持久化的属性,被领域对象聚合,被DAO调用实现数据的持久化。如果业务逻辑相对简单,可以合并到领域模型中。
值对象:不具备唯一标识,不进行持久化的对象,一般用来进行参数传递。
数据访问对象:不处理业务逻辑,主要负责领域模型或实体类的持久化。提供多种持久化方式。

那么如何在GAP平台中实现一个领域模型设计呢?可以按照如下步骤进行:
1.确定业务服务(Business Service),根据业务需求和功能模块划分,确定业务单元,每个Business Service是一个业务单元,覆盖相关的领域对象。
2.定义领域对象(Domain Model,VO,Entity),根据业务单元的业务逻辑定义领域对象,通过UML方法和设计模式描述领域对象。
3.定义领域对象的属性和关联关系,确定领域对象的各种属性和各个领域对象之间的关联关系
4.为领域对象增加行为,根据业务需求(系统用例和界面原型等)为领域对象增加行为,并定义哪些方法要被业务服务所用

经过多年的平台建设和项目应用,我们创造了一套适合企业敏捷构建的领域设计方法,并进行了重要实践。目前大量项目已经采用了这种方法进行企业应用系统构建,并取得了成果。事实证明我们在领域驱动设计方面取得了重大创新和突破。
3.3组件装配技术 3.3.1组件技术
目前业界言必提服务,组件技术说的越来越少了,但对于企业应用开发领域,组件技术恰恰是非常必要的,是提升复用率和敏捷构建的基础,也是很多应用开发平台没有解决好的关键问题。
组件技术提出的很早,但是业界对于组件的定义并没有完全达成一致,通常而言这个术语表示一个软件模块,这个模块可以独立地作为应用程序的一部分发布,或者被组装到更大的组件中去。这样看来,小到一个动态链接库,一个COM组件,一个Web Service,大到工作流,组织权限管理,规则引擎等,都可以叫组件。
构建一个组件并不困难,关键是如何把一些规模较大的组件进行装配与合并,形成一个更大的系统,这是业界的难题。造成这个难题的原因是基于浏览器的应用!软件发展到现在,大部分应用都是基于internet或intranet的,软件载体是浏览器。这就造成了现代的企业应用软件具备大量的资源文件,资源文件已经成为软件产品的主体之一,而不仅仅是原来的可编译二进制文件,例如jar,dll,exe等,这些资源文件包括:jsp文件,脚本文件,properties属性文件和各种xml配置文件,如何处理和组装这些资源文件是企业应用开发平台不可避免的问题,这也是当前的流行技术SCA和OSGi没有解决的,SCA和OSGi各自提出了优秀的技术架构和模型去解决组件的装配、解耦以及异构系统集成的问题,但是没有涉及到资源文件的处理。
很多企业有自己的开发平台,也开发了很多组件,但是当项目组需要从组件库选取组件进行开发时,发现必须依赖组件的构建文档,进行手工复制组件,组件集成,修改各种复杂的资源文件,合并,最终形成一个项目,再导入IDE环境进行开发,测试。这样大大降低了企业应用开发的敏捷性和生产率,而且依赖手工构建,必然导致这样那样的错误,使组件的复用率大打折扣。

3.3.2GAP平台的组件装配机制
GAP平台在开发的过程中,同样遇到组件装配的问题,目前GAP平台共18个大型组件,组件之间的交互可以通过接口进行分离,但是资源文件的依赖关系是组件装配无法回避的问题。由于Web开发的规范限制,每个组件都会使用到一些公共文件,包括web.xml,公用的jsp文件,公用的配置文件等,而每个组件由于采用的技术需要,在这些公用文件中会增加自己的配置信息,这就为组件装配增加了难度。
为了保证组件开发的独立性,我们采用了各个组件独立开发,然后再统一装配的原则。基于以上原则,我们采用了如下创新技术完美实现了组件的构建和装配。
主要实现技术:ANT技术,Xdoclet技术,Eclipse的Plug-in技术和WTP的facets机制
实现步骤:
1.各个组件独立构建,编写自己的ant脚本,提出各组件自己需要的资源文件和二进制文件
2.各个组件提取自己在公用文件中使用的配置信息,形成独立的数据文件,该数据文件只包含自己需要的配置信息。
3.把公共资源文件做成模板,并在其中设置其他组件需要的Merge Point,例如



该Merge Poing在自动构建时由Xdoclet进行解析处理,把该段内容替换成workflow-global-js.data文件中的内容,完成合并工作。
4.使用ant技术编写TotalBuile脚本,负责调用各个组件自己的ant脚本,构建完成的GAP插件内容
5.使用Eclipse的Plug-in及其WTP的facets技术实现GAP平台项目管理器插件,其主要完成的工作如下:
a)提供GAP项目创建向导
b)增加选择GAP组件的wizard page,显示当前版本提供的所有组件,用户可以自定义自己需要的平台组件
c)提供配置功能,通过配置文件设置各个组件ID,名称,关联和分组关系,依赖关系,URL和页面展示方式等
d)设置基本环境变量,复制资源文件,设置项目所需classpath,根据merge point进行文件的merge
e)删除构建文件,项目创建完成

(图九)GAP平台组件装配
如上图所示,通过GAP项目管理器,可以实现对各个组件的完美装配,项目开发人员可以根据客户的业务需求,灵活选择需要的组件,组件装配完成之后即形成一个完成的Project框架,导入GAP平台的开发工具VenusTools2009,即可进行设计、开发、调试、运行,保证了企业应用系统构建的灵活性和扩展性。
4结论 面向企业应用的开发平台是IT服务的基础,也是未来的发展趋势,瑞友科技在长达6年的时间内始终坚持科技创新,自主研发的路线,到目前为止形成了以软件平台技术为基础的核心竞争力。基于该平台,可有效促进外包服务企业承接个性化IT服务项目,降低软件外包服务企业的入门门槛的技术难度。同时这一研究成果也为进一步实施中国软件国际化战略,提升中国软件在世界范围内的影响,扩大和巩固国产软件和中国品牌在国际市场的竞争优势,培育国际化的软件企业发挥应有的作用和示范效果。

GAP平台主要解决的问题是:
1、企业应用软件的层次模型
2、基于组件的开发与设计,各组件既能独立运行,也可组合装配形成完整应用
3、具有网络拓扑结构的跨企业组织模型,细粒度的权限控制
4、具有技术环境兼容性的B/S柔性软件框架
5、国际化软件开发环境
6、基于运行时动态组构的计算机辅助应用软件开发工具
7、以消息总线、数据总线和控制总线为基础的业务流平台

本文同时还阐述了GAP平台的三个主要的技术创新点,如下:
1.面向业务服务的开发
2.基于领域驱动的设计
3.组件装配技术
目前GAP平台的最新版本是3.5,基于GAP平台的对外合作已经全面展开。在现有的平台基础上,我们已经开始构建GAP5.0的开发内容,以期有更多的技术创新和研发成果,为中国企业应用领域做出更大的贡献。


References:
[1]Richardson, Chris. POJOs IN ACTION. 出版社: Oreilly & Associates Inc, 2008. [书籍]
[2](美)Eric Evans; 孙向晖(注释), 领域驱动设计--软件核心复杂性应对之道(注释版). 出版社:人民邮电出版社 2007. [书籍]
[3]王紫瑶; 南俊杰; 段紫辉; 钱海春; 陈荻玲; 李冬, SOA核心技术及应用. 出版社: 电子工业出版社
[4]http://www.eclipse.org/articles/Article-BuildingProjectFacets/tutorial.html, Extending WTP Using Project Facets

    推荐阅读