导读:本文包含了软件动态更新论文开题报告文献综述及选题提纲参考文献,主要关键词:软件动态更新,中间函数,检查点回滚,死锁安全
软件动态更新论文文献综述
陈志坤[1](2016)在《基于中间函数的云软件动态立即更新机制研究》一文中研究指出云服务提供商为了提升服务质量需要不断的更新软件版本来修复漏洞和添加新功能。传统软件更新方法需要先关闭软件,更新完成后再重新启动软件,这样服务一方面会中断,另一方面会丢失更新前的状态。这对于需要提供7×24小时不间断的云软件服务而言,无疑降低了软件可用性和云租户的使用体验。而云服务软件如不及时更新,又会降低服务的安全性和可靠性。因此提供一种能让待更新软件不中断的情况下完成更新的方法至关重要。现有的软件动态更新技术可以不需要额外的硬件设施完成软件的在线更新,但是更新过程存在安全问题以及崩溃后程序无法回滚的问题,亟需解决。基于中间函数的云软件动态更新系统是一种安全而即时的动态更新系统。针对传统软件动态更新技术的不足,基于中间函数的云软件动态更新系统设计出了并实现了叁个子系统:1)补丁生成子系统:用于生成待更新软件的动态补丁。2)软件更新控制子系统:用于控制待更新软件的更新过程。3)软件故障监控子系统:当更新发生错误时,软件故障监控子系统将使用事先保存的检查点将软件回滚到更新之前状态。基于中间函数的云软件动态更新系统针对叁个典型的应用程序vsftpd,sshd,Apache Httpd进行了测试。测试结果表明,云软件动态更新系统能在这叁种软件不发生中断的情况完成更新工作。在更新过程中,系统更新时间不超过102ms,更新时内存开销为0.15%-4.55%,对于待更新软件的性能影响不超过5%。进一步测试了更新过程中发生错误的情况,该系统能在200ms内将待更新软件回滚到更新前的状态。(本文来源于《华中科技大学》期刊2016-05-24)
安圣威[2](2016)在《一个基于事件的软件动态更新形式化框架》一文中研究指出软件系统的更新是不可避免的。通常这些更新是通过离线方式完成的。离线更新需要先关闭系统,在安装新版本后,重启系统,因此离线更新会给系统带来较长时间的干扰和中断。在例如金融事务处理系统等关键性场景中,服务是不能被长时间中断的。因此,离线更新不适用于这些场景。同时离线更新在日常应用程序系统如Windows中带来的频繁干扰也是很恼人的。所以,我们需要一种在运行时刻更新软件系统的技术,即软件动态更新。因为软件动态更新需要将运行中的旧版本系统状态映射到新版本中,即使是新旧版本都正确的情况下,它仍可能会导致离线更新不会引发的错误,所以它并没有被广泛应用。形式化方法是保证软件动态更新正确性的一种主流方法。但是已有的形式化方法有一些不足,有的只考虑了模型本身的信息而没有考虑用户提供的规约,这样太过于宽松以至于不能保证正确性;有的方法把系统看作白盒,对系统内部实现的状态迁移进行规约,带来过度规约的问题;还有的工作仅仅考虑了静态分析的信息,虽然能够保证软件动态更新的正确性,但是太过于保守。为了解决这些问题,本文做了如下工作:1.提出一个软件动态更新的形式化框架。这个框架的与以往工作不同之处在于该框架使用了显式化的环境模型以及基于事件的角度。这两个特点可以使得我们在一个更加抽象的层面来定义软件动态更新及其正确性。这样可以避免过度规约的问题,允许更加灵活的软件动态更新。2.基于上述框架,我们提出一个基于运行时刻监视器的乐观软件动态更新方法。不同于以往的仅仅使用静态信息的保守悲观软件动态更新,我们结合运行时刻的监视器获得的运行时刻的信息与静态分析的结果,提出了一个乐观的方法,使得在保证正确性的前提下,提高软件动态更新的时效性。进一步,我们给出了一个自动合成该监视器的算法。3.对软件动态更新的平滑性进行了初步研究。我们不仅想要保证软件动态更新的正确性,更希望能够软件动态更新能够有更高的质量,保留已有的适用于新版本的计算结果。这样可以使得在更新之后,不需要在重做或者补偿上面付出额外的开销。(本文来源于《南京大学》期刊2016-05-01)
陈峰[3](2015)在《基于多版本执行的云软件动态更新》一文中研究指出为了修复软件错误或者添加新的功能,经常需要更新软件。然而对于一些比较严格的软件(如云端应用)而言,为了保证连续的服务,必须在没有停机时间的情况下更新这些软件。传统的动态软件更新方法可以在程序运行的时候对其进行更新,但这些方法往往很少考虑所要更新程序与外部其它程序之间的通信,这样往往会导致软件的不一致问题。基于多版本执行的动态软件更新方法可以解决传统动态软件更新中出现的不一致问题。当更新到达时,先不对其进行更新,而是首先创建一个新进程,新进程与旧版本程序相同,然后将该进程由旧版本动态更新到新版本。在运行期间保持两个版本的进程并发运行直至更新完成。根据上述方法,考虑更新的安全性,在Linux下设计并实现了一个原型系统——云软件动态更新系统。云软件动态更新系统在实现过程中采用了叁个关键技术:栈拷贝、动态软件更新及系统调用级同步。为了验证该原型系统,将云软件动态更新系统应用到云软件Redis、Memcached和Icecast的更新中,并评价云软件更新系统的运行时系统开销。实验结果表明云软件动态更新系统能够解决云软件在动态更新过程中发生的不一致问题,但同时也带来了一定的系统开销,未来其性能有进一步提升空间。(本文来源于《华中科技大学》期刊2015-05-01)
刘晓杰[4](2014)在《基于KITSUNE的动态软件更新及应用研究》一文中研究指出软件在其生命周期内需要不断地进行维护或更新操作,以修复软件错误、扩展新功能或者适应新的硬件环境。传统的更新方式是在停机状态下进行维护或升级,但是一些关键应用需要软件提供7x24的服务,要求软件具有很高的持续可用性。利用软件动态更新可减少关机和重启而引起的风险和损失,而软件动态更新的能力显得日益重要,得到了学术界和工业界的高度重视。本文梳理和总结了动态软件更新的相关技术、问题及现状;深入剖析了KITSUNE工作原理和相关技术,包括更新点设置、动态链接与状态转移等关键技术;本文通过对KITSUNE进行动态更新应用研究,提出了KITSUNE动态更新存在的问题以及相应的解决方案。首先,KITSUNE动态更新需要保证更新前后程序状态一致,通过分析程序的时序状态,提出了状态转移后程序状态不可达的问题。然后针对动态更新过程中的正确性问题,提出了更新点设置策略,通过在程序事件处理长循环开始处设置更新点,保证动态更新执行时程序处于安全状态,使得动态更新能够正确进行。其次,针对动态更新对程序状态信息进行迁移和转换时,KITSUNE无法支持使用专门内存管理机制应用程序的问题,从通用性、透明性的需求出发,提出了通用性内存管理改进方案。利用KITSUNE和待更新软件程序,修改KITSUNE内存管理机制,对KITSUNE程序进行动态更新,使其支持特定应用程序的内存管理机制。第叁,在面向Redis的动态更新应用研究中,设计并实现了针对Redis内存管理机制的专门内存管理方案,通过修改Redis的内存管理函数,使其满足KITSUNE动态更新的要求。最后,通过对Redis数据库和FTP服务器程序的动态更新测试实验,验证了更新点设置策略,内存管理方案在KITSUNE系统中的正确性。通过对软件正常运行与利用KITSUNE系统加载软件程序执行的性能对比、动态软件更新过程消耗时间统计,分析了动态更新对软件的性能影响。(本文来源于《国防科学技术大学》期刊2014-10-01)
黄晗[5](2013)在《基于代理的动态软件更新方法》一文中研究指出动态软件更新是一种新型的软件演化机制,它允许应用软件系统在运行过程中执行软件更新而不会出现停机状态。一些大型重要的应用软件系统需要提供不间断的可用性服务将受益于此机制,因此将OSGI作为软件构件的支撑平台,提出一种基于代理的OSGi构件动态更新方法。该方法继承了OSGi良好的生命周期管理和动态依赖管理特性,拓展了其动态性和互换性的特点。实验表明,该方法可以准确地进行OSGi构件的动态更新,将对智能家居环境下的系统维护及其软件演化提供一定的指导意义。(本文来源于《叁明学院学报》期刊2013年04期)
郭衍清[6](2013)在《面向对象软件的类对象动态更新技术研究》一文中研究指出半个多世纪来,计算机技术飞速发展,应用软件的规模也随之愈发庞大,越来越复杂。然而不幸的是,软件规模和复杂性增加的同时不可避免地引入了越来越多的安全漏洞和缺陷。尽管软件业一直在努力,遗憾的是,我们不得不面对这样一个事实,“完美的应用软件”一直没有存在过,软件或多或少都存在有Bug。面对软件的不完美之处,大量的更新程序或者补丁被发布,用于弥补漏洞,修补程序缺陷,抑或是用于增强软件功能,我们在此统称之为软件更新。在当今社会,大多数组织都有自己的软件系统,都有着非常重要的使命,其软件系统必须持续不断运行,要求软件服务不能够停止运行,期望24小时*7天的不间断运行。而且这类要求往往常见于关系民生国计的重要行业中。这些软件提供的服务可能维护着大量的数据,如果因为各种原因导致这些服务中断,会带来惊人的损失比如网络供应商,如果其服务不可以使用了,无论是在经济上还是在消费者的用户好感性上都可能会造成很大的损失。动态更新是一种新型的软件演化技术,旨在不停机的条件下实现对软件模块的更新,已经成为研究的热点。本文基于而向对象技术研究,软件在服务不停止的情况下完成系统中类对象的更新。对类的更新分为类已经存在和类是系统中不存在的。根据更新前后类型的不同分成了四种情况,类型相同、超类型、子类型和不相关类型,其中类型相同的情况根据语言不同,有些语言不支持一种类型的两个类定义同时存在;对于超类型的情况也是很少见的,将这四种情况分成匹配类型和不匹配类型。详细分析了类的动态更新机制,本文采用了集中式动态更新机制,对接口和实现分离的方法改进,开发了一种基于代理的类更新方法,对类的访问都间接通过代理访问实现。本文还研究更新过程中对象之间的依赖问题。一个类的更新有时候会导致若干类的更新,对此采用了类的更新集,并使用有向图来实现。本文构建了一个基于Java语言的动态更新系统。实验表明,更新系统开销较低,实验表明能够正常工作。(本文来源于《广东工业大学》期刊2013-06-01)
谢国珍[7](2013)在《一种基于断言的软件动态更新技术》一文中研究指出应用程序生命周期中需要不断进行更新,以修复程序中的错误、添加新的功能、适应环境和需求的变化。传统更新方式需关闭应用程序、安装更新、然后重启新版本的应用程序,但很多应用程序需要不间断的运行。软件动态更新不需要关闭应用程序,在运行的过程中实现对软件程序的更新。较之离线更新,动态更新面临更大的技术挑战,而如何保证更新后程序运行的正确性是其难点所在。现有程序代码级动态更新技术对更新正确性的考虑多停留在类型正确层面上,仅能够保证动态更新之后运行不发生类型错误。应用语义层面正确性的保证是通过程序员对更新点的选择来进行控制的,而这方面缺乏系统化的方法和技术的支持。本文在研究了当前C语言程序动态更新机制和安全策略的基础上,提出并实现了一种基于断言的动态更新点选择技术,用于帮助避免动态更新后程序运行的逻辑错误。主要工作包括:首先,提出了一种基于程序断言的更新点选择准则。通过程序新旧版本中已有的或者为动态更新添加的程序断言,可指定期望程序在当前点需要满足的属性。动态更新时更新前后程序运行路径上的断言不应被破坏。其次,为上述准则提出一种使用基于约束控制流分析的自动判断技术。对于每一个更新点,寻找与之相关的断言,即在这些更新点更新可能会受影响的断言。通过分析程序中与这些断言存在关联的所有类型、变量和函数,保守地判断这些断言有无被违反的可能。如果存在断言被违背,则更新点不满足上述准则,跳过该更新点,程序继续运行,继续寻找满足条件的更新点。如果断言不被违背,则在该更新点可进行更新。最后,基于Ginseng系统实现一个基于断言的更新点自动选择机制,并通过一个OpenSSH的实际更新实例,说明了上述技术的实际使用,初步展示了其可行性和有效性。(本文来源于《南京大学》期刊2013-05-22)
王姜[8](2013)在《一种支持软件动态更新的服务构件架构》一文中研究指出基于构件的软件开发CBSD (Component-Based Software Development)技术被认为是提高软件开发效率和质量的有效途径,并获得广泛的关注与应用,产生了诸多构件模型和构件框架。但随着Internet/WWW逐步演化为开放的计算平台,源于传统静态环境的CBSD难以充分应对开放网络环境下用户需求和软件平台的动态、多变性。应对需求和环境变更的一个有效途径是允许运行中的构件系统能够动态地更新。主流的构件模型和构件框架对动态更新支持薄弱,而学术界研究所假设的模型过于简化难以实际应用。本文扩展了服务构件架构SCA (Service Component Architecture),使其能完整的支持构件动态更新。具体而言,本文所做扩展主要包括:·提出支持动态更新的事务模型分布式事务模型是为动态更新算法提供所需信息的基础。该模型明确定义了在动态更新需求下,一个事务应该具有的状态、事务不同状态之间的跳转语义以及事务状态在分布式构件之间的传递。根据当前分布式事务的状态,该事务模型能够很好的为不同的动态更新算法提供支持。●提出支持动态更新的一致性模型针对既有构件模型缺乏对动态更新所需的构件元数据支持,本文定义了构件对象以表述构件版本等构件元数据,定义了依赖信息以表征构件之间的依赖关系为更新提供判断依据。在此基础之上,定义了系统一致性模型,并结合服务构件架构规范的构件模型,总结了其构件模型为达到一致性应该具备的特征。●提出支持动态更新的构件生命周期模型为便于对构件进行管理,本文定义了更加细粒度的构件生命周期模型。该模型为构件定义诸多动态更新过程中存在的状态、构件不同状态的跳转语义以及构件状态在分布式构件之间的传递。借助该构件生命周期模型,分布式构件之间可以协同完成动态更新,并提供具体动态更新算法层面的一致性。基于上述工作,将其映射到不同的动态更新算法实现上,设计并实现了一个支持动态更新的服务构件架构平台,并在一个旅行代理的应用场景中展示了动态更新过程,初步验证了本文工作的可行性与有效性。(本文来源于《南京大学》期刊2013-05-20)
姚燕[9](2012)在《动态软件更新—文献综述和实验研究》一文中研究指出软件系统投入运行之后,还常需不断更新以修正错误、增强功能、适应环境和需求的变化。传统的方式需要先关闭系统再重新部署才能实现软件的更新。但频繁重启系统可能会带来不必要的麻烦和开销。对于关键任务系统,服务的中断还可能会导致严重的后果。动态软件更新不关闭系统,在运行过程中实现对软件程序的更新。较之离线更新,动态软件更新面临更大的技术挑战,其主要困难是要兼顾技术的灵活性、一致性保障、高效性以及易用性等。当前,已有一系列动态软件更新方面的工作,但它们主要关注各自特定的技术实现,而缺乏在实际应用场景下如何选择使用各种技术的系统方案。尤其是,动态软件更新主要应用于需要长时间运行的服务器系统,而现代服务器系统通常是包含了程序设计语言层、中间件层和业务逻辑层等的多层系统。此类系统的更新不但会涉及业务逻辑层,也会涉及到中间件层。本文以此类软件系统的动态更新需求为目标,系统地综述并比较既有的动态软件更新技术的相关研究,进而通过一组实验,较全面地评估各种既有技术的动态更新能力和性能,以此作为动态更新实际应用的系统方案的基础,并为动态软件更新技术的进一步研究提示方向。具体而言,本文的工作包括:1)提出了一种动态更新技术的比较框架。基于对动态软件更新的技术特征的分析,给出更新技术的一致性保障、灵活性、可执行性、状态迁移性、高效性、对开发人员的透明性和并发性等一系列指标作为比较的依据。并通过对基于中间件的软件系统之动态更新的可能途径的讨论,将既有技术分为从应用程序自身动态更新、中间件支持的应用程序动态更新、虚拟机支持的程序动态更新叁类。2)基于上述比较框架,对现有动态更新技术DUSC、JBoss热部署、HotSpot JVM、DCE VM、JRebel、JVolve、JDUS等进行系统的综述和比较分析,并对其可用性进行讨论。3)设计了一组实验,对各个动态更新技术进行功能和性能测试。首先通过一组独立实验来验证各种技术的一致性、灵活性、可执行性、状态迁移性、可移植性和并发性等。进而,选择具有典型意义的第叁方基准程序DayTrader,对相关动态更新技术进行性能实验和比较分析。最后,基于上述综述和实验,对动态更新的技术选择和应用考虑给出一系列建议。(本文来源于《南京大学》期刊2012-04-01)
徐小辉[10](2011)在《构件化软件动态更新关键技术及形式化研究》一文中研究指出在一些任务关键型应用系统中,由于系统具有高可用性需求,在进行软件故障修复、服务功能扩展或系统性能改进等软件更新操作时,需要在保持系统持续运行的情况下动态地进行。软件系统如果能够具备良好的动态更新能力,将有利于提高系统的适应性,从而延长软件生命周期,减少管理和运营成本,并满足不断增长的软件复杂性和适应性需求。本文从功能和非功能需求分析着手,研究在构件化软件中提供动态更新支持需要解决的关键技术问题,并结合动态模块化、事务处理、状态迁移等动态更新支持需求,对高阶π演算(HOπ)进行扩展研究,开发一种可用于刻画构件化软件动态更新的演算方法,为动态更新安全性、一致性等的保证提供形式化推演机理。并且,构建动态更新支持平台对解决方案加以技术实现,通过原型案例和实验实现来验证方法的可行性。本文的研究工作和创新性主要包含以下方面:1.提出一套动态更新支持相关问题的技术解决方案,基于软件构件的服务功能、结构表达以及构件组装、通信与交互等特征,结合软件系统动态更新支持的可用性、正确性等需求,研究构件化软件动态更新中的关键技术问题。基于安全通信、依赖分析、静态分析、事务处理等技术,给出了更新点确定、更新文件交付、更新时机选择、状态提取及迁移、更新失败恢复等方面问题的解决方法。2.扩展高阶π演算以分别刻画动态模块化、事务处理和状态保持等动态更新支持机制,提出一种刻画构件化软件动态更新的形式化演算(称为updateπ演算),根据构件化软件动态更新支持形式化推演的设计依据,引入进程序列原语,结合对高阶π演算的动态更新支持扩展,给出了updateπ演算的抽象语法、操作语义和推演规则,并通过应用实例具体刻画典型动态软件更新行为,包括更新时机选择、更新执行过程、状态提取与迁移、更新失败检测与恢复等方面。3.提出一种构件化软件动态更新支持服务框架,刻画构件开发管理、底层服务架构、服务功能实现、服务部署与管理和目标应用系统等部分之间的交互联系。其中动态更新支持作为服务部署与管理模块的核心功能,实现了动态更新的各种功能和非功能需求,包括更新初始化、更新调度、更新操作和失败处理等。基于R-OSGi技术开发构件化软件动态更新支持系统,实现普适计算环境下的动态软件更新原型,验证了方法的可行性。(本文来源于《上海交通大学》期刊2011-12-01)
软件动态更新论文开题报告
(1)论文研究背景及目的
此处内容要求:
首先简单简介论文所研究问题的基本概念和背景,再而简单明了地指出论文所要研究解决的具体问题,并提出你的论文准备的观点或解决方法。
写法范例:
软件系统的更新是不可避免的。通常这些更新是通过离线方式完成的。离线更新需要先关闭系统,在安装新版本后,重启系统,因此离线更新会给系统带来较长时间的干扰和中断。在例如金融事务处理系统等关键性场景中,服务是不能被长时间中断的。因此,离线更新不适用于这些场景。同时离线更新在日常应用程序系统如Windows中带来的频繁干扰也是很恼人的。所以,我们需要一种在运行时刻更新软件系统的技术,即软件动态更新。因为软件动态更新需要将运行中的旧版本系统状态映射到新版本中,即使是新旧版本都正确的情况下,它仍可能会导致离线更新不会引发的错误,所以它并没有被广泛应用。形式化方法是保证软件动态更新正确性的一种主流方法。但是已有的形式化方法有一些不足,有的只考虑了模型本身的信息而没有考虑用户提供的规约,这样太过于宽松以至于不能保证正确性;有的方法把系统看作白盒,对系统内部实现的状态迁移进行规约,带来过度规约的问题;还有的工作仅仅考虑了静态分析的信息,虽然能够保证软件动态更新的正确性,但是太过于保守。为了解决这些问题,本文做了如下工作:1.提出一个软件动态更新的形式化框架。这个框架的与以往工作不同之处在于该框架使用了显式化的环境模型以及基于事件的角度。这两个特点可以使得我们在一个更加抽象的层面来定义软件动态更新及其正确性。这样可以避免过度规约的问题,允许更加灵活的软件动态更新。2.基于上述框架,我们提出一个基于运行时刻监视器的乐观软件动态更新方法。不同于以往的仅仅使用静态信息的保守悲观软件动态更新,我们结合运行时刻的监视器获得的运行时刻的信息与静态分析的结果,提出了一个乐观的方法,使得在保证正确性的前提下,提高软件动态更新的时效性。进一步,我们给出了一个自动合成该监视器的算法。3.对软件动态更新的平滑性进行了初步研究。我们不仅想要保证软件动态更新的正确性,更希望能够软件动态更新能够有更高的质量,保留已有的适用于新版本的计算结果。这样可以使得在更新之后,不需要在重做或者补偿上面付出额外的开销。
(2)本文研究方法
调查法:该方法是有目的、有系统的搜集有关研究对象的具体信息。
观察法:用自己的感官和辅助工具直接观察研究对象从而得到有关信息。
实验法:通过主支变革、控制研究对象来发现与确认事物间的因果关系。
文献研究法:通过调查文献来获得资料,从而全面的、正确的了解掌握研究方法。
实证研究法:依据现有的科学理论和实践的需要提出设计。
定性分析法:对研究对象进行“质”的方面的研究,这个方法需要计算的数据较少。
定量分析法:通过具体的数字,使人们对研究对象的认识进一步精确化。
跨学科研究法:运用多学科的理论、方法和成果从整体上对某一课题进行研究。
功能分析法:这是社会科学用来分析社会现象的一种方法,从某一功能出发研究多个方面的影响。
模拟法:通过创设一个与原型相似的模型来间接研究原型某种特性的一种形容方法。
软件动态更新论文参考文献
[1].陈志坤.基于中间函数的云软件动态立即更新机制研究[D].华中科技大学.2016
[2].安圣威.一个基于事件的软件动态更新形式化框架[D].南京大学.2016
[3].陈峰.基于多版本执行的云软件动态更新[D].华中科技大学.2015
[4].刘晓杰.基于KITSUNE的动态软件更新及应用研究[D].国防科学技术大学.2014
[5].黄晗.基于代理的动态软件更新方法[J].叁明学院学报.2013
[6].郭衍清.面向对象软件的类对象动态更新技术研究[D].广东工业大学.2013
[7].谢国珍.一种基于断言的软件动态更新技术[D].南京大学.2013
[8].王姜.一种支持软件动态更新的服务构件架构[D].南京大学.2013
[9].姚燕.动态软件更新—文献综述和实验研究[D].南京大学.2012
[10].徐小辉.构件化软件动态更新关键技术及形式化研究[D].上海交通大学.2011