首页 > 最新文献

Science of Computer Programming最新文献

英文 中文
BEAPI: A tool for bounded exhaustive input generation from APIs BEAPI:从应用程序接口生成有界穷举输入的工具
IF 1.3 4区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2024-06-05 DOI: 10.1016/j.scico.2024.103153
Mariano Politano , Valeria Bengolea , Facundo Molina , Nazareno Aguirre , Marcelo Frias , Pablo Ponzio

Bounded exhaustive testing is a very effective technique for bug finding, which proposes to test a given program under all valid bounded inputs, for a bound provided by the developer. Existing bounded exhaustive testing techniques require the developer to provide a precise specification of the valid inputs. Such specifications are rarely present as part of the software under test, and writing them can be costly and challenging.

To address this situation we propose BEAPI, a tool that given a Java class under test, generates a bounded exhaustive set of objects of the class solely employing the methods of the class, without the need for a specification. BEAPI creates sequences of calls to methods from the class' public API, and executes them to generate inputs. BEAPI implements very effective pruning techniques that allow it to generate inputs efficiently.

We experimentally assessed BEAPI in several case studies from the literature, and showed that it performs comparably to the best existing specification-based bounded exhaustive generation tool (Korat), without requiring a specification of the valid inputs.

有界穷举测试是一种非常有效的错误查找技术,它建议在所有有效的有界输入条件下测试给定程序,测试条件由开发人员提供。现有的有界穷举测试技术要求开发人员提供有效输入的精确说明。针对这种情况,我们提出了 BEAPI,它是一种工具,给定一个被测试的 Java 类,只需使用该类的方法,就能生成该类对象的有界穷举集,而无需说明。BEAPI 从类的公共 API 中创建方法调用序列,并执行这些序列以生成输入。BEAPI 实现了非常有效的剪枝技术,使其能够高效地生成输入。我们在多个文献案例研究中对 BEAPI 进行了实验性评估,结果表明它的性能可与现有最好的基于规范的有界穷举生成工具(Korat)媲美,而无需对有效输入进行规范。
{"title":"BEAPI: A tool for bounded exhaustive input generation from APIs","authors":"Mariano Politano ,&nbsp;Valeria Bengolea ,&nbsp;Facundo Molina ,&nbsp;Nazareno Aguirre ,&nbsp;Marcelo Frias ,&nbsp;Pablo Ponzio","doi":"10.1016/j.scico.2024.103153","DOIUrl":"https://doi.org/10.1016/j.scico.2024.103153","url":null,"abstract":"<div><p>Bounded exhaustive testing is a very effective technique for bug finding, which proposes to test a given program under all valid bounded inputs, for a bound provided by the developer. Existing bounded exhaustive testing techniques require the developer to provide a precise specification of the valid inputs. Such specifications are rarely present as part of the software under test, and writing them can be costly and challenging.</p><p>To address this situation we propose BEAPI, a tool that given a Java class under test, generates a bounded exhaustive set of objects of the class solely employing the methods of the class, without the need for a specification. BEAPI creates sequences of calls to methods from the class' public API, and executes them to generate inputs. BEAPI implements very effective pruning techniques that allow it to generate inputs efficiently.</p><p>We experimentally assessed BEAPI in several case studies from the literature, and showed that it performs comparably to the best existing specification-based bounded exhaustive generation tool (Korat), without requiring a specification of the valid inputs.</p></div>","PeriodicalId":49561,"journal":{"name":"Science of Computer Programming","volume":"238 ","pages":"Article 103153"},"PeriodicalIF":1.3,"publicationDate":"2024-06-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"141294635","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":4,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Parallel program analysis on path ranges 路径范围上的并行程序分析
IF 1.3 4区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2024-05-31 DOI: 10.1016/j.scico.2024.103154
Jan Haltermann , Marie-Christine Jakobs , Cedric Richter , Heike Wehrheim

Symbolic execution is a software verification technique symbolically running programs and thereby checking for bugs. Ranged symbolic execution performs symbolic execution on program parts, so-called path ranges, in parallel. Due to the parallelism, verification is accelerated and hence scales to larger programs.

In this paper, we discuss a generalization of ranged symbolic execution to arbitrary program analyses. More specifically, we present a verification approach that splits programs into path ranges and then runs arbitrary analyses on the ranges in parallel. Our approach in particular allows to run different analyses on different program parts. We have implemented this generalization on top of the tool CPAchecker and evaluated it on programs from the SV-COMP benchmark. Our evaluation shows that verification can benefit from the parallelization of the verification task, but also needs a form of work stealing (between analyses) to become efficient.

符号执行是一种软件验证技术,它以符号方式运行程序,从而检查错误。范围符号执行对程序部分(即所谓的路径范围)进行并行符号执行。在本文中,我们讨论了范围符号执行对任意程序分析的推广。更具体地说,我们提出了一种验证方法,它将程序分割成路径范围,然后并行运行路径范围上的任意分析。我们的方法尤其允许在不同的程序部分运行不同的分析。我们在工具 CPAchecker 的基础上实现了这种通用方法,并在 SV-COMP 基准程序上对其进行了评估。我们的评估结果表明,验证任务的并行化可以使验证工作受益,但也需要一种形式的工作窃取(在分析之间)才能提高效率。
{"title":"Parallel program analysis on path ranges","authors":"Jan Haltermann ,&nbsp;Marie-Christine Jakobs ,&nbsp;Cedric Richter ,&nbsp;Heike Wehrheim","doi":"10.1016/j.scico.2024.103154","DOIUrl":"https://doi.org/10.1016/j.scico.2024.103154","url":null,"abstract":"<div><p>Symbolic execution is a software verification technique symbolically running programs and thereby checking for bugs. Ranged symbolic execution performs symbolic execution on program parts, so-called <em>path ranges</em>, in parallel. Due to the parallelism, verification is accelerated and hence scales to larger programs.</p><p>In this paper, we discuss a generalization of ranged symbolic execution to arbitrary program analyses. More specifically, we present a verification approach that splits programs into path ranges and then runs arbitrary analyses on the ranges in parallel. Our approach in particular allows to run <em>different</em> analyses on different program parts. We have implemented this generalization on top of the tool <span>CPAchecker</span> and evaluated it on programs from the SV-COMP benchmark. Our evaluation shows that verification can benefit from the parallelization of the verification task, but also needs a form of work stealing (between analyses) to become efficient.</p></div>","PeriodicalId":49561,"journal":{"name":"Science of Computer Programming","volume":"238 ","pages":"Article 103154"},"PeriodicalIF":1.3,"publicationDate":"2024-05-31","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"https://www.sciencedirect.com/science/article/pii/S0167642324000777/pdfft?md5=c9721851a6e6fced1e9f8337cb568046&pid=1-s2.0-S0167642324000777-main.pdf","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"141294633","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":4,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"OA","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Taming shared mutable states of operating systems in Rust 用 Rust 管理操作系统的共享可变状态
IF 1.3 4区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2024-05-27 DOI: 10.1016/j.scico.2024.103152
Jaemin Hong , Sunghwan Shim , Sanguk Park , Tae Woo Kim , Jungwoo Kim , Junsoo Lee , Sukyoung Ryu , Jeehoon Kang

Operating systems (OSs) suffer from pervasive memory bugs. Their primary source is shared mutable states, crucial to low-level control and efficiency. The safety of shared mutable states is not guaranteed by C/C++, in which legacy OSs are typically written. Recently, researchers have adopted Rust into OS development to implement clean-slate OSs with fewer memory bugs. Rust ensures the safety of shared mutable states that follow the “aliasing XOR mutability” discipline via its type system. With the success of Rust in clean-slate OSs, the industry has become interested in rewriting legacy OSs in Rust. However, one of the most significant obstacles to this goal is shared mutable states that are aliased AND mutable (A&M). While they are essential to the performance of legacy OSs, Rust does not guarantee their safety. Instead, programmers have identified A&M states with the same reasoning principle dubbed an A&M pattern and implemented its modular abstraction to facilitate safety reasoning. This paper investigates modular abstractions for A&M patterns in legacy OSs. We present modular abstractions for six A&M patterns in the xv6 OS. Our investigation of Linux and clean-slate Rust OSs shows that the patterns are practical, as all of them are utilized in Linux, and the abstractions are original, as none of them are found in the Rust OSs. Using the abstractions, we implemented xv6Rust, a complete rewrite of xv6 in Rust. The abstractions incur no run-time overhead compared to xv6 while reducing the reasoning cost of xv6Rust to the level of the clean-slate Rust OSs.

操作系统(OS)普遍存在内存漏洞。它们的主要来源是共享可变状态,这对底层控制和效率至关重要。C/C++ 无法保证共享可变状态的安全性,而传统操作系统通常是用 C/C++ 编写的。最近,研究人员在操作系统开发中采用了 Rust,以实现内存错误更少的干净操作系统。Rust 通过其类型系统确保遵循 "别名 XOR 可变性 "规则的共享可变状态的安全性。随着 Rust 在清洁板操作系统中的成功,业界开始对用 Rust 重写传统操作系统感兴趣。然而,实现这一目标的最大障碍之一是共享的可变状态,即别名和可变状态(A&M)。虽然它们对传统操作系统的性能至关重要,但 Rust 并不保证它们的安全性。相反,程序员们用相同的推理原则识别 A&M 状态,将其称为 A&M 模式,并实现其模块化抽象,以促进安全推理。本文研究了传统操作系统中 A&M 模式的模块化抽象。我们介绍了 xv6 操作系统中六种 A&M 模式的模块化抽象。我们对 Linux 和简洁版 Rust 操作系统的调查表明,这些模式是实用的,因为所有这些模式都在 Linux 中使用,而这些抽象是原创的,因为在 Rust 操作系统中找不到这些模式。利用这些抽象,我们用 Rust 实现了 xv6Rust,这是对 xv6 的完全重写。与 xv6 相比,抽象不产生运行时开销,同时将 xv6Rust 的推理成本降低到了 Rust 操作系统的水平。
{"title":"Taming shared mutable states of operating systems in Rust","authors":"Jaemin Hong ,&nbsp;Sunghwan Shim ,&nbsp;Sanguk Park ,&nbsp;Tae Woo Kim ,&nbsp;Jungwoo Kim ,&nbsp;Junsoo Lee ,&nbsp;Sukyoung Ryu ,&nbsp;Jeehoon Kang","doi":"10.1016/j.scico.2024.103152","DOIUrl":"https://doi.org/10.1016/j.scico.2024.103152","url":null,"abstract":"<div><p>Operating systems (OSs) suffer from pervasive memory bugs. Their primary source is shared mutable states, crucial to low-level control and efficiency. The safety of shared mutable states is not guaranteed by C/C++, in which legacy OSs are typically written. Recently, researchers have adopted Rust into OS development to implement clean-slate OSs with fewer memory bugs. Rust ensures the safety of shared mutable states that follow the “aliasing XOR mutability” discipline via its type system. With the success of Rust in clean-slate OSs, the industry has become interested in rewriting legacy OSs in Rust. However, one of the most significant obstacles to this goal is shared mutable states that are <em>aliased AND mutable</em> (A&amp;M). While they are essential to the performance of legacy OSs, Rust does not guarantee their safety. Instead, programmers have identified A&amp;M states with the same reasoning principle dubbed an <em>A&amp;M pattern</em> and implemented its modular abstraction to facilitate safety reasoning. This paper investigates modular abstractions for A&amp;M patterns in legacy OSs. We present modular abstractions for six A&amp;M patterns in the xv6 OS. Our investigation of Linux and clean-slate Rust OSs shows that the patterns are practical, as all of them are utilized in Linux, and the abstractions are original, as none of them are found in the Rust OSs. Using the abstractions, we implemented xv6<span><math><msub><mrow></mrow><mrow><mi>R</mi><mi>u</mi><mi>s</mi><mi>t</mi></mrow></msub></math></span>, a complete rewrite of xv6 in Rust. The abstractions incur no run-time overhead compared to xv6 while reducing the reasoning cost of xv6<span><math><msub><mrow></mrow><mrow><mi>R</mi><mi>u</mi><mi>s</mi><mi>t</mi></mrow></msub></math></span> to the level of the clean-slate Rust OSs.</p></div>","PeriodicalId":49561,"journal":{"name":"Science of Computer Programming","volume":"238 ","pages":"Article 103152"},"PeriodicalIF":1.3,"publicationDate":"2024-05-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"141294634","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":4,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Preface Formal Techniques for Safety-Critical Systems (FTSCS 2022) 前言 安全关键型系统的形式化技术(FTSCS 2022)
IF 1.3 4区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2024-05-21 DOI: 10.1016/j.scico.2024.103149
Cyrille Artho , Peter Csaba Ölveczky
{"title":"Preface Formal Techniques for Safety-Critical Systems (FTSCS 2022)","authors":"Cyrille Artho ,&nbsp;Peter Csaba Ölveczky","doi":"10.1016/j.scico.2024.103149","DOIUrl":"10.1016/j.scico.2024.103149","url":null,"abstract":"","PeriodicalId":49561,"journal":{"name":"Science of Computer Programming","volume":"237 ","pages":"Article 103149"},"PeriodicalIF":1.3,"publicationDate":"2024-05-21","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"141145140","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":4,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Improving and comparing performance of machine learning classifiers optimized by swarm intelligent algorithms for code smell detection 改进和比较通过群智能算法优化的机器学习分类器在代码气味检测方面的性能
IF 1.3 4区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2024-05-15 DOI: 10.1016/j.scico.2024.103140
Shivani Jain, Anju Saha

In complex systems, the maintenance phase engenders the emergence of code smells due to incessant shifts in requirements and designs, stringent timelines, and the developer's relative inexperience. While not conventionally classified as errors, code smells inherently signify flawed design structures that lead to future bugs and errors. It increases the software budget and eventually makes the system hard to maintain or completely obsolete. To mitigate these challenges, practitioners must detect and refactor code smells. However, the theoretical interpretation of smell definitions and intelligent establishment of threshold values pose a significant conundrum. Supervised machine learning emerges as a potent strategy to address these problems and alleviate the dependence on expert intervention. The learning mechanism of these algorithms can be refined through data pre-processing and hyperparameter tuning. Selecting the best values for hyperparameters can be tedious and requires an expert. This study introduces an innovative paradigm that fuses twelve swarm-based, meta-heuristic algorithms with two machine learning classifiers, optimizing their hyperparameters, eliminating the need for an expert, and automating the entire code smell detection process. Through this synergistic approach, the highest post-optimization accuracy, precision, recall, F-measure, and ROC-AUC values are 99.09%, 99.20%, 99.09%, 98.06%, and 100%, respectively. The most remarkable upsurge is 35.9% in accuracy, 53.79% in precision, 35.90% in recall, 44.73% in F-measure, and 36.28% in ROC-AUC. Artificial Bee Colony, Grey Wolf, and Salp Swarm Optimizer are the top-performing swarm-intelligent algorithms. God and Data Class are the most readily detectable smells with optimized classifiers. Statistical tests underscore the profound impact of employing swarm-based algorithms to optimize machine learning classifiers, corroborated by statistical tests. This seamless integration enhances classifier performance, automates code smell detection, and offers a robust solution to a persistent software engineering challenge.

在复杂的系统中,由于需求和设计的不断变化、严格的时间限制以及开发人员相对缺乏经验,维护阶段会产生代码气味。虽然在传统意义上,代码气味并不属于错误,但它本质上意味着设计结构存在缺陷,会导致未来的错误和错误。它增加了软件预算,最终导致系统难以维护或完全过时。为了减轻这些挑战,实践者必须检测和重构代码气味。然而,气味定义的理论解释和阈值的智能确定是一个重大难题。有监督的机器学习是解决这些问题并减轻对专家干预依赖的有效策略。这些算法的学习机制可以通过数据预处理和超参数调整来完善。选择超参数的最佳值可能很繁琐,而且需要专家的帮助。本研究引入了一种创新范式,将 12 种基于蜂群的元启发式算法与两种机器学习分类器融合在一起,优化了它们的超参数,无需专家,并使整个代码气味检测过程自动化。通过这种协同方法,优化后的最高准确率、精确率、召回率、F-measure 和 ROC-AUC 值分别为 99.09%、99.20%、99.09%、98.06% 和 100%。其中,准确率、精确率、召回率、F-measure 和 ROC-AUC 分别上升了 35.9%、53.79%、35.90%、44.73% 和 36.28%。人工蜂群、灰狼和 Salp Swarm Optimizer 是表现最好的蜂群智能算法。上帝和数据类别是优化分类器最容易检测到的气味。统计测试强调了采用基于蜂群的算法来优化机器学习分类器的深远影响,统计测试也证实了这一点。这种无缝集成提高了分类器的性能,实现了代码气味检测的自动化,并为软件工程的长期挑战提供了强大的解决方案。
{"title":"Improving and comparing performance of machine learning classifiers optimized by swarm intelligent algorithms for code smell detection","authors":"Shivani Jain,&nbsp;Anju Saha","doi":"10.1016/j.scico.2024.103140","DOIUrl":"10.1016/j.scico.2024.103140","url":null,"abstract":"<div><p>In complex systems, the maintenance phase engenders the emergence of code smells due to incessant shifts in requirements and designs, stringent timelines, and the developer's relative inexperience. While not conventionally classified as errors, code smells inherently signify flawed design structures that lead to future bugs and errors. It increases the software budget and eventually makes the system hard to maintain or completely obsolete. To mitigate these challenges, practitioners must detect and refactor code smells. However, the theoretical interpretation of smell definitions and intelligent establishment of threshold values pose a significant conundrum. Supervised machine learning emerges as a potent strategy to address these problems and alleviate the dependence on expert intervention. The learning mechanism of these algorithms can be refined through data pre-processing and hyperparameter tuning. Selecting the best values for hyperparameters can be tedious and requires an expert. This study introduces an innovative paradigm that fuses twelve swarm-based, meta-heuristic algorithms with two machine learning classifiers, optimizing their hyperparameters, eliminating the need for an expert, and automating the entire code smell detection process. Through this synergistic approach, the highest post-optimization accuracy, precision, recall, F-measure, and ROC-AUC values are 99.09%, 99.20%, 99.09%, 98.06%, and 100%, respectively. The most remarkable upsurge is 35.9% in accuracy, 53.79% in precision, 35.90% in recall, 44.73% in F-measure, and 36.28% in ROC-AUC. Artificial Bee Colony, Grey Wolf, and Salp Swarm Optimizer are the top-performing swarm-intelligent algorithms. God and Data Class are the most readily detectable smells with optimized classifiers. Statistical tests underscore the profound impact of employing swarm-based algorithms to optimize machine learning classifiers, corroborated by statistical tests. This seamless integration enhances classifier performance, automates code smell detection, and offers a robust solution to a persistent software engineering challenge.</p></div>","PeriodicalId":49561,"journal":{"name":"Science of Computer Programming","volume":"237 ","pages":"Article 103140"},"PeriodicalIF":1.3,"publicationDate":"2024-05-15","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"141053981","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":4,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
TerGEC: A graph enhanced contrastive approach for program termination analysis TerGEC:用于程序终止分析的图形增强对比法
IF 1.3 4区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2024-05-15 DOI: 10.1016/j.scico.2024.103141
Shuo Liu , Jacky Wai Keung , Zhen Yang , Yihan Liao , Yishu Li

Context

Programs with non-termination behavior induce various bugs, such as denial-of-service vulnerability and memory exhaustion. Hence the ability to detect non-termination programs before software deployment is crucial. Existing detection methods are either execution-based or deep learning-based. Despite great advances, their limitations are evident. The former requires complex sandbox environments for execution, while the latter lacks fine-grained analysis.

Objective

To overcome the above limitations, this paper proposes a graph-enhanced contrastive approach, namely TerGEC, which combines both inter-class and intra-class semantics to carry out a more fine-grained analysis and exempt execution during the detection process.

Methods

In detail, TerGEC analyzes behaviors of programs from Abstract Syntax Trees (ASTs), thereby capturing intra-class semantics both syntactically and lexically. Besides, it incorporates contrastive learning to learn the discrepancy between program behaviors of termination and non-termination, thereby acquiring inter-class semantics. In addition, graph augmentation is designed to improve the robustness. Weighted contrastive loss and focal loss are also equipped in TerGEC to alleviate the classes-imbalance problem during the non-termination detection. Consequently, the whole detection process can be handled more fine-grained, and the execution can also be exempted due to the nature of deep learning.

Results

We evaluate TerGEC on five datasets of both Python and C languages. Extensive experiments demonstrate TerGEC achieves the best performance overall. Among all experimented datasets, TerGEC outperforms state-of-the-art baselines by 8.20% in terms of mAP and by 17.07% in terms of AUC on average.

Conclusion

TerGEC is capable of detecting non-terminating programs with high precision, showing that the combination of inter-class and intra-class learning, along with our proposed classes-imbalance solutions, is significantly effective in practice.

背景具有非终止行为的程序会诱发各种错误,如拒绝服务漏洞和内存耗尽。因此,在软件部署前检测非终止程序的能力至关重要。现有的检测方法要么基于执行,要么基于深度学习。尽管取得了巨大进步,但它们的局限性也显而易见。为了克服上述局限性,本文提出了一种图增强对比方法,即 TerGEC,它结合了类间语义和类内语义,可以在检测过程中进行更精细的分析并免于执行。方法具体来说,TerGEC 通过抽象语法树(AST)分析程序的行为,从而从语法和词法上捕捉类内语义。此外,TerGEC 还结合了对比学习(contrastive learning)来学习终止和非终止程序行为之间的差异,从而获取类间语义。此外,还设计了图增强来提高鲁棒性。TerGEC 还配备了加权对比损失和焦点损失,以缓解非终止检测过程中的类间不平衡问题。结果我们在 Python 和 C 语言的五个数据集上对 TerGEC 进行了评估。广泛的实验证明,TerGEC 的整体性能最佳。在所有实验数据集中,TerGEC 的 mAP 和 AUC 平均分别比最先进的基线高出 8.20% 和 17.07%。结论 TerGEC 能够高精度地检测非终止程序,这表明将类间学习和类内学习相结合,再加上我们提出的类平衡解决方案,在实践中非常有效。
{"title":"TerGEC: A graph enhanced contrastive approach for program termination analysis","authors":"Shuo Liu ,&nbsp;Jacky Wai Keung ,&nbsp;Zhen Yang ,&nbsp;Yihan Liao ,&nbsp;Yishu Li","doi":"10.1016/j.scico.2024.103141","DOIUrl":"10.1016/j.scico.2024.103141","url":null,"abstract":"<div><h3>Context</h3><p>Programs with non-termination behavior induce various bugs, such as denial-of-service vulnerability and memory exhaustion. Hence the ability to detect non-termination programs before software deployment is crucial. Existing detection methods are either execution-based or deep learning-based. Despite great advances, their limitations are evident. The former requires complex sandbox environments for execution, while the latter lacks fine-grained analysis.</p></div><div><h3>Objective</h3><p>To overcome the above limitations, this paper proposes a graph-enhanced contrastive approach, namely TerGEC, which combines both inter-class and intra-class semantics to carry out a more fine-grained analysis and exempt execution during the detection process.</p></div><div><h3>Methods</h3><p>In detail, TerGEC analyzes behaviors of programs from Abstract Syntax Trees (ASTs), thereby capturing intra-class semantics both syntactically and lexically. Besides, it incorporates contrastive learning to learn the discrepancy between program behaviors of termination and non-termination, thereby acquiring inter-class semantics. In addition, graph augmentation is designed to improve the robustness. Weighted contrastive loss and focal loss are also equipped in TerGEC to alleviate the classes-imbalance problem during the non-termination detection. Consequently, the whole detection process can be handled more fine-grained, and the execution can also be exempted due to the nature of deep learning.</p></div><div><h3>Results</h3><p>We evaluate TerGEC on five datasets of both Python and C languages. Extensive experiments demonstrate TerGEC achieves the best performance overall. Among all experimented datasets, TerGEC outperforms state-of-the-art baselines by 8.20% in terms of mAP and by 17.07% in terms of AUC on average.</p></div><div><h3>Conclusion</h3><p>TerGEC is capable of detecting non-terminating programs with high precision, showing that the combination of inter-class and intra-class learning, along with our proposed classes-imbalance solutions, is significantly effective in practice.</p></div>","PeriodicalId":49561,"journal":{"name":"Science of Computer Programming","volume":"237 ","pages":"Article 103141"},"PeriodicalIF":1.3,"publicationDate":"2024-05-15","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"141028873","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":4,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Refining a design thinking-based requirements elicitation process: Insights from a focus group 完善基于设计思维的需求征询流程:焦点小组的见解
IF 1.3 4区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2024-05-12 DOI: 10.1016/j.scico.2024.103137
Ezequiel Kahan , Marcela Genero , Alejandro Oliveros

Requirements elicitation processes have a series of challenges and limitations in terms of business process focus, system transparency, and dealing with the complexity resulting from interdependence. The Design Thinking approach, which focuses on people and on understanding the context of problems, can contribute to solving them. For this reason, a requirements elicitation process based on Design Thinking has been defined, consisting of three activities: Empathise, Synthesise, and Ideate. For refining this process, a focus group discussion with experts was conducted. The experts provided feedback, specifically on the role of empathy in the process, its domain of application and activities. The results analysed from the focus group confirm the usefulness of the process and generate a series of lessons learned that allowed us to continue refining it. This paper presents the cited process, the main characteristics and results of the focus group and the refined process.

需求征询过程在关注业务流程、系统透明度和处理相互依存所产生的复杂性方面存在一系列挑战和局限。设计思维方法注重人和对问题背景的理解,有助于解决这些问题。为此,我们定义了一个基于设计思维的需求征询流程,由三项活动组成:共鸣(Empathise)、综合(Synthesise)和构思(Ideate)。为了完善这一流程,我们与专家进行了一次焦点小组讨论。专家们提供了反馈意见,特别是关于移情在流程中的作用、其应用领域和活动。焦点小组的分析结果证实了该流程的实用性,并总结出一系列经验教训,使我们能够继续完善该流程。本文介绍了所引用的流程、焦点小组的主要特点和结果以及完善后的流程。
{"title":"Refining a design thinking-based requirements elicitation process: Insights from a focus group","authors":"Ezequiel Kahan ,&nbsp;Marcela Genero ,&nbsp;Alejandro Oliveros","doi":"10.1016/j.scico.2024.103137","DOIUrl":"10.1016/j.scico.2024.103137","url":null,"abstract":"<div><p>Requirements elicitation processes have a series of challenges and limitations in terms of business process focus, system transparency, and dealing with the complexity resulting from interdependence. The Design Thinking approach, which focuses on people and on understanding the context of problems, can contribute to solving them. For this reason, a requirements elicitation process based on Design Thinking has been defined, consisting of three activities: Empathise, Synthesise, and Ideate. For refining this process, a focus group discussion with experts was conducted. The experts provided feedback, specifically on the role of empathy in the process, its domain of application and activities. The results analysed from the focus group confirm the usefulness of the process and generate a series of lessons learned that allowed us to continue refining it. This paper presents the cited process, the main characteristics and results of the focus group and the refined process.</p></div>","PeriodicalId":49561,"journal":{"name":"Science of Computer Programming","volume":"237 ","pages":"Article 103137"},"PeriodicalIF":1.3,"publicationDate":"2024-05-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"141050019","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":4,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Application of fuzzy Delphi technique to identify analytical lenses for determining the preparation of free and open source software projects for user experience maturity 应用模糊德尔菲技术确定分析透镜,以确定免费开源软件项目为用户体验成熟度所做的准备工作
IF 1.3 4区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2024-05-11 DOI: 10.1016/j.scico.2024.103136
Phesto P. Namayala , Tabu S. Kondo

User eXperience (UX) significantly influences the success of free and open source software (FOSS) projects and is measured using UX capability maturity models (UXCMMs). Every organization desires higher levels of UX maturity; however, it requires upfront preparations and process quality control.

Harmonizing processes and analytical lenses for determining preparation for UX maturity are still challenging, and studies to create them are limited. The analysis is ad hoc and based on the actors’ will and experiences. This study proposes and validates analytical lenses.

Findings show that UX experts agreed that the lenses could be used with a consensus percentage of 81 %, the threshold value (d) = 0.112, and crisp values greater than α-cut = 0.5. On validation, 47.57 % of stakeholders agreed, and 52.43 % strongly agreed they were relevant. Results help evaluate the status quo and change culture and policies toward ideal preparation. Two areas are suggested for future research.

用户体验(UX)在很大程度上影响着自由与开源软件(FOSS)项目的成功与否,用户体验能力成熟度模型(UXCMMs)可用于衡量用户体验项目的成功与否。每个组织都希望达到更高水平的用户体验成熟度,但这需要前期准备和过程质量控制。确定用户体验成熟度准备工作的统一过程和分析视角仍具有挑战性,而创建这些过程和视角的研究也很有限。分析是临时性的,以参与者的意愿和经验为基础。研究结果表明,用户体验专家一致认为可以使用这些分析透镜,共识率为 81%,阈值 (d) = 0.112,清晰度值大于 α-cut = 0.5。在验证方面,47.57% 的利益相关者表示同意,52.43% 的利益相关者表示非常同意这些相关性。结果有助于评估现状,改变文化和政策,实现理想的准备工作。建议今后在两个领域开展研究。
{"title":"Application of fuzzy Delphi technique to identify analytical lenses for determining the preparation of free and open source software projects for user experience maturity","authors":"Phesto P. Namayala ,&nbsp;Tabu S. Kondo","doi":"10.1016/j.scico.2024.103136","DOIUrl":"https://doi.org/10.1016/j.scico.2024.103136","url":null,"abstract":"<div><p>User eXperience (UX) significantly influences the success of free and open source software (FOSS) projects and is measured using UX capability maturity models (UXCMMs). Every organization desires higher levels of UX maturity; however, it requires upfront preparations and process quality control.</p><p>Harmonizing processes and analytical lenses for determining preparation for UX maturity are still challenging, and studies to create them are limited. The analysis is ad hoc and based on the actors’ will and experiences. This study proposes and validates analytical lenses.</p><p>Findings show that UX experts agreed that the lenses could be used with a consensus percentage of 81 %, the threshold value (d) = 0.112, and crisp values greater than α-cut = 0.5. On validation, 47.57 % of stakeholders agreed, and 52.43 % strongly agreed they were relevant. Results help evaluate the status quo and change culture and policies toward ideal preparation. Two areas are suggested for future research.</p></div>","PeriodicalId":49561,"journal":{"name":"Science of Computer Programming","volume":"237 ","pages":"Article 103136"},"PeriodicalIF":1.3,"publicationDate":"2024-05-11","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"140906819","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":4,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Orchestration for quantum services: The power of load balancing across multiple service providers 量子服务的协调:多个服务提供商之间负载平衡的力量
IF 1.3 4区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2024-05-09 DOI: 10.1016/j.scico.2024.103139
Jaime Alvarado-Valiente, Javier Romero-Álvarez, Enrique Moguel, Jose García-Alonso, Juan M. Murillo

Quantum computing plays a crucial role in solving complex problems for which classical supercomputers require an impractical amount of time. This emerging paradigm has the potential to revolutionize various fields such as cryptography, chemistry, and finance, making it a highly relevant area of research and development. Major companies such as Google, Amazon, IBM, and Microsoft, along with prestigious research institutions such as Oxford and MIT, are investing significant efforts into advancing this technology. However, the lack of a standardized approach among different providers poses challenges for developers to effectively access and utilize quantum computing resources. In this study, we propose a quantum orchestrator that is designed to facilitate the orchestration and execution of quantum circuits across multiple quantum service providers. The proposed solution aims to simplify the process for developers and facilitate the execution of quantum tasks using resources offered by different providers. The proposal is validated with the implementation of the proposed orchestrator for Amazon Braket and IBM Quantum. It can support both quantum and classical developers in defining, configuring, and executing circuits independently of the selected provider.

量子计算在解决传统超级计算机需要耗费大量时间才能解决的复杂问题方面发挥着至关重要的作用。这一新兴范式有可能彻底改变密码学、化学和金融等各个领域,使其成为一个高度相关的研发领域。谷歌、亚马逊、IBM 和微软等大公司,以及牛津大学和麻省理工学院等著名研究机构,都在投入大量精力推进这项技术。然而,不同供应商之间缺乏标准化的方法,这给开发人员有效访问和利用量子计算资源带来了挑战。在本研究中,我们提出了一种量子协调器,旨在促进多个量子服务提供商之间量子电路的协调和执行。所提出的解决方案旨在简化开发人员的流程,促进利用不同提供商提供的资源执行量子任务。亚马逊 Braket 和 IBM Quantum 的拟议协调器的实施验证了该提议。它可以支持量子和经典开发人员定义、配置和执行电路,而不受所选提供商的影响。
{"title":"Orchestration for quantum services: The power of load balancing across multiple service providers","authors":"Jaime Alvarado-Valiente,&nbsp;Javier Romero-Álvarez,&nbsp;Enrique Moguel,&nbsp;Jose García-Alonso,&nbsp;Juan M. Murillo","doi":"10.1016/j.scico.2024.103139","DOIUrl":"https://doi.org/10.1016/j.scico.2024.103139","url":null,"abstract":"<div><p>Quantum computing plays a crucial role in solving complex problems for which classical supercomputers require an impractical amount of time. This emerging paradigm has the potential to revolutionize various fields such as cryptography, chemistry, and finance, making it a highly relevant area of research and development. Major companies such as Google, Amazon, IBM, and Microsoft, along with prestigious research institutions such as Oxford and MIT, are investing significant efforts into advancing this technology. However, the lack of a standardized approach among different providers poses challenges for developers to effectively access and utilize quantum computing resources. In this study, we propose a quantum orchestrator that is designed to facilitate the orchestration and execution of quantum circuits across multiple quantum service providers. The proposed solution aims to simplify the process for developers and facilitate the execution of quantum tasks using resources offered by different providers. The proposal is validated with the implementation of the proposed orchestrator for Amazon Braket and IBM Quantum. It can support both quantum and classical developers in defining, configuring, and executing circuits independently of the selected provider.</p></div>","PeriodicalId":49561,"journal":{"name":"Science of Computer Programming","volume":"237 ","pages":"Article 103139"},"PeriodicalIF":1.3,"publicationDate":"2024-05-09","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"https://www.sciencedirect.com/science/article/pii/S0167642324000625/pdfft?md5=965e55d13e89cbb8a0e04346b111f55c&pid=1-s2.0-S0167642324000625-main.pdf","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"140947833","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":4,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"OA","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Analyzing novice and competent programmers' problem-solving behaviors using an automated evaluation system 使用自动评估系统分析程序员新手和能手解决问题的行为
IF 1.3 4区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2024-05-09 DOI: 10.1016/j.scico.2024.103138
Yung-Ting Chuang, Hsin-Yu Chang

Background and Context

In today's tech-driven world, programming courses are crucial. Yet, teaching programming is challenging, leading to high student failure rates. Understanding student learning patterns is key, but there's a lack of research utilizing tools to automatically collect and analyze interaction data for insights into student performance and behaviors.

Objectives

Study aims to compare problem-solving behaviors of novice and competent programmers during coding tests, identifying patterns and exploring relationships with program correctness.

Method

We built an online system with programming challenges to collect behavior data from novice and competent programmers. Our system analyzed data using various metrics to explore behavior-program correctness relationships.

Findings

Analysis showed distinct problem-solving behavior patterns. Competent programmers had fewer syntax errors, spent less time fixing bugs, and had higher program correctness. Novices made more syntax errors and spent more time fixing coding errors. Both groups used tabs for code structure, but competent programmers introduced unfamiliar variables more often and commented on them afterward. Emphasizing iterative revisions and active engagement enhances problem-solving skills and programming proficiency. Radar charts are effective for identifying improvement areas in teaching programming. The relationship between behavior and program correctness was positively correlated for competent programmers but not novices.

Implications

Study findings have implications for programming education. Radar charts help teachers identify course improvement areas. Novices can learn from competent programmers' behavior. Instructors should encourage continuous skill improvement through revisions and engagement. Identified unfamiliar programming aspects offer insights for targeted learning.

背景在当今技术驱动的世界中,编程课程至关重要。然而,编程教学充满挑战,导致学生失败率居高不下。了解学生的学习模式是关键,但目前缺乏利用工具自动收集和分析交互数据以深入了解学生表现和行为的研究。研究旨在比较新手和有能力的程序员在编码测试中解决问题的行为,找出模式并探索与程序正确性之间的关系。我们的系统使用各种指标对数据进行分析,以探索行为与程序正确性之间的关系。有能力的程序员语法错误较少,修复错误的时间较短,程序正确率较高。新手则语法错误较多,修复编码错误的时间较长。两组程序员在代码结构上都使用了选项卡,但有能力的程序员会更多地引入陌生变量,并在事后对其进行注释。强调迭代修改和积极参与能提高解决问题的能力和编程熟练度。雷达图能有效确定编程教学中的改进领域。对于有能力的程序员而言,行为与程序正确性之间呈正相关,而对于新手则不然。雷达图有助于教师确定课程改进领域。新手可以从合格程序员的行为中学习。教师应鼓励学生通过修改和参与不断提高技能。发现的不熟悉的编程方面为有针对性的学习提供了启示。
{"title":"Analyzing novice and competent programmers' problem-solving behaviors using an automated evaluation system","authors":"Yung-Ting Chuang,&nbsp;Hsin-Yu Chang","doi":"10.1016/j.scico.2024.103138","DOIUrl":"10.1016/j.scico.2024.103138","url":null,"abstract":"<div><h3>Background and Context</h3><p>In today's tech-driven world, programming courses are crucial. Yet, teaching programming is challenging, leading to high student failure rates. Understanding student learning patterns is key, but there's a lack of research utilizing tools to automatically collect and analyze interaction data for insights into student performance and behaviors.</p></div><div><h3>Objectives</h3><p>Study aims to compare problem-solving behaviors of novice and competent programmers during coding tests, identifying patterns and exploring relationships with program correctness.</p></div><div><h3>Method</h3><p>We built an online system with programming challenges to collect behavior data from novice and competent programmers. Our system analyzed data using various metrics to explore behavior-program correctness relationships.</p></div><div><h3>Findings</h3><p>Analysis showed distinct problem-solving behavior patterns. Competent programmers had fewer syntax errors, spent less time fixing bugs, and had higher program correctness. Novices made more syntax errors and spent more time fixing coding errors. Both groups used tabs for code structure, but competent programmers introduced unfamiliar variables more often and commented on them afterward. Emphasizing iterative revisions and active engagement enhances problem-solving skills and programming proficiency. Radar charts are effective for identifying improvement areas in teaching programming. The relationship between behavior and program correctness was positively correlated for competent programmers but not novices.</p></div><div><h3>Implications</h3><p>Study findings have implications for programming education. Radar charts help teachers identify course improvement areas. Novices can learn from competent programmers' behavior. Instructors should encourage continuous skill improvement through revisions and engagement. Identified unfamiliar programming aspects offer insights for targeted learning.</p></div>","PeriodicalId":49561,"journal":{"name":"Science of Computer Programming","volume":"237 ","pages":"Article 103138"},"PeriodicalIF":1.3,"publicationDate":"2024-05-09","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"141043264","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":4,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
期刊
Science of Computer Programming
全部 Acc. Chem. Res. ACS Applied Bio Materials ACS Appl. Electron. Mater. ACS Appl. Energy Mater. ACS Appl. Mater. Interfaces ACS Appl. Nano Mater. ACS Appl. Polym. Mater. ACS BIOMATER-SCI ENG ACS Catal. ACS Cent. Sci. ACS Chem. Biol. ACS Chemical Health & Safety ACS Chem. Neurosci. ACS Comb. Sci. ACS Earth Space Chem. ACS Energy Lett. ACS Infect. Dis. ACS Macro Lett. ACS Mater. Lett. ACS Med. Chem. Lett. ACS Nano ACS Omega ACS Photonics ACS Sens. ACS Sustainable Chem. Eng. ACS Synth. Biol. Anal. Chem. BIOCHEMISTRY-US Bioconjugate Chem. BIOMACROMOLECULES Chem. Res. Toxicol. Chem. Rev. Chem. Mater. CRYST GROWTH DES ENERG FUEL Environ. Sci. Technol. Environ. Sci. Technol. Lett. Eur. J. Inorg. Chem. IND ENG CHEM RES Inorg. Chem. J. Agric. Food. Chem. J. Chem. Eng. Data J. Chem. Educ. J. Chem. Inf. Model. J. Chem. Theory Comput. J. Med. Chem. J. Nat. Prod. J PROTEOME RES J. Am. Chem. Soc. LANGMUIR MACROMOLECULES Mol. Pharmaceutics Nano Lett. Org. Lett. ORG PROCESS RES DEV ORGANOMETALLICS J. Org. Chem. J. Phys. Chem. J. Phys. Chem. A J. Phys. Chem. B J. Phys. Chem. C J. Phys. Chem. Lett. Analyst Anal. Methods Biomater. Sci. Catal. Sci. Technol. Chem. Commun. Chem. Soc. Rev. CHEM EDUC RES PRACT CRYSTENGCOMM Dalton Trans. Energy Environ. Sci. ENVIRON SCI-NANO ENVIRON SCI-PROC IMP ENVIRON SCI-WAT RES Faraday Discuss. Food Funct. Green Chem. Inorg. Chem. Front. Integr. Biol. J. Anal. At. Spectrom. J. Mater. Chem. A J. Mater. Chem. B J. Mater. Chem. C Lab Chip Mater. Chem. Front. Mater. Horiz. MEDCHEMCOMM Metallomics Mol. Biosyst. Mol. Syst. Des. Eng. Nanoscale Nanoscale Horiz. Nat. Prod. Rep. New J. Chem. Org. Biomol. Chem. Org. Chem. Front. PHOTOCH PHOTOBIO SCI PCCP Polym. Chem.
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
0
微信
客服QQ
Book学术公众号 扫码关注我们
反馈
×
意见反馈
请填写您的意见或建议
请填写您的手机或邮箱
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
现在去查看 取消
×
提示
确定
Book学术官方微信
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术
文献互助 智能选刊 最新文献 互助须知 联系我们:info@booksci.cn
Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。
Copyright © 2023 Book学术 All rights reserved.
ghs 京公网安备 11010802042870号 京ICP备2023020795号-1