论文部分内容阅读
随着技术积累和需求变化,软件变得越来越复杂,在有限时间与资源内完成软件开发并保证软件质量,越来越成为一项艰巨而富有挑战的工作。人们选择用工程化的方法,用软件过程来指导软件开发和维护,例如瀑布模型(Waterfall Model)、敏捷开发模型(Agile Model)、基于ITIL的IT服务管理过程等都受到工业界的广泛认同。但是大多数软件工程师普遍不喜欢进行显式的过程建模,而是按照口头的或者经验的约定来进行软件的开发和维护,而且人们所建立的过程模型和实际运行的过程间可能存在偏差。这些问题,给过程模型的评估、改进、复用等带来了困难。在此背景下,本文研究基于软件仓库的软件过程模型挖掘技术,从常用的软件仓库(如软件配置管理系统、缺陷跟踪系统、项目管理软件系统等)中抽取出过程数据,进行软件过程模型的挖掘,以帮助软件企业更方便地观察实际的软件过程,发现潜在的问题或最佳实践,进行评估、改进或复用。本文具体工作包括:1)综述和分析了软件过程挖掘的相关技术。本文从软件质量角度、过程成熟度、商业影响等方面对软件过程进行了研究,分析了软件过程在软件开发和应用中的作用;综述了软件仓库的技术和应用,以及如何从软件仓库获取所需信息的方法;研究Petri Net模型建模以及可视化的方法。2)提出了一个基于双时间戳事件的软件过程模型挖掘算法。该算法利用双时间戳记录事件信息,故而可以形式化地定义出任务之间的顺序和并行关系,算法通过事件开始和结束时刻挖掘出活动的关系,因为生成Petri Net模型则需要考虑到前后集关系,算法采用List、Hashtable等数据结构进行了相关信息的存储,进而完成可视化建模工作。此外,本文还从形式上证明了该算法正确性。3)设计和实现了一个软件过程挖掘工具Process Miner。该工具分为三个模块:事件日志处理模块、过程挖掘模块、过程模型可视化模块。它以从软件仓库中抽取的事件日志为输入,对日志进行预处理,提取出有用的信息,进行过程的复现和建模,并实现模型的可视化。工具采用Java语言开发。4)通过实验对算法和工具进行了验证。本文利用模拟数据和实际软件项目数据,对挖掘算法与挖掘工具进行了多方面的测试。测试表明,针对顺序型和并行型的过程过程,该算法和工具都是有效的。和相关工作相比,本文提出的软件过程挖掘算法和相应的工具考虑到了活动从开始到结束需要时间,而不是瞬时的,利用该特点本算法和工具能够克服并行关系无法被显式检测的缺点,能够更准确地完成建模。