




已阅读5页,还剩55页未读, 继续免费阅读
(计算数学专业论文)软件复用技术的研究及其应用.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件复用技术的研究及应用 摘要 随着计算机技术的迅猛发展,传统的软件开发方法已难以适应复杂和多变的应用需 求,如何进一步提高软件的开发效率和质量已成为人们普遍关注的热点,而软件复用技 术是一种提高软件开发效率和软件质量的有效手段。 本文首先对软件复用技术及其应用的发展历史、研究现状和相关概念进行了系统的 介绍,详细论述了软件构件、业务组织等软件复用的关键技术,对软件复用所采用的三 种常用构件模型( c o m 系列、c o r b a 、e j b ) 进行了分析比较,指出了不同构件模型的适 用范围;针对软件复用技术的特点,采用有效的业务组织是发挥软件复用效益的重要保 证,本文从软件复用的管理技术、应用者复用技术和生产者复用技术等三方面,阐述了 软件系统开发过程中基于软件复用的业务组织方法。依据上述理论研究的成果,本文结 合m i s 的开发实践,论述了软件复用在m i s 生命周期中的实际应用,重点介绍了几类代 码复用的实现方式,并分析了m i s 开发采用软件复用技术后所取得的实际效益。 在软件开发过程中广泛采用软件复用技术具有良好的前景,但要使软件复用从单纯 的技术和开发人员个人的自发行为,变成为软件系统工程技术的有机组成部分,并将软 件复用技术融入到软件生命周期全过程中,还有大量工作要做。 关键词:软件复用、构件、构件模型、构件库、m i s 、领域工程 软件复用技术的研究及应用 a b s t r a c t w i t ht h ed e v e l o p m e n to fc o m p u t e rt e c h n i q u e s ,o l ds o f t w a r em e t h o d sa r ed i f f i c u l tt oa d a p t t oa p p l i c a t i o nw i t hm o r ec o m p l i c a t i o na n dc h a n g e a b i l i t y m u c ha r e n t i o nh a sb e i n gp a i dt o s o f t w a r er e u s ei nt h ef i e l do fs o f t w a r ee n g i n e e r i n g ,a n di ti sap r a c t i c a la n df e a s i b l ea p p r o a c h t or e a l i z i n gs o f t w a r es t a n d a r d i z a t i o n ,r a i s i n gs o f t w a r ep r o d u c t i v i t y ,a n di m p r o v i n gs o f t w a r e q u a l i t y f i r s t ,w ei n t r o d u c et h ec o n c e p ta n dh i s t o r yo fs o f t w a r er e u s e ,a n ds t u d yi nd e t a i lt h em a i n s o f t w a r er e u s et e c h n i q u e s :c o m p o n e n tm o d e la n do r g a n i z a t i o nf o rs o f t w a r er e u s e w e i l l u s t r a t et h r e ec o m n l o nc o m p o n e n tm o d e l ( c o ms e r i a l ,c o r b a ,e j b ) ,a n dp o i n to u tt h e i r d i f f e r e n c e sa n dt h e i rr e s p e c t i v eu s e r s i no r d e rt oa c h i e v es o f t w a r er e u s ei nt h ef i e l do f s o f t w a r ee n g i n e e r i n g ,t h r e es o f t w a r er e u s et e c h n i q u e sa r ed e s c r i b e d :r e u s em a n a g e m e n t t e c h n i q u e s ,c o n s u m e rr e u s et e c h n i q u e sa n dp r o d u c e rr e u s et e c h n i q u e s b a s e do nt h et h e o r yr e s e a r c h ,t h ew r i t e rh a sm a k ew i d ea n dd e e pp r a c t i c ei nt h ef i e l do f m i se n g i n e e r i n g ,a r i di l l u s t r a t e ds o m er e u s em e t h o d sb yc o d e ,a n da n a l y s e dt h ep o w e r f u l e f f e c to ns o f t w a r er e u s e s o f t w a r er e u s ei sp o w e r f u la n ds i g n i f i c a n tt os o f t w a r ee n g i n e e r i n g ,b u tw eh a v eal o to f w o r kt od oo nh o wt oc o n f o r mt h es i m p l yt e c h n i q u e sa n di n d i v i d u a la c t i o ni n t oao r g a n i cp a r t o fs o f t w a r ee n g i n e e r i n g k e y w o r d s :s o f t w a r er e u s e ,c o m p o n e n t ,c o m p o n e n t m o d e l ,c o m p o n e n tl i b r a r y , m i s ,d o m a i ne n g i n e e r i n g 软件复用技术的研究及应用 第一章前言 随着计算机技术的不断发展,计算机已经对人类社会产生了前所未有的影响,许多 人的工作和生活已经离不开计算机,而软件是计算机系统中的关键部分,各行各业包括 个人都对软件寄予更多的希望。但面对各种不断发展变化的复杂和新的需求,传统的软 件开发方法无论是在软件开发效率上还是软件质量上都显得力不从心,软件业面临着越 来越大的压力。 1 1 软件开发所面临的挑战 在过去的l o 多年里,软件开发逐渐发展成为一个工程学科,鼓励使用基于良好数学 原理的、有强大经验基础支持的软件开发方法。这已经被软件经验工厂( s o f t w a r e e x p e r i e n c ef a c t o r y ) 、软件能力成熟度模型( c ) 、i s 0 9 0 0 0 等软件认证工作以及一大 批新的软件开发方法、工具和技术所支持。虽然这其中每一种创新都提高了开发和维护 软件的能力,但没有什么迹象表明,软件开发组织所面临的问题已经减少。 出现这些问题的一个主要原因是,软件系统的规模和复杂程度都在日益增长,对那 些负责提供和维护软件系统的人们来说,主要面临以下几个方面的问题: ( 1 ) 软件危机 软件危机最早出现于六十年代末期,主要表现为:软件质量差,可靠性不能保证; 软件开发进度不易控制,周期延长;软件维护困难,维护人员和维护费用不断增加;软 件开发成本难于控制,在成本预算内往往不能完成任务。总之,软件提供者不能按照要 求的那样完成软件系统的需求。 ( 2 ) 计算机软件的复杂性持续增长 与以前相比,目前软件系统部署在更为广泛的应用领域中,包括科研、国防、制造 业、金融管理和娱乐业等,同时还必须在精确性、可靠性、安全性、方便性等性能上达 到新的要求。这种复杂性既体现在系统的规模上,也体现在为了满足大量的功能性和非 功能性需求所带来的操作的复杂性上。 ( 3 ) 计算机技术的快速发展 近年来,开发和部署软件系统的技术有了很多改进,从过去的单机、客户服务器应 用程序,到现在的n 层分布式系统,以及未来可能的面向移动的、服务的网格应用,这 种计算机技术变化的速度增加了具有较长生命周期项目的风险。 ( 4 ) 业务需求的不断变化 软件复用技术的研究及应用 对任何系统来说,变化都是不可避免的。许多组织可能会面临政府政策的变化、组织 间的收购和兼并等因素而导致业务环境的变化,计算机系统自身必须随之改变阻继续提 供适当的功能。同时,当业务需求变化时,不能轻易放弃在开发和部署计算机技术上所 做的巨大投资一许多组织都有多年以前开发的关键系统在运行,这必将导致越来越复 杂的解决方案。 显然,当软件系统达到这样的规模和复杂程度以后,软件生产中的问题变得非常重 要,在规定的预算之内按时完成这样的系统有很多的困难。要设 十一个系统,使它可以 在操作环境改变、用户需求改变和错误暴露出来的时候很容易地演化,这将是一个更艰 巨的任务。这些是任何参与软件系统的开发、部署、维护的组织所面临的挑战。 美国曾经对全国范围内8 0 0 0 个软件项目做了一次跟踪调查,结果:有i 3 的项目没 有完成,而在完成的2 3 的项目中,又有i 2 的项目没能成功实拖。另一个统计结果: 8 4 项目未能按期、按预算或按预先要求的特性完成,所有项目中有3 0 的项目在未完成 之前就被取消了。f 1 0 1 2 本文研究的背景 面对越来越复杂、业务及技术变化逐步加快的软件系统,任何参与软件系统的开发、 部署、维护的组织都希望能在软件的生产效率、可维护性、强壮性等方面得到进一步的 提高和保证,从而达到降低开发成本、缩短开发周期以及保证软件质量的效果。据美国 2 m ) , i 、进行的一项调查结果显示,同类软件公司设计的商业、银行及保险业务应用系统中, 7 5 以上的功能是重复的,重复劳动使软件的社会成本居高不下。而软件复用思想的提 出及软件复用技术的发展,对软件界乃至整个计算机技术的发展有着深远的历史意义和 现实意义。 软件复用技术并不是什么新的概念,早在1 9 6 8 年c i i r o y 便在n a t 0 软件工程会议 上,正式提出了软件复用的概念,甚至可以说复用和程序设计本身具有同样长的历史。 尽管如此,软件复用技术并没有得到很好的发展和应用,直到最近几年才有了更多的软 件复用技术,使软件复用真正运用到实际的软件开发过程中。本文研究的背景主要是: 基于软件复用的优点,以及软件复用已获得新的支持。 1 2 1 软件复用的优点 经过实践证明,软件复用可以有效地提高软件开发效率和软件质量,是解决“软件 危机”的一条比较现实可行的途径。软件复用的优点可归纳为下列六个方面m 1 : 提高软件生产率 软件复用技术的研究及应用 软件复用最明显的好处在于提高生产率,减少开发代价。生产率的提高不仅体现在 代码开发阶段,同样适用于分析、设计及测试等其它阶段。 提高软件质量 使用高度优化、在实践中经受过检验的可复用构架、构件构造系统,可以提高系统 的性能和可靠性。 减少系统维护量 使用优化、检验过的构件,减少了很多可能的错误的发生;而多个系统间构件的重 复使用,也使整个组织所需要的系统维护量减少了。 提高互操作性 软件复用一个更为专业化的好处,在于提高了系统间的互操作性。相同的构架、接 口可以有效地实现系统间的互操作。 支持快速原型 利用可复用构件库可以快速有效地构造应用系统的原型,以获得用户对系统功能的 反馈,缩短系统的开发周期。 减少培训开销 使用相同的构架、构件构造和实施不同的系统,可以使开发和维护人员减少对不同 技术所需要的培训。 1 2 2 软件复用已获得新的支持 软件复用发展到现在,已有3 0 多年的历史,但大多数“复用先导”都没有成功,其 主要原因有以下几个:构件是变化多样的并且具有不确定性,构件编目是困难的;构件 的接口和行为定义得不好;软件复用的价值被低估了;以及软件组织没有充分投资。 在2 0 世纪9 0 年代中期,“基于构件的开发”的提出使软件复用得到大规模的复兴, 新一代面向复用的方法比早期的尝试更有效,这些变化主要体现在“ : 在促进基于构件的开发( c b d ) 方面,面向对象语言比第三代语言( 3 g l ) 具有更 好的结构。j a v a 、c + + 、v b 、e i f f e l 等具有更大的影响,这些o o 语言在软件开发界的 主流中立足,并且得到越来越多的类库和构件库的支持。 特定领域库和框架开始出现。对特定领域的应用程序的分析,可以得到该领域的 规范构架及构件,并使构件的编目和组合更加易于管理;同时,可以在某种程序上预定 义集成代码。现在基于框架的例子包括i b m 的s a nf r a n c i s c of r a m e w o r k 和微软的 d i g i t a li n t e r n e ta r c h i t e c t u r e ( d n a ) 。 面向复用的技术得到商业组织的支持。这些组织利用其强大的技术支持、市场及 发布渠道,扩大了软件复用思想的传播和使用。一些公司已经发布了面向复用的策略和 软件复f e i | 技术的研究及应用 工具,为基于复用的应用程序开发者提供一些简单、有效的工具和技术,这些公司包括 s t e r l i n g s o f t w a r e 、p o w e r s o f t 、c e n t u r a 以及n e u r o d a t a 等等。 w e b 基础设施正在成熟。通过i n t e r n e t ,人们可以搜索和调用一批独立开发的应用 程序构件,通过价格和性能的比较分析,有选择地利用它们构建自己的系统。 学术界的切实实际的研究,使人们对复用技术,包括软件框架、构件接口、构件 集成等理论有了更深的理解和认识。 1 3 本文的研究目的 面对各种不断发展变化的复杂和新的需求,软件开发方法无论是在软件开发效率上 还是软件质量上都必须有一个大的提高,如何快速、高质量地开发满足不同需求的软件, 己成为软件行业关注的一个问题。 软件复用技术的实质在于能显著提高软件的生产效率,增强软件可维护性和强壮性, 从而达到延长软件的生命周期,降低软件开发成本和缩短开发周期的效果,因此对软件 复用方法的研究一直是软件工程中的重点和热点。本文希望通过对软件复用技术的研 究,结合自己在实践过程中所获取的经验和教训,在软件开发和维护的过程中不断树立 软件复用的意识,把软件复用技术融入到软件开发的整个生命周期过程中,使软件复用 从单纯的技术或开发人员的自发行为,变成软件系统工程技术和有组织的开发过程。 同时,传统的软件复用一般是指程序源代码的复用,而这不能给软件开发效率带来 数量级上的提高。如何将软件复用的对象,从早期的代码复用扩展到对软件开发过程中 一切有价值的信息的复用,包括需求分析、需求规约、设计、源代码、测试计划和测试 用例等,是我们努力的目标。最终使我们的工作能在不断的积累中获取更大的收获。 1 4 本文的研究内容 软件复用作为软件开发过程中的一个重要技术,经过多年的努力已得到很好的发展 和应用。本文将通过软件复用技术的系统分析,对基于复用的m i s 项目开发的关键技术 进行了较深入的研究和实践,为基于复用的软件项目开发提供参考。 本文的主要内容包括: 第一章:通过分析软件复用的优点及目前所获得新的支持,论述了软件复用是提高 软件开发效率和质量的有效手段,说明研究软件复用技术的必要性,并进一步阐述了本 文研究的目的和内容。 第二章:对软件复用技术的概念、发展历史、研究现状、相关技术进行了系统介绍, 从不同角度分析软件复用技术在软件开发过程中的不同体现,包括复用对象、复用范围 4 软件复用技术的研究段应用 和复用方式。 第三章:详细论述了软件复用的构件模型及规范,列举了目前所采用的三种常用构 件模型( c o m 系列、c o r b a 、e j b ) ,对它们的实现原理、技术特点、发展过程进行了全面 剖析,简单分折了三种构件模型的优缺点,指出了不周构件模型的主要差别及各自的适 用范围。 第四章:针对软件复用技术的特点,介绍基于复用的软件开发的有效的业务组织方 法。本文将从软件复用的管理技术、应用者复用技术和生产者复用技术等三方面,阐述 如何将软件复用技术融入软件系统开发过程,说明实施软件复用的细节。 第五章:在分析m i s 特征的基础上,论述了软件复用在开发m i s 中的实际应用,举 例说明了几种复用的实现方式,归纳了基于复用的m i s 开发模型及实施步骤,并总结了 m i s 开发采用软件复用技术后所取得的经验和效果。 第六章:对本文所论述的理论和应用进行了总结,强调了软件复用技术是改善软件 开发效率和质量的有效手段,并进一步展望了软件的构件化开发和软件复用的发展趋 蛰。 软件复用技术的研究及应用 第二章软件复用概述 2 1 软件复用的相关概念 为了更好地了解软件复用技术,首先让我们来熟悉软件复用的相关概念m : 软件复用( s o f t w a r er e u s e ) 指在两次或多次不同的软件开发过程中重复使用相 同或相似软件元素的过程。 软件构件( s o f t w a r ec o m p o n e n t ) 一软件构件是一个独立发布的功能部分,可以通 过它的接口访问它的服务,可被用来构造其它软件,或者能在软件开发过程中 发挥某种作用。 可复用性( r e u s a b i l i t y ) 一软件构件可以被复用的程度或范围。遵循一个适当的设 计和编码标准将增强构件的可复用性。 复用使用者( r e u s ec o n s u m e r )使用软件复用构件构造新系统的个人或组织。 复用生产者( r e u s ep r o d u c e r ) 识别、建立、管理软件复用构件的个人或组织。 可移植性( p o r t a b i l i t y ) 一原来在一台计算机和操作系统上开发的软件构件可以在 另一台计算机和操作系统上使用的程度。若构件可移植性好,则它的复用潜力 就大。 软件领域( s o f t w a rd o m a i n ) 一指一类相关的软件应用。领域可划分为“垂直的” ( v e r t i e a l ) 和“水平的”( h o r i z o n t a l ) 。“垂直的”领域包括某个应用范围内的 所有开发层次( 如m i s 领域) ,而“水平的”领域则指一种特定类型的、不限于 某类应用的软件过程( 如对堆栈的操作) 。一般来说,构件在同一个领域中复用 的潜力较大。 领域分析( d o m a i na n a l y s i s ) 一对一个选定的领域进行分析以标识出其中通用的结 构和功能,目的是提高复用的潜力。 构件库( c o m p o n e n tl i b r a r y )用来组织、存储和管理可复用构件,并向使用者提 供必要的检索工具。 检索系统( r e t r i e v a ls y s t e m ) 一支持可复用软件构件分类和检索的自动化工具。 软件生命周期( s o f t w a r el i f ec y c l e ) 一软件系统在开发和配置时所经历的一系列 阶段。尽管不同项目在具体阶段上会有差别,但通常都会包括下列阶段:需求 分析、设计、编码、测试和维护。 软件复用技术的研究及应用 2 2 软件复用的发展过程 软件复用并不是一个新概念,已有几十年的发展历程,大致可分为以下四个研究、发 展阶段 2 4 : ( 1 ) 1 9 6 8 一1 9 7 8 年:萌芽、潜伏期 在1 9 6 8 年德国g a r m i s h 举行的n a t o ( 北大西洋公约组织) 软件工程会议上,d o u g h m c i l r o y 在其论文“m a s sp r o d u c es o f t w a r ec o m p o n e n t s ”中提出软件复用概念。希望通 过代码复用实现软件开发的大规模生产。m c i l r o y 设想软构件可根据它们的通用性、性 能、应用平台等进行分类,使复杂的软件系统可以象硬件设计一样,通过标准的构件进 行识别、组装,这也是软件复用思想的雏形。但以后的十年,软件复用的研究并未取得 实质性的进展。 ( 2 ) 1 9 7 9 1 9 8 3 年:再发现期 1 9 7 9 年l a n e r g a n 发表论文,对其在r a y t h e rm i s s i c ed i v i s o n 的一项软件复用项 目进行总结,使得软件复用技术重新引起了人们的关注。l a n e r g a n 项目小组分析了6 0 0 0 个c o b o l 源程序,发现设计和代码中有6 0 冗余,这些设计和代码经过标准化处理而被 复用。以后的几年,其他软件工程者也通过研究,发现商业、金融等系统的大部分逻辑 结构和设计模块,通过重新设计和标准化而得到较高的复用率。 ( 3 ) 1 9 8 3 1 9 9 4 年:发展期 1 9 8 3 年,h e db i g g e r s t u f f a 和m a np e t is 在美国的n e w p o r t 组织了第一次有关软 件复用的研讨会,随后在1 9 8 4 、1 9 8 7 年,美国i e e et r a n s a c t i o n s o i ls o f t w a r e e n g i n e e r i n g 和i e e es o f t w a r e 分别出版了有关软件复用的专辑。1 9 9 1 年第一届软件复 用国际研讨会( i w s r ) 在德国举行,之后在1 9 9 3 年又举行了第二次研讨会。在此期间, 欧洲实施了几个有关软件复用的重点项目,如e s f ( e u r e k as o f t w a r ef a c t o r y ) ,主要目 标是提供软件复用的工具支持。 ( 4 ) 1 9 9 4 年至今:走向成熟期 1 9 9 4 年的软件复用国际研讨会议改称软件复用国际会议,此时软件复用技术己引起 了计算机科学界的广泛重视,越来越多的人投入到这一技术的研究中。面向对象技术的 崛起给软件复用技术以耨的希望,出现了类库、构件等新的复用方式,微软的a c t i v e x 是其典型代表。互联网的出现以及由此引发的全球化分工,给软件复用技术的应用提供 了又一次良好机遇,很多学者正着手研究网上软件类库的实现、应用软件的网上组合生 产等问题,这一切都预示着软件复用技术正逐步走向成熟。 软件复用技术的研究及应用 2 3 国内外研究现状 国际上,软件复用在领域工程、构件及构件库的标准化、构件组装技术、基于复用 的软件开发过程和复用成熟度模型等方面取得了重大成功。如:卡内基梅隆大学的软 件工程研究所( c 叫s e i ) 提出了面向特征的领域分析方法( f e a t u r e o r i e n t e dd o m a i n a n a l y s i sm e t h o d 一一f o d a ) ,并将该方法成功地运用于美国空军运动控制等领域。美国 军方与政府资助的项目中,已建立了若干构件库系统,如:c a r d s 、a s s e t 、d s r s 等。s t a r s 项目组于1 9 9 2 年提交a l o a f ( a s s e sl i b r a r yo p e na r c h i t e c t u r ef r a m e w o r k ,开放体系 结构的构件库框架) v e r s i o n1 2 ,这一报告体现了a l o a f 对可复用构件库系统的认识, 并就此实现了a l o a f 规约作为该参考模型的实例。c a l d i e r i 和b a s i l i 提出了基于复用 的软件开发过程。i b m 和l o r a lf e d e r a ls y s t e m 公司研究出了复用成熟度模型等等。 国外大型软件公司在所提供的集成开发环境中也隐含有软件复用技术,为开发者提 供了使用方便、性能可靠的软件构件。例如,m i c r o s o f t 公司的系列可视化产品、e s r i 公司的m a p o b j e c t s 、i n t e r g r a p h 公司的g e o m e d i a 等。 在国内,软件复用的理论研究和实际工程己被人们普遍关注。在理论上,北京大学、 中科院软件所、吉林大学、南京大学、青鸟公司、中软公司等均采用基于构件技术开发 应用软件,积累了不少经验,获取很好的效益。口” 随着i n t e r n e t 的发展,软件产业的发展形态也发生了很大的变化,基于计算机网络 的软件产业,已从封闭的自给自足软件开发方式,逐渐演变为基于软件复用的开发模式。 目前,在美、日等国家已产生通过电子商务将构件取出、整合、组装,从而形成应用软 件系统的软件开发产业。 2 4 软件复用的相关技术 软件复用必须有相应的技术提供支持,下面我们介绍实现软件复用的几个关键技术m : 2 4 i 软件构件技术 软件复用是通过软件构件来实现的。软件构件技术( s o f t w a r ec o m p o n e n tt e c h n o l o g y ) 是研究如何建立、管理可复用构件并利用构件进行系统组装的技术。基于构件的软件开 发的目的,是改变传统的软件开发方法,关注于系统框架的研究,从已有的构件库中选 择构件进行包装和集成,并对最终解决方案进行测试和部署。 可复用构件应具备以下五个属性: 有用性( u s e f u l n e s s ) :构件必须提供有用的功能 软件复用技术的研究及应用 可用性( u s a b i l i t y ) :构件必须易于理解和使用 可靠性( r e l i g b i l i t y ) :构件及其变形必须正确可靠 适应性( a d a p t a b i l i t y ) :构件应该易于通过参数化等方式在不同语境中进行配置 可移植性( p o r t a b i l i t y ) :构件应能在不同的硬件运行平台和软件环境中工作 随着对软件复用理解的深入,构件的概念已不再局限于源代码构件,而是延伸到需 求、系统设计和软件的需求规约、系统和软件的构架、文档、测试计划、测试案例和数 据等其它对软件开发活动中有用的信息。 2 4 2 软件构架 软件构架( s o f t w a r ea r c h i t e c t u r e ) 是对系统整体结构设计的刻画,包括全局组织与控制 结构,构件间通讯、同步和数据访问的协议,设计元素间的功能分配、物理分布,设计 元素的集成、伸缩性和性能,以及设计选择等。 研究软件构架对于进行高效的软件工程具有非常重要的意义。通过对软件构件的研 究,有利于发现不同系统在较高级别上的共同特性,获取正确的构架对于进行正确的系 统设计非常关键;对各种软件构架的深入了解,使得软件工程师可以根据一些原则在不 同的软件构架之间作出选择;从构架的层次上表示系统,有利于系统高级别性质的描述 和分析。特别重要的是,在基于复用的软件开发中,为复用而开发的软件构架可以作为 一种大粒度的、抽象级别较高的软件构件进行复用,而且软件构架还为构件的组装提供 了基础和上下文,对于成功的复用具有非常重要的意义。 软件构架研究着重于软件系统自身的整体结构和构件间的互联,主要包括:软件构 架原理和风格,软件构架的描述和规约,特定领域软件构架的构件集成机制等。 2 4 3 领域工程 领域工程( d o m a i ne n g i n e e r i n g ) 是为一组相似或相近系统建立其基本能力和必备基 础的过程。它覆盖了一组具有相似或相近软件需求的应用系统的功能区域。领域工程包 括三个主要阶段: ( 1 ) 领域分析:这个阶段的主要目标是获得领域模型( d o m a i nm o d e l ) 。领域模型描述领 域中系统之间的共同的需求。其主要活动包括确定领域边界,识别信息源,分析领 域中系统的需求,确定哪些需求是被领域中的系统广泛共享的,哪些是可变的,从 而建立领域模型。 ( 2 ) 领域设计:这个阶段的目标是获得领域构架( d o m a i n s p e c i f i cs o f t w a r e a r c h i t e c t u r e ,缩写为d s s a ) 。d s s a 描述在领域模型中表示的需求的解决方案,它不 软件复用技术的研究及应用 是单个系统的表示,而是能够适应领域中多个系统的需求的一个高层次的设计。由 于领域模型中的领域需求具有一定的变化性,d s s a 也要相应地具有变化性。 ( 3 ) 领域实现:这个阶段的主要行为是,定义将需求翻译到由可复用构件创建的系统的 机制。根据所采用的复用策略和领域的成熟和稳定程度,这种机制可能是一组与领 域模型和d s s a 相联系的可复用构件,也可能是应用系统的生成器。这些活动的产品 包括:领域模型、领域构架、领域特定的语言、代码生成器和代码构件等。 2 4 4 软件再工程 软件复用中的一些问题是与现有系统密切相关的,如:现有软件系统如何适应当前 技术的发展及需求的变化,采用更易于理解的、适应变化的、可复用的系统软件构架并 提炼出可复用的软件构件? 现存大量的遗产软件系统( l e g a c ys o f t w a r e ) 由于技术的 发展,正逐渐退出使用,如何对这些系统进行挖掘、整理,得到有用的软件构件? 已有 的软件构件随着时间的流逝会逐渐变得不可使用,如何对它们进行维护,以延长其生命 期,充分利用这些可复用构件? 等等。软件再工程正是解决这些问题的主要技术手段。 软件再工程( s o f t w a r er e e n g i n e e r i n g ) 是一个将逆向工程、重构和正向工程组台起来, 将现存系统重新构造为新的形式。再工程的基础是系统理解,包括对运行系统、源代码、 设计、分析、文档等的全面理解。但在很多情况下,由于各类文档的丢失,只能对源代 码进行理解,即程序理解。 2 4 5 开放系统技术 开放系统技术( o p e ns y s t e mt e c h n o l o g y ) 的基本原理是在系统的开发中使用接口标 准,同时使用符合接口标准的实现。这些为系统开发中的设计决策,特别是对于系统的 演化,提供了一个稳定的基础,同时也为系统( 子系统) 间的互操作提供了保证。开放 系统技术具有在保持( 甚至是提高) 系统效率的前提下减低开发成本、缩短开发周期的 可能。对于稳定的接口标准的依赖,使得开放系统更容易适应技术的进步。当前,以解 决异构环境中的互操作为目标的分布对象技术,是开放系统技术中新的主流技术。 开放系统技术为软件复用提供了良好的支持。特别是分布对象技术,使得符合接口标 准的构件可以方便地以“即插即用”的方式组装到系统中,实现黑盒复用。这样,在符 合接口标准的前提下,构件就可以独立地进行开发,从而形成独立的构件制造业。 软件复用技术的副f 究及应用 2 4 6 软件过程 软件过程( s o f t w a r ep r o c e s s ) 又称软件生存周期过程,是软件生存周期内为达到一定目 标而必须实施的一系列相关过程的集合。一个良好定义的软件过程对软件开发的质量和 效率有着重要影响。当前,软件过程研究以及企业的软件过程改善已成为软件工程界的 热点,国际上软件过程方面代表性技术有:c m u s e i 提出的c m m ( c a p a b i l i t ym a t u r i t y m o d e l ) 、p s p ( p e r s o n a ls o f t w a r ep r o c e s s ) 、t s p ( t e a ms o t a v a r ep r o c e s s ) 、c n i i ( c a p a b i l i t y m a t u r i t ym o d e li n t e g r a t i o n ) ;国际标准化组织i s o 发布的i s 0 9 0 0 0 ( 质量管理体系标准) 、 i s 0 1 5 5 0 4 ( 信息技术一软件过程评价) ;以及其他如t i c k l t 、b o o t s t r a p 、s p i c e 等。 然而,基于构件复用的软件开发过程与传统的一切从头开始的软件开发过程有着实 质性的不同,探讨适应于软件复用的软件过程自然就成为一个迫切的问题。 2 4 7c a s e 技术 随着软件工程思想的目益深入人心,以计算机辅助开发软件为目标的c a s e 技术 ( c o m p u t e ra i d e ds o f t w a r ee n g i n e e r i n g ) 越来越为众多的软件开发人员所接受,c a s e 工具 和c a s e 环境得到越来越广泛的应用。c a s e 技术对软件工程的很多方面,例如分析、设 计、代码生成、测试、版本控制和配置管理、再工程、软件过程、项目管理等等,都可 以提供有力的自动或半自动支持。c a s e 技术的应用,可以帮助软件开发人员控制软件开 发中的复杂性,有利于提高软件开发的效率和质量。 软件复用同样需要c a s e 技术的支持。c a s e 技术中与软件复用相关的主要研究内容 包括:在面向复用的软件开发中,可复用构件的抽取、描述、分类和存储;在基于复用 的软件开发中,可复用构件的检索、提取和组装;可复用构件的度量等等。 2 5 软件复用的对象、范围及方式 软件复用可以从不同的角度得到不同的体现,我们可以从软件复用对象、复用范围 以及复用方式等方面对软件复用做进一步的理解: 2 5 1 复用对象 软件复用的对象不仅仅涉及源程序代码,c a p e rj o n e s 定义了1 0 种可能复用的软件 要素2 0 : 项目计划:软件项目计划的基本结构和许多内容( 如s q a 计划) 都可以跨项目复 软件复用技术的研究及应用 用。这样可减少制定计划的时间,也可降低因建立进度表、风险分析及其他特征 而产生的不确定性。 成本估计:由于不同项目常包含类似的功能,所以有可能在极少修改或不修改的 情况下,复用对该功能的成本估计。 体系结构:尽管应用领域千差万别,但程序和数据的体系结构大同小异。因此, 可以创建一组类属的体系结构模板( 例如事务处理结构) ,将这些模板作为可复用 涉及的框架。 需求模型和规格说明:类的模型、对象的模型和规格说明显然可以复用。此外, 用传统软件工程方法开发的分析模型( 如数据流图) 也可以复用。 系统设计:用传统方法开发的体系结构、数据、接口,以及过程化设计方法都可 以复用。另外,复用系统和对象的设计是屡见不鲜的。 源程序代码:验证过的程序构件( 用兼容的程序设计语言书写) 是复用的最普通 的一种。 用户文档和技术文档:尽管特定的应用内容不同,但可以复用用户文档和技术文 档中的大部分框架和内容。 用户界面:这可能是最广泛地被复用的软件元素,如g u i 的软件构件。因为它可 占一个应用软件的6 0 的代码量,所以复用的效果最明显。 数据结构:经常被复用的数据结构包括数据库结构和系统管理、维护所涉及的系 统表。 测试用例:只要将某种设计或代码构件定义成可复用构件,相关的测试用例就可 以成功成为这些构件的附件。 2 5 2 复用范围 按照重要活动是否跨越相似性较小的多个应用领域,软件复用可以分为横向复用和 纵向复用两种。 横向复用是指复用不同应用领域中的软件元素,例如数据结构、排序算法、人一机界 面构件等。标准函数库是一种典型的横向软件复用机制。纵向复用是指在一类具有较多 共性的应用领域之间复用软件构件。由于在两个截然不同的应用领域之间进行软件复用 的潜力不大,所以纵向复用受到更多的关注。 软件复用的关键在于领域分析,根据应用领域的特征和相似性预测软件构件的可复 用性。一旦根据领域分析确认了软件构件的可复用价值,即可进行软件构件的开发,并 对具有可复用价值的软件构件做一般化处理,使它们能够适应类似的应用领域。然后, 将软件构件和相关文档进入可复用构件库,成为可供未来开发项目使用的可复用资源。 软件复用技术的研究及应用 2 5 3 复用方式 软件复用是通过软件构件来实现的,软件构件通常可分为白匣子、灰匣子和黑匣子 三类。 白匣子是指在提供软件构件的同时,也提供实现构件的全部源代码或模块,在应用这 个构件的时候,开发人员需要对源代码或模块进行某些修改,然后才能将它集成到系统 中实现一定的应用目的。灰匣子只提供有关界面部分的源代码,开发人员在应用构件时 对构件的内核是不清楚的,只能在接口界面上做一些用户化的工作。黑匣子则完全不提 供源代码,只提供构件的二进制可执行形式。 我们强调构件是到闭、透明、独立、可互换的,因此白匣子的可复用性和可维护性 较差,而黑匣子的可复用性和可维护性最好。 4 软件复t e | | 技术的研究及应用 第三章软件构件模型及规范 构件是软件复用的基础,据g a r d n e r 小组的一份报告推测,所有软件解决方案中将 有7 0 是使用像预建的构件和模板这样的“积木”来建造的,因此,理解构件模型和规 范是十分重要的。软件构件模型是解决构件之间的接口、实现互操作的理论基础。经过 多年的发展,构件的模型及其规范已经提出,较有影响的有c o m 序列、c o b r a 和e j b 。 c o r b a 技术是最早出现的,1 9 9 1 年o m g 颁布了c o b r a1 0 标准:m i c r o s o f t 的c o m 系列 从最初的c o m 发展成现在的c o m + ;而s u n 公司的j a v a 平台,在其最早推出的时候,只 提供了远程的方法调用,在当时并不能被称为分布式对象计算,只是属于网络计算里的 一种,接着推出的7 a v a b e a n ,也还不足以和上述两大流派抗衡,目前的e j b ,除了语言 外还有构件的标准以及构件之间协同工作通讯的框架。于是,也就形成了目前的三大流 派。口o 3 1c o m 系列 c o m 系列是由m i c s o s o f t 、d i g i t a le q u i p m e n t 等公司支持的一个“工业标准”,描 述的是一组规范及一个系统级的实现构成,为w i n d o w s 提供统一的、可扩充的面向对象 通讯协议。这组规范包括c o m 核心、结构存储、统一数据传输及智能化命名。如下图所 不: 图3 1c o m 技术层次 其中,c o m 核心提供底层支持,定义了软件构件的对象与其使用者( 客户) 之间,如何通过二 进制接口标准进行交互的规格说明;结构存储定义了复合文档的存储格式以及创建文档的接口:统 一数据传输定义了构件之间数据交换的标准接口;智能化命名则赋予对象一个能使系统可识别的名 字。 软件复用技术的研究及应用 3 1 1c o m c o m 实际上是一种软件开发协议,它定义了一套完整的、用于生成构件对象以及如 何保证构件对象与其客户之间通讯的标准机制。c o m 是基于二进制标准而不是语言的规 范,保证了基于c o m 的出不周程序语言开发的构件之间的交互作用,两个构件可通过接 口的机制进行通讯。 c o m 接口是一个抽象基类,不能实例化,所以在c o m 中构件不能直接为程序复用, 需要用到两种对象复用机制:包含与聚合。 包含是指一个对象包含一个内部对象时,外部对象可以作为内部对象的客户,把内 部对象作为自己的功能提供给自己的客户。但内部对象对外部对象的客户是不可见的, 当外部对象的客户调用有关功能时,外部对象“委托”内部对象完成部分功能。这种构 件复用机制较为简单,使用也比较普遍。 聚合是一种比较复杂的复用机制,构件复用的运行效率高。在这种方式下,外部对 象把自己内部对象的接口当作自己的接口提供给客户,当客户要求内部对象的指针时, 外部对象将接口的控制权交给客户。外部对象还控制着聚合体的生命周期,所以当内部 对象调用a d d r e f 方法时,外部对象的参考计数也要相应的增加。 3 1 2d c o m 分布式构件对象模型( d c o m ) 是从网络o l e 发展而来,是c o m 的自然扩展和延伸。 它主要是为了增强构件对象模型的分布功能而发展起来的一种软件协议和标准,允许应 用程序在分布式计算环境( d i s t r i b u t e dc o m p u t ee n v i r o n m e n t - - d c e ) 下进行面向对象 的过程调用。利用d c o m 、a c t i v e x 构件或支持d c o m 的其他任何构件都可以通过多种网 络传输协议进行通信,其中包括国际互联网的超文本传输协议( h t t p ) 。d c o m 对象与c o m 对象没有本质上的区别,只是加强了系统支持分布对象的能力,同时也改善了构件对象 模型相对较薄弱的安全控制能力。基于c o m 的应用软件可以不加任何修改地在d c o m 环 境下运行。d c o m 的主要特点有: 1 ) 支持多种通信协议 d c o m 可以使异构网络协议( 面向连接和无连接) 的构件交互通信,其中包括t c p i p 、 i p x s p x 和h t t p 等。 2 ) 为j a v a 提供分布能力 由于d c o m 独立于开发语言,j a v aa p p l e t s 能够和i n t e r n e t 上的其他构件直接通信。 3 ) d c o m 是把基于认证的i n t e r n a t 安全机制同基于w i n d o w sn t 的c ,级安全机制集成在 起,使构件通信有了安全保障。 软件复用技术的研究及应用 4 ) d c o m 底层通信技术依然基于r p c 。 5 ) 除支持j a v a 外
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工程临时工合同协议书
- 地板打蜡合同协议书样本
- 买卖居间协议合同
- 业务合同协议照片
- 欠款委托协议合同
- 协议合同解除的时效性
- 协议书是劳动合同
- 协议离婚合同注意
- 拉丁舞学员合同协议书
- 承揽合同转包协议
- 2025年餐厅兼职劳动合同
- 2025年北京市东城区高三一模数学试卷(含答案)
- 学生欺凌防治工作“一岗双责”制度
- 2025-2030中国电子焊膏行业市场发展趋势与前景展望战略研究报告
- 炎德·英才大联考湖南师大附中2025届高三月考试卷(七)物理试卷(含答案)
- 剪映剪辑教学课件
- Radware AppDirector负载均衡器指导书2.11v1.0
- 1健康调查问卷一
- 2024年江苏南京医科大学招聘考试真题
- 2025年吉林司法警官职业学院单招职业技能考试题库汇编
- 生物科技行业研究员简历
评论
0/150
提交评论