




已阅读5页,还剩81页未读, 继续免费阅读
(计算机应用技术专业论文)软件演化技术研究与应用.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 传统的软件技术体系本质是一种静态、封闭的结构框架,软件实体缺乏动态适应能 力、缺乏自主性、难以根据应用需求进行动态协同,因此难以适应i n t e r n e t 开放、动 态和多变环境的要求。针对软件系统呈现出的新的自然特性和当前软件理论、技术和方 法的发展趋势及研究热点问题,本文重点开展了软件系统的演化和协同方面理论和应用 研究,并将研究成果应用在实际系统开发中。 在设计时演化方面,开发了面向交通领域的框架产品:t m a p 交通地图框架。t m a p 应用了框架设计的“热点”分析理论,具备良好的设计时演化能力,已成功应用于“大 连市城市交通快速反应系统”的开发过程,并经受了用户需求和功能设计变化对其演化 能力的实际检验。 已有对动态演化的研究成果局限在动态演化对软件可靠性的支持,并缺乏对分布式 环境的支持。本文从软件动态协同的角度,研究了在分布式环境下动态演化系统的基本 模型和实现问题。提出了一个支持分布式演化和动态协同的动态体系结构d y n a m i c a r c h ( 简称d a ) ,并实现了完整的d y n a 皿i c a r c h 运行支撑环境。一个分布式d a 系统由若干对 等的d a 系统构成,单个d a 系统具备完整的进程内动态演化能力,d a 系统之间通过协商 机制实现分布式系统动态演化。基于d y n a m i c a r c h 开发的软件系统具有良好的动态适应 能力,可以迅速的适应软件运行过程的各种变化,包括可以预测的和不可预测的变化。 本文研究了d y n 砌i c a r c h 在城市交通快速反应系统中的实际应用,基于 d y n a m i c a r c h 实现了可动态演化的“拥挤路段自动跟踪显示系统”,实际系统运行验证了 d y na i n i c a r c h 设计的实用性和先进性。本文最后讨论了如何基于d y n a m i c a r c h 的动态演 化能力,开发适应i n t e r n e t 开放、动态环境的软件动态协同平台。 关键词:软件演化;设计时演化;动态演化;动态协同:动态体系结构:软件框架 软件演化技术研究与应用 o 前言 o 1 引言 i n t e r n e t 无疑是2 0 世纪末最伟大的技术进展,其普及和发展为我们提供了一种全 球范围的信息基础设施,这个不断延伸的网络基础设施,形成了一个资源丰富的计算平 台。以i n t e r n e t 为主干,各类局域网和无线网为局部设施,伴随着移动通讯技术的发展, 再加上各种信息处理设备和嵌入设备作为终端,构成了人类社会的信息化、数字化基础, 成为我们学习、生活和工作的必备环境。 i n t e r n e t 的特点主要体现在下述三个方面: 1 i n t e r n e t 提供了广泛的连通性。这里的连通性不仅是指i n t e r n e t 物理上连接的 地域范围,还包含人类生活的各个方面;i n t e r n e t 通过开放的标准化技术,将规模庞大 的各类计算设备连接为一个整体,不仅为信息共享、传播提供了基础,更可以提供巨大 的计算能力,并将该能力融合到人类生活的各个方面。可以说,i n t e r n e t 的这种无所不 在的连通能力,已经深深影响了人类生活的各个方面,并将继续产生深远的影响。 2 i n t e r n e t 连通起来的整体信息系统是无统一控制的分布性系统结构,各节点具 有高度的自治性,实体行为复杂并具有不可测性。一方面系统中相连的人、设备、软件 实体和局部环境具有丰富的多样性和异构性,适应方式也具有个性化和灵活性;另一方 面,通过开放性的技术标准又实现了整体复杂的互连和互操作。由此,在基于标准的互 连、互操作特性基础上,i n t e r n e t 系统表现出了显著的动态特性。 3 i n t e r n e t 为人类海量信息的处理要求提供了基础平台,互连不仅使信息孤岛互 相连接,共享范围得以扩充;更重要的是使得计算设备的能力实现了整合,能够在基本 计算单元能力较弱的情况下,实现整体海量的计算能力。i n t e r n e t 的发展为社会信息化 蕴育了巨大的创新空间,也为软件技术的发展带来了新的平台、新的模式和新的业务, 并为软件产业发展提供了规模空前的基础设施。 总结i n t e r n e t 的上述特性,我们可以为i n t e r n e t 提炼出如下的基本特征“3 : 1 ) 无统一控制的“真”分布性 2 ) 节点连接的开放性和动态性 3 ) 节点的高度自治性 4 ) 人、设备和软件实体的多重异构性 5 ) 实体行为的不可预测性 6 ) 使用方式的个性化和灵活性 7 ) 网络连接环境的多样性 由于软件系统所基于的计算机硬件平台正经历从集中封闭的计算平台向开放的 i n t e r n e t 平台的转变,软件系统作为计算机系统的灵魂,随着其运行环境的演变也经历 了一系列的变革。目前,面向网络的计算环境正由c l i e n t s e r v e r 发展为c l i e n t c l u s t e r ,并正朝着c l i e n t v i r t u a le n v i r o n m e n t 的方向发展那么,未来的基于i n t e r n e t 平台的软件系统又会呈现什么样的形态昵? 软件演化技术研究与应用 2 软件实体缺乏自主反应能力:面向对象方法中的对象概念通常是静止和被动的, 缺乏自主性,它难以在i n t e r n e t 开放、动态和多变环境下调整自身的目标和行为,以适 应网络环境的变化和用户个性化需求。 3 软件实体缺乏动态和复杂的协同工作能力:程序实体间传统的协同方式是过程调 用( 包括进程内调用和r p c ) 和对象引用( 包括进程内引用和远程引用) 。由于其时间和 空间耦合的特征,过程调用和对象引用通常只适合,】二程序实体功能固定、位置固定、以 及协同逻辑固定的静态和封闭世界,难以满足开放、动态和多变的i n t e r n e t 环境对时间 或空间的紧耦合或松散耦合等多种协同方式的需要。 传统的软件理论和开发方法,在解决这些问题上存在内在的困难。面向i n t e r n e t 的开放、动态和多变的运行环境,既是对传统的软件理论、方法和技术的挑战,更是一 种机遇,促使传统的软件理论和技术发生重大变革,以适应这一变化,其变化可以预测 的包括: 1 软件基本模型的变化:软件基本模型的发展,表现为一个逐步追求更具表达能 力、更符合人类思维模式、更具构造性和演化性的软件结构过程目前软件模型已发 生了重要变化,面向对象、面向构件的软件模型已成为主流。对基于i n t e r n e t 环境的 网构软件系统而言,其基本的计算单元应该是分布自治、异构的“构件”或a g e t l ; 鞘型b 蓦烈誊8 盘越;磊粥型鬻葛翔嘏臻攫涮濑足曩滴浚隈掣爿譬基塌埔爆凇。忑 遘驰静础冀静啸柙蟛刚溜渐瑚蒯淄爆增妫罐蠼氢副函剖匿 x 软件演化技术研究与应用 始从静态封闭逐步走向开放、动态和多变。软件系统为了适应这样一种发展趋势,将会 逐步呈现出自主、反应、演化、协同和多态等特性。针对软件系统呈现出的新的自然特 性和当前软件理论、技术和方法的发展趋势及研究热点问题,本文重点开展了软件系统 的演化和协同方面理论和应用研究。 o 2 国内外研究现状 为了适应i n t e r n e t 开放、动态和多变的运行环境,开发具备自主性、反应性、演化 性、协同性和多态性的软件系统,国内外的研究机构在软件理论、技术和开发方法上都 开展了广泛的研究,其代表性的研究工作包括: 基于自反射中间件的软件动态演化研究 反射式中间件( r e f l e c t i v em i d d l e w a r e ) 是一种通过开放内部实现细节以获取高灵 活性的中间件 4 】。具体而言,通过引入反射原理,中间件运行时的内部状态和行为可通 过一种受限方式访问和操纵。系统的反射性是指系统能够提供对自身状态和行为的自我 描述( 简称自述) ,并且系统的实际状态和行为始终与自述保持一致,也就是说,对自 述的改变能够立即反映到系统实际的状态和行为,而系统的实际状态和行为改变也能够 立即在自述中反映出来。一个反射系统通常定义了一个层次化的反射体系,包括一个基 层( b a s e 一1 e v e l ) 和一个或多个元层( m e t a l e v e l ) 。工作在基层中的实体( 基层实体) 执行系统正常的业务功能,而工作在元层中的实体( 元层实体) 负责建立和维护系统自 述。 自反射中间件由于在软件系统结构中引入了元数据( m e t a 卜l e v e l ) ,通过改变元数 据,可以有效地改变建立在元层之上的基层运行系统,因此自反射中间件在一定程度上 支持软件系统的开放性、动态性。北京大学黄罡,梅宏【2 】f 3 】研究了基于自反射中间件p k u a s 的运行时软件体系结构( r u n t i m es o f t w a r ea r c h i t e e t u r e ) ,实现了e j b 构件的在线演 化,他们的研究基于单个e j b 容器内的构件演化,没有涉及分布式环境下的演化问题。 基于软件体系结构的软件演化研究 软件体系结构( s o f t w a r ea r c h i t e c t u r e ,s a ) 从提出之日起,就受到学术界和产业 界的,。泛关注,成为软件工程研究与实践的重要领域之一。s a 是一组构件、连接子以及 约束所描述的软件系统总体结构。作为需求规约与系统实现之间的桥梁,s a 为系统的构 造和组装提供了指导性的蓝图。具体而言,s a 有助于理解大型软件系统,支持构件与体 系级别的复用,标识待开发系统中的主要构件及其之间的关系与约束,揭示系统的变化 性,在高层校验和验证目标系统等。随着研究的深入和应用的普及,s a 已经成为软件开 发过程中的核心制品,起着主导作用。从软件生命周期的角度看,软件维护与演化是软 件开发的延续,自然地,将软件开发中的s a 应用于软件维护与演化成为可能。 在设计时演化方面,一些研究者希望在设计阶段考虑系统运行时的变化并将之纪录 在设计文档中,如d a r w i n 、x a d p 】。这种软件体系结构拥有丰富的语义信息,为在软件 系统设计阶段捕获系统的动态特性提供了形式模型和自动化支持。拥有丰富的语义信息。 但是,实际应用中设计阶段可预测的运行时变化有限,准确度难以保证,运行时如何使 能或保障这些变化也没有考虑。 软件演化技术研究与应用 在动态演化方面,o r e i z y f 6 1 m 等人研究了如何基于c 2 【8 1 体系结构风格,实现软件系 统的运行时修改,他们开发的一个演化终端a r c h s h e l 实现了运行时软件系统构件的动态 组装、添加,但没有实现构件的在线演化和删除,同时没有涉及分布式环境下的演化问 题。 基于图的动态体系结构的研究 文献【1 1 1 12 1 提出一种面向“图”的分布式web 应用软件系统架构技术,利用严格定 义的“图”来作为描述分布式w e b 应用软件体系结构的基本手段,并用图上的操作来支 持系统体系结构的动态重配置。这种以图来表示的软件体系结构不仅仪是高层的抽象描 述,同时也是具体的可操作的对象实体,从而有助于提高体系结构与最终实现之间的可追 溯性该对象存在于具体的系统实现中,充当了两个关键的角色:( 1 ) 沟通各分布的计算构 件之间的通信中间件:( 2 ) 整个应用的体系结构框架。通过在系统实现中显式地使用表述 体系结构的对象,整个系统获得了类似自反射中间件的能力,从而为支持体系结构的动态 重配置提供了便利。 基于图的体系结构将分布式系统抽象为一个无向图或有向图,便于对分布式系统进 行理论分析和形式模型的研究。但由于分布式系统的各个节点需要维护一个全局拓扑结 构图,在系统规模增大的情况下,图的维护变得相当困难。同时基于图的体系结构在进 行动态演化时,需要对图的整体拓扑结构进行变换,包括图的状态信息的转换,当系统 规模增大时,动态演化的复杂程度和代价都相当大,使得这一结构难以适应i n t e r n e t 的动态广域计算环境。 0 3 本文的主要工作 现有的软件技术体系本质是一种静态、封闭的体系结构框架,软件实体缺乏动态适 应能力、缺乏自主性、难以根据应用需求进行动态协同,因此难以适应i n t e r n e t 开放、 动态和多变环境的要求。针对软件系统呈现出的新的自然特性和当前软件理论、技术和 方法的发展趋势及研究热点问题,本文重点开展了软件系统的演化和协同方面理论和应 用研究,并将研究成果应用在实际系统开发中,取得了初步成功。实践证明,将理论研 究与应用系统实例结合起来有助于对理论研究成果的验证。 理论研究: 1 系统阐述了软件演化的概念,软件演化在软件生命周期中的作用。在深入研究目 前国内外软件演化理论实践基础上,从设计时演化和动态演化两个方面研究了提高软件 演化能力的技术途径。 2 已有对动态演化的研究成果局限在动态演化对软件可靠性的支持,并缺乏对分布 式环境的支持。本文从软件动态协同的角度,研究了在分布式环境下动态演化系统的基 本模型和实现问题。提出了一个支持分布式演化和动态协同的动态体系结构 d y n a i c a r c h ( 简称d a ) ,并实现了完整的d y n a m i c a r c h 运行支撑环境。一个分布式d a 系统由若干对等的d a 系统构成,单个d a 系统具备完整的进程内动态演化能力,d a 系统 之间通过协商机制实现分布式系统动态演化。基于d y n 锄i c a r c h 开发的软件系统具有良 好的动态适应能力,可以迅速的适应软件运行过程的各种变化,包括可以预测的和不可 软件演化技术研究与应用 1 软件演化的理论与实践 1 1 软件演化的基本概念 软件演化( s o f t w a r ee v o l u t i o n ) 指在软件系统的生命周期内软件维护和软件更新 的动态行为。在现代软件系统的生命周期内,演化是一项贯穿始终的活动,系统需求的 改变、功能实现的增强、新功能的加入、软件体系结构的改变、软件缺陷的修复、运行 环境的改变无不要求软件系统具有较强的演化能力,能够快速适应改变,减少软件维护 的代价。 软件演化的核心问题是软件如何适应改变,软件的演化能力主要体现在4 个方面 9 】: 可分析性( a n a i y z a b i i i t y ) :软件产品根据演化需求,定位待修改部分的能力。具 有良好演化能力的软件应该容易分析、理解,从而可以根据变化迅速定位需要改变的部 分。 可修改性( c h a n g e a b iii t y ) :软件产品实现特定部分修改的能力。具有良好演化能 力的软件可以方便的修改,以支持变化。 稳定性( s t a b i | i t y ) :软件产品避免软件修改造成不良后果的能力。 可测试性( t e s t a b i ii t y ) :软件产品验证软件修改有效性的能力。 1 1 1 软件演化与软件维护 从软件演化的概念来看,软件演化和软件维护有着密切联系,但软件维护是对现有 的已交付的软件系统进行修改,使得目标系统能够完成新的功能,或是在新的环境下完 成同样的功能,主要是指在软件维护期的修改活动。而软件演化则是着眼于软件的整个 生命周期,从系统功能行为的角度来观察系统的变化,这种变化是软件的一种向前的发 展过程,主要体现在软件功能的不断完善。在软件维护期,通过具体的维护活动可以使 系统不断向前演化。因此,软件维护和软件演化可以归结为这样一种关系:前者是后者 特定阶段的活动,并且前者直接是后者的组成部分。 1 1 2 设计时演化与软件复用 软件演化的过程,也是通过修改软件的组成成分适应变化的过程。在这一过程中, 通常我们会尽可能复用系统已有的部分,降低演化的成本和代价。因此支持软件演化的 技术通常也包含了软件复用的部分技术,如基于构件的开发、构件复用技术等等。与软 件复用一样,软件演化也可能发生在时间、平台、应用三个维上“o 】: ( 1 ) 时间维:软件以以前的软件版本作为新版本的基础,适应新需求,加入新功能, 不断向前演化。 ( 2 ) 平台维:软件以某平台上的软件为基础,修改其和运行平台相关的部分,运行在 新的平台上,适应环境变化。 ( 3 ) 应用维:特定领域的软件演化后应用于相近的应用领域。 尽管软件演化和软件复用具有如上的共同特性,但它们研究问题的出发点和手段目 软件演化技术研究与应用 的都是不同的。软件复用的目的是避免软件开发的重复劳动,提高软件开发的质量和效 率。而软件演化着眼于整个软件的生命周期,研究如何在较低的开发代价的情况下,延 长软件的生命周期,提高软件适应改变的能力。 1 1 3 软件演化的分类 按照演化发生的时机,软件演化方法可以分为四裂: 设计时演化( d e s i g n t j m ee v o l u ti o n ) :设计时演化是目前在软件开发实践中,应 用最广泛的演化形式。设计时演化在软件编译前,通过修改软件的设计、源代码,重新 编译、部署系统来适应变化。目前有多种技术来提高软件的设计时演化能力如基于构件 的开发( c b s d ) ,基于软件框架( f r a i l l e w o r k ) 的开发,设计模式( d e s i g np a t t e r n ) 等 等。 运行前演化( p r e e x e c u t j o ne v o i u t i o n ) :运行前演化是指在软件编译后、运行前进 行的演化。因为系统尚未开始执行,这类演化不涉及系统状态的维护问题。为了执行这 种演化,要求编译后的软件系统含有足够的系统的运行时信息。如由于j a v a 类文件中包 含了程序运行的元数据,通过修改元数据,可以实现j a v a 类的演化,包括增添新的方法, 添加接口,数据成员等操作【2 8 1 。 有限制的运行时演化( c o n s t r a i n e dr u n t i m ee v o l u t ;o n ) ;这类演化系统通常在设计 时进行了规定了演化的具体条件,如通过将系统置入一种“安全”模式,在这种模式下, 可以进行一些规定好的演化操作。 动态演化( r u n t i m ee v o fu t i o n ,d y n a m i ce v o i u t i o n ) :动态演化是最复杂也是最有 实际意义的演化形式。动态演化是指在软件在运行过程中,可以根据应用需求和环境变 化,动态的进行软件的配置、维护和更新,其表现形式包括系统元素数目的可变性、结 构关系的可调节性和结构形态的动态可配置性。软件的动态演化特性对于适应未来软件 发展的开放、动态环境具有重要意义。 1 2 设计时演化 设计时演化是目前在软件开发实践中,应用最广泛的演化形式。设计时演化在软件 编译前,通过修改软件的设计、源代码,重新编译、部署系统来适应变化。目前有多种 技术来提高软件的设计时演化能力如基于构件的开发( c b s d ) ,基于软件框架( f r a w o r k ) 的开发,设计模式( d e s i g np a t t e r n ) 等等。 1 2 1 设计模式对设计时演化中的支持 设计模式【2 9 】是对经过实践检验的、好的设计经验的提炼和总结,强调了在特定环境 下对反复出现的设计问题的一个软件解,侧重于解决软件设计中存在的具体问题。 设计模式解决的核心问题与设计时演化是一致的:软件如何适应变化。各种设计模 式实际都从不同侧面封装了变化,有效提高了软件的设计时演化能力。表1 1 列出了部 分设计模式和他们所封装的变化。 软件演化技术研究与应用 的都是不同的。软件复用的目的是避免软件开发的重复劳动,提高软件开发的质量和效 率。而软件演化着眼于整个软件的生命周期,研究如何在较低的开发代价的情况下,延 长软件的生命周期,提高软件适应改变的能力。 1 1 3 软件演化的分类 按照演化发生的时机,软件演化方法可以分为四裂: 设计时演化( d e s i g n t j m ee v o l u ti o n ) :设计时演化是目前在软件开发实践中,应 用最广泛的演化形式。设计时演化在软件编译前,通过修改软件的设计、源代码,重新 编译、部署系统来适应变化。目前有多种技术来提高软件的设计时演化能力如基于构件 的开发( c b s d ) ,基于软件框架( f r a i l l e w o r k ) 的开发,设计模式( d e s i g np a t t e r n ) 等 等。 运行前演化( p r e e x e c u t j o ne v o i u t i o n ) :运行前演化是指在软件编译后、运行前进 行的演化。因为系统尚未开始执行,这类演化不涉及系统状态的维护问题。为了执行这 种演化,要求编译后的软件系统含有足够的系统的运行时信息。如由于j a v a 类文件中包 含了程序运行的元数据,通过修改元数据,可以实现j a v a 类的演化,包括增添新的方法, 添加接口,数据成员等操作【2 8 1 。 有限制的运行时演化( c o n s t r a i n e dr u n t i m ee v o l u t ;o n ) ;这类演化系统通常在设计 时进行了规定了演化的具体条件,如通过将系统置入一种“安全”模式,在这种模式下, 可以进行一些规定好的演化操作。 动态演化( r u n t i m ee v o fu t i o n ,d y n a m i ce v o i u t i o n ) :动态演化是最复杂也是最有 实际意义的演化形式。动态演化是指在软件在运行过程中,可以根据应用需求和环境变 化,动态的进行软件的配置、维护和更新,其表现形式包括系统元素数目的可变性、结 构关系的可调节性和结构形态的动态可配置性。软件的动态演化特性对于适应未来软件 发展的开放、动态环境具有重要意义。 1 2 设计时演化 设计时演化是目前在软件开发实践中,应用最广泛的演化形式。设计时演化在软件 编译前,通过修改软件的设计、源代码,重新编译、部署系统来适应变化。目前有多种 技术来提高软件的设计时演化能力如基于构件的开发( c b s d ) ,基于软件框架( f r a w o r k ) 的开发,设计模式( d e s i g np a t t e r n ) 等等。 1 2 1 设计模式对设计时演化中的支持 设计模式【2 9 】是对经过实践检验的、好的设计经验的提炼和总结,强调了在特定环境 下对反复出现的设计问题的一个软件解,侧重于解决软件设计中存在的具体问题。 设计模式解决的核心问题与设计时演化是一致的:软件如何适应变化。各种设计模 式实际都从不同侧面封装了变化,有效提高了软件的设计时演化能力。表1 1 列出了部 分设计模式和他们所封装的变化。 软件演化技术研究与应用 表1 1 设计模式对设计时演化的支持 t a b l e l 1d e s i g np a t t e r n sa n dt h e i rs u p p o r tf o rd e s i g r r t i m ee v o l u t i o n 1 2 2 基于构件的软件开发 1 2 2 1 构件的概念和分类 构件是指用以构筑软件系统的可以复用的软件元素【1 ”。构件通常表现为不同的形 态,形态的差异体现在结构的组织方式和所依赖的软件开发方法。 按照构件的复用方式,构件可以分为: 源代码构件:这是最常见的构件形式,如结构化编程中的函数,面向对象编程中的 类、类树,包( p a c k a g e ) 等。 二进制构件:构件以编译后代码的形式提供,如a c t i v e x 控件,e j b 构件,j a v a 类文 件等。 按照应用领域可分为: 通用基本构件:是特定于计算机系统的构成成分,如基本的数据结构、用户界面元素 等,它们可以存在于各种应用系统中。 领域共性构件:是应用系统所属领域的共性构成成分,它们存在于该领域的各个应用 系统中。 应用专用构件:是每个应用系统的特有构成成分。 1 2 2 2 基于构件的软件开发( c o m p o n e n t b a s e ds o f t r ed e v e io p m e n t c 8 s d ) c b s d 是一种利用可复用的软件构件建立应用系统的技术。这些构件由三部分组成: 构件实现功能说明;构件的设计实现;构件的开发接口。c b s d 的开发方法的基本思路就 是通过利用已有构件或自我组织开发的构件组装应用程序。 c b s d 基于s o f t w a r ei c 的思想,强调软件开发的“组装”特性,即软件开发过程就 是技术构件的构造、组织、选取、组装过程。可复用构件为有计划地进行复用提供了手 段,是实现软件复用的基石,其生产和使用必须满足两个基本前提,即构件接口的标准化 和构件的集成机制。目前在构件的定义和结构来说,已有比较成熟的构件规范,如 软件演化技术研究与应用 表1 1 设计模式对设计时演化的支持 t a b l e l 1d e s i g np a t t e r n sa n dt h e i rs u p p o r tf o rd e s i g r r t i m ee v o l u t i o n 1 2 2 基于构件的软件开发 1 2 2 1 构件的概念和分类 构件是指用以构筑软件系统的可以复用的软件元素【1 ”。构件通常表现为不同的形 态,形态的差异体现在结构的组织方式和所依赖的软件开发方法。 按照构件的复用方式,构件可以分为: 源代码构件:这是最常见的构件形式,如结构化编程中的函数,面向对象编程中的 类、类树,包( p a c k a g e ) 等。 二进制构件:构件以编译后代码的形式提供,如a c t i v e x 控件,e j b 构件,j a v a 类文 件等。 按照应用领域可分为: 通用基本构件:是特定于计算机系统的构成成分,如基本的数据结构、用户界面元素 等,它们可以存在于各种应用系统中。 领域共性构件:是应用系统所属领域的共性构成成分,它们存在于该领域的各个应用 系统中。 应用专用构件:是每个应用系统的特有构成成分。 1 2 2 2 基于构件的软件开发( c o m p o n e n t b a s e ds o f t r ed e v e io p m e n t c 8 s d ) c b s d 是一种利用可复用的软件构件建立应用系统的技术。这些构件由三部分组成: 构件实现功能说明;构件的设计实现;构件的开发接口。c b s d 的开发方法的基本思路就 是通过利用已有构件或自我组织开发的构件组装应用程序。 c b s d 基于s o f t w a r ei c 的思想,强调软鞭轰蠢羹撬啦每僧j 必攀砦蘸嚣弱藕畅 艏铂骊陟谚劭鲐孰,蚕鸶;煨崭;煮墓夔碧j 阳彰篓静数冀篓该钎蒂有崔滞勰缓嚯藤 潮二积和重量馥前本杰旗尘;疆咎厦魁囊器 ,主要是清华大学电机系 以及解放军第四军医大学,但未见有最终产品的报道。而在专利申请方面国内 软件演化技术研究与应用 和多态( p o l y m o r p h i s m ) 是对象建模技术适应变化的强有力武器。通常需要演化的构件, 将自己可能需要演化的部分定义为虚函数,并提供默认实现。在新的环境中,当需要对 原构件进行演化时,通过创建继承自原构件的子构件,并按照要求重新实现部分虚函数, 就可以达到构件演化的目的。 如一个打印构件,负责实现系统数据的打印输出,其输出过程由三部分构成: p r e p a r e p r i n t ( ) :初始化打印机。 p i i n t d o c u 玎1 e n t ( ) :打印文档。 a f t e r p r i n t ( ) :负责打印结束后的后期处理。 对于不同的构件使用环境,打印机的初始化和后期处理可能都不相同。通过将 p r e p a r e p r i n t 和a f t e r p r i n t ( ) 定义为虚函数,针对不同的环境,开发不同的子构件,就 有效实现了打印构件的演化。具体实现如图3 所示。 演化 = 二= 打印构件 b e f o r e p r i n t ( ) p r i n t o a f t e r p r i n to 仫厨 演化后的打印构件 b e f o r e p r i n to a f t e r p r i n to 图1 3 基于继承机制实现打印构件的演化 f i g u r e l3 t h ee v o l u t i o no f a p r m t i n gc o m p o n e m b a s e0 ni n h e m a l l c e 1 2 4 基于框架的软件开发 框架( f r a m e w o r k ) 【“ 【“1 可以看作一种大粒度的构件,其中包含若干个普通构件,定义 了构件之间的协作规约,以实现一个大的系统功能同时框架也是一个软件产品的半成品, 它含可变和不变部分,通过对可变部分的定制得到不同的应用系统对象框架的复用可以 极大地降低应用开发的难度通过复用一个好的框架可以得到一个设计简洁高效、优雅、 稳定的系统。 框架是应用系统或子系统的可重用设计,在面向对象的系统中,框架通常由一系列 的抽象类和具体类组成,系统的行为由抽象类的具体实现类的交互决定。 框架是比设计模式和框架更高层次、更大粒度的复用方式,成功的软件框架设计通 常都包括了大量的设计模式( d e s i g np a t t e r n ) 和可复用构件( r e u s a b l ec o m p o n e n t ) ,开 发者可以复用这些设计模式和构件开发自己具体的应用。 框架都是面向特定领域的,如用户界面设计或分布式通讯表1 2 列出了一些流行的 软件框架: 软件演化技术研究与应用 表12 一些面向特定领域的软件框架 t a b l e l 2s o m ed o m a i n s p e c i f i cs o f t w a r ef r 鲫e w o r k s 应用框架 简介 ,a a sj a a s 是一个基于j a v a 的用户认证和授权安全框架,以可插拔的方 f a v aa u t h e n t jc a t i o na n d 式提供安全认证服务,独立于底层具体的安全认证实现。 a u t h o r l z a t i o ns e r v 【c e a c ea c e 是一个面向对象的基于c + + 的分布式通讯框架,它提供了丰富的 a d a 口t i v ec o m m u n i c a t i o n 通讯模式和构件来开发跨平台的高性能分布式系统。 e n v i r o n m e n t o t s w i n g m f c 一个基于c + + 的g u i 开发框架,同时支持多个平台( w i n d s , u n i x l i n u x ,m a co sx ,e m b e d d e dl i n u x ) 的应用系统开发。 s w i n g 是j a v a 平台的g u i 开发框架。 m f c 是基于m i c r o s o f t 的i n 3 2g u i 开发框架,它封装了w i n 3 2a p t 简化了w i n 3 2 应用程序的开发。 1 2 5 框架对设计时演化的支持 设计框架的主要目的是软件复用,框架是一种比构件更大粒度、更高层次的软件复 用方式。从某种意义上,可以把构件看作一个大粒度的构件。和普通构件类似,使用环 境的改变、软件技术的更新、系统功能的更新都要求框架处在不断的演化过程中。和普 通构件不同的时,框架演化对兼容性有更高宿勺要求,因为通常已经存在一些基于旧版本 框架开发的软件系统,框架的演化应该保证软件系统可以容易的移植到演化后的框架之 上,以保护原有的投资。 软件框架按照对设计时演化支持方式的不同,可以分为【1 5 】: 1 白箱框架( w h i t eb o xf r a m e w o r k ) 2 黑箱框架( b 1 a c kb o xf r a m e w o r k ) 1 2 5 1 白箱框架( w h i t eb o xf r a m e w o r k ) 自箱框架通常是框架开发经历的第一个阶段,这一阶段的主要特征是框架大量使用 基于继承的构件演化技术。继承是框架支持设计时演化的主要手段,因为使用继承机制, 需要演化者对框架的内部机制有清晰的理解,因此演化者通常是框架的设计者。由于使 用静态的基于继承的演化技术,白箱框架不支持框架的动态演化。 在白箱演化阶段,为了提高框架的复用能力,通常使用多种设计模式如t e m p l a t e 、 f a c t o r y 等。同时白箱框架也会开发一些构件库( c o m p o n e n tl i b r a r y ) ,供框架使用者 使用。 软件演化技术研究与应用 于可插拔构件技术,框架的演化者无需理解框架的整体实现细节,只需按照框架说明, 实现符合一定接口的可插拔构件,将其静态或动态的插入框架中,就可实现对框架的定 制。 1 3 动态演化 设计时演化技术,作为一种静态演化技术,其演化过程一般比较简单,一般根据需 求,开发新的功能实现或更新已有的功能模块,编译链接生成新的应用系统,最后部署 更新后的软件系统即可。然而对于某些要求必须连续运行的系统,如空中交通管制系统、 全球性的金融交易系统、工业控制系统、网络服务系统等,停止整个系统的运行进行软 件更新,会带来重大损失,这就要求软件系统具备动态演化的能力,即可以在不停止系 统运行的情况下,实现软件的功能更新。 需要指出的是运行时系统改变能力,并不局限于对安全和连续运行有苛刻要求的关 键系统。目前大量的商业软件系统正在提供类似的能力,以获得更好的系统扩展性和用 户满意度。目前一些运行时系统扩展机制已经出现在现代操作系统( u n i x 和w i n d o w s 系 统中的动态连接库【l4 j ) 和构件对象模型( c o r b a 和c o m 的动态对象绑定) 。这些机制通过 允许在运行时动态的定位、加载和执行新的构件,使得系统可以不需重新编译便可进行 演化。 目前在操作系统、分布式对象技术和编程语言( 如l i s p ) 中提供的运行时更新能力, 存在很多不足。这些机制不能保证运行时改变的一致性、正确性以及运行时改变的可控 性。变化管理对于进行有效的运行时系统改变具有关键意义。变化管理可以帮助确认需 要变化的系统边界,帮助制定有效的运行时系统改变策略和方案,并控制变化过程以维 护系统的一致性。如果缺乏变化管理,对系统进行运行时改变引入的风险可能大大超出 关闭和重启系统导致的损失。 目前有多种实现动态演化的技术途径,本文重点介绍基于代理的动态类( d y n a n i e c l a s s ) 技术和基于软件体系结构的动态演化技术( a r c h i t e c t u r e b a s e dd v n a m i c e v 0 1 u t i o n ) 。 1 3 1 基于动态类的动态演化技术 动态类( d y n a m i cc l a s s ) u 叫是指类的实现在软件运行过程中可以动态改变,可以在 类级别上引入新的功能、修改已有的程序错误。为了支持类的实现动态可变,要求实现 和接口分离,所有实现( 通常是一个动态链接库或j a v a 类) 符合一个统一的接口,作为 和客户交流的媒介,接口在编译时定义,并在系统运行期间始终保持不变。 在引入动态类实现时,有两种情况:新的实现或者更新了一个已存在类的实现,即 引入了新的实现版本;或者引入了新类,这个新类必须派生自预定义的接口,新类的实 现成为新类的第一个实现版本,这意味着动态类不仅可以实现代码的动态演化,在一定 程度上也可以实现类型的动态演化。 在更新已存在的动态类时,一个基本的问题是如何处理已经存在的旧类的实例,因 为在引入动态类新的实现时,系统中可能已经存在一些动态类的对象。有三种处理策略 软件演化技术研究与应用 ;:唑氍:i 图14 基于继承的白箱框架演化机制 f i g u r e l 4t h ew h i t e b o xf r a m e w o r ke v 0 1 u t i o nm e c h a n i s mb a s e do n i n h e r i t a n c e 随着基于白箱框架的开发的应用系统规模的扩大,白箱框架的缺点逐渐暴露出来: 白箱框架通过继承扩展框架的功能,为了改变一个简单的功能,框架也需要 派生子类,会导致生成太多的子类,增加了系统的复杂度,降低了系统的可理解性 和可维护性。 白箱框架要求使用者熟悉框架的复用者熟悉框架的内部实现细节,继承导致 构件之间较强的耦合,提高了框架的复用难度。 继承是一种静态演化机制,不支持框架的动态演化。 1 2 5 2 黑箱框架( b l a c kb o xf r a m e w o r k ) 黑箱框架是框架演化发展的下一阶段,这一阶段的主要特征是黑箱框架使用基于构 件组合( c o m p o n e n t c o m p o s i t i 。n ) 的方式进行框架演化。构件组合方式和继承方式最大 的不同是,构件组合方式支持构件的运行时动态改变,支持框架的动态演化。 霹、 l 图1 5 黑箱框架通过可插拔构件实现设计时演化 f i g u r e i 5t h eb l a c k _ b o xf r a m e w o r ke v o l u t i o nm e c h a n i s mb a s e d0 n c o m p o s i t i o n 框架演化的主要方式通过可插拔构件( p 1 u g g a b l ec o m p o n e n t ) 实现。可插拔构件指 符合一定接口的构件,在接口不便的情况下,可以实现不同实现的构件的互换使用。基 x 软件演化技术研究与应用 解决这个问题: a ) “冻结”策略,系统等待已存在对象被它们的客户释放,在所有旧对象销毁 前,禁止创建新的囊专j 零运羹萋交鍪蕊蠢鐾霪薹:震囊冀囊垂冀夔蠢冀塞蓬笔 菱蚕蓁渺羹= 霪囊蠹霪塞薰嚣譬噩翟彗翁;再& 争萋螈; i终拍j 它的:帚引争每町堂毯簸誊争警有坠型兽2 攀毫嚣籀。囊羹疆酌抑 制柞蕊甚至点姒囊她霪_ 者慨。 ;ji 塑斋7 拈暑:辜 均是以原核表达的a i i _ e 蹴n 为研究对 象,存在蛋白的翻译后加工及修饰的不完善,从而可能造成其活性改变,这使 得这种争论变得含混不清。作为种人体内源性蛋白片段,我们认为以真核表 达的a 玎e s t e n 为对象进行研究更加合理。本研究的构思就是基于此背景。 目的:构建a r r e sc e nc d n a 的分泌型真核表达载体,将其转染人胃癌细胞 株s g c ,7 9 0】、m g c 8 0 3 及人乳腺癌细胞株m c f 7 。收集舍a r r e s t e l l 的细胞培 养上清,验证a r r e s l e n 体外抑制血管内皮细胞生长的活性同时了解此基因转染 对于肿瘤细胞的自身增殖有无影响。最后,通过裸鼠成瘤实验探讨a r r e s t e n 对上 述肿瘤生长的作用 。 方法:利用p c r 縏e s t e n x 软件演化技术研究与应用 解决这个问题: a ) “冻结”策略,系统等待已存在对象被它们的客户释放,在所有旧对象销毁 前,禁止创建新的旧对象,在所有旧对象停止使用后,系统开始使用动态类新的实 现创建对象,同时旧的动态类实现被释放,以节省内存。 b )“重建”策略,系统使用新的动态类实现重新创建所有旧对象,同时拷贝原 有对象的状态信息到新对象。 c ) “共存”策略,旧对象和基于新实现的对象共存,但以后的对象创建使用新 的动态类实现,旧对象随着系统的运行自行消失,所有旧对象被释放后,旧的动态 类实现被释放。 在大多数情况下,“共存”策略可以满足实际应用要求,这也是最简单、速度最快的 方式。 为了实现动态类,需要一个代理( p r o x y ) ,代理负责维护动态类的所有实现的列表, 以及实现的外部存储位置。代理监控所有发送给接口的功能请求,并将请求转发给最新 的实现版本,如果最新的实现版本没有加载,则根据已经注册的外部存储位置加载实现, 存储位置可以是本地文件系统,也可以是远程网络服务器,以方便实现软件版本的集中 管理。图1 6 显示了基于代理的动态类实现机制。 系统原型 接口与实现分离 垂于代理的动态英机制 图1 6 基于代理的动态类机制实现 f i g u r e l 6d y n a m i cc l a s si m p l e m e n t a t i o nb a s e do np r o x ym e c h a n i s m 动态类实现机制是一种轻量级的动态演化技术,它不需要编译器和底层运行时系统 ( 操作系统、虚拟机) 的支持,容易实现。结合合适的实现技术如c + + t e m p l a t e 技术, 可以获得较好的性能,因此在需要连续运行,同时要求较高性能的软件系统如电信级网 络管理系统中获得了广泛应用。 1 3 2 基于体系结构的动态演化 1 3 2 1 软件体系结构的概念 软件体系结构是一个系统视图,该视图描述以下内容:系统的主要构件;构件相对 系统其它部分的可见行为,以及为了达到系统预定的功能构件之间所采取的交互和协作 型燮楚塑毽! 堕旦 关系。 软件体系结构是软件工程领域的一个新兴研究领域,在计算机软件技术的发展中, 软件抽象起着p 分重要的作用,抽象技术经历了高层编程语言到抽象数据类型,再到软 件体系结构的过程。随着软件系统大小和复杂度的增长,设计中的问题不再局限于汁算 的语义和数据结构。当系统有许多部什组成时,整个系统的辑件体系结构成为设计中一 个1 分重要的问题。 g a r l a n 和s h a w u 【l ”把软件体系结构抽象概括为: 软什体系结构= 构件_ 卜连接件+ 约束 s a = c o m p o n e n t s ,c o n n e c t o r s ,c o n s t r a i n t 连接件是构件的粘合剂,它也是一组对象。它把不同
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公路碎石加工合同范本
- 出租回租合同范本
- 颗粒炉子销售合同范本
- 合同范本日期更改
- 小店转让早餐合同范本
- 教育孩子的心得体会怎么写【范例10篇】
- 会计工作心得体会感悟简短(汇编10篇)
- 上半年工作总结及下半年工作计划范文(5篇)
- 校园文化建设章程模板
- 2025年北京安管人员考试试题及答案
- 植入式静脉给药装置(输液港)-中华护理学会团体标准2023
- SH石油化工金属管道布置设计规范
- 统一帕金森病评定量表-UPDRS
- 外国文学史第二版马工程课件 第四章 17世纪文学
- 皮肤的结构与生理功能
- 院感培训试题及
- 开发区财政管理改革研究
- 三维数字城市建模及数据获取课件
- 电气照明系统课件
- 收纳整理PPT成品课件
- 北京市各县区乡镇行政村村庄村名明细
评论
0/150
提交评论