关键词:
Ubuntu操作系统
缺陷报告
缺陷分类
依赖关系
缺陷修复建议
摘要:
由于软件开发的复杂性,缺陷是不可避免的。对于大规模软件而言,由于其代码量庞大,在软件开发和维护过程中,验证代码正确性、以及进行缺陷定位、修复等活动往往存在较大难度。为保证软件质量,许多软件项目在软件缺陷管理系统中使用缺陷报告来收集、记录开发者、测试者和用户报告的软件缺陷。实际上,随着软件的发展,尤其是开源软件的快速发展,每天都在产生大量的缺陷报告。本文以开源操作系统缺陷报告以及缺陷所在软件包为研究对象,对开源操作系统的缺陷分类、特征研究、依赖关系分析及修复建议等方面展开研究。本文主要工作与贡献如下:1.针对混源(Mixed-Source)操作系统开发中存在的定位缺陷困难、某些缺陷的软硬件根源界限不易界定等诸多问题,为更好地理解缺陷的特点及其分布规律等,利用Launchpad上的Ubuntu操作系统缺陷报告为研究对象,发掘软件缺陷特征,对缺陷进行合理分类并分析操作系统常见缺陷分布规律及特点。首先,获取Launchpad上32805份Ubuntu操作系统的缺陷报告,然后采用主题模型分析Ubuntu上常见的缺陷,并结合操作系统组成特点将其分为内核相关异常、桌面环境异常、网络相关异常、硬件驱动相关异常以及上层应用及开发环境相关异常。最后,通过分析缺陷报告统计结果得到Ubuntu操作系统的近期缺陷的一般分布规律和特点。上述内容对基于Ubuntu的混源操作系统开发、测试及维护过程中的代码质量分析及提升具有重要参考价值。2.认识、提取与分析操作系统软件包之间的依赖关系,可以挖掘缺陷报告中软件包之间的关系,对于开源软件,特别是基于开源操作系统的混源软件的缺陷分析、定位和修复具有重要意义。针对开源操作系统软件包之间依赖关系复杂的问题,分析了系统组件间依赖关系的相关研究工作,提出了Linux操作系统软件包依赖关系模型,设计与实现了开源操作系统中软件包依赖关系析取工具Pck Extract,并构建操作系统特定版本的具有依赖关系的软件包仓库,为便于直观对软件包间关系进行观察,借助Echart将软件包间关系可视化。3.不同修复工程师熟练程度有所差异以及缺陷报告信息不全等因素可能导致缺陷报告状态的频繁变更,往往造成缺陷修复范围的反复调整,从而耗费大量时间用在单个缺陷的修复上。针对上述问题,提出了一种基于依赖关系的软件包候选集生成方法。该方法将软件包依赖关系与操作系统缺陷修复联系起来,基于设计并实现的软件包依赖关系析取工具Pak Extract及软件包数据仓库,生成下一步应该修复的软件包的集合。可帮助缺陷报告人更为准确地确定Affects属性的值设定范围,从而有助于从定性的角度而非经验的角度协助修复工程师的缺陷修复过程,指引缺陷修复工程师下一步的工作目标,降低缺陷修复门槛、减少修复潜在时间开销。