论文部分内容阅读
随着人类活动的日益加剧,软件在人类社会生活中所扮演的角色越来越重要。软件作为一种辅助人类完成一系列任务的工具,不仅应用范围越来越广,单体软件所能完成的功能也越来越多。软件应用层面上广度和深度的拓展,使得软件系统规模不断扩大,具体表现在软件系统内部元素数量的急剧增加和元素之间“通信”的次数增多。软件系统作为一种典型的人工复杂系统,软件结构复杂性的增加直接导致了软件故障复杂性的增加。在一个软件系统中,当某个元素发生了故障后,通过软件中元素之间的交互关系,已经故障的元素可能会引起其他元素的发生故障,从而导致故障的传播,最终可能会引起整个软件系统的故障或失效。由此,我们可以知道软件故障的传播过程是一种动态过程,并且伴随着传播的不确定性。目前研究人员大多数都是对开源软件进行研究,采用逆向工程的方法,从开源软件源代码中抽取出软件元素的依赖图,得到静态的软件拓扑图,通过建立软件网络模型,对各种研究现象进行分析。本文首先对软件故障相关研究的背景加以介绍,对国内外研究现状进行阐述。然后对涉及元胞自动机的相关知识进行介绍,就采用元胞自动机理论研究软件故障传播的可行性进行了分析。接着根据软件系统的特性,提出两种扩展型的元胞自动机的模型。首先介绍第一个模型,该模型结合概率理论,引入节点间故障传播率和节点自身容错力来描述软件中故障的传播方式。随后介绍第二个模型,该模型考虑到软件节点中存在的模糊状态,即介于完全正常状态与完全故障状态,引入节点的故障程度值用于描述此模糊状态。为了更真实的考察软件故障的传播规律,本文采取一种对真实软件的网络拓扑进行仿真实验的方法,分别对两种介绍的模型进行仿真模拟。通过模拟软件运行时故障的传播过程,研究可能对故障传播产生影响的因素,如故障触发方式、软件扰动强度、初始故障数目等,并探讨实验现象及其涵义。这些研究有利于软件从业人员有利于进一步的掌握软件系统中故障传播的规律,提出相应的措施,设计出更稳定的软件系统,有效的降低软件故障所造成的危害,这对人类的发展和社会的进步都有着重大的意义。