主页
管理咨询
返回
支持快速开发的行业软件通用框架

        摘 要:针对行业软件开发过程中普遍存在的研发水平低下和周期较长的问题,提出一个基于 Java 企业版(JavaEE)的快速开发行业软件通 用框架 RADF。RADF 实现了分层次软件构架规范,并提供一般行业应用软件期望的默认行为的类集合。具体的行业应用软件可通过扩展 RADF 的相关子类以支持专有行为。开发实践证实,基于 RADF 开发一个中等规模的行业软件可至少减少 30%的代码量。  

        系结构研究和应用软件开发三者发展结合的产物,是整个或1 概述 部分系统的可重用设计,是可被应用开发者定制的应用骨架。 行业软件(如社会保险业务系统、证券客户关系系统、智[1]框架表现为一组抽象构件及构件实例间交互的方。法它规 能交通监控平台)是指面向特定领域、支持业务信息化的管理 定了应用软件的体系结构,阐明了整个设计、协作构件之间 软件。行业软件的应用开发是我国信息化建设的重要领域。 的依赖关系、责任分配和控制流程,同时为构件复用提供了 抽取行业软件研发所必需的共性支撑技术形成支持快速开发 上下文(context)关系。在很多情况下,框架通常以构件库的 

        的通用基础框架,对于提升行业软件开发水平和提高开发效形式出现,但构件库只是框架的一个重要部分,框架的关键 率具有重大的现实意义。 还在于框架内对象间的交互模式和控制流模式。框架可作为 由于 J2EE/JavaEE(J2EE为 Java 2 企业版;JavaEE为 Java 基于 J2EE/JavaEE 技术的行业软件的基础部分,运 在行 企业版,是J 2EE 1.4 版本之后的升级版本)技术在可扩展性、 J2EE/JavaEE 平台之 上 。 通用框 架 、 行业应 用软 件与 标准化和互操作性等方面的优势,当前一般的大中型行业应 J2EE/JavaEE平台三者的关系如 图1 所示。 用系统大多基于 J2EE/JavaEE 平台开发。这些平台主要包括BEA 公司的W ebLogic、IBM 公司的W ebSphere, JBoss 等。 

        但是 J2EE/JavaEE 体系庞大,技术纷繁复杂,入门困难,学 行业应用软件 习曲线陡峭。直接基于 J2EE/JavaEE平台进行应用软件开发, 如果没有高水平的结构规划,不但影响开发效率,而且极易造成低水平的重复。 通用框架(RADF) 

        虽然不同行业软件的业务需求千差万别,但其应用程序的结构是基本一致的,都有信息输入、页面流转、业务逻辑 JavaEE/J2EE平台 (IBM WebSphere, BEA WebLogic, Jboss , „) 处理、数据库访问等控制环节。另一方面,在对业务经办和管理决策起支撑作用的应用过程中,它们也有很多共性需求。 

        例如:用户需要通过合适的身份认证,需要制作反映业务状 图 1 通用框架、应用软件与J2EE/JavaE E平台的关系 况的各类报表,需要实现多角度的动态即时数据分析。如果 本文 提出的支持快 速开发行业应 用软件的通用 框架 能以高质量构件的形式提供对这些行业软件结构和功能方面 RADF(Rapid Application Development Framework)不但实现的共性需求的支持,形成一个基于分布式企业级计算平台 (J2EE/JavaEE平台 )之上的通用框架,无疑会大大加快具体行 基金项目:浙江省重大科技专项基金资助项目“支持快速开发的行业软件的开发进度,并且提高相应的设计水平。 业软件通用框架的研制及应用”(2008C11099-1) 作者简介:俞东进框架(或称为应用框架、软件框)架是构件技术、软件体 (1969,),男,教授级高级工程师,主研方向:软 件架构,JavaEE,企业信息化和决策支持; 了基于模型-视图-控制(Model-View-Controller, M VC)的分层 (1)请求处理层Action 

        次规范软件构架,而且提供了包括界面呈现、跳转控制、对 请求处理层接收前端传入的显示层数据对象,并将其转 象持久化、异常处理、国际化、单元测试、身份认证、权化限为 业务层数据对象,进行统一日志处理、异常处理、 字符控制、日志处理、报表制作、在线数据分析等在内的行业软 集转换等。然后,通过Se rviceFactor反射调用业务服务接口 。

        件通用基础性功能组件。RADF 实现了普通行业应用软件期 最后,取回调用服务后的返回信息,而服务运行的状态信息

        (成功、失败等)则返回给框架本身,如图3 所 示。 望的默认行为的类集合,具体的应用软件则可通过扩展子类 

        (该子类属于框架的默认行)为来支持相关的专有行为,从 而 在确保软件质量的前提下缩短开发进度。 2 国内外研究现状和发展趋势 从过去 20 年的软件技术发展可以清晰地看出软件重用技术的发展脉络。从早期C 语言类库函数的重用 ,到面向对 象编程的迅速壮大,到可复用构件的发展和成熟,再到最 近 几年应用框架的重用。软件重用的粒度越来越大,软件复用 [2] 的效率也越来越高。 框架的概念起源于Smallta lk 环境,其中最著名的框架是 Smalltalk 80 的用户界面框架M VC。虽然框架研究最初起源 于用户界面领域,但它已被成功地应用到其他领域中,如 J2EE/JavaEE应用的开 发。 J2EE/ JavaEE应用的开发一般比较复 杂。 J2在EE/JavaEE 应用开发的最初阶段,经常需要花费很多时间设计开发专用 框架,如 MVC 框架、持久化框架、IOC 框架,但很难取得 图 3 请求处理层控制流程 相应的效果,甚至导致了更加复杂的编程模型和更低的性 (2)业务接口层Fa çade 能。 直到最近几年才出现了一些得到广泛认可的开放源

        业务接口层提供异常处理类和服务接口等,所有的前端 码的框 架,如 IOC 框架 Spring、OR Mapping框 架 iBatis,

        请求(请求处理层中的 Action 请求)只能通过 Façade 获得业务 它们的出 现极大地提高了应用程序开发的效率。但是,

        处理,而不能直接调用后台的业务处理模块。 它们都只提供 

        (3)业务实现层BSI mp了应用程序在某一层次的框架,而不是一个完整的企业级应

        用级别的框架。 当前,学术界对应用软件框架的理论研业务实现层中的 BSImp 对象根据业务规则调用一个或多 究相对较少,基 个业务处理对象(Business Process Object, BPO)中的方法,完 本都套用了对支撑其运行的框架平(J台2EE/JavaEE 平 台)的 成一个完整的业务逻辑。事务的控制也在 BSImp 中进行,对 [3][4][5]研究成果,例如事务模型、反射体系、框架集成、于跨多个B SImp 的长事务请求,可以根据业务分解成多个小 [6]MVC。 在软件工程界,由于应用软件框架对于提高复杂的 BPO 方法进行处理。 系统的开发 生产力有显著意义,因此在应用框架的开发方 (4)业务实现层BPO 面投入了较多 的人力和财力。 

        BPO 封装了基本(原子)的业务操作。原子的业务操作是 3 RADF 结构设计 

        指其不能再被拆解成 2 个或 2 个以上独立的业务操作。BPO 本文的RA DF 框架基于J2EE /JavaEE平台,支持浏览器层是一个相对的逻辑层,B和SI mp 层没有非常严格的层次区 和桌面应用程序2 种前端模式。框架设计的技术路线如下。

        分。对于简单的业务,可以把此层归入 BSImp 层。 3.1 分层结构设计 框架主要结BPO 处理按顺序可分成3 个部分:构如图 2 所示。 

        1) 对传入数据的合法性进行验( 证也许需要从数据库中获取数据进行比较)。 

        2)对数据进行加工(增、删、改、查等)。 3)对数据操作结果进行分析和相关后续操作。(5)数据持久层 Java 数据持久层的入口和出口都是PO JO(Plain Old Object)。POJO 只完成明确传入数据的操作,不涉及任何业 务逻辑。数据持久层的实现可以通过具体的数据访问对象 (Data Access Object, DAO方法来执行),也可以通 过Hibernate 实现。 3.2 数据交换设计 RADF 通过 Façade 接口将系统分成逻辑上的前台、后台 2 个部分。原则上,前后台接口格式是固定的Actio,n 调用 Façade 过程中传递的参数统一封装R在e questMessage类中, 

        Façade 返回的参数统一封装在Re sponseMessage类 中。 

        (1)RequestMessage表 示 Action 层调用 Façade 的入口参图 2 框架总体结构个项目中最大。数,主要内容包括 2 个部分:头信息 head,数据体信息 body。 

        其中,头信息 head 是用于保存当前操作者的资料信息,在登 4.2 快速模式 快速模式强调并行操作,减少可能重复的工作,加快开 录时由框架写入并保存在会话中;数据体信息 body 是前后台发速度,但对项目主管的掌控能力以及项目组成员的独立开 交互的核心,前后台需要传递的每项数据(即业务实体对发能力要求较高。如果项目组中大部分人对框架比较熟悉, 象) 在 Action 中已经被预先放置到一个散列映射(hashmap) 或者具有较多的开发经验,独立工作能力较强,可采用此方 中,在 BSImp 层中即可获取该散列映射以及保存其中的业式进行开发。务实体 对象。 在实践快速模式的过程中,可将项目组成员分2 组成 (2)ResponseMessage表 示 Façade 返回给请求处理层的出1 组人员对业务熟悉或设计、开发能力较强,其余人员分在 口参数。其与入口参数几乎一样,也包含头信hea息d 和数 

        第 2 组。 据体信息b ody。但是 ResponseMessage信息不需要开发人员 

        步骤 1 第 1 组根据页面和设计文档定义编写请求处理层 解析,而由框架直接转换成其他格式Resp。onseMessage的头中的 Action 类,同时定义需要的fa çade 接口,第 2 组编写实 信息 head 主要用于保存fa çade 接口的调用结果和出错信息,体类。因为设计的 Action 中需要用到实体类,所以必须保证 而由请求处理层解析返回信息中的 head 部分;数据体信息设计实体类的速度快于设Actio计 n 类的速度,一般情况下第body 则是后台返回的数据信息,和入口参数使用相似, 采用 2 组总会先完成。 散列映射的形式存放。

        步骤 2 第 1 组定义需要的BSI mp 层框架(不具体编写 4 应用开发实践 

        BSImp 类);第 2 组编写数据库访问 的5 个基本操作并用 JUnit 没有一个框架能完美地适应所有业务应用系统,RADF进行单元测试,然后编写BP O 层框架。2 组花费的时间可能 的目的仅仅是减小不同业务和系统结构对某个具体行业应用 

        相差很大,并不要求同步完成,一般都是第 2 组先完成。 软件所造成的影响。在基于RAD F 进行开发的实践中,可根步骤 3 第 1 组人员改造前端界面,调 用Action 类完成相据项目组的具体人员组成、开发经验、框架熟练度,选择

        2 种比较合适的开发模式:稳重模式和快速模式。 关界面流转;第 2 组人员编写B SImp 层,同时根据需要进一 4.1 稳重模式 稳重模式的核心是优先完成最底层、简单而步完善业务处理对象和数据访问对象。 容易出错的 在快速模式下,2 组分别从两边开始向核心的业务实现 数据操作处理。一个稳固的底层会大大减少后续测试时间。 层 BSImp 靠拢。这种分工可以使熟悉的人完成复杂度大的内 如果项目组中大部分人对框架不熟悉,或者大部分都是工 作容,不熟悉的人完成工作量大而难度低的内容。由于此分工 经验很少的新人,可采用此方式进行开发。 稳重模式中方式灵活,因此可最大限度地灵活分配每个成员的工作。当每个步骤相对比较容易控制,所完成的底层 然,任务完成的时间并不同步。工作完全可以做到相对扎实而不容易出现太大偏差,但需要5 结束语耗费较长的时间是其最大的问题。具体步骤如下: 行业应用软件发展至今已变得十分复杂,涉及的知识、内容、问题众多。如果行业应用软件的开发者能在某些方面 步骤 1 根据设计文档建立数据库,编写实体类。使用已有的成熟应用框架,就可以集中精力完成系统的业务 步骤 2 针对每个实体类,实现数据持久层中针对数据库 逻辑设计,而不必在技巧性要求较高的复杂基础组件上浪费 访问的 5 种固定方法:doCreate, doDelete, doUpdated, oFind, 时间和精力。RADF 就是这样一个框架。已完成3的 个项目 getAllRecords。 的开发实践证实,基于RA DF 开发一个中等规模的行业软件 

        步骤 3 使用 JUnit 进行数据持久层测试,保证各数据操 可至少减少 30%的代码量。 

        作准确无误。 

        步骤 4 针对每个实体类编写BP O,连接到指定的数据持 

        久层中。 参考文献 步骤 5 根据设计文档(如果是 Web 应用,主要依据静态

        J2EE 平台的扩展事务模型支持框 步骤 6 在 BSImp 层中编写f açade 的实现类,同时根据 架[J]. 计算机研究与发展, 2006, 43(7): 1273-1279. 需要进一步完善业务处理对象和数据访问对象。 [4] 胡海洋, 马晓星, 陶先平, 等. 反射中间件的研究与进展[J]. 计 步骤 7 使用 JUnit 进行 BSImp 层的测试。 算机学报, 2005, 28(9): 1407-1420. 

        步骤 8 实现请求处理层中的各个Actio n 类。 [5] 林 泊, 周明辉, 刘天成, 等. 一个 J2EE应用 服务器的 Web 容器 

        集成框架[J]. 软件学报, 2006, 17(5): 1195-1203. 步骤 9 改造前端界面,调用相应 A的ction 方法以完成业[6] 刘 宁, 陆荣国, 缪万胜. MVC 体系架构从模式到框架的持续抽 务功能。象进化[J]. 计算机工程, 2008, 34(4): 107-110. 其中,前4 个步骤是基础阶段,做好这4 个步骤可 大大 编辑 张 帆减少以后出错的几率。步骤6 和步 骤 8 是后台开发中最复杂也是最容易出错的部分。步骤 9 难度不大,但其繁琐度在整 

        


范围管理:守住您的每一寸土地
2015年东莞市安全工程师考试报名时间为5月28日-6月21日
PMP项目管理:项目成本管理练习题3
工地库房管理制度 内容
【学员心声】监理考试高分学员是什么样的
人民日报:一线城市房价失守 未来将继续下跌
浅谈五金锁具现状及发展
新建贵阳至广州铁路站前工程某隧道(实施)施工组织设计
信息发布:名易软件http://www.myidp.net