Software Systems Under Construction
中文导读
随着Internet开放网络环境的出现和快速发展,诸如开放资源联盟(Open Resource Coalition, ORC)、网构软件(Internetware)等新型软件系统构造形态相继出现,软件系统典型地表现为一个由分散在开放网络环境中的若干软件实体组成的临时性或持久性的软件协作联盟,其目的在于实施用户设定的某个具体任务。此软件系统形态具有若干有别与传统的新特征,如用户为中心、非集中式控制、持续演化等。而传统的面向开发者的通用评价标准和基于测试的软件可信性度量方法难以适应新的软件系统构造形态,使得在此构造形态下获得高可信的软件系统面临挑战,主要原因在于:1)软件系统开发方式逐步由开发者为中心向用户为中心转移,而用户的主观性需求难以用统一的客观标准完全刻画;2)非集中式控制难以有效保证对组成系统的软件实体进行测试,而持续演化使得对软件系统的测试也难以实施。为此,本文提出了一个基于主体间信任关系的软件系统可信性度量方法,主要包括:1)从用户的角度描述可信需求;2)通过从信任的第三方推荐者获得的关于目标实体的量化信息来评价系统各组成实体;3)基于组成系统的软件实体的可信度和组成方式(软件系统体系结构)来评价整个系统的可信度。
本文的主要贡献在于,给出了一个初步的、但可操作的应对开放环境中软件系统新形态的可信性度量方法,该方法依靠软件参与主体间的信任关系和软件系统体系结构信息,解决了开放环境中软件系统可信性度量信息缺乏的问题,一方面依靠主体间的信任关系获得有关被评价软件实体的各种可靠信息,另一方面依靠组成系统的软件实体的可信度以及软件系统体系结构信息来估算整个系统的可信度。同时,考虑到系统动态演化对评价效率的要求,系统级可信度计算的过程中,采用分层的方式进行了子系统的可信敏感性分析,对于敏感性小的子系统,可以避免频繁地计算,从而提高系统可信性估算效率。
本文给出的方法还较为初步,例如,在软件实体可信评估中用于描述主体间信任关系的模型较为简单,主要表现在信任度的刻画是二值的,没有考虑信任关系的多侧面性,没有考虑声誉对信息收集和处理的影响;另外,在估算系统可信度的过程中,主要依靠常见的组合结构分解系统,并采用自底向上逐步综合的方法,该方法较难应对复杂的系统组合结构。因此,未来的工作主要侧重探讨与完善该可信性评估方法的各支撑技术与理论,从而不断地提高其合理性。另外,也希望能够针对目前主流的Web服务系统进行可信性评估与保障的具体应用研究。
软件产品线开发中的领域分析通过系统和全面的共性/可变性分析为产品线核心资产的设计与实现提供了基础。在面向特征的软件产品线开发方法中,领域分析得到的是领域特征模型以及相应的支持应用系统定制的特征决策模型。与单个软件系统一样,软件产品线也存在非功能性需求(NFR),并且各个应用产品在非功能性需求上也会存在差异和可变性。因此,软件产品线开发中的领域分析也应该同时考虑功能和非功能性领域需求。非功能性需求不像功能性需求那样明确,而非功能性可变性更是具有与功能性可变性具有不同的表现形式,例如非功能性目标实现程度上的差异或者不同的非功能性目标权衡考虑等。这些都为产品线非功能性需求分析带来了困难。 本文针对软件产品线开发,提出了一种基于上下文环境(context)的NFR分析方法。该方法通过将非功能性目标(goal)与相应的现实世界环境相联系使NFR的存在具体化。本文的方法首先在初始的功能性特征模型基础上进行特征上下文建模。然后,该方法在使用NFR图表示的非功能性目标模型以及NFR模板的基础上,通过上下文环境分析、非功能性目标冲突分析以及非功能性目标实现操作分析等多个层面上的分析工作实现NFR可变性分析。可变性分析之后,该方法将非功能性目标和相应的实现操作集成到初始的功能性特征模型中。与NFR相关的可变性约束也会进行分析,并被集成到特征模型中。最后,该方法将构造同时包含功能和非功能性观点的特征决策模型,以支持面向特定应用的特征模型定制。本文以计算机辅助阅卷系统产品线作为贯穿全文的产品线实例来说明方法的有效性。 本文系统分析了非功能性目标与功能性特征的关系以及非功能性可变性的根源,包括应用系统上下文环境的差异以及非功能性目标之间的不同权衡等。在此基础上,本文在NFR图以及特征上下文模型的支持下,通过目标精化、多个层面上的NFR可变性分析以及非功能性特征与功能性特征的集成分析,实现了面向特征的产品线非功能性需求分析和建模。该方法主要关注于NFR的分析和建模,没有涉及非功能性可变性对产品线设计以及应用产品定制的影响。后续的工作一方面将关注于更加系统的软件产品线NFR分析和设计方法,包括NFR获取、可变性分析以及面向NFR的可变性设计。另一方面将会把相关方法与课题组已有的软件产品线分析、设计和实现工具相集成,包括与已有的特征建模工具相集成以提供非功能性特征建模能力,以及与应用产品配置与组装工具集成以提供面向NFR的应用定制能力。
本文所提出的软件产品线非功能性特征分析方法为领域分析中的NFR获取、可变性分析和集成提供了支持。该方法建立在领域分析中得到广泛应用的特征分析方法基础上,能够较为方便地实现与现有的面向特征的产品线开发方法相集成,从而支持基于非功能性特征的产品线设计、实现以及应用产品定制和组装。
1. 动机与创新 现在的应用对可靠性和可用性的需求越来越高。这主要是由于软件失效通常会造成巨大的经济和信誉的损失,因此对于应用服务器可靠性和可用性的研究是非常必要的。 近年来,很多研究者指出应用在持续运行较长一段时间后通常会出现性能下降和故障率升高等问题。这一普遍的现象被称为软件老化。目前,对于软件老化的研究主要集中在如何减少老化问题和如何为应用服务器实现一个高可用的系统。本文提出了一种新的方法,该方法使用基于虚拟机的软件再生(本文将它命名为VMSR)为应用服务器系统提供高可用性。
2. 方法概要 引起软件老化的因素涉及到操作系统资源可用性的持续下降,数据损坏,以及大量有可能导致系统崩溃或不可预测的系统挂起的错误积累。软件再生技术被广泛的用于避免各种不可预测的错误,主要包括软件老化以及瞬时性错误等问题。软件再生是一种主动的错误管理技术,它通过提前清理系统的内在状态来避免将来有可能发生的更加严重的错误。而虚拟化技术则允许多个操作系统实例并发地运行在一台计算机上,它能够为不同的操作系统实例划分硬件资源。本文采用虚拟化技术完全消除了软件再生所需要的冗余的硬件资源。 在本文中,我们首先提出了一种基于虚拟机技术的软件再生方法VMSR为应用服务器系统提供高可用性。其次,我们使用随机模型对一个运行了多个虚拟机和VMSR框架的物理服务器进行了建模,并且通过数值分析方法和 SHARPE(Symbolic Hierarchical Automated Reliability and Performance Evaluator)模拟工具对该模型进行了评估。VMSR模型具有很好的通用性并且可以捕获应用服务器的多种特征、错误行为以及性能度量结果。
2.1 VMSR 框架 本节我们将着重讨论VMSR系统如何使用虚拟化技术管理再生过程。本文提出的方法是在一台物理服务器上保存一个老化应用的多个副本,通过触发每个副本的再生操作来监测软件老化。当处于活动状态的虚拟机中的原始应用将要被执行再生操作时,我们就将服务迁移到另外一台虚拟机上。图1是VMSR系统的一个简单示例。图2展示了VMSR的操作流程。
图1 单服务器的虚拟化结构
图2 基于虚拟机技术的软件再生方法流程
当软件老化或者一些潜在的异常在处于活动状态的虚拟机中发生时,VM-LB将触发一个再生操作。如果处于活动状态的虚拟机将要被执行再生操作,则一个处于等待状态的虚拟机将被启动并且新的请求和会话都将从之前的虚拟机中迁移过来。而当发生老化的虚拟中所有的请求都被完成之后,它就可以被执行再生操作。在执行再生操作之后,该虚拟机就恢复到了正常的健康状态。这种方法将虚拟机作为复制的容器从而避免了对硬件资源的额外需求并且它能够在进行软件再生时不中断系统的服务。
2.2 VMSR模型 VMSR模型主要用来对系统老化建立分析模型,而通过解决这一模型可以确定VMSR方法的有效性以及分析出理想状态下的再生过程。
图3 VMSR框架的状态转移图
图3给出了VMSR框架的马尔可夫链状态转移图。模型中一共有五种状态:健康状态(Hi),不稳定状态(Ui),替换状态(Si),再生状态(Ri)和失败状态(H0)。我们关注于VMSR框架如何提高系统的可用性和降低应用的停机时间以及由于停机所造成的损失。
在单系统中,只存在LB-VM和一个处于活动状态的虚拟机。
(1)
多系统是由LB-VM,一个处于活动状态的虚拟机和n-1个处于等待状态的虚拟机组成。
(2)
(i = 0, 1, 2, .., n)
(3)
(i = 1, 2, .., n)
(4)
(i =1, 2, .., n)
(5)
(i = 2, 3, .., n)
(6)
在图3所示的模型中,处于再生过程的再生状态(R1)和失败状态(H0)时服务是不可用的。在稳定状态下,系统可用性被定义如下:
(7)
预期的系统停机时间和停机代价可以被定义为一个关于操作时间(T)的函数。
(8)
(9)
2.3数值结果 使用本文VMSR框架的系统持续运行一年时间。两次连续失效之间的时间间隔为一年,修复时间为12个小时。健康的虚拟机每15天就变的不再稳定。再生时间和替换时间分别为10分钟和3分钟。可操作的虚拟机个数从单系统(n=1)到多系统(n=4)不等。软件再生的执行时间间隔从(rate=3)到无穷大(rate=0:无再生)不等。在单位时间内,不可预期的停机代价是可预期的再生代价的100倍。
图4 不同再生率和虚拟机个数下的系统可用性
图5 不同再生时间和虚拟机个数下的系统可用性
如图4和图5所示,当存在两个虚拟机时系统可用性明显高于只有一个虚拟机的情况,但是增加到三个虚拟机时系统可用性却只有极少的增加。当可操作的虚拟机个数等于或者超过三个时,系统可用性的增加微乎其微。图6展示了不同再生率和虚拟机个数下的停机代价。从该结果可以看出,使用两台虚拟机的VMSR方法在构造高可用系统时明显具有更高的性价比和更低的管理代价。
图6 不同再生率和虚拟机个数下的停机代价
3. 总结 本文提出了一种基于虚拟化技术的软件再生方法,并证明了该方法能够有效的减少软件老化问题。我们使用随机模型方法建立了可用性模型以评估VMSR方法的影响,并根据模型中的参数通过数值计算得出了稳定状态系统的可用性、停机时间和停机代价。结果证明VMSR方法为老化应用提供了连续的可用性和优化的性能。
4. 贡献与意义
本文介绍了一种使用虚拟机技术的软件再生方法VMSR,它能为应用服务器系统提供高可用性。VMSR方法不需要任何额外硬件资源就可以为单个物理服务器提供高可用性。因此,VMSR是一种解决软件老化问题的高性价比的方法。