没有合适的资源?快使用搜索试试~ 我知道了~
后端研究-基于Java的构件获取工具的研究.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 78 浏览量
2022-06-25
03:08:45
上传
评论
收藏 3.12MB PDF 举报
温馨提示
试读
59页
后端研究-基于Java的构件获取工具的研究.pdf
资源推荐
资源详情
资源评论
基于Java的构件获取工其的研究
第一章 引言
进入九十年代以来,软件系统的规模变的越来越大,结构也越来越复杂。
与此同时,软件的寿命也越来越长。过去的软件生命周期模型认为软件在开发完
成之后,经过若干年的维护过程,会慢慢退出历史舞台,被新的软件系统所取代,
然而,当前的生命周期模型趋于把系统看作能够随时间而进行连续演化的模型。
同时,还可以看到,从头开始建造的大系统数量在急剧减少,很多遗产系统
正在被逐步地利用起来。但利用遗产系统的同时,会遇到许多困难。由于时间的
流逝,这些寿命已有 10-25年的系统具有许多这样或那样的缺点。而其中最重要
的一个问题就是:现有的遗产系统没有好的可演化性,这样就使得无法利用简单
的方法把遗产系统转化为一个新的系统。
近几年来,人们开始认识到,要真正实现软件的工业化生产方式,保证软件
生产的高效率和高质量,软件复用是一条现实可行的途径。对软件复用技术的研
究己成为软件工程界的主攻方向之一。
1.,软件复用的概念
所谓软件复用是指在开发新的应用系统时使用以前开发的软件资源,如设
计、代码、文档等,从而提高系统开发效率及软件质量川。
软件复用的概念是在 1968年NATO软件工程会议上由Mcllroy第一次提出
的间。在其后二十多年中,己有了许多成功的复用实践.随着面向对象技术的流
行,软件复用成为人们关注的焦点,面向对象技术为软件复用提供了更强有力的
支持,带来了更多的复用机会。
软件复用通常可分为两类:产品复用和过程复用。产品复用指复用己有的软
件构件,通过构件的集成 (组装)得到新系统。过程复用指复用己有的软件开发
过程,使用可复用的应用生成器自动或半自动的生成所需系统。完全通用的过程
复用意味着软件生产的自动化,这在目前还是难以实现的。目前主要的研究课题
主要集中在产品复用上。
就产品复用而言,又可分为直接复用和间接复用两类。直接复用是指对那些
可表示为某种程序设计语言代码的构件的复用。间接复用是指对需求规约、功能
规约、设计思想、测试计划等文档型知识的复用。
对已有软件资源的复用也存在两种情形,一种情形是对已有构件不作修改直
接进行复用,这种复用称为黑盒复用;另一种情形是指已有构件并不能完全符合
用户需求,需要用户根据需求进行适应性修改后才可使用,这种复用称为白盒复
裱于javu的构件获取工儿的研究
用。在大多数情况下,对构件的复用是白盒复用1’}。
Caper Jones定义了十种可能被复用的软件要素f}l;① 项目计划:软件项目
计划的基本结构和许多内容都可以跨项目复用。这样可以减少制定计划的时间,
也可以降低与建立进度表、风险分析及其他特征相关的不确定性。② 成本估计:
由于不同项目中常包含类似的功能,所以有可能在极少修改或不修改的情况 下,
复用对该功能的成本估计。③ 体系结构:即便应用领域千差万别,但程序和数
据体系结构往往大同小异。因此,可以创建一组通用的体系结构模板 (例如事务
处理结构),将这些模板作为可复用的设计框架。④ 需求模型和规格说明:类和
对象的模型和规格说明显然可以复用。此外,用传统软件工程方法开发的分析模
型 (如数据流图)也可以复用。⑤ 设计:用传统方法开发的体系结构、数据、
接口和过程化设计,以及面向对象方法中对类和对象的设计都可以复用。⑥ 源
程序代码:验证过的程序构件 (用兼容的程序设计语言书写)可以复用。⑦ 用
户文档和技术文档:即便特定的应用不同,也经常有可能复用用户文档和技术文
档中的大部分内容。⑧ 用户界面:这可能是最广泛被复用的软件元素。如经常
复用GU[的软件构件,因为它可占到一个应用的60%的代码量,所以复用的效
果最明显。⑨ 数据结构:经常被复用的数据结构包括:内部表、列表和记录结
构,以及文件和完整的数据库。⑩ 测试用例:只要将设计或代码构件定义成可
复用构件,相关的测试用例就应当成为这些构件的 “从属品’,。
当前,软件复用已经成为软件工程的重要部分,不但是对编程本身复用,而
是涉及到开发软件的每个阶段,它的不断发展完善必将成为软件开发的主流。
1. 2构件的概念
北京大学杨芙清院士等在《软件复用与软件构件技术》中对构件进行了如下
定义:构件 (Component)是指应用系统中可以被明确辨识的构成成分。
软件构件技术是支持产品复用的核心技术,其主要研究内容包括:
1 构件的获取:有目的的构件生产和从已有系统中挖掘、提取构件;
2. 构件模型:研究构件的本质特征及构件间的关系;
3 构件描述语言:以构件模型为基础,解决构件的精确描述、理解及组装
问题 (构件的描述涉及到内部特性即实现方式的描述和外部特性的描
述,本文中仅研究对外部特性的描述);
4. 构件分类与检索:研究构件分类策略、组织模式及检索策略,建立构件
库系统,支持构件的有效管理;
5 构件复合组装:在构件模型的基础上研究构件组装机制,包括基于源代
码的组装和基于构件对象互操作性的运行级组装;
摧于」Uva的构件获取丁几的研究
6. 标准化:构件模型的标准化和构件库系统的标准化。
构件的形态、层次和表示
C1)构件的形态
构件的典型的构件形态包括‘”:
a)类 (Class):以类为单位进行封装而得到的构件,这是最基本的构件单
兀 。
h}类树 〔C}二sTr(.e):以一个抽象类为根,若干继承该抽象类的具体子类
(也可能有抽象子类)为节点的一裸类树。这样的一棵类树被封装为构件,对外
实现了具体子类的隐蔽,抽象根类提供了该类树的对外接口规约,对具体子类的
操作 (删除或增加)以及子类对象的创建均由抽象类控制,该类树的客户无需知
道类树结构和具体子类。
c) 框架 (Framework):一个框架由一组协作构件组成,阐明了整个设计、
构件间依赖及成员构件的责任分布。这些成员构件通常是子框架、类树或类,大
多以抽象的形式出现,实现细节放在具体子类中,构成了一个抽象设计,不同的
具体子类可产生对设计的不同实现。框架作为构件使得用户可以复用设计,用户
通过具体子类的嵌入而在框架中加入特殊功能。
d?设计模式 (Design Pattern):设计模式是对经验的显式表示,每个设计
模式描述了一个反复出现的问题以及该问题解法的核心内容,它命名、抽象并标
识了一个通用设计结构的关键部分,使得它可以用来创建一个可复用的面向对象
的设计。设计模式作为可复用构件体现了较高层次的设计思想复用。
的构架(Architecture):应用系统体系结构的显式表示。构架具有领域相
关性,构件根据构架进行复合而生成可运行的系统。构架是一类特殊的构件,可
视为框架用于描述一个应用系统时的极限状态。
上述各类形态构件间具有密切关系,通常,一个构架山若千框架所构成,框
架又可包含子框架、类树、抽象类和具体类,类树由抽象类和具体子类构成,类
是最荃本的构件单元。在这个意义上,构件的形态体现了构件粒度上的差异。一
个框架通常含有多个设计模式的采用,每个设计模式都有若千个框架作为它在不
同领域的具体实现。
(2)构件的层次
可复用构件根据其产生于开发过程的不同阶段而处于不同的抽象层次。构件
可以分为四个层次。
分析件:指系统需求规约和功能规约。
基十 JJV“的构件获取工具的研究
设计件:指系统体系结构和设计方案。
编码件:山具体程序设计语言编制的源代码构件。
测试件:测试计划和测试案例。
C3)构件的表示
不同层次的构件具有不同的表示媒介和手段,如图形、复合文档、正文、伪
码、编程语 言、目标码等。
可复用软件构件
可复用软件构件 (Reusable Software Component -RSC)一词已被广泛引用,
但是不同的项目对于构件或软件构件有不同的定义。在这里将可复用构件定义为
“软件产品信息中可以明确识别并将会被用于开发其他软件系统的成分”。创建
RSC的目标是适用、高效、易于使用和易于维护。RSC所应具有的最重要的性质是
可复用性 (Reusability),可复用性可以被看作是以下两种性质的结合:有用性
(Usefulness),表示构件满足某种公共的需求或者提供了某种经常被用到的服
务.可用性((Us<ibi I i ty),表示构件具有较高的质量,易于理解和使用。这两个
性质相互关联而又往往是冲突的,有用性必然要求对构件的特殊用法的细节进行
抽象,在具体使用时就不得不再寻找和确定这些细节,这就降低了构件的可用性
目前有许多软件组织在不同的领域中从事软件系统的开发工作。某个领域中
的大量的软件系统在开发目标、应用领域、开发方法等各方面具有许多相通的地
方,这使得将基于构件和构架的软件复用技术应用到软件开发中来具有很强的可
行性和现实意义。通过对软件开发进行领域分析、构架建立、构件选取和组装等
一系列工作,可以在很大程度上减少重复劳动,降低开发复杂程度,同时可以满
足多个应用领域的要求。能够利用在大型构架构件库的支持下,利用现有的、质
量好的、可靠性强的构件和构架,按照大规模软件开发的工程规范进行开发。这
样不仅提高了开发效率,减少了开发所需的人力和物力,也使得开发过程更加有
序和规范,有利于开发过程的管理和改进.
1. 3逆向工程
很多软件公司都拥有很多遗产系统,他们在开发新的产品时希望能够尽可能
对遗产系统加以利用以减少开发成本,提高开发效率。这个工作首先是基于逆向
工程技术来进行的。
基于 Eava的构件获取工且的研究
为了找到遗产系统中的可复用的部分,首先需要对遗产系统加以理解。辅助
程序理解的技术有多种,如手工浏览源代码,静态或动态分析目标系统,或者收
集和分析系统的度量数据。对大型系统,通常用半自动方法来完成逆向工程,使
用CASE工具“解析((parse).现有的程序代码。
Brooks的领域映射理论把编程过程描述为问题域到实现域的构造映射,程序
理解则是逆向构造实现域到问题域的映射,是一个由期待驱动,逐步创建、证实
和精化假设的过程。程序理解的效率取决于所理解的程序,理解人员的领域经验
和所采用的理解辅助技术。[a]
对于企业而言,尤其是那些大型企业公司,他们的信息系统都己经使用了多
年,在某些公司中某些系统的复杂度高、人员流动率高而且大部分软件开发文件
有没有得到妥善的保管。文件的遗失及人员的流动都将造成系统的设计资料的流
失,为了获得更为详细的系统设计信息,也需要通过逆向工程借助于程序源代码,
重新获得系统的设计信息。将现有的系统整理分析后再经过抽象化的分析过程,
提取出原有系统的设计结构等信息,并进而获得可重用的软件构件。
逆向工程可用于低级的抽象层次。例如把程序二进制代码转换为源代码,但
主要用于将程序源代码转换成为更高抽象层次的表示,如控制流图、数据流图和
类关系图等。
,。4构件获取技术的发展
从现存的系统中获取可复用的部分,并将其封装为构件正在成为软件工程的
研究热点之一
最初的构件获取工具是针对由过程式语言开发的项目,将其中的可复用部分
封装成为构件。比较典型的针对使用过程式语言开发的项目进行构件获取的工具
包括AssetMiner和HotRod等,它们是针对遗产系统中的COBOL代码进行分析,
找出其中的一些可以复用的子过程或代码的切片,对其进行重构,将其封装成为
可复用的构件。
随着使用面向对象语言开发的项目越来越多,一些针对面向对象语言的构件
获取工具被开发出来,比较典型的包括:JBPAS和JExtractor等。
W AS是通过对项目中的类进行可复用性度量找出一些可以复用的类,然后
通过再工程工具将其封装成为构件。JBPAS首先通过概念建模建立面向对象程序
的概念模型,然后,用解析器分析源代码,按照概念模型抽取信息并存入程序信
息库中。在信息浏览和使用上,建立一组基于程序信息库的工具,包括设计文档
逆向生成工具、测试支持工具、构件提取工具以及度量工具等。W AS的前端分
剩余58页未读,继续阅读
资源评论
programhh
- 粉丝: 8
- 资源: 3838
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功