做者:谢晓芹 柳西玲 来源:计算机世界报
[url]http://www.csai.cn[/url] 2005年1月1日
|
框架必须是健壮的、可扩展的、灵活的,且支持动态内容,它要求基于开放或共享标准。框架的设计要力求作到:完备性、灵活性、可扩展性、可理解性,同时抽象能用于不一样的场合;用户能轻松地添加和修改功能,定制框架;用户和框架的交互清晰,文档齐全。框架设计的一个核心问题就是发现可重用的设计和“热点”,以保证框架具有充分的灵活性,使用户能在已有构件的基础上生成应用程序,实现“零代码编写”的理想目标。 1、如何设计应用框架? 目前在框架设计方面成熟的技术较少,大致可分为两类:实践法与系统法。 1. 实践法 许多专家甚至认为框架不多是系统设计的结果,而只是在从底向上设计中的一个结果。实践法也能够说是实例(Example)驱动的设计方法,它是从若干个具体的典型应用中,抽象出类似点来构建框架,框架反过来又应用于不一样的问题,并在解决不一样问题的过程当中获得更新,在框架的设计和实现的两步中,不断反复。等到框架逐渐成熟时,须要修改和反复的内容就会愈来愈少。 具体步骤为: 分析问题领域,肯定所需框架。从一类应用而不是单个的程序去分析、比较各类不一样的软件解决方案,寻求这些方案的共性和每一个程序的惟一性特征。这些共性,尤为是那些常常被多个程序使用的部分将成为框架的基础。而后定义框架体系结构并设计,包括设计用户与框架间的交互、给用户提供的最终工具等。 框架的实现。包括框架核心类的实现、框架的测试、框架的试运行、框架的反复更新。 框架的部署。包括文档的提供、分发过程,为用户提供技术支持,维护和更新框架。 这种方法也就是先在具体类基础上进行泛化,提取出抽象类。抽象化也是框架开发的一个关键。不过,根据这种方法设计出的框架的可适用性很大程度上依赖于其基于的具体应用。 因为框架的开发具备反复性,且须要深刻了解应用领域,所以框架的开发很难按进度表进行。框架的设计者也须要和应用开发者紧密合做,由于框架只有在使用它开发应用的过程当中才能发现其哪些部分有待改进。 2. 系统法 因为有人认为框架的设计也能够经过系统的方法获得,所以人们提出了逐步泛化的框架设计方法。此时框架的设计分两步: 第一步是问题的泛化。它要求解决以下问题:问题领域中的哪些概念能够表现为变量,而且须要统一处理?是否能够发现一些具体的概念,它们能被泛化为一个更抽象的概念? 第二步是框架的设计。在这一步中,泛化是从反向考虑,以实现每一级的框架。换言之,最早实现最通用的框架,而后实现次通用的框架,以此类推。如图1所示, 其中,框架0就是最终要实现的框架。 这一步须要解决以下问题:系统的哪一部分可能须要改变?用户须要在什么地方向框架中加入本身的代码? 采用两步的设计方法能够避免在早期的开发过程当中局限于应用专用的类和体系结构,而且有利于使用通用的设计模式。 框架的设计是一个反复的过程,在这个过程当中须要领域和设计两方面的专家意见,框架用户和框架开发者之间的交流对框架的设计也很重要,由于框架是在不断反复的过程当中逐步成熟的。 3. 框架设计与应用设计 框架的设计和应用的设计到底有何不一样?通常而言,二者的侧重点不一样。设计应用系统时,要求对专用领域的重要概念有深刻的了解。这些概念经过建模演变成类,并做为实现整个应用的构建块。而设计框架时,重点在识别出必须具有灵活性的地方,也就是“热点”,这也是框架的关键所在。 构件库系统基于框架而不是具体的类,使得构件库系统的使用更具灵活性。但在框架基础上构建具体的应用时, 类的使用和开发老是随之而来,在框架上生成应用能够经过建立子类、配置各构件对象、调整实例等来得到。 4. 框架文档 文档必须包括以下内容:框架的目的,如何使用框架,框架的设计细节等。 2、框架采用哪些支持工具? 通常而言,没有支持工具的框架很难被使用。任何一个框架的提出老是配有一系列工具软件,这样基于框架的应用开发才切实可行。这些工具容许用户与应用框架交互、配置和构筑新的应用。下列工具一般被使用: 浏览工具 用户能够利用它浏览框架的类层次结构等信息。 编辑工具 用户用来调整和修改框架元素的属性等,如修改类或构件等。 帮助系统 为用户使用本框架系统提供向导功能,如能够采用HTML格式。 测试系统 用来测试生成的应用系统,一般支持仿真操做。 文档工具 帮助建立应用系统的文档,如Javadoc工具。理解并学会使用框架是一件费时的工做,这也是框架设计方法的惟一不足之处,所以要求框架的文档必须齐备。 配置管理工具 使用框架而不是具体的对象虽然提供了复用性,但它同时也带来了开发上的复杂性。框架内包含各类构件或构件库,一个框架可能须要和其余框架通讯。一个框架也可能由其余子框架系统组成,这样一种组成结构必然提出配置管理的问题。例如,如何在多个框架内共享构件?如何由构件或子框架组装新框架?框架内的构件如何通讯与协做?不一样的框架间如何交互? 使用这些高级工具的最终目的就是减小编码和记忆的工做量,简化用户的操做。理想状况下,用户能够不用编一句代码而实现新系统的构建。例如,在一可视化界面上,经过选取一些图标就能生成可执行程序。目前已有一些相似的工具,如University of Geneva开发的Vista系统。 3、都有哪些著名的框架系统? 目前有许多框架系统,例如用户界面方面的框架有MVC、ET++等,其中ET++采用C++语言实现,运行于Unix等系统中;针对其余领域的则有FOIBLE、MacApp、FACE (Framework Adaptive Composition Environment)等。 早期一些框架系统多采用传统的面向过程语言实现,如今面向对象语言为软件和设计的重用提供了更强有力的支持。因为框架开发的学习曲线较复杂,所以框架开发的语言最好能对框架的文档创建提供有效的方法;框架的使用要求开发语言具有高可移植性;框架的设计其实也是一些高层的决策,很天然采用高级语言来实现。Java语言因为具备平台独立性以及轻量级的连接过程、自动垃圾回收、简单语言结构、标准软件包、面向对象等特性,所以能够说Java是进行框架构筑的合适语言。如今市场上已出现了许多采用Java语言编写的框架系统。 LEC India Software Centre Pvt. Ltd.公司研制了一个面向EJB 构件的应用框架系统。它主要面向基于EJB的应用程序,是一个服务器端的框架,能在EJB构件的开发中解决稳定性以及其余一些企业级的特性等问题。 如今又出现了许多采用J2EE编程环境的应用框架,如Pacific技术服务公司开发的一套多层框架,能用来开发Web应用服务器;Jcorporate公司开发的Expresso Framework是一使用java来建造分布式、重用、基于构件的安全的Web应用程序的应用框架。 4、 如何设计知识工程应用框架? 在知识爆炸的时代,如何从数据中提取信息,从信息中提取知识已成为一个重要的应用领域。愈来愈多的知识处理应用系统急待开发,若能有一个成熟可靠的知识处理框架系统,将大大加快此类应用系统的开发。针对这种状况,清华大学知识工程研究室结合本身的经验,目前提出了在知识工程应用领域的框架,主要针对网络计算模式下的知识获取、传输、管理和应用,基于Web的数据挖掘与知识发现等内容,全部的代码均采用Java实现。 将应用框架结构化为框架的框架,划分为以下三个子框架: (1) 领域专用构件框架:提供领域专用的构件模型集合,并为分层的构件模型提供统一接口。 (2) 可视化组装框架:提供整个框架系统的图形化界面,并为可视化组装和操做构件提供工具。 (3) 链接框架:为构件间的交互、通讯提供机制。 框架内各构件的分布如图2所示。 创建的基于框架的构件系统具备以下性能: 实现面向产品化、实用性的构件库系统,并具开放性、可扩展性; 支持异构环境中的框架、构件的互联和通讯; 实现新旧系统的兼容性; 提供一致的接口分配; 遵循重要构件标准(如CORBA); 构件具备透明本地化、平台无关性特色; 系统的配置、数据交换基于XML和Java的标准化格式; 支持个性化信息服务定制和可重构。 良好的用户学习曲线。 框架的设计自己也是一个循环迭代的过程,它在不断应用于实践的过程当中,获得更新和提升。咱们也在不断的完善这套系统。目前一些公用构件如电子表单自动生成系统、数据提取和文件转换系统等做为大粒度构件已获得普遍使用。 框架能使应用程序的开发简单,价格低廉,可是开发框架不是一件容易的事。它是一个须要领域和设计经验的反复过程。为了保证框架的灵活性,必须提取和发现热点。设计模式能够简化这个过程,由于它提供了对过去经验的抽象。应用框架能高度抽象同一领域内的问题,进而下降开发难度和强度。虽然框架和构件技术已经出现许多年了,开始走入实用,但还不成熟,有大量问题有待研究。 |