大家好,我是谢易均,我在OpenHarmony成长计划啃论文俱乐部
里,跟着九联CTO郑总参与啃论文俱乐部活动。
目录:
一、引言
二、识别方法概览
三、识别方法详解
一:定义研究问题(RQ)
二:制定搜索策略
三:定义纳入和排除标准
四:质量评估
五:数据提取
六:分析
引言
软件开发通常涉及深刻而复杂的技术方面,而执行时间和内存消耗是软件工程中要考虑的两个主要资源 ,因此控制软件系统消耗的内存量就是一种编程挑战。理解和优化软件应用程序的内存使用是一项艰巨的任务,通常涉及对大量与内存相关的复杂数据的分析。由于交互式的可视化促进人类交互探索和理解数据的认知,所以,运用可视化来分析内存消耗是一个良好的方法,多年来,业内已经提出了许多软件可视化来帮助开发人员分析其程序的内存使用信息。接下来我们的侧重于以可视化为中心分析内存消耗的已发表作品,这些作品可帮助从业者检查内存使用情况以识别优化机会。在本节中,我们重点讲述软件可视化分析内存消耗的论文识别方法,以帮助开发人员分析内存消耗。
识别方法
在识别相关文献时,我们严格遵循了系统的方法来识别和分类与软件可视化分析内存消耗相关的文献,采用了公认的软件工程指南启发[1]的七个步骤方法进行系统评价,步骤如下:
定义研究问题(RQ)、制定搜索策略、定义纳入和排除标准、质量评估、数据提取、分析
一:定义RQ
我们的RQ关注问题域、数据、视觉表示、评估和工件这5个维度,之所以会选择这5个维度,是受到了[2,3,4,5,6,7]的启发,这些研究提出了许多相关的维度,给软件可视化提供了丰富的概述。本文中,我们的问题域维度以可视化支持的软件工程任务为中心。数据维度描述了用于分析内存使用的指标。视觉表示维度报告了这些方法使用的视觉编码、交互和媒介。评估和工件维度与社区研究相关,以了解如何评估可视化以及它们是否可复制。
二:制定搜索策略
根据系统文献综述指南[1,8],我们有必要搜索一组初始的相关文章作为基础,我们手动审查了 2017 年至 2020 年间在以下科学场所发表的文章:
- IEEE 国际软件可视化工作会议 (VISSOFT)
- 内存管理国际研讨会 (ISMM)
选择这两个会议是因为这些会议根据CORE排名将文献分为好(B)和优秀(A)类别, 它根据多种指标(例如引用率、文章提交、接受率)确定排名同时它也提供了良好的语料库。手动搜索完后,我们找到5篇论文然后以搜索出来的论文为基础,最后通过从RQ中提取搜索词来定义我们的搜索策略。
我们从最初手动搜索中找到的文章中提取了适合标题、摘要和关键字里的搜索词。此外,我们用同义词和替代词扩展了这些搜索词(如表3),并且将这些术语组合形成短语来查询。
Table 3
术语 备择方案
内存* 内存堆、内存分配、内存消耗、内存消耗、内存使用、内存管理、内存问题、内存问题、内存膨胀、内存泄漏、内存访问和内存地址
视觉的* 可视化、可视化、可视化、可视化、可视化、可视化和可视化 软件* 软件、程序和应用程序
术语组合查询: Memory* AND Visual* AND Software*
然后,我们在以下三个数字图书馆进行搜索:
— ACM Digital Library
— IEEE Xplore
— Scopus
搜索出来的533篇论文包含了我们最初手动搜索的5篇论文,后者也为前者提供了一定程度可信性,本次搜索的目的是寻找发表场所。然后我们再进行额外的手动搜索,目的是避免错过任何相关论文,从以下发表场所的最近10年进行手动搜索:
— IEEE International Working Conference on Software Visualization (VISSOFT), the continue of IEEE International Workshop on Visualizing Software for Understanding and Analysis (VISSOFT) and ACM Symposia on Software Visualization (SOFTVIS)
— International Symposium on Memory Management (ISMM)
之所以选择这些发表场所,是因为我们根据自动搜索产生的大多数文章都在其中发表为依据。这10年,这些场所发表了大约305篇论文,在根据标题和摘要审查后,我们找到了10篇属于本文范围内的论文 ,然后我们采用双向滚雪球完善搜索。双向滚雪球包含前向滚雪球和反向滚雪球,前向滚雪球是多次通过审查参考文献并不断将其添加到选择集中,我们选择Google Scholar进行前向滚雪球,因为它提供了引用特定论文的功能。反向滚雪球是手动执行的。经过两次迭代,最终搜索出420篇论文。
三:定义纳入和排除标准
我们根据本文的研究范围制定了纳入/排除标准表(如表二),在根据纳入/排除标准对 420 篇文章进行了修订时,分析了标题、摘要、关键词和地点,以及介绍和结论,以决定是否排除一篇文章。接下来列出 420 篇文章的电子表格,计算Kappa系数,来评估一致性。结果,我们得到了 0.72 的 Kappa系数,这通常被认为是具有良好一致性的,这也说明了有些搜索出来的论文与我们的研究是存在差异的,例如,一些论文专注于使用软件可视化来理解程序的跟踪执行,但没有明确关注内存消耗。根据以上步骤,筛选出了49篇文章。
表 2. 纳入和排除标准
纳入标准
E1:在数据可视化、计算机科学或计算机工程的同行评审期刊、会议或研讨会上发表的论文。
排除标准
E1:关注其他性能指标(例如执行时间)的论文。
E2:只研究记忆问题或可视化问题的论文。
E3:海报、主题演讲、挑战和以前的论文,仅介绍最新全文(例如短论文)的想法。
四:质量评估
这个阶段为了排除信息不足而无法对本研究做出贡献的文章,我们使用软件工程调查中使用的清单检查理论贡献和实验评估[如表3],在这一步中,根据前面提到的清单评估每篇文章的质量,为清单中的每个问题分配一个分数。该分数具有三个级别的数字等级:是(2 分)、相关(1 分)和否(0 分)。一篇文章的最终分数是通过将所有问题的分数相加来衡量的。由于下图表格有 17 个问题,所以文章的总分从 0 到 34 不等。我们通过使用下四分位数 (34/4 = 8.5) 作为标准线,所有得分高于 8.5 分的文章都被认为是与本文相关的,最终,共有46篇文章被选入。
# 问题
理论贡献
- 是否至少解决了其中一个 RQ?
- 该研究是否旨在解决一些 RQ?
- 是否明确提供了研究的问题描述?
- 研究的问题描述是否得到其他工作的参考支持?
- 是否清楚地描述了研究的贡献?
- 如果有的话,这些假设是否清楚地说明了?
- 是否有足够的证据支持研究的主张?
实验评价
- 是否清楚地描述了研究设计或研究的组织方式?
- 是否展示了原型、模拟或实证研究?
- 是否清楚地描述了实验设置?
- 是否包括多个不同实验的结果?
- 是否包括每个实验多次运行的结果?
- 实验结果是否与其他方法进行比较?
- 是否提供负面结果(如果有)?
- 是否评估了结果的统计显著性?
- 是否明确说明了有效性的限制或威胁?
- 数据、解释和结论之间的联系是否清晰?
五:数据提取
为了提取必要的数据,从在篇文章中,我们根据 RQ 的维度和基本原理收集了一般信息(例如,标题、出版年份、地点)和内容信息。但我们更专注于论文对本文RQ的回答:
- RQ1——问题域:摘要、介绍、评估和结论。
- RQ2——数据:数据收集、数据提取和分析信息。
- RQ3——视觉表现:可视化、详细视图、视觉设计和展示。
- RQ4——评估:评估、案例研究、应用和使用场景。
- RQ5——可用性:可视化、实施和结论。
六:分析
本节描述了为回答我们的 RQ 而进行的数据分析方法。对于 RQ1(问题域) 和 RQ2(数据)我们采用主题分析[10],对于RQ3.1(视觉技术)、RQ3.2(交互) 和 RQ4(评估)我们采用内容分析。
主题分析包含五个部分:
1、熟悉:读取和重新读取提取的数据来了解信息的概述
2、生成代码:分配反映相关特征的代码来回答 RQ,例如我们为文本分配了检测内存碎片的代码:“为了帮助用户发现潜在的内存碎片问题,我们显示了恰好被释放一次且未重用的内存块” 。然后,还进行了持续审查以改进代码并确定内存是否被正确分配。后者(改进代码)需要比较分配给相同代码的两个文本段,检查它们是否反映了相同的特征。
3、构建初始主题:将所有代码都与相关数据一起编译成连贯的组,有助于识别 RQ 的初始主题
4、审查主题:根据相关数据(例如,文本片段)检查初始主题并进行改进以创建最终主题集。
5、定义和命名主题:最终集的每个主题都有详细的描述和信息丰富的名称。例如,RQ2 的主题是根据抽象数据的来源生成的(例如,来自程序执行的数据、来自源代码的数据、来自版本的数据)。
内容分析
我们提出了一个分类方案来进行内容分析(如表4),对于RQ3.3,我们只审查了所使用的媒介。对于 RQ5,我们列出了原型的链接以及链接中提供的附加信息(视频、示例数据)。
表 4. 分类方案
编号 方面 分类方案 提议者RQ3.1 视觉技术 几何变换的显示器,标志性的 Keim [38]
显示器、密集像素显示器、
堆叠显示器和标准 2D/3D 显示器
RQ3.2 交互 选择、探索、重新配置、编码、 Yi and colleagues[107]
抽象/精细化、过滤和连接
RQ4 评估 没有明确的评估,经验的,理论上的 Merino and colleagues [50]
综述:《Software Visualizations to Analyze Memory Consumption: A Literature Review》
参考文献:
[1]《Guidelines for Performing Systematic Literature Reviews in Software Engineering》
[2]《A task oriented view of software visualization》
[3]《Software visualization today》
[4]《Towards actionable visualisation in software development》
[5]《Software Visualization: Programming As a Multimedia Experience》
[6]《A principled taxonomy of software visualization》
[7]《A taxonomy of program visualization systems》
[8]《Experimentation in Software Engineering》
[9]《Effort estimation in agile software development: A systematic literature review》
[10]《Thematic analysis》