论文部分内容阅读
随着软件规模的不断增大,软件故障发生的概率及其复杂性也在逐渐增加。日志作为软件故障时系统运行的重要资料,被广泛的应用在目前的软件故障诊断工作中。目前,基于日志的软件故障诊断工作主要有基于规则和基于执行路径两个分类,基于规则的软件故障诊断工作受限于结果的精确性;基于执行路径的方法虽然精确性较高,但是在大规模软件故障诊断工作中受到路径爆炸问题的限制。基于上述背景,本课题通过调研分析软件演化历史中故障日志和软件补丁的关联关系,设计实现了演化历史指导的故障时路径重建和剪枝工具Not Only Log。实现自动化的从软件演化历史中提取日志和软件补丁的关联关系,形成关联规则。并使用关联规则对依据故障时日志构建的软件故障时执行路径进行剪枝。从而一定程度解决了基于执行路径的工作中路径爆炸问题,进一步帮助开发维护人员诊断软件故障。Not Only Log的主要工作包括以下几个方面:1.系统调研分析了七款广泛使用的大规模开源软件的软件演化历史,包括Maria DB,Squid,CUBRID,Httpd,Open Stack,Open SSH和Nginx。通过调研发现80%以上具有相似故障日志的软件故障的软件补丁也相似,同时也发现了70%以上的软件补丁和日志中第一条报错信息的距离小于2。2.设计和实现了演化历史指导的故障路径重建和剪枝工具Not Only Log。Not Only Log充分利用的调研部分得到的发现,通过挖掘故障日志和软件补丁之间的关联关系,进一步指导基于故障日志重构的软件故障时路径的剪枝,帮助了开发维护人员减少了需要检查的软件故障路径。3.Not OnlyLog实现了软件故障时日志的复现工作,并验证了日志复现工作对于故障日志和软件补丁间关联关系挖掘工作的促进作用,平均Not Only Log可以复现出65%以上日志中的报错信息。本文对比了Not Only Log和Sher Log的结果,发现Not Only Log平均比Sher Log减少了86.9%的路径数。本文还针对Not Only Log在实验中表现出的精确度不足的问题,提出了相应的解决方案,进一步提高了Not Only Log工具的可用性,使得Not Only Log的剪枝准确度达到97%以上。