‘壹’ 什么是软件复用
软件复用(SoftWareReuse)是将已有软件的各种有关知识用于建立新的软件,以缩减软件开发和维护的花费 以上是对这个问题的回答,希望对您有帮助。
‘贰’ 构件的软件工程中的构件
构件是面向软件体系架构的可复用软件模块。构件(component)是可复用的软件组成成份,可被用来构造其他软件。它可以是被封装的对象类、类树、一些功能模块、软件框架(framework)、软件构架(或体系结构Architectural)、文档、分析件、设计模式(Pattern)等。1995年,Ian.oraham给出的构件定义如下:构件(Component)是指一个对象(接口规范、或二进制代码),它被用于复用,接口被明确定义[8]。构件是作为一个逻辑紧密的程序代码包的形式出现的,有着良好的接口。像Ada的Package、Smalltalk-80和C++的class和数据类型都可属于构件范畴。但是,操作集合、过程、函数即使可以复用也不能成为一个构件。开发者可以通过组装已有的构件来开发新的应用系统,从而达到软件复用的目的。软件构件技术是软件复用的关键因素,也是软件复用技术研究的重点。 (1)有用性(Usefulness):构件必须提供有用的功能;
(2)可用性(Usability):构件必须易于理解和使用;
(3)质量(Quality):构件及其变形必须能正确工作;
(4)适应性(Adaptability):构件应该易于通过参数化等方式在不同语境中进行配置;
(5)可移植性(Portability):构件应能在不同的硬件运行平台和软件环境中工作。
日历、工作流构件、订单构件、用户界面控制等等都可以是构件。 构件具有以下几个特点:
(1)自描述:构件必须能够识别其属性、存取方法和事件,这些信息可以使开发环境将第三方软件构件无缝地结合起来;
(2)可定制:允许提供一个典型的图形方式环境,软件构件的属性只能通过控制面板来设置;
(3)可集成:构件必须可以被编程语言直接控制。构件也可以和脚本语言或者与从代码级访问构件的环境连接,这个特点使得软件构件可以在非可视化开发项目中使用;
(4)连接机制:构件必须能产生事件或者具有让程序员从语义上实现相互连接的其他机制。
采用构件软件不需要重新编译,也不需要源代码并且不局限于某一种编程语言。该过程叫做二进制复用(Binary Reuse),因为它是建立在接口而不是源代码级别的复用之上的。虽然软件构件必须遵守一致的接口,但是它们的内部实现是完全自动的。因此,可以用过程语言和面向对象语言创建构件。
由于构件技术是由基于面向对象技术而发展起来的,与面向对象的设计中的对象相类似,它们都是针对软件复用,都是被封装的代码,但它们之间仍存在很大差异。 (1)在纯面向对象的设计中,对象(类)、封装和继承三者缺一不可,但对构件可以没有继承性,只要实现封装即可;
(2)从构件和对象的生成方式上,对象生成属于实例化的过程,比较单一,而生成构件的方式较多;
(3)构件是设计的概念,与具体编程语言无关,不像对象属于编程中的概念,要依赖于具体的编程语言;
(4)在对构件操作时不允许直接操作构件中的数据,数据真正被封装了。而对象的操作通过公共接口部分,这样数据是可能被访问操作的;
(5)对象对软件复用是通过继承实现的,构件对软件复用不仅可以通过继承还可以通过组装时的引用来实现。
因此,构件不是对象,只是与对象类似。
从力学角度来说,结构是指可以承受一定力的结构形态,它可以抵抗能引起形状和大小改变的力。每种事物都有它的架构形态,这种架构形态体现着它的结构。一个较复杂的结构由许多不同的部分组成,这些组成部分通常成为构件。
‘叁’ 软件成分的重用可以划分成哪三个重用级别
为软件重用分类比较困难,因为软件重用技术众多,一种重用技术可以包括多种重用形式。比如说:框架即可以包括代码级重用,也可以包括设计级重用。有一种分类方法是按照软件重用所应用的领域范围,把重用划分为两种:横向重用和纵向重用。
1. 横向重用是指重用不同应用领域中的软件元素,例如数据结构、分类算法、人机界面构件等。标准函数库是一种典型的原始的横向重用机制。
2. 纵向重用是指在一类具有较多公共性的应用领域之间进行软部品重用。因为在两个截然不同的应用领域之间实施软件重用非常困难,潜力不大,所以纵向重用才广受瞩目,并成为软件重用技术的真正所在。纵向重用活动的主要包括以下几个步骤:
1) 首先进行域分析。根据应用领域的特征及相似性预测软部件的可重用性。
2) 然后进行软部品的开发。一旦确认了软部件的重用价值,即可进行软部品的开发并对具有重用价值的软部品进行一般化,以便它们能够适应新的类似的应用领域。
3) 最后,软部件及其文档即可进入软部品库,成为可供后续项目使用的可重用资源。
‘肆’ 为什么说类构件是目前比较理想的可重用软构件
面向对象技术中的“ 软件重用。面向对象技术中的“类”,是比较理想的 可重用的软构件,不妨称之为类构件, 可重用的软构件,不妨称之为类构件,在上一小节中 讲述的构件组装模型,就是利用类构件来构造应用程 讲述的构件组装模型, 序。 可重用的软构件应具备的特点 1. 可重用的软构件应具备的特点 模块独立性强 (1) 模块独立性强 (2) 具有高度可塑性 具有高度可塑性 接口清晰、简明、可靠 (3) 接口清晰、简明、可靠 2. 类构件的重用方式 类构件的重用方式 实例重用 (1) 实例重用 继承重用 (2) 继承重用 面向对象方法特有的继承性, 面向对象方法特有的继承性,提供了一种对已有 的类构件进行裁剪的机制。 的类构件进行裁剪的机制。当已有的类构件不能通过 实例重用完全满足当前系统需求时, 实例重用完全满足当前系统需求时,继承重用提供了 一种安全地修改已有类构件, 一种安全地修改已有类构件,以便在当前系统中重用 的手段 多态重用 (3) 多态重用 利用多态性不仅可以使对象的对外接口更加一般 基类与派生类的许多对外接口是相同的) 化(基类与派生类的许多对外接口是相同的),从而降 低了消息连接的复杂程度, 低了消息连接的复杂程度,而且还提供了一种简便可 靠的软构件组合机制,系统运行时, 靠的软构件组合机制,系统运行时,根据接收消息的 对象类型,由多态性机制启动正确的方法, 对象类型,由多态性机制启动正确的方法,去响应一 个一般化的消息,从而简化了消息界面和软构件连接
‘伍’ 软件复用的几种方式
软件复用的好处有很多 一、提高工作效率 这条自不必说,比如在项目A中你写一个Ajax模块 ,A完工后启动了项目B,在B中就可以直接复用项目A的模块了。一个可复用的软件可以为将来节省费用,被服用的频率越高,组件的初始开发成本就越低。 二、提高软件质量 可复用的软件总比不能复用的有更多的质量保障。因为可复用的软件在不断的复用过程中把一些bug,缺陷都很快的排除了。因此可复用的软件一定是利于系统的可维护性的。 按抽象程度的高低,可以划分为如下的复用级别: 代码的剪贴复制 利用编辑器(IDE)可以很方便的做到减少抄写代码的人力成本。这可能是入门级程序员习惯的,自发的复用软件的形式。把一个写好的工具函数自发的拷贝到另一个功能或项目中。这种方式有着明显的缺点就是他造成很多重复冗余的代码。尤其在Web前端开发中,JavaScript资源的量大小影响着客户端下载速度。好一点的复用方式可以采用继承。算法的复用各种算法比如排序都已经得到了大量的研究。几乎不需要你重新去写自己的算法,各种语言通常也实现了这些常用算法。因此你只需要直接复用。 数据结构的复用 与算法一样,类似数组、队列、栈、列表等得到了透彻的研究,只需要直接复用。 以上是传统的复用种类,下面是更高级的复用方式设计的复用设计结果比源程序的抽象级别更高,因此它的复用受实现环境的影响较少,从而使可复用构件被复用的机会更多,并且所需的修改更少。 这种复用有三种途径,第一种途径是从现有系统的设计结果中提取一些可复用的设计构件,并把这些构件应用于新系统的设计;第二种途径是把一个现有系统的全部设计文档在新的软硬件平台上重新实现,也就是把一个设计运用于多个具体的实现;第三种途径是独立于任何具体的应用,有计划地开发一些可复用的设计构件。分析的复用这是比设计结果更高级别的复用,可复用的分析构件是针对问题域的某些事物或某些问题的抽象程度更高的解法,受设计技术及实现条件的影响很少,所以可复用的机会更大。复用的途径也有三种,即从现有系统的分析结果中提取可复用构件用于新系统的分析;用一份完整的分析文档作输入产生针对不同软硬件平台和其它实现条件的多项设计;独立于具体应用,专门开发一些可复用的分析构件。
‘陆’ 构件化的软件开发方法是什么
与传统的软件开发方式相比,基于构件的软件开发方法有什么突破呢? 一、体系结构 软件体系结构代表了系统公共的高层次的抽象,它是系统设计成败的关键。其设计的核心是能否使用重复的体系模式。传 统的应用系统体系结构从基于主机的集中式框架,到在网络的客户端上通过网络访问服务器的框架,都不能适应目前企业所处的商业环境,原因是: 企业过分地依赖于某个供应商的软件和硬件产品。这种单一供应商使得企业难以利用计算供应商的免费市场,将计算基础设施的重要决定交给第三方处理,这显然不利于企业在合作伙伴之间共享信息。 不能适应远程访问的分布式、多层次异构系统。 封装的应用系统在出现某种组织需要时,难以用定制来维护系统,从而难以满足多变的需求。 不能实现分析、设计核心功能重用,最多只能实现代码重用。 如今,应用系统已经发展成为在Intranet和Internet上的各种客户端可远程访问的分布式、多层次异构系统。CBSD为开发这样的应用系统提供了新的系统体系结构。它是标准定义的、分布式、模块化结构,使应用系统可分成几个独立部分开发,可用增量方式开发。 这样的体系结构实现了CBSD的以下几点目标: 能够通过内部开发的、第三方提供的或市场上购买的现有构件,来集成和定制应用软件系统。 鼓励在各种应用系统中重用核心功能,努力实现分析、设计的重用。 系统都应具有灵活方便的升级和系统模块的更新维护能力。 封装最好的实践案例,并使其在商业条件改变的情况下,还能够被采用,并能保留已有资源。 由此看出,CDSD从系统高层次的抽象上解决了复用性与异构互操作性,这正是分布式网络系统所希望解决的难题。 二、开发过程 传统的软件开发过程在重用元素、开发方法上都与CBSD有很大的不同。虽然面向对象技术促进了软件重用,但是,只实现了类和类继承的重用。在整个系统和类之间还存在很大的缺口。为填补这个缺口,人们曾想了许多方法,如系统体系结构、框架、设计模式等。 自从构件出现以来,软件的重用才得到了根本改变。CBSD实现了分析、设计、类等多层次上的重用。图1显示了它的重用元素分层实现。在分析抽象层上,重用元素有子系统、类;在设计层上重用元素有系统体系结构、子系统体系结构、设计模式、框架、容器、构件、类库、模板、抽象类等。 在软件开发方法上,CBSD引导软件开发从应用系统开发转变为应用系统集成。建立一个应用系统需要重用很多已有的构件模块,这些构件模块可能是在不同的时间、由不同的人员开发的,并有各种不同的用途。在这种情况下,应用系统的开发过程就变成对构件接口、构件上下文以及框架环境一致性的逐渐探索过程。例如,在J2EE平台上,用EJB框架开发应用系统,主要工作是将应用逻辑,按session Bean、entity Bean设计开发,并利用JTS事务处理的服务实现应用系统。其主要难点是事务划分、构件的部署与开发环境配置。概括地说,传统的软件开发过程是串行瀑布式、流水线的过程;而CBSD是并发进化式,不断升级完善的过程。图2显示了它们的不同。 三、软件方法学 软件方法学是从各种不同角度、不同思路去认识软件的本质。传统的软件方法学是从面向机器、面向数据、面向过程、面向功能、面向数据流、面向对象等不断创新的观点反映问题的本质。整个软件的发展历程使人们越来越认识到应按客观世界规律去解决软件方法学问题。直到面向对象方法的出现,才使软件方法学迈进了一大步。但是,高层次上的重用、分布式异构互操作的难点还没有解决。CBSD发展到今天,才在软件方法学上为解决这个难题提供了机会。它把应用业务和实现分离,即逻辑与数据的分离,提供标准接口和框架,使软件开发方法变成构件的组合。因此,软件方法学是以接口为中心,面向行为的设计。图3是其开发过程。 归纳起来,CBSD的软件开发方法学应包括下面几方面: 对构件有明确的定义。 基于构件的概念需要有构件的描述技术和规范,如UML、JavaBean、EJB、Servlet规范等。 开发应用系统必须按构件裁剪划分组织,包括分配不同的角色。 有支持检验构件特性和生成文档的工具,确保构件规范的实现和质量测试。 总之,传统的软件方法学从草稿自顶向下进行,对重用没有提供更多的辅助。CBSD的软件方法学要丰富得多,它是即插即用,基于体系结构,以接口为中心,将构件有机组合,它把自顶向下和自底向上方法结合起来进行开发。 四、开发组织机构 传统软件的开发组织一般由分析员、设计员、程序员和测试员组成。对一个小的应用系统来说,一个熟练的开发人员,可能兼顾以上多个角色。但对CBSD来说,因为构件开发与应用系统集成往往是分开进行的,因此整个开发过程由六个角色来完成,他们是: 构件开发者 也是构件供货商,这些大多数是中间件构件提供(续致信网上一页内容)者。 应用构件集成者 针对某应用领域将已有构件组合成更大的构件模块或容器, 作为系统部署的基本单元。 应用系统部署者 将系统部署基本单元放入选定的平台环境或基本框架中,完成软件定制的要求。 开发平台服务器供应商 提供服务器、操作系统和数据库等基本软件。 应用系统开发工具供应商 提供构件公共设施服务。 系统管理员 配置硬件、网络和操作系统,监督和维护应用系统者。 这六个角色的工作专业性很强,要兼顾成为多面手很不容易。目前已形成构件开放市场,而且还很火红。这也是当今软件人才大战所遇的一个困惑。因此,在CBSD中,如何组织好开发队伍尤为重要,必须按本企业所具备人才来组织。特别重要的是:开发初期必须选好标准框架,以及统一的开发指导方针,保证在整个开发过程中,各角色能随时互相沟通。一般来说,CBSD的人员素质决定了构件的重用率。 五、构造方法 传统应用软件的构造是用白盒子方法,应用系统的实现全在代码中,应用逻辑和数据粘结在一起。而CBSD 的构造是用白盒子和黑盒子相结合的方法。 基于构件的框架是用两个概念来支持演变:第一个概念是构件有很强的性能接口,使构件逻辑功能和构件模型的实现都隐藏起来。这样,只要接口相同,构件就可以被替换。 第二个概念是隐式调用,即在基于构件的框架中,从来不直接给构件的接口分配地址,只在识别构件用户后才分配地址。因此,构件用户只要了解接口要求和为构件接口提供的引用后的返回信息 (该引用可能是一个构件,也可能是一个构件代理。对构件用户来说,构件代理就是构件,不用区分) 。 构件接口的信息并不存入构件内,而是存入构件仓库或注册处。这样才能保证构件替换灵活,并很容易利用隐式调用去重新部署构件。由于构件的实现对用户透明,因此也使构件能适应各种不同的个性化要求。为此,构件提供自检和规范化两个机制。自检保证在不了解构件的具体实现时,就能获得构件接口信息。例如,JavaBean提供的自检机制是Reflection和BeanInfo, 通过Reflection 可直接获得Bean构件的全部方法,通过BeanInfo可直接获得构件的许多复杂信息。 规范化允许不访问构件就可以修改它,如JavaBean提供的规范化是property sheet和customizer(定制器)。 通过property sheet提供一组简单参数,修改Bean的属性。复杂的修改由用户通过定制器设置参数完成。
‘柒’ 什么是软件重用
软件重用,是指在两次或多次不同的软件开发过程中重复使用相同或相似软件元素的过程。软件元素包括程序代码、测试用例、设计文档、设计过程、需求分析文档甚至领域知识。通常,可重用的元素也称作软构件,可重用的软构件越大,重用的粒度越大。
‘捌’ 什么是可重用构件
具有高度的可塑性具备适应特定需求的而扩充或修改已有的构件。修改或扩... 软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题
‘玖’ 可重用的软件成分包括哪些如何重用这些成分
因为软件重用技术众多,一种重用技术可以包括多种重用形式。比如说:框架即可以包括代码级重用,也可以包括设计级重用。有一种分类方法是按照软件重用所应用的领域范围,把重用划分为两种:横向重用和纵向重用。
1. 横向重用是指重用不同应用领域中的软件元素,例如数据结构、分类算法、人机界面构件等。标准函数库是一种典型的原始的横向重用机制。
2. 纵向重用是指在一类具有较多公共性的应用领域之间进行软部品重用。因为在两个截然不同的应用领域之间实施软件重用非常困难,潜力不大,所以纵向重用才广受瞩目,并成为软件重用技术的真正所在。纵向重用活动的主要包括以下几个步骤:
1) 首先进行域分析。根据应用领域的特征及相似性预测软部件的可重用性。
2) 然后进行软部品的开发。一旦确认了软部件的重用价值,即可进行软部品的开发并对具有重用价值的软部品进行一般化,以便它们能够适应新的类似的应用领域。
3) 最后,软部件及其文档即可进入软部品库,成为可供后续项目使用的可重用资源。
‘拾’ 软件重用的基本要求是什么
软件重用,是指在两次或多次不同的软件开发过程中重复使用相同或相似软件元素的过程。软件元素包括程序代码、测试用例、设计文档、设计过程、需要分析文档甚至领域知识。通常,可重用的元素也称作软构件,可重用的软构件越大,重用的粒度越大。 为了能够在软件开发过程中重用现有的软部件,必须在此之前不断地进行软部件的积累,并将他们组织成软部件库。这就是说,软件重用不仅要讨论如何检索所需的软部件以及如何对他们进行必要的修剪,还要解决如何选取软部件、如何组织软部件库等问题。因此,软件重用方法学,通常要求软件开发项目既要考虑重用软部件的机制,有要系统地考虑生产可重用软部件的机制。这类项目通常被称为软件重用项目。 使用软件重用技术可以减少软件开发活动中大量的重复性工作,这样就能提高软件生产率,降低开发成本,缩短开发周期。同时,由于软构件大都经过严格的质量认证,并在实际运行环境中得到校验,因此,重用软构件有助于改善软件质量。此外,大量使用软构件,软件的灵活性和标准化程度也可望得到提高。