研究人员加快软件开发过程中的故障定位
现代软件应用程序通常包含大量文件和数百万行代码。由于数量庞大,查找和纠正错误(即调试)非常困难。在许多软件公司中,开发人员仍然手动查找错误,这占用了他们大量工作时间。研究表明,这占总开发时间的 30% 到 90%。
格拉茨工业大学 (TU Graz) 软件技术研究所的 Birgit Hofer 和 Thomas Hirsch 开发了一种基于现有自然语言处理方法和指标的解决方案,可以大大加快查找错误代码并进行调试的过程。
故障定位耗费最多时间
“作为第一步,我们针对开发人员进行了调查,以找出调试过程中最浪费时间的事情。结果发现,实际修复错误根本不是大问题,但程序员主要陷入了定位错误,即将搜索范围缩小到程序代码中的正确区域,”Birgit Hofer 解释道。
基于这一认识,研究人员着手寻找该问题的解决方案,该解决方案还可扩展到具有大量代码的应用程序。
虽然存在有效的基于模型的方法,即将程序转换为逻辑表示(称为模型),但这仅适用于小型程序。这是因为计算工作量会随着代码的大小而呈指数级增长。
Birgit Hofer 和 Thomas Hirsch 采用的方法用数字来表示某些软件属性(例如代码的可读性或复杂性),并且还可以用于大量代码,因为计算工作量仅呈线性增加。
错误描述与代码的比较
故障定位的起点是错误报告,测试人员或用户填写一份表格,描述观察到的故障,并输入有关软件版本、操作系统、故障发生前他们采取的步骤以及其他相关信息。
根据此错误报告,自然语言处理和度量相结合,对整个代码的类和变量、文件、方法或函数的名称以及对方法和函数的调用进行分析。
该应用程序会识别与错误报告最相符的代码部分。因此,开发人员会收到一份包含 5 到 10 个文件的列表,这些文件按照它们对所观察到的故障负责的可能性进行排序。
开发人员还会收到最有可能涉及的故障类型的信息。这些数据可用于更快地定位和修复错误。
“软件开发人员的工作时间很昂贵,但他们往往把更多的宝贵时间来查找和修复错误,而不是开发新功能,”Birgit Hofer 说。
“由于已经存在多种解决此问题的方法,我们已研究如何将它们结合起来并加以改进,以便为商业应用奠定基础。我们现在已经奠定了基础,系统也运行正常。然而,为了将其整合到公司中,它仍然必须适应公司各自的需求。”
该调试系统可通过“ GitHub ”平台获取。在项目网站上可以找到与本研究相关的论文和存储库。
页:
[1]