软件构件化是21世纪软件工业发展的大势趋。工业化的软件复用已经从通用类库进化到了面向领域的应用框架。Gartner Group认为:“到2003年,至少70%的新应用将主要建立在如软件构件和应用框架这类‘构造块’之上;应用开发的未来就在于提供一开放体系结构,以方便构件的选择、组装和集成”。框架的重用已成为软件生产中最有效的重用方式之一。然而——
一、构件与框架有何关系?
1. 什么是框架?
框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种定义认为,框架是可被应用开发者定制的应用骨架。前者是从应用方面而后者是从目的方面给出的定义。
可以说,一个框架是一个可复用的设计构件,它规定了应用的体系结构,阐明了整个设计、协作构件之间的依赖关系、责任分配和控制流程,表现为一组抽象类以及其实例之间协作的方法,它为构件复用提供了上下文(Context)关系。因此构件库的大规模重用也需要框架。
构件领域框架方法在很大程度上借鉴了硬件技术发展的成就,它是构件技术、软件体系结构研究和应用软件开发三者发展结合的产物。在很多情况下,框架通常以构件库的形式出现,但构件库只是框架的一个重要部分。框架的关键还在于框苣诙韵蠹涞慕换ツJ胶涂刂屏髂J健?
框架比构件可定制性强。在某种程度上,将构件和框架看成两个不同但彼此协作的技术或许更好。框架为构件提供重用的环境,为构件处理错误、交换数据及激活操作提供了标准的方法。
应用框架的概念也很简单。它并不是包含构件应用程序的小片程序,而是实现了某应用领域通用完备功能(除去特殊应用的部分)的底层服务。使用这种框架的编程人员可以在一个通用功能已经实现的基础上开始具体的系统开发。框架提供了所有应用期望的默认行为的类集合。具体的应用通过重写子类(该子类属于框架的默认行为)或组装对象来支持应用专用的行为。
应用框架强调的是软件的设计重用性和系统的可扩充性,以缩短大型应用软件系统的开发周期,提高开发质量。与传统的基于类库的面向对象重用技术比较,应用框架更注重于面向专业领域的软件重用。应用框架具有领域相关性,构件根据框架进行复合而生成可运行的系统。框架的粒度越大,其中包含的领域知识就更加完整。
2. 框架和设计模式
框架、设计模式这两个概念总容易被混淆,其实它们之间还是有区别的。构件通常是代码重用,而设计模式是设计重用,框架则介于两者之间,部分代码重用,部分设计重用,有时分析也可重用。在软件生产中有三种级别的重用:内部重用,即在同一应用中能公共使用的抽象块;代码重用,即将通用模块组合成库或工具集,以便在多个应用和领域都能使用;应用框架的重用,即为专用领域提供通用的或现成的基础结构,以获得最高级别的重用性。
框架与设计模式虽然相似,但却有着根本的不同。设计模式是对在某种环境中反复出现的问题以及解决该问题的方案的描述,它比框架更抽象;框架可以用代码表示,也能直接执行或复用,而对模式而言只有实例才能用代码表示;设计模式是比框架更小的元素,一个框架中往往含有一个或多个设计模式,框架总是针对某一特定应用领域,但同一模式却可适用于各种应用。可以说,框架是软件,而设计模式是软件的知识。
二、为什么要进行框架开发?
框架的最大好处就是重用。面向对象系统获得的最大的复用方式就是框架,一个大的应用系统往往可能由多层互相协作的框架组成。
由于框架能重用代码,因此从一已有构件库中建立应用变得非常容易,因为构件都采用框架统一定义的接口,从而使构件间的通信简单。
框架能重用设计。它提供可重用的抽象算法及高层设计,并能将大系统分解成更小的构件,而且能描述构件间的内部接口。这些标准接口使在已有的构件基础上通过组装建立各种各样的系统成为可能。只要符合接口定义,新的构件就能插入框架中,构件设计者就能重用构架的设计。
框架还能重用分析。所有的人员若按照框架的思想来分析事务,那么就能将它划分为同样的构件,采用相似的解决方法,从而使采用同一框架的分析人员之间能进行沟通。
采用框架技术进行软件开发的主要特点包括:
领域内的软件结构一致性好;
建立更加开放的系统;
重用代码大大增加,软件生产效率和质量也得到了提高;
软件设计人员要专注于对领域的了解,使需求分析更充分;
存储了经验,可以让那些经验丰富的人员去设计框架和领域构件,而不必限于低层编程;
允许采用快速原型技术;
有利于在一个项目内多人协同工作;
大粒度的重用使得平均开发费用降低,开发速度加快,开发人员减少,维护费用降低,而参数化框架使得适应性、灵活性增强。
三、与框架相关的概念
1. 白盒与黑盒框架
框架可分为白盒(White-Box)与黑盒(Black-Box)两种框架。
基于继承的框架被称为白盒框架。所谓白盒即具备可视性,被继承的父类的内部实现细节对子类而言都是可知的。利用白盒框架的应用开发者通过衍生子类或重写父类的成员方法来开发系统。子类的实现很大程度上依赖于父类的实现,这种依赖性限制了重用的灵活性和完全性。但解决这种局限性的方法可以是只继承抽象父类,因为抽象类基本上不提供具体的实现。白盒框架是一个程序骨架,而用户衍生出的子类是这个骨架上的附属品。
基于对象构件组装的框架就是黑盒框架。应用开发者通过整理、组装对象来获得系统的实现。用户只须了解构件的外部接口,无须了解内部的具体实现。另外,组装比继承更为灵活,它能动态地改变,继承只是一个静态编译时的概念。
在理想情况下,任何所需的功能都可通过组装已有的构件得到,事实上可获得的构件远远不能满足需求,有时通过继承获得新的构件比利用已有构件组装新构件更容易,因此白盒和黑盒将同时应用于系统的开发中。不过白盒框架趋向于向黑盒框架发展,黑盒框架也是系统开发希望达到的理想目标。
2. 热点、食谱以及好莱坞原则
成功的框架开发需要确定领域专用的“热点” (Hot spot)。应用开发者在框架的基础上进行开发,只须扩展框架的某些部分,“热点”就是在应用领域的一种扩展槽,开发者根据自己的需要填充这些扩展槽。“热点”使框架具有灵活性,如在具体的实现中,扩展槽可以被看成是一些抽象类,开发者通过重写抽象方法获得具体实现。
“食谱” (Cookbook)就是描述如何使用框架方法的文档。在“食谱”中包含了许多“烹饪”方法,这些“烹饪”方法相当于一些具体的操作步骤,描述了为解决某一专门问题如何使用框架的详细方法。框架的内部设计和实现细节通常不出现在“食谱”中。
框架的一个重要特征就是用户定义的方法经常被框架自身调用,而不是从用户的应用代码中调用。这种机制常称为“好莱坞原则”(Hollywood Principle)或“别调用我们,我们会调用您”。
分享到:
相关推荐
- 二十多年来,跨行业框架被创造性地应用于成千上万的全球组织。 - 成为APQC开放标准对标(OSB)数据库及其全球行业领导者的顾问委员会的基础。 - 随着开放标准数据库进一步开发流程和定义以及度量,PCF的各个版本将...
1. **框架原理**:讲解框架的基本设计原则和工作流程,如MVC(Model-View-Controller)模式在Web开发中的应用,或者IoC(Inversion of Control)和DI(Dependency Injection)在控制反转中的作用。 2. **框架架构**...
FlexViewer是一款基于Adobe Flex技术的轻量级地图应用程序框架,它允许开发者创建丰富的Web GIS应用。在这个场景中,“框框滑入滑出”可能指的是在界面上显示或隐藏某些功能模块时,通过平滑的滑动动画来增强用户...
1. 添加内联框架:在 Axure 中新建页面,在基本元件中选择【内联框架】,拖拽进页面,点击【样式】,勾选隐藏边框。 2. 选择 echart 图表:进入 echart 官网,选择你需要插入 Axure 中的图表,例如渐变堆叠面积图。 ...
还有一些现代的前端框架,如React.js、Angular.js或Vue.js,它们采用组件化开发模式,支持虚拟DOM,使得大型应用的管理更为便捷。 这些框架中可能包括了Bootstrap,这是一个流行的开源前端框架,提供了预设的CSS...
这一框架广泛应用于Web开发中,特别是表单验证、数据校验等场景,能够帮助开发者快速构建健壮的前端验证功能。 JavaScript是Web开发中的主要脚本语言,它允许在客户端动态修改HTML和CSS,提供与用户的实时交互。在...
**jQuery API 框架详解** jQuery API 是一个强大的JavaScript库,它极大地简化了JavaScript的DOM操作、事件处理、动画效果以及Ajax交互。这个压缩包中的"jqueryapi12-20080804"文件可能包含了2008年8月8日版本的...
SSM框架,全称为Spring、SpringMVC和MyBatis的组合,是Java Web开发中常用的三大组件。Spring作为核心的依赖注入容器,SpringMVC处理HTTP请求与响应,而MyBatis则作为持久层框架负责数据库交互。SSM框架自动生成代码...
### 使用CSS实现圆角框框 #### 知识点概览 本文将详细介绍如何仅使用CSS来实现圆角框的效果,以及提供两种不同的方法来帮助理解这一技术的应用场景与实现方式。 #### 知识点详解 ##### CSS圆角框基础知识 在网页...
"java csv 读写框架特殊字符转义" Java CSV 读写框架是基于 Java 注解的 CSV 读写框架,具有 Fluent 流式写法、基于 Java 注解、支持自定义的转换和机敏配置、内置 8 大根本类型以及 String 类型转换等特性。该框架...
通过以上知识点的总结,可以看出AForge.Video框架为视频处理提供了丰富的工具和支持,使得开发者能够更加专注于业务逻辑的实现,而不是底层技术细节的管理。无论是对于初学者还是有经验的开发者来说,AForge.Video都...
【图文转换之框架构思图公开课】是一份针对如何将图形信息转化为文字表述的专业课件,主要探讨了三种类型的图文转换技巧:方位图、流程图和构思框架图。 方位图是介绍对象位置的一种方式,强调表述的准确性及语言的...
我们可以设置一些基本属性,如背景色、字体颜色等。 2. **定义ControlTemplate**: 为了改变CheckBox的外观,我们需要定义一个ControlTemplate。这将覆盖CheckBox的默认渲染方式。在样式中,通过`...
### 威纶通触摸屏下载项目文件后,文本都变成了框框的解决办法 #### 一、问题背景 在使用威纶通触摸屏时,可能会遇到一个常见问题:通过Easy builder pro软件编辑并下载项目文件到触摸屏后,原本正常的文本突然...
框框跟中代码工具是一款专为程序员和开发者设计的实用软件,主要用于代码的高亮显示、格式化以及编辑。在编程过程中,清晰、规范的代码排列对于理解和维护代码至关重要,这款工具便能很好地帮助用户实现这一目标。...
在网页设计和开发中,"鼠标点击输入框框里字消失颜色改变" 是一个常见的交互效果,主要涉及到HTML中的`<input>`元素和CSS样式控制。这个现象通常发生在用户点击输入框时,原有的预填充文字(placeholder)会消失,...
标题中的“e语言-框框桌面悬浮搜索框”指的是使用易语言开发的一种桌面应用程序,它在桌面上创建了一个悬浮的搜索框。易语言是中国本土的一种编程语言,旨在降低编程的难度,让普通用户也能进行软件开发。这个程序...
在Android开发中,"可扩展的list,下拉框框"是一种常见的用户界面元素,用于提供用户选择项的交互方式。这种元素结合了ListView和Spinner的功能,提供了更丰富的交互体验。下面将详细介绍这个主题,包括相关知识点、...
总结起来,"opencv在播放视频中画框框" 这个话题涵盖了 OpenCV 的基本视频处理能力,包括读取视频、显示视频帧、在帧上绘制几何图形(如矩形框),以及用户交互(如通过键盘事件控制程序)。这些技术在实时视频分析...