软件复用技术概述
2003-6-30 15:31:07
[发布并查看相关评论]
开发中心 孙琪
软件复用是将已有的软件及其有效成分用于构造新的软件或系统。它不仅是对软件程序的复用,还包括对软件生产过程中其它劳动成果的复用,如项目计划书、可行性报告、需求分析、概要设计、详细设计、编码(源程序)、测试用例、文档与使用手册等等。因此,软件复用包括软件产品复用和软件过程复用两部分的内容。
软件复用不同于软件移植。软件移植是指对软件进行修改和扩充,使之在保留原有功能、适应原有平台的基础上,可以运行于新的软硬件平台。而复用则指在多个系统中,尤其是在新系统中使用已有的软件成分。
从对复用产品的了解程度和复用方式看,也可分为白盒复用与黑盒复用。黑盒复用指对已有产品或构件不需作任何修改,直接进行复用,这是理想的复用方式。它主要基于二进制代码的复用,包括可执行程序的复用和基于库(包括动态链接库和静态库)的复用。白盒复用指根据用户需求对已有产品进行适应性修改后才可使用。白盒复用一般为源代码一级的复用,以及相应的测试用例、文档等的复用。
无论白盒复用还是黑盒复用,都需要花费一定的代价熟悉和掌握被复用的软件系统。作为经济上的考虑,要求复用的代价必须大大小于重新开发的代价,否则就不应该考虑。
软件复用的一个关键因素是抽象。抽象是对软件可复用对象的提炼和概括,即将可复用对象的基本属性和相应的操作,从具体的语言、环境和其他细节中提炼出来。软件的复用性很大程度上取决于对可复用对象的认识深度或者说可复用对象的抽象层次。抽象层次越高、与具体环境和特定细节越无关,则它被未来系统复用的可能性也越大。领域分析则是进行抽象的有力工具。领域分析借助特定领域、特定行业的专业知识与技能,对软件系统对象进行抽象和分类,提炼认知的对象及其相互关系,获得系统整体结构,从而生成可复用的软件构件。
通过软件复用,在应用系统开发中可以充分地利用已有的开发成果,减少了包括分析、设计、编码、测试等在内的许多重复劳动,从而提高了软件开发的效率,同时,通过复用高质量的已有开发成果,避免了重新开发可能引入的错误,从而提高了软件的质量。
软件复用有三个基本原则,一是必须有可以复用的对象;二是所复用的对象必须是有用的,三是复用者需要知道如何去使用被复用的对象。软件复用包括两个相关过程:可复用软件(构件)的开发(Development for Reuse)和基于可复用软件(构件)的应用系统构造(集成和组装)(Development with Reuse)。解决好这几个方面的问题才能实现真正成功的软件复用。
可复用软件(构件)的开发是实现软件复用的基本条件,对象技术的广泛使用,提供了建造和使用构件的概念基础和实用工具,有了可复用软件,基于可复用软件(构件)的应用系统构造(集成和组装)才能得以实现。软件的生产也可以象硬件的生产一样,在设计好框架后通过标准的构件组装而成。一般认为构件是具有一定功能、能够独立工作或同其他构件组合起来协调工作的程序体,一经产生,就与它的具体实现语言无关,可以认为是一段二进制码和数据段,其内部具体实现是无法看到的,可将成熟的构件当作商品出售,在保证开发者的利益同时最大地满足社会需求。采用构件来开发软件可以更有效地重用他人已有的劳动成果。
阻碍软件复用的技术和非技术有哪些?你复用过很多软件吗?如果没有,那是为什么
软件复用(SoftWareReuse)是将已有软件的各种有关知识用于建立新的软件,以缩减软件开发和维护的花费。简单的理解,就是把一些软件通过配置等方式连接在一起协同工作。
理想很丰满,但是,现实很骨感。
软件复用面对的第一个阻碍就是不同软件开发商之间并没有一套统一的接口标准,比如同样是做CRM,不同厂家的数据库定义完全不同,提供的API数据定义也千差万别。再考虑到数据同步、性能、安全性等各种因素,至少在企业领域,软件之间传递数据尚且困难,软件复用的技术难度可想而知。
在非技术层面,软件复用面对的最大问题是体验一致性。不同的软件有着完全不同的操作风格,这将导致用户使用培训成本居高不下。对于企业用户,最理想的情况就是只需要学会一套系统的操作方式,就可以完成所有工作。
我认为,软件复用的唯一出路就是平台化,不同的软件基于同一套平台进行开发,互相直接数据共享,配置(包含最重要的用户和权限体系)共享,体验相通。我们尝试过以“活字格”为代表的一些企业Web应用开发平台,发现除了开发效率非常高之外,开发出来的软件可以很方便的连接到其他用该平台开发的软件。这样,我们把企业内的业务拆散到若干个软件,根据需要拼接在一起,就实现了真正意义上的软件复用。
c++ 实现软件复用有哪两种方式
在C++语言中,软件复用可以通过三种方法来实现, 即:复合、继承和模板. 由于C++程序由类和函数组成,所以我们既可以复用C++标准库中的类和函数,也可以复用自己生成的类和函数或各种其他常见的非标准库中的类和函数.
组件技术和其它软件技术之间具有什么关系
传统软件设计技术通常基于语言的,过程或对象,规模比较小,粒度也较小。但随着应用需求的不断提高以及应用系统的日趋复杂化,传统的技术已经不能满足需求了,主要原因有:从抽象程度来看,面向对象技术已经达到类级重用,但重用粒度太小,不能解决异构互操作问题和效率更高的重用。白话讲系统越来越大,编程仍然从底层一步一步写上来太累,效率也低,也不能保证模块的稳定性、可靠性等。所以必须有所提高。而组件是对传统面向对象技术的扩展,将抽象程度提高到了更高的层次。它是对一组相关类的组合进行封装,并代表完成一个或多个功能的特定服务。此外,组件不仅仅是对代码的封装,它也可以对软件体系结构、测试用例、设计文档、分析文档和领域知识等进行封装。因此,从这个意义上来讲,组件本身具有更广泛的含义,也具有更灵活的重用粒度。目前主流的软件组件技术标准有:微软提出的COM/COM+、SUN公司提出的JavaBean/EJB、OMG提出的Corba。它们为应用软件的开发提供了可移植性、异构性的实现环境和健壮平台,结束了面向对象中的开发语言混乱的局面,解决软件复用在通信、互操作等环境异构的瓶颈问题。研究实践表明,软件复用在特定领域更容易获得成功,因此特定领域的软件复用研究得到了高度重视,特定领域的组件技术及其应用研究也成为组件技术的研究热点。
什么是SOA架构图?
SOA的核心主体是服务。所谓“服务(Service)” ,从业务角度而言,服务是一个可重复的经过标准封装的任务,例如: 检查帐号余额;开新帐户 等等…。SOA的目标是通过服务的流程化来实现业务的灵活性,所谓流程(Process)是由一系列相互关联的任务所组成,实现一个具体的业务功能。一个流程可以由一系列服务来实现。
标准架构图如下:
一个正确的框架,是指导我们开发和实施SOA架构的基础。由IBM提案,国际开放群组(The Open Group)提出了一个SOA架构的参考模型,这个架构框架目前是产业界最权威和严谨的SOA架构标准。The Open Group是一个非营利标准化组织,是一个厂商中立和技术中立的机构,致力于提出各种技术框架和理论结构,致力于促进全球市场的业务效率。The Open Group已有超过20年的标准制定与推广历史。在1996年,由X/Open与Open Software Foundation合并组成。The Open Group最有名是作为UNIX商标的认证机构。在过去,协会最出名的是其出版的Single UNIX Specification,它扩充了POSIX标准而且是UNIX的官方定义,其成员包括IT用户、供应商以及政府机构。The Open Group在中国的创始会员为金蝶集团,金蝶集团负责成立了中国分会。TOG在1993年提出的The Open Group Architecture Framework (TOGAF) 架构框架,是一套行之有效的企业架构。历经15年9个版本发展,支持开放、标准的SOA参考架构,已被80%的福布斯( Forbes)全球排名前50的公司使用。
根据这个模型,完整的SOA架构由五大部分组成,分别是:基础设施服务、企业服务总线、关键服务组件、开发工具、管理工具等。
SOA基础实施是为整个SOA组件和框架提供一个可靠的运行环境,以及服务组件容器,它的核心组件是应用服务器等基础软件支撑设施,提供运行期完整、可靠的软件支撑。
企业服务总线是指由中间件基础设施产品技术实现的、通过事件驱动和基于XML消息引擎,为SOA提供的软件架构的构造物。
企业服务总线ESB提供可靠消息传输、服务接入、协议转换、数据格式转换、基于内容的路由等功能,屏蔽了服务的物理位置,协议和数据格式。在SOA基础实现的方案上,应用的业务功能能够被发布、封装和提升(Promote)成为业务服务(Business Service);业务服务的序列可以编排成为BPM的流程,而流程也可以被发布和提升为复合服务(Composited Service),业务服务还可以被外部的SOA系统再次编排和组合。ESB是实现SOA治理的重要支撑平台,是SOA解决方案的核心,从某种意义上说,如果没有ESB,就不能算作严格意义上的SOA。
关键服务实现,是SOA在各种业务服务组件的分类。一般来说,一个企业级的SOA架构通常包括:交互服务、流程服务、信息服务、伙伴服务、企业应用服务和接入服务。这些服务可能是一些服务组件,也可能是企业应用系统(如ERP)所暴露的服务接口等等。这些服务都可以接入ESB,进行集中统一管理。
开发工具和管理工具:提供完善的、可视化的服务开发和流程编排工具,涵盖服务的设计、开发、配置、部署、监控、重构等完整的SOA项目开发生命周期。
按照这个模型,许多SOA解决方案是只提供部分实现。这个行业中,许多国内的企业为了搭上SOA的便车,经常以偏概全,混绕概念。应该说真正按照SOA的思想和模型来构建整个企业的IT架构的案例是非常之少的。许多国外厂商的宣传案例,基本上是停留在部署应用服务器,开发了部分WebService组件,可以实现部分数据集成,这个层次而已,而这些WebService是部署在ESB平台之上的,就已经很不错了。实现了服务流程重组,实现SOA治理的案例就更是很少见到了。
OASIS(一个SOA标准组织)给予出的SOA定义“SOA是一个范式,用于组织和利用可能处于不同所有权范围控制下的分布式系统。”
维基百科给出的SOA定义“面向服务的体系结构(Service-oriented architecture)是构造分布式系统的应用程序的方法。它将应用程序功能作为服务发送给最终用户或者其他服务。它采用开放标准、与软件资源进行交互并采用表示的标准方式。”。
要准确全面理解SOA,首先必须理解SOA的核心要素:
SOA的目标就是实现灵活可变的IT系统。要达到灵活性,通过三个途径来解决:标准化封装、复用、松耦合可编排。
互操作(标准化封装)、复用、松耦合等SOA技术的内在机制,也是中间件技术和产品的本质特征。
标准化封装(互操作性)
传统软件架构,因为封装的技术和平台依赖性,一直没有彻底解决互操作问题。互联网前所未有的开放性意味着各节点可能采用不同的组件、平台技术,对技术细节进行了私有化的约束,构件模型和架构没有统一标准,从而导致架构平台自身在组件描述、发布、发现、调用、互操作协议及数据传输等方面呈现出巨大的异构性。各种不良技术约束的结果是软件系统跨互联网进行交互变得困难重重,最终导致了跨企业/部门的业务集成和重组难以灵活快速的进行。
在软件的互操作方面,传统中间件只是实现了访问互操作,即通过标准化的API实现了同类系统之间的调用互操作,而连接互操作还是依赖于特定的访问协议,如JAVA使用RMI,CORBA使用IIOP等。而SOA通过标准的、支持Internet、与操作系统无关的SOAP协议实现了连接互操作。而且,服务的封装是采用XML协议,具有自解析和自定义的特性,这样,基于SOA的中间件还可以实现语义互操作。
SOA要实现互操作,就是通过一系列的标准族,来实现访问、连接和语义等各种层面的互操作。
软件复用
软件复用,即软件的重用,也叫再用,是指同一事物不作修改或稍加改动就多次重复使用。从软件复用技术的发展来看,就是不断提升抽象级别,扩大复用范围。最早的复用技术是子程序,人们发明子程序,就可以在不同系统之间进行复用了。但是,子程序是最原始的复用,因为这种复用范围是一个可执行程序内复用,静态开发期复用,如果子程序修改,意味着所有调用这个子程序的系统必须重新编译、测试和发布。
耦合关系
SOA架构在松耦合解耦过程也发展到了最后的境界。传统软件将软件之中核心三部分网络连接、数据转换、业务逻辑全部耦合在一个整体之中,形成“铁板一块”的软件,“牵一发而动全身”,软件就难以适应变化。分布式对象技术将连接逻辑进行分离,消息中间件将连接逻辑进行异步处理,增加了更大的灵活性。消息代理和一些分布式对象中间件将数据转换也进行了分离。而SOA架构,通过服务的封装,实现了业务逻辑与网络连接、数据转换等进行完全的解耦。
总之,从科学哲学的角度来看,SOA是一个不断解构的过程,传统软件强调系统性,耦合度过高,所以需要松耦合(解耦);SOA也是一个组件粒度的平衡,集成电路趋势是集成度越来越高,软件发展的趋势是相反的过程;SOA是架构,更是方法,反映了人们对哲学思想的追求的原动力。
按照这个特性,SOA基本上来说与WebService并不是同一个概念,SOA并不一定需要WebService实现,理论上可以在其他技术体系下,实现SOA。但事实上,到目前为止,能够实现SOA架构风格的技术就是WebService,因为它的特性和厂商的支持力度,使得WebService成为了实现SOA实现技术的事实标准。也正因为WebService技术的成熟,才使得已经提出10多年了的SOA思想和概念,得以能够实现落地,成为一种可以使用的技术。这也就是回答了SOA和WebService的关系。
信道复用方式有哪几种
频分复用(FDM),是将信道带宽分为若干个互不重叠的频段,每路信号各站一个频段。通常听到的调频广播就是FDM的典型代表。
时分复用(TDM),是利用各路信号的抽样值在时间上互不重叠,从而实现多路信号的同一信道同时传输。这还是很好理解的。
码分复用(CDM)是指每个信道作为编码信道实现位传输(特定脉冲序列)的一种技术。这种编码传输方式通过传输唯一的时间系列短脉冲完成,但在较长的位时间中则采用时间片断替代。每个信道,都有各自的代码,并可以在同一光纤上进行传输以及异步解除复用。
分组交换网
分组交换网是继电路交换网和报文交换网之后的一种新型交换网络,它主要用于数据通信,如X.25,帧中继,DPT,SDH,GE和ATM都是分组交换的例子。分组交换是一种存储转发的交换方式,它将用户的报文划分成一定长度的分组(可以定长和不定长),以分组为存储转发。因此,它比电路交换的利用率高,比报文交换的时延小,具有实时通信的能力。分组交换利用统计时分复用原理,将1条数据链路复用成多个逻辑信道,最终构成1条主叫、被叫用户之间的信息传送通路,称之为虚电路(即VC,两个用户终端设备在开始互相发送和接收数据之前需要通过网络建立逻辑上的连接),实现数据的分组传送。分组交换网中有的支持统计复用,有的不支持统计复用,例如SDH就不支持统计复用,其带宽是固定不变的,支持统计复用技术的主要有帧中继、ATM和IP,下面作分别介绍。
(1)帧中继
帧中继是在X.25分组交换技术基础上发展起来的一种快速分组交换传输技术,用户信息以帧(可变长)为单位进行传输,并对用户信息流进行统计复用。
(2)ATM
ATM支持面向连接(非物理的逻辑连接)的业务,具有很大的灵活性,可按照多媒体业务实际需要动态分配通信资源,对于特定业务,传送速率随信息到达的速率而变化,因此,ATM具有统计复用的能力,能够适应任何类型的业务。
(3)DPT
DPT(Dynamic Packet Transport)是Sisco公司独创的新一代优化动态分组的传输技术,吸收了SDH的优点而克服其缺点,将IP路由技术对宽带的高效利用以及丰富的业务融合能力,和光纤环路的高带宽及可靠的自愈功能紧密结合,由于所有节点都具有公平机制且支持带宽统计复用,可成倍提高网络可用带宽。
(4)吉位以太网
GE(Gigabit Ethernet)是以太网技术的延伸,是第3代以太网,它主要处理数据业务,广电宽带城域骨干网采用的主流技术。以太网交换机端口(RJ45)所带的用户信道使用率通常是不相同的,经常会出现有的信道很忙,有的信道处于空闲状态,即便是以太网交换机所有的端口都处于通信状态下,还会涉及到带宽的不同需求问题,而数据交换的特性在于突发性,只有通过统计复用,即带宽动态分配才能降低忙闲不一的现象,从而最大限度地利用网络带宽。
管理信息系统,懂的人进
构件技术
构件技术是指通过组装一系列可复用的软件构件来构造软件系统的软件技术.通过运用构件技术,开发人员可以有效的进行软件复用,减少重复开发,缩短软件的开发时间,降低软件的开发成本。
[编辑本段]构件技术-历史渊源
1968年NATO软件工程会议,Mcllroy在提交会议的论文《大量生产的软件构件》中,提出了“软件组装生产线”的思想。从那以后,采用构件技术实现软件复用,采用“搭积木”的方式生产软件,成为软件开发人员长期的梦想。软件复用是指重复使用“为了复用目的而设计的软件”的过程。就软件开发而言,软件复用包括:早期的函数复用、面向对象言语中的类的复用,以及互联网时代的完整软件体系的构件复用。
有效的软件复用是可以提高软件开发的效率和质量。建立在构件复用基础上的软件复用将会带来极大的价值,《Software Reuse》指出很多公司通过复用取得的成就使们坚信,管理层可以期待获得如下优势。
1)投放市场时间:减少为原来的1/2到1/5;
2)缺陷密度:降低为原来的1/5到1/10;
3)维护成本:降低为原来的1/5到1/10;
4)整体软件开发成本:降低大约15%,长期项目可降低高达75%。
因此构件技术一直被视为解决软件危机现实可行的途径。在过去几十年尽管软件开发的主流思想几经沿革,软件业一直没有放弃构件技术的尝试。
60年代末到80年代初,结构化的软件开发思想占主导地位,当时的复用是函数复用和模块复用。函数通过参数来适应不同应用需求的变化,package模块也是通过接口规范说明进行连接和组装实现复用。但是,由于结构化的存在极大隐患,函数层面的复用能力有限,其结果是系统结构混乱、效率低,软件成份复用性差。函数复用和模块复用没有解决软件工程的危机。
80年代起,面向对象的软件开发思想迅速发展起来,通过类的封装、继承和应用,面向对象的软件开发成功的实现代码级的复用。类和封装性,实现数据抽象和信息隐蔽,继承性,提高了代码复用性。面向对象技术被公认为当前的主流的技术。但是,面向对象的复用脱离不了代码级复用的本质,由于复用的颗粒较低,软件开发中的复用的潜力远远没有发挥出来。类复用也没有解决软件工程的危机。
[编辑本段]构件的技术-互联网时代面向构件的技术
互联网应用时代的到来,不仅仅增加了应用需求和软件的复杂性。构件技术在互联网时代突飞猛进,已经为实现软件复用的理想,解决软件危机带来了曙光!
面向构件的技术实现更高的层次的抽象
面向构件技术对一组类的组合进行封装,并代表完成一个或多个功能的特定服务,也为用户提供了多个接口。整个构件隐藏了具体的实现,只用接口提供服务。这样,在不同层次上,构件均可以将底层的多个逻辑组合成高层次上的粒度更大的新构件,甚至直接封装到一个系统,使模块的重用从代码级、对象级、架构级到系统级都可能实现,从而使软件像硬件一样,能任人装配定制而成的梦想得以实现。
构件技术标准走向成熟
目前主流的软件构件技术标准有:微软提出的COM/COM+、SUN公司提出的JavaBean/EJB、OMG提出的Corba。它们为应用软件的开发提供了可移植性、异构性的实现环境和健壮平台,结束了面向对象中的开发语言混乱的局面,解决软件复用在通信、互操作等环境异构的瓶颈问题。
[编辑本段]构件的技术-我国软件业对构件技术的研究
北京大学软件工程研究所
北京大学软件工程研究所是一个专注于软件工程及其相关领域的研究和实践的学术机构,其前身是建立于1983年的软件工程教研室,1999年正式挂牌成为北京大学的一个专业研究所。
近年来,研究所在所长杨芙清院士的领导下,对软件复用与软件构件技术进行了深入的研究。成果代表为青鸟工程是,历经“七五”、“八五”“九五”。青鸟工程在软件复用和构件技术领域成绩斐然。
中国科学院软件研究所
中科院软件所软件工程技术研究中心,在首席研究员冯玉琳博士带领下,对构件技术深入研究,硕果累累。其中作为知识创新工程的成果的信息化基础软件核心平台是其代表。
上海普元
普元是国内最早推进面向构件技术的厂商之一,也是目前国内唯一一家提供真正意义上的面向构件的互联网应用基础平台的专业化厂商。普元把崭新的互联网相关技术与先进的构件复用技术以及可视化开发技术完美地结合起来,创造了一套具有国际领先水平的面向构件的互联网的应用基础平台----EOS。
互联网实验室
互联网实验室是我国著名的IT研究机构,长期从事构件技术及软件产业的研究,并2004年1月16日发布了《面向构件的互联网应用基础平台研究报告》,是目前国内较为详尽的关于构件技术研究的专业报告。
框架(framework)是一个基本概念上的结构,用于去解决或者处理复杂的问题。这个广泛的定义使用的十分流行,尤其在软件概念。框架也能用于机械结构。
[编辑本段]软件工程中的框架
1. 什么是框架?
框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种定义认为,框架是可被应用开发者定制的应用骨架。前者是从应用方面而后者是从目的方面给出的定义。
可以说,一个框架是一个可复用的设计构件,它规定了应用的体系结构,阐明了整个设计、协作构件之间的依赖关系、责任分配和控制流程,表现为一组抽象类以及其实例之间协作的方法,它为构件复用提供了上下文(Context)关系。因此构件库的大规模重用也需要框架。
构件领域框架方法在很大程度上借鉴了硬件技术发展的成就,它是构件技术、软件体系结构研究和应用软件开发三者发展结合的产物。在很多情况下,框架通常以构件库的形式出现,但构件库只是框架的一个重要部分。框架的关键还在于框架内对象间的交互模式和控制流模式。
框架比构件可定制性强。在某种程度上,将构件和框架看成两个不同但彼此协作的技术或许更好。框架为构件提供重用的环境,为构件处理错误、交换数据及激活操作提供了标准的方法。
应用框架的概念也很简单。它并不是包含构件应用程序的小片程序,而是实现了某应用领域通用完备功能(除去特殊应用的部分)的底层服务。使用这种框架的编程人员可以在一个通用功能已经实现的基础上开始具体的系统开发。框架提供了所有应用期望的默认行为的类集合。具体的应用通过重写子类(该子类属于框架的默认行为)或组装对象来支持应用专用的行为。
应用框架强调的是软件的设计重用性和系统的可扩充性,以缩短大型应用软件系统的开发周期,提高开发质量。与传统的基于类库的面向对象重用技术比较,应用框架更注重于面向专业领域的软件重用。应用框架具有领域相关性,构件根据框架进行复合而生成可运行的系统。框架的粒度越大,其中包含的领域知识就更加完整。
2. 框架和设计模式
框架、设计模式这两个概念总容易被混淆,其实它们之间还是有区别的。构件通常是代码重用,而设计模式是设计重用,框架则介于两者之间,部分代码重用,部分设计重用,有时分析也可重用。在软件生产中有三种级别的重用:内部重用,即在同一应用中能公共使用的抽象块;代码重用,即将通用模块组合成库或工具集,以便在多个应用和领域都能使用;应用框架的重用,即为专用领域提供通用的或现成的基础结构,以获得最高级别的重用性。
框架与设计模式虽然相似,但却有着根本的不同。设计模式是对在某种环境中反复出现的问题以及解决该问题的方案的描述,它比框架更抽象;框架可以用代码表示,也能直接执行或复用,而对模式而言只有实例才能用代码表示;设计模式是比框架更小的元素,一个框架中往往含有一个或多个设计模式,框架总是针对某一特定应用领域,但同一模式却可适用于各种应用。可以说,框架是软件,而设计模式是软件的知识。
为什么要进行框架开发?
框架的最大好处就是重用。面向对象系统获得的最大的复用方式就是框架,一个大的应用系统往往可能由多层互相协作的框架组成。
由于框架能重用代码,因此从一已有构件库中建立应用变得非常容易,因为构件都采用框架统一定义的接口,从而使构件间的通信简单。
框架能重用设计。它提供可重用的抽象算法及高层设计,并能将大系统分解成更小的构件,而且能描述构件间的内部接口。这些标准接口使在已有的构件基础上通过组装建立各种各样的系统成为可能。只要符合接口定义,新的构件就能插入框架中,构件设计者就能重用构架的设计。
框架还能重用分析。所有的人员若按照框架的思想来分析事务,那么就能将它划分为同样的构件,采用相似的解决方法,从而使采用同一框架的分析人员之间能进行沟通。
采用框架技术进行软件开发的主要特点包括:
领域内的软件结构一致性好;
建立更加开放的系统;
重用代码大大增加,软件生产效率和质量也得到了提高;
软件设计人员要专注于对领域的了解,使需求分析更充分;
存储了经验,可以让那些经验丰富的人员去设计框架和领域构件,而不必限于低层编程;
允许采用快速原型技术;
有利于在一个项目内多人协同工作;
大粒度的重用使得平均开发费用降低,开发速度加快,开发人员减少,维护费用降低,而参数化框架使得适应性、灵活性增强。
与框架相关的概念
1. 白盒与黑盒框架
框架可分为白盒(White-Box)与黑盒(Black-Box)两种框架。
基于继承的框架被称为白盒框架。所谓白盒即具备可视性,被继承的父类的内部实现细节对子类而言都是可知的。利用白盒框架的应用开发者通过衍生子类或重写父类的成员方法来开发系统。子类的实现很大程度上依赖于父类的实现,这种依赖性限制了重用的灵活性和完全性。但解决这种局限性的方法可以是只继承抽象父类,因为抽象类基本上不提供具体的实现。白盒框架是一个程序骨架,而用户衍生出的子类是这个骨架上的附属品。
基于对象构件组装的框架就是黑盒框架。应用开发者通过整理、组装对象来获得系统的实现。用户只须了解构件的外部接口,无须了解内部的具体实现。另外,组装比继承更为灵活,它能动态地改变,继承只是一个静态编译时的概念。
在理想情况下,任何所需的功能都可通过组装已有的构件得到,事实上可获得的构件远远不能满足需求,有时通过继承获得新的构件比利用已有构件组装新构件更容易,因此白盒和黑盒将同时应用于系统的开发中。不过白盒框架趋向于向黑盒框架发展,黑盒框架也是系统开发希望达到的理想目标。
2. 热点、食谱以及好莱坞原则
成功的框架开发需要确定领域专用的''热点'' (Hot spot)。应用开发者在框架的基础上进行开发,只须扩展框架的某些部分,''热点''就是在应用领域的一种扩展槽,开发者根据自己的需要填充这些扩展槽。''热点''使框架具有灵活性,如在具体的实现中,扩展槽可以被看成是一些抽象类,开发者通过重写抽象方法获得具体实现。
''食谱'' (Cookbook)就是描述如何使用框架方法的文档。在''食谱''中包含了许多''烹饪''方法,这些''烹饪''方法相当于一些具体的操作步骤,描述了为解决某一专门问题如何使用框架的详细方法。框架的内部设计和实现细节通常不出现在''食谱''中。
框架的一个重要特征就是用户定义的方法经常被框架自身调用,而不是从用户的应用代码中调用。这种机制常称为''好莱坞原则''(Hollywood Principle)或''别调用我们,我们会调用您''。
[编辑本段]网页设计中的框架
框架是网页中经常使用的页面设计方式,框架的作用就是把网页在一个浏览器窗口下分割成几个不同的区域,实现在一个浏览器窗口中显示多个HTML页面。使用框架可以非常方便的完成导航工作,让网站的结构更加清晰,而且各个框架之间决不存在干扰问题。利用框架最大的特点就是使网站的风格一致。通常把一个网站中页面相同的部分单独制作成一个页面,作为框架结构的一个子框架的内容给整个网站公用。
一个框架结构有两部分网页文件构成:
框架Frame:框架是浏览器窗口中的一个区域,它可以显示与浏览器窗口的其余部分中所显示内容无关的网页文件。
框架集Frameset:框架集也是一个网页文件,它将一个窗口通过行和列的方式分割成多个框架,框架的多少根据具体有多少网页来决定,每个框架中要显示的就是不同的网页文件。
转载请注明出处51数据库 » 软件复用标准 什么是软件复用
热门都没上过的老王


