正在加载图片...
许畅等:可成长软件理论方法和实现技术:从范型到跨越 4.2.1开放环境感知与自适应方法和技术 这方面研究要解决高质高效的环境上下文一致性处理问题, 可成长软件需要能够根据所感知的环境上下文调整自身行为,以实现智能的软件服务,但环境上 下文中往往包含各种感知噪音和测量误差,容易导致错误的行为调整,甚至造成软件崩溃.当前的方 法是通过约束检测发现环境上下文一致性错误并及时修复,但已有技术采用即时调度策略,虽然能保 证正确性但是效率低下,也有尝试批量检测策略,虽然能提高效率但是丢失率居高不下.对此,我们提 出了基于自适应分组的批量检测策略GEAS1间,既保证正确性,又兼容已有约束检测技术并大幅提升 检测效率.与已有工作相比,GEAS可提升约束检测效率1.46.5倍,并保证零丢失率,而已有工作则 会导致39%~65%的丢失率.在此基础上,基于组内匹配对消优化,我们进一步提出了跨越批处理式增 强型检测策略GEAS-opt1),在零丢失率前提下,提升约束检测效率6.728.6倍.基于该技术,我们 实现了原型测试系统,使用588万城市车辆GPS数据开展一致性约束检测实验,结果表明该系统在 离线检测配置下可提升检测效率48~148倍,在在线检测配置下可提升检测效率18~42倍,并保证了 零漏报率和零误报率,有效支撑了可成长软件高质高效感知开放环境的能力. 4.2.2软件无缝演化和过程演进支撑技术 这方面研究要解决高一致低干扰的软件动态更新.非确定环境下的自适应系统验证.以及面向开 发生态的运维推荐和需求分析等问题, 可成长软件的无缝演化依赖于动态更新技术.它可以在不终止正在运行软件系统的前提下将其更 新到新版本.在动态更新的过程中,被修改系统组件的运行时状态需被合理地转换到对应的新状态 以确保被修改组件仍可正确与其他组件交互.然而实现运行时状态转换面临诸多困难.主要是由于不 同版本组件的底层实现差异所导致.对此,我们提出了AOTES技术18,针对Java程序实现动态更新 中的自动对象状态转换.为了消除不同版本实现层的差异,AOTES将旧版本中对象状态抽象成方法调 用历史,然后将该调用历史中的旧版本方法替换成对应的新版本方法,并重新执行新版本方法调用序 列创建对应的新版本对象状态.AOTE$不需要对被更新程序做任何代码插桩,因此在软件系统常态 执行过程中没引入额外负载.我们收集了若干开源软件开发库和服务器程序,包括Apache Commons Collections,Tomcat,FTP以及SSHD.在61个实验对象转换中,AOTES可成功完成51个对象转换, 而已有技术(如缺省转换和TOS转换1町)只能处理611个对象转换.在此基础上,我们分别在代码 层、构件层和应用层部署软件动态更新技术.针对重要的技术指标,在干扰减少方面,我们初步实现面 向微服务的软件无缝演化,较传统安全的Quiescence方法20,AOTES在版本更新时可减少23.9%的 千扰,在停顿控制方面,我们初步实现面向代码级更新的Javelus8,在42个真实Tomcat更新上的测 试实验中,系统中断时间不超过70.5s,有效支撑了可成长软件的跨版本无缝演化能力. 此外,可成长软件的自主适应需要应对开放环境的非确定性,因此非确定环境下的自适应系统验 证是一个重要问题.已有技术通过反例构造验证和发现自适应系统中的缺陷问题.但其所依赖的非确 定环境模型往往不够准确而需要在真实环境中对构造的反例进一步确认.困难是这样构造的反例由于 发生概率很低而导致确认的效率极低,严重影响系统验证的效果.对此,我们提出了VERSA技术21), 以原有反例为基础,进一步构造出新的路径等价反例,这些新构造的反例能确保触发等价的原缺陷问 题,但拥有基于当前非确定环境模型的最大发生概率.实验表明,VESA比已有技术可显著提升构造 反例的发生概率(发生概率提升一个数量级,触发时间降低一个数量级),有效推进了自适应系统的缺 陷验证水平.进一步的,此类方法其所依赖的非确定环境模型由于感知误差和数据样本问题往往不够 1604 https://engine.scichina.com/doi/10.1360/SSI-2020-0079许畅等: 可成长软件理论方法和实现技术: 从范型到跨越 4.2.1 开放环境感知与自适应方法和技术 这方面研究要解决高质高效的环境上下文一致性处理问题. 可成长软件需要能够根据所感知的环境上下文调整自身行为, 以实现智能的软件服务, 但环境上 下文中往往包含各种感知噪音和测量误差, 容易导致错误的行为调整, 甚至造成软件崩溃. 当前的方 法是通过约束检测发现环境上下文一致性错误并及时修复, 但已有技术采用即时调度策略, 虽然能保 证正确性但是效率低下, 也有尝试批量检测策略, 虽然能提高效率但是丢失率居高不下. 对此, 我们提 出了基于自适应分组的批量检测策略 GEAS [16] , 既保证正确性, 又兼容已有约束检测技术并大幅提升 检测效率. 与已有工作相比, GEAS 可提升约束检测效率 1.4∼6.5 倍, 并保证零丢失率, 而已有工作则 会导致 39%∼65% 的丢失率. 在此基础上, 基于组内匹配对消优化, 我们进一步提出了跨越批处理式增 强型检测策略 GEAS-opt [17] , 在零丢失率前提下, 提升约束检测效率 6.7∼28.6 倍. 基于该技术, 我们 实现了原型测试系统, 使用 588 万城市车辆 GPS 数据开展一致性约束检测实验, 结果表明该系统在 离线检测配置下可提升检测效率 48∼148 倍, 在在线检测配置下可提升检测效率 18∼42 倍, 并保证了 零漏报率和零误报率, 有效支撑了可成长软件高质高效感知开放环境的能力. 4.2.2 软件无缝演化和过程演进支撑技术 这方面研究要解决高一致低干扰的软件动态更新, 非确定环境下的自适应系统验证, 以及面向开 发生态的运维推荐和需求分析等问题. 可成长软件的无缝演化依赖于动态更新技术, 它可以在不终止正在运行软件系统的前提下将其更 新到新版本. 在动态更新的过程中, 被修改系统组件的运行时状态需被合理地转换到对应的新状态, 以确保被修改组件仍可正确与其他组件交互. 然而实现运行时状态转换面临诸多困难, 主要是由于不 同版本组件的底层实现差异所导致. 对此, 我们提出了 AOTES 技术 [18] , 针对 Java 程序实现动态更新 中的自动对象状态转换. 为了消除不同版本实现层的差异, AOTES 将旧版本中对象状态抽象成方法调 用历史, 然后将该调用历史中的旧版本方法替换成对应的新版本方法, 并重新执行新版本方法调用序 列创建对应的新版本对象状态. AOTES 不需要对被更新程序做任何代码插桩, 因此在软件系统常态 执行过程中没引入额外负载. 我们收集了若干开源软件开发库和服务器程序, 包括 Apache Commons Collections, Tomcat, FTP 以及 SSHD. 在 61 个实验对象转换中, AOTES 可成功完成 51 个对象转换, 而已有技术 (如缺省转换和 TOS 转换 [19] ) 只能处理 6∼11 个对象转换. 在此基础上, 我们分别在代码 层、构件层和应用层部署软件动态更新技术. 针对重要的技术指标, 在干扰减少方面, 我们初步实现面 向微服务的软件无缝演化, 较传统安全的 Quiescence 方法 [20] , AOTES 在版本更新时可减少 23.9% 的 干扰, 在停顿控制方面, 我们初步实现面向代码级更新的 Javelus 8, 在 42 个真实 Tomcat 更新上的测 试实验中, 系统中断时间不超过 70.5 ms, 有效支撑了可成长软件的跨版本无缝演化能力. 此外, 可成长软件的自主适应需要应对开放环境的非确定性, 因此非确定环境下的自适应系统验 证是一个重要问题. 已有技术通过反例构造验证和发现自适应系统中的缺陷问题, 但其所依赖的非确 定环境模型往往不够准确而需要在真实环境中对构造的反例进一步确认. 困难是这样构造的反例由于 发生概率很低而导致确认的效率极低, 严重影响系统验证的效果. 对此, 我们提出了 VERSA 技术 [21] , 以原有反例为基础, 进一步构造出新的路径等价反例, 这些新构造的反例能确保触发等价的原缺陷问 题, 但拥有基于当前非确定环境模型的最大发生概率. 实验表明, VERSA 比已有技术可显著提升构造 反例的发生概率 (发生概率提升一个数量级, 触发时间降低一个数量级), 有效推进了自适应系统的缺 陷验证水平. 进一步的, 此类方法其所依赖的非确定环境模型由于感知误差和数据样本问题往往不够 1604 https://engine.scichina.com/doi/10.1360/SSI-2020-0079
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有