首页 > 最新文献

Journal of Computer Languages最新文献

英文 中文
Fault localization by abstract interpretation and its applications 通过抽象解释进行故障定位及其应用
IF 1.7 3区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2024-08-01 DOI: 10.1016/j.cola.2024.101288
Aleksandar S. Dimovski

Fault localization aims to automatically identify the cause of an error in a program by localizing the error to a relatively small part of the program. In this paper, we present a novel technique for automated fault localization via error invariants inferred by abstract interpretation. An error invariant for a location in an error program over-approximates the reachable states at the given location that may produce the error, if the execution of the program is continued from that location. Error invariants can be used for statement-wise semantic slicing of error programs and for obtaining concise error explanations. We use an iterative refinement sequence of backward–forward static analyses by abstract interpretation to compute error invariants, which are designed to explain why an error program violates a particular assertion.

Furthermore, we present a practical application of the fault localization technique for automatic repair of programs. Given an erroneous program, we first use the fault localization to automatically identify statements relevant for the error, and then repeatedly mutate the expressions in those relevant statements until a correct program that satisfies all assertions is found. All other statements classified by the fault localization as irrelevant for the error are not mutated in the program repair process. This way, we significantly reduce the search space of mutated programs without losing any potentially correct program, and so locate a repaired program much faster than a program repair without fault localization.

We have developed a prototype tool for automatic fault localization and repair of C programs. We demonstrate the effectiveness of our approach to localize errors in realistic C programs, and to subsequently repair them. Moreover, we show that our approach based on combining fault localization and code mutations is significantly faster that the previous program repair approach without fault localization.

故障定位的目的是通过将错误定位到程序中相对较小的部分来自动识别程序中的错误原因。在本文中,我们提出了一种通过抽象解释推断出的错误不变式进行自动故障定位的新技术。错误程序中某一位置的错误不变式可以过度近似给定位置上可能产生错误的可到达状态,如果程序从该位置继续执行的话。错误不变式可用于对错误程序进行语句语义切分,并获得简明的错误解释。我们通过抽象解释使用后向-前向静态分析的迭代精炼序列来计算错误不变式,旨在解释错误程序违反特定断言的原因。给定一个错误的程序,我们首先使用故障定位自动识别与错误相关的语句,然后反复修改这些相关语句中的表达式,直到找到一个满足所有断言的正确程序。在程序修复过程中,所有被故障定位归类为与错误无关的其他语句都不会被修改。通过这种方法,我们在不丢失任何潜在正确程序的情况下,大大减少了变异程序的搜索空间,因此修复程序的定位速度比不进行故障定位的程序修复快得多。我们开发了自动定位和修复 C 语言程序故障的原型工具。我们展示了我们的方法在定位现实 C 语言程序中的错误以及随后修复它们的有效性。此外,我们还展示了基于故障定位和代码突变相结合的方法,其修复速度明显快于之前不进行故障定位的程序修复方法。
{"title":"Fault localization by abstract interpretation and its applications","authors":"Aleksandar S. Dimovski","doi":"10.1016/j.cola.2024.101288","DOIUrl":"10.1016/j.cola.2024.101288","url":null,"abstract":"<div><p><em>Fault localization</em> aims to automatically identify the cause of an error in a program by localizing the error to a relatively small part of the program. In this paper, we present a novel technique for automated fault localization via <em>error invariants</em> inferred by abstract interpretation. An error invariant for a location in an error program over-approximates the reachable states at the given location that may produce the error, if the execution of the program is continued from that location. Error invariants can be used for <em>statement-wise semantic slicing</em> of error programs and for obtaining concise error explanations. We use an iterative refinement sequence of backward–forward static analyses by abstract interpretation to compute error invariants, which are designed to explain why an error program violates a particular assertion.</p><p>Furthermore, we present a practical application of the fault localization technique for automatic repair of programs. Given an erroneous program, we first use the fault localization to automatically identify statements relevant for the error, and then repeatedly mutate the expressions in those relevant statements until a correct program that satisfies all assertions is found. All other statements classified by the fault localization as irrelevant for the error are not mutated in the program repair process. This way, we significantly reduce the search space of mutated programs without losing any potentially correct program, and so locate a repaired program much faster than a program repair without fault localization.</p><p>We have developed a prototype tool for automatic fault localization and repair of C programs. We demonstrate the effectiveness of our approach to localize errors in realistic C programs, and to subsequently repair them. Moreover, we show that our approach based on combining fault localization and code mutations is significantly faster that the previous program repair approach without fault localization.</p></div>","PeriodicalId":48552,"journal":{"name":"Journal of Computer Languages","volume":"80 ","pages":"Article 101288"},"PeriodicalIF":1.7,"publicationDate":"2024-08-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"141845094","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":3,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Screening articles for systematic reviews with ChatGPT 使用 ChatGPT 筛选系统综述文章
IF 1.7 3区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2024-07-08 DOI: 10.1016/j.cola.2024.101287
Eugene Syriani , Istvan David , Gauransh Kumar

Systematic reviews (SRs) provide valuable evidence for guiding new research directions. However, the manual effort involved in selecting articles for inclusion in an SR is error-prone and time-consuming. While screening articles has traditionally been considered challenging to automate, the advent of large language models offers new possibilities. In this paper, we discuss the effect of using ChatGPT on the SR process. In particular, we investigate the effectiveness of different prompt strategies for automating the article screening process using five real SR datasets. Our results show that ChatGPT can reach up to 82% accuracy. The best performing prompts specify exclusion criteria and avoid negative shots. However, prompts should be adapted to different corpus characteristics.

系统综述(SR)为指导新的研究方向提供了宝贵的证据。然而,人工筛选纳入系统综述的文章既容易出错又耗费时间。虽然筛选文章在传统上被认为具有自动化的挑战性,但大型语言模型的出现提供了新的可能性。在本文中,我们讨论了使用 ChatGPT 对 SR 流程的影响。特别是,我们使用五个真实的 SR 数据集研究了不同提示策略对文章筛选过程自动化的有效性。结果表明,ChatGPT 的准确率可达 82%。表现最好的提示指定了排除标准,避免了负面镜头。不过,提示应适应不同的语料特征。
{"title":"Screening articles for systematic reviews with ChatGPT","authors":"Eugene Syriani ,&nbsp;Istvan David ,&nbsp;Gauransh Kumar","doi":"10.1016/j.cola.2024.101287","DOIUrl":"https://doi.org/10.1016/j.cola.2024.101287","url":null,"abstract":"<div><p>Systematic reviews (SRs) provide valuable evidence for guiding new research directions. However, the manual effort involved in selecting articles for inclusion in an SR is error-prone and time-consuming. While screening articles has traditionally been considered challenging to automate, the advent of large language models offers new possibilities. In this paper, we discuss the effect of using ChatGPT on the SR process. In particular, we investigate the effectiveness of different prompt strategies for automating the article screening process using five real SR datasets. Our results show that ChatGPT can reach up to 82% accuracy. The best performing prompts specify exclusion criteria and avoid negative shots. However, prompts should be adapted to different corpus characteristics.</p></div>","PeriodicalId":48552,"journal":{"name":"Journal of Computer Languages","volume":"80 ","pages":"Article 101287"},"PeriodicalIF":1.7,"publicationDate":"2024-07-08","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"https://www.sciencedirect.com/science/article/pii/S2590118424000303/pdfft?md5=88fb1aa235050a4011046d39a856044b&pid=1-s2.0-S2590118424000303-main.pdf","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"141606804","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":3,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"OA","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Ask or tell: An empirical study on modeling challenges from LabVIEW community 问还是说?来自 LabVIEW 社区的建模挑战实证研究
IF 1.7 3区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2024-06-24 DOI: 10.1016/j.cola.2024.101284
Xin Zhao , Gurshan Rai , Saheed Popoola

Systems engineering is fundamental to the performance, functionality, and value of modern systems and products. Systems model development and the usage of modeling tools in systems engineering can be complex. Systems engineering is concerned not only with the modeling process but many other aspects of development, such as hardware, data, and modeling tools. Because systems modeling practitioners are versatile and have expertise in specifying, building, maintaining, and supporting technical infrastructure, the modeling practices and challenges vary. We conducted an empirical study from a systems modeler’s perspective to better understand the challenges posed to systems engineers in the LabVIEW community. Our inspection consists of two investigations. First, with the help of machine learning techniques, we mined online discussion forum posts to identify what questions engineers ask regarding modeling challenges. The result shows that the most challenging part is related to coding practice in the development. Inspired by this discovery, we conducted another empirical study. We surveyed systems engineers in the LabVIEW community using an online questionnaire to recognize what system engineers tell regarding coding challenges in their development practice. Our paper also provided some observations and concrete suggestions to both systems engineers and tool developers on how to improve system model quality and facilitate the modeling process when using LabVIEW.

系统工程对于现代系统和产品的性能、功能和价值至关重要。系统工程中的系统模型开发和建模工具的使用可能非常复杂。系统工程不仅涉及建模过程,还涉及开发的许多其他方面,如硬件、数据和建模工具。由于系统建模从业人员是多面手,在指定、构建、维护和支持技术基础设施方面具有专长,因此建模实践和挑战也各不相同。我们从系统建模人员的角度开展了一项实证研究,以更好地了解 LabVIEW 社区的系统工程师所面临的挑战。我们的检查包括两项调查。首先,在机器学习技术的帮助下,我们挖掘了在线论坛帖子,以确定工程师们提出了哪些有关建模挑战的问题。结果显示,最具挑战性的部分与开发过程中的编码实践有关。受这一发现的启发,我们进行了另一项实证研究。我们通过在线问卷调查了 LabVIEW 社区的系统工程师,以了解系统工程师在开发实践中遇到的编码挑战。我们的论文还就如何在使用 LabVIEW 时提高系统模型质量和促进建模过程向系统工程师和工具开发人员提出了一些意见和具体建议。
{"title":"Ask or tell: An empirical study on modeling challenges from LabVIEW community","authors":"Xin Zhao ,&nbsp;Gurshan Rai ,&nbsp;Saheed Popoola","doi":"10.1016/j.cola.2024.101284","DOIUrl":"https://doi.org/10.1016/j.cola.2024.101284","url":null,"abstract":"<div><p>Systems engineering is fundamental to the performance, functionality, and value of modern systems and products. Systems model development and the usage of modeling tools in systems engineering can be complex. Systems engineering is concerned not only with the modeling process but many other aspects of development, such as hardware, data, and modeling tools. Because systems modeling practitioners are versatile and have expertise in specifying, building, maintaining, and supporting technical infrastructure, the modeling practices and challenges vary. We conducted an empirical study from a systems modeler’s perspective to better understand the challenges posed to systems engineers in the LabVIEW community. Our inspection consists of two investigations. First, with the help of machine learning techniques, we mined online discussion forum posts to identify what questions engineers <em>ask</em> regarding modeling challenges. The result shows that the most challenging part is related to coding practice in the development. Inspired by this discovery, we conducted another empirical study. We surveyed systems engineers in the LabVIEW community using an online questionnaire to recognize what system engineers <em>tell</em> regarding coding challenges in their development practice. Our paper also provided some observations and concrete suggestions to both systems engineers and tool developers on how to improve system model quality and facilitate the modeling process when using LabVIEW.</p></div>","PeriodicalId":48552,"journal":{"name":"Journal of Computer Languages","volume":"80 ","pages":"Article 101284"},"PeriodicalIF":1.7,"publicationDate":"2024-06-24","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"141543638","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":3,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Live application programming in the defense industry with the Molecule component framework 利用分子组件框架在国防工业中进行实时应用编程
IF 1.7 3区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2024-06-24 DOI: 10.1016/j.cola.2024.101286
Pierre Laborde , Yann Le Goff , Éric Le Pors , Alain Plantec , Steven Costiou

At Thales Defense Mission Systems (DMS), software products first go through an industrial prototyping phase. Prototypes are serious applications that we evaluate with our end-users during demonstrations. End-users have a central role in the design process of our products. They often ask for software modifications during demonstrations to experiment new ideas or to focus the existing design on their needs.

In this paper, we present how we combined Smalltalk’s live-programming capabilities with software component models to obtain flexible and modular software designs in our context of live prototyping. We present Molecule, an open-source implementation of the Lightweight CORBA Component Model in Pharo. We use Molecule to build HMI systems prototypes, and we benefit from the dynamic run-time modification capabilities of Pharo during demonstrations with our end-users where we explore software designs in a lively way.

Molecule is an industrial contribution to Smalltalk, as it capitalizes 20 years of usage and maturation in our prototyping activity. The Molecule framework and tools are now mature, and we started building end-user software used in production at Thales DMS. We present two such end-user software and analyze their component architecture, that are representative of how we (learnt to) build HMI prototypes. Finally, we analyze our technological decisions with regards to the benefits we sought for our industrial activity.

在泰雷兹防务任务系统公司(DMS),软件产品首先要经过工业原型阶段。原型是我们在演示过程中与最终用户一起评估的严肃应用程序。最终用户在我们的产品设计过程中发挥着核心作用。在本文中,我们将介绍如何将Smalltalk的实时编程功能与软件组件模型相结合,从而在实时原型开发中获得灵活的模块化软件设计。我们介绍了Pharo中轻量级CORBA组件模型的开源实现--Molecule。我们使用Molecule构建人机界面系统原型,并在与最终用户的演示中受益于Pharo的动态运行时修改功能,以生动活泼的方式探索软件设计。Molecule框架和工具现已成熟,我们已开始构建用于Thales DMS生产的最终用户软件。我们介绍了两个这样的最终用户软件,并分析了它们的组件架构,这代表了我们(学会)如何构建人机界面原型。最后,我们分析了我们的技术决策与我们为工业活动所寻求的利益之间的关系。
{"title":"Live application programming in the defense industry with the Molecule component framework","authors":"Pierre Laborde ,&nbsp;Yann Le Goff ,&nbsp;Éric Le Pors ,&nbsp;Alain Plantec ,&nbsp;Steven Costiou","doi":"10.1016/j.cola.2024.101286","DOIUrl":"https://doi.org/10.1016/j.cola.2024.101286","url":null,"abstract":"<div><p>At Thales Defense Mission Systems (DMS), software products first go through an industrial prototyping phase. Prototypes are serious applications that we evaluate with our end-users during demonstrations. End-users have a central role in the design process of our products. They often ask for software modifications during demonstrations to experiment new ideas or to focus the existing design on their needs.</p><p>In this paper, we present how we combined Smalltalk’s live-programming capabilities with software component models to obtain flexible and modular software designs in our context of live prototyping. We present Molecule, an open-source implementation of the Lightweight CORBA Component Model in Pharo. We use Molecule to build HMI systems prototypes, and we benefit from the dynamic run-time modification capabilities of Pharo during demonstrations with our end-users where we explore software designs in a lively way.</p><p>Molecule is an industrial contribution to Smalltalk, as it capitalizes 20 years of usage and maturation in our prototyping activity. The Molecule framework and tools are now mature, and we started building end-user software used in production at Thales DMS. We present two such end-user software and analyze their component architecture, that are representative of how we (learnt to) build HMI prototypes. Finally, we analyze our technological decisions with regards to the benefits we sought for our industrial activity.</p></div>","PeriodicalId":48552,"journal":{"name":"Journal of Computer Languages","volume":"80 ","pages":"Article 101286"},"PeriodicalIF":1.7,"publicationDate":"2024-06-24","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"141480844","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":3,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Time-traveling object-centric breakpoints 以对象为中心的时间旅行断点
IF 1.7 3区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2024-06-18 DOI: 10.1016/j.cola.2024.101285
Valentin Bourcier , Steven Costiou , Maximilian Ignacio Willembrinck Santander , Adrien Vanègue , Anne Etien

Object-centric breakpoints aim to facilitate the debugging of object-oriented programs by focusing on specific objects. However, their practical application faces limitations. They often produce false positives and require developers to identify objects to debug in a running program, which is sometimes not possible due to non-determinism. Additionally, object-centric breakpoints are difficult to build because, to the best of our knowledge, their implementations have never been abstracted from low-level concerns. The literature describes complex reflective architectures necessary for implementing these breakpoints, and their rare available implementations are language-specific.

In this paper, we introduce Time-Traveling Object-Centric Breakpoints (TTOCBs), a new definition and implementation of object-centric breakpoints based on Time-Traveling Queries (TTQs). TTQs are an extensible time-traveling debugging system that allows developers to explore their program executions back and forth by executing debugging queries. We argue that our query-based implementation helps to overcome the limitations of traditional object-centric breakpoints. We describe how TTOCBs assist developers in searching for objects to debug within their program executions, even in the presence of non-determinism. We illustrate how existing object-centric breakpoints from the literature can be implemented and how new ones can be created in a few steps using the TTQ abstractions and scripting API. To build breakpoints, developers need to familiarize themselves with a short API instead of learning language reflection techniques and libraries. This makes our TTOCBs independent of the underlying TTQs and debugger implementations.

To evaluate our solution, we conducted an initial anecdotal user study on four example scenarios, providing evidence that debugging with TTOCBs requires fewer actions than with traditional object-centric breakpoints. We then discuss the comparison between object-centric breakpoints and TTOCBs in terms of applicability and performance.

以对象为中心的断点旨在通过关注特定对象来促进面向对象程序的调试。然而,它们的实际应用面临着局限性。它们经常会产生误报,要求开发人员在运行的程序中确定要调试的对象,而由于程序的非确定性,这有时是不可能的。此外,以对象为中心的断点很难构建,因为据我们所知,断点的实现从未从底层关注点中抽象出来。文献中描述了实现这些断点所需的复杂反射架构,而这些罕见的可用实现都是针对特定语言的。在本文中,我们介绍了基于时程查询(TTQ)的以对象为中心的断点的新定义和实现--时程查询断点(TTOCBs)。TTQs 是一种可扩展的时间旅行调试系统,允许开发人员通过执行调试查询来回探索程序执行情况。我们认为,我们基于查询的实现有助于克服传统的以对象为中心的断点的局限性。我们描述了 TTOCB 如何帮助开发人员在程序执行中搜索要调试的对象,即使是在非确定性存在的情况下。我们说明了如何实现文献中现有的以对象为中心的断点,以及如何利用 TTQ 抽象和脚本 API 在几个步骤内创建新的断点。要创建断点,开发人员只需熟悉简短的 API,而无需学习语言反射技术和库。为了评估我们的解决方案,我们对四个示例场景进行了初步的用户研究,结果表明,与传统的以对象为中心的断点相比,使用 TTOCB 进行调试所需的操作更少。然后,我们讨论了以对象为中心的断点和 TTOCB 在适用性和性能方面的比较。
{"title":"Time-traveling object-centric breakpoints","authors":"Valentin Bourcier ,&nbsp;Steven Costiou ,&nbsp;Maximilian Ignacio Willembrinck Santander ,&nbsp;Adrien Vanègue ,&nbsp;Anne Etien","doi":"10.1016/j.cola.2024.101285","DOIUrl":"https://doi.org/10.1016/j.cola.2024.101285","url":null,"abstract":"<div><p>Object-centric breakpoints aim to facilitate the debugging of object-oriented programs by focusing on specific objects. However, their practical application faces limitations. They often produce false positives and require developers to identify objects to debug in a running program, which is sometimes not possible due to non-determinism. Additionally, object-centric breakpoints are difficult to build because, to the best of our knowledge, their implementations have never been abstracted from low-level concerns. The literature describes complex reflective architectures necessary for implementing these breakpoints, and their rare available implementations are language-specific.</p><p>In this paper, we introduce <em>Time-Traveling Object-Centric Breakpoints (TTOCBs)</em>, a new definition and implementation of object-centric breakpoints based on <em>Time-Traveling Queries (TTQs)</em>. TTQs are an extensible time-traveling debugging system that allows developers to explore their program executions back and forth by executing debugging queries. We argue that our query-based implementation helps to overcome the limitations of traditional object-centric breakpoints. We describe how TTOCBs assist developers in searching for objects to debug within their program executions, even in the presence of non-determinism. We illustrate how existing object-centric breakpoints from the literature can be implemented and how new ones can be created in a few steps using the TTQ abstractions and scripting API. To build breakpoints, developers need to familiarize themselves with a short API instead of learning language reflection techniques and libraries. This makes our TTOCBs independent of the underlying TTQs and debugger implementations.</p><p>To evaluate our solution, we conducted an initial anecdotal user study on four example scenarios, providing evidence that debugging with TTOCBs requires fewer actions than with traditional object-centric breakpoints. We then discuss the comparison between object-centric breakpoints and TTOCBs in terms of applicability and performance.</p></div>","PeriodicalId":48552,"journal":{"name":"Journal of Computer Languages","volume":"80 ","pages":"Article 101285"},"PeriodicalIF":1.7,"publicationDate":"2024-06-18","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"141543639","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":3,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
PhaDOP: A Pharo framework for implementing software product lines using Delta-Oriented Programming and model-based engineering PhaDOP:使用面向三角编程和基于模型的工程技术实施软件产品线的 Pharo 框架
IF 1.7 3区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2024-06-04 DOI: 10.1016/j.cola.2024.101283
Boubou Thiam Niang , Giacomo Kahn , Yacine Ouzrout , Mustapha Derras , Jannik Laval

Delta-Oriented Programming is a modular, and flexible paradigm for implementing a Software Product Line. Delta-Oriented Programming involves implementing a core software product alongside a collection of Delta Modules, which encapsulate modifications that can be applied to the core software to obtain the desired product. The applicable Delta modules are activated through product configuration. The core product in Delta-Oriented Programming is mainly an object-oriented program. While Delta-Oriented Programming has the potential to enhance productivity by reusing modifications, its limited availability of tools poses a challenge in managing large-scale software systems, making it difficult for non-experts to use. Model-based engineering offers a viable solution to this problem by utilizing model artifacts instead of code snippets, simplifying product line management based on Delta-Oriented Programming. This paper presents PhaDOP, a framework for implementing Delta-Oriented Programming at the model level in the Pharo environment. The framework provides the necessary structures to construct Software Product Line architecture, organize reusable artifacts, and prepare the Delta Module through a graphical user interface. PhaDOP was evaluated through a case study.

面向三角洲编程(Delta-Oriented Programming)是一种模块化、灵活的软件产品线实施范例。面向三角洲的编程包括在实施核心软件产品的同时,实施一系列三角洲模块,这些模块封装了可应用于核心软件的修改,以获得所需的产品。适用的 Delta 模块通过产品配置激活。面向三角洲编程的核心产品主要是面向对象的程序。虽然三角洲导向编程法有可能通过重复使用修改来提高生产率,但其有限的可用工具给管理大型软件系统带来了挑战,使非专业人员难以使用。基于模型的工程学为这一问题提供了可行的解决方案,它利用模型工件代替代码片段,简化了基于面向三角洲编程的产品线管理。本文介绍了 PhaDOP,这是一个在 Pharo 环境中的模型级实施面向三角洲编程的框架。该框架提供了构建软件产品线架构、组织可重用工件以及通过图形用户界面准备 Delta 模块所需的结构。通过案例研究对 PhaDOP 进行了评估。
{"title":"PhaDOP: A Pharo framework for implementing software product lines using Delta-Oriented Programming and model-based engineering","authors":"Boubou Thiam Niang ,&nbsp;Giacomo Kahn ,&nbsp;Yacine Ouzrout ,&nbsp;Mustapha Derras ,&nbsp;Jannik Laval","doi":"10.1016/j.cola.2024.101283","DOIUrl":"10.1016/j.cola.2024.101283","url":null,"abstract":"<div><p>Delta-Oriented Programming is a modular, and flexible paradigm for implementing a Software Product Line. Delta-Oriented Programming involves implementing a core software product alongside a collection of Delta Modules, which encapsulate modifications that can be applied to the core software to obtain the desired product. The applicable Delta modules are activated through product configuration. The core product in Delta-Oriented Programming is mainly an object-oriented program. While Delta-Oriented Programming has the potential to enhance productivity by reusing modifications, its limited availability of tools poses a challenge in managing large-scale software systems, making it difficult for non-experts to use. Model-based engineering offers a viable solution to this problem by utilizing model artifacts instead of code snippets, simplifying product line management based on Delta-Oriented Programming. This paper presents PhaDOP, a framework for implementing Delta-Oriented Programming at the model level in the Pharo environment. The framework provides the necessary structures to construct Software Product Line architecture, organize reusable artifacts, and prepare the Delta Module through a graphical user interface. PhaDOP was evaluated through a case study.</p></div>","PeriodicalId":48552,"journal":{"name":"Journal of Computer Languages","volume":"80 ","pages":"Article 101283"},"PeriodicalIF":1.7,"publicationDate":"2024-06-04","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"141401136","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":3,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
A new architecture reconciling refactorings and transformations 协调重构和转换的新架构
IF 2.2 3区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2024-05-31 DOI: 10.1016/j.cola.2024.101273
Balša Šarenac , Nicolas Anquetil , Stéphane Ducasse , Pablo Tesone

Refactorings are behavior-preserving code transformations. They are a recommended software development practice and are now a standard feature in modern IDEs. There are however many situations where developers need to perform mere transformations (non-behavior-preserving) or to mix refactorings and transformations. Little work exists on the analysis of transformations implementation, how refactorings could be composed of smaller, reusable, parts (simple transformations or other refactorings), and, conversely, how transformations could be reused in isolation or to compose new refactorings. In a previous article, we started to analyze the seminal implementation of refactorings as proposed in the Ph.D. of D. Roberts, and whose evolution is available in the Pharo IDE. We identified a dichotomy between the class hierarchy of refactorings (56 classes) and that of transformations (70 classes). We also noted that there are different kinds of preconditions for different purposes (applicability preconditions or behavior-preserving preconditions). In this article, we go further by proposing a new architecture that: (i) supports two important scenarios (interactive use or scripting, i.e., batch use); (ii) defines a clear API unifying refactorings and transformations; (iii) expresses refactorings as decorators over transformations, and; (iv) formalizes the uses of the different kinds of preconditions, thus supporting better user feedback. We are in the process of migrating the existing Pharo refactorings to this new architecture. Current results show that elementary transformations such as the Add Method transformation is reused in 24 refactorings and 11 other transformations; and the Remove Method transformation is reused in 11 refactorings and 7 other transformations.

重构是一种行为保留代码转换。重构是一种推荐的软件开发实践,现在已成为现代集成开发环境的标准功能。然而,在许多情况下,开发人员需要执行单纯的转换(非行为保护),或将重构与转换混合使用。在分析转换实现、如何将重构由更小的、可重用的部分(简单转换或其他重构)组成,以及反过来,如何将转换单独重用或组成新的重构方面,目前还鲜有研究。在前一篇文章中,我们开始分析罗伯茨博士(D. Roberts)在其博士论文中提出的重构的开创性实现,Pharo集成开发环境也提供了该实现的演进。我们发现重构的类层次结构(56 个类)与转换的类层次结构(70 个类)之间存在二分法。我们还注意到,不同的目的有不同类型的前提条件(适用性前提条件或行为保留前提条件)。在本文中,我们进一步提出了一种新的架构,它可以(i) 支持两种重要场景(交互式使用或脚本,即批量使用);(ii) 定义了统一重构和转换的清晰 API;(iii) 将重构表达为转换的装饰器;(iv) 将不同类型前提条件的用途正规化,从而支持更好的用户反馈。我们正在将现有的 Pharo 重构移植到这个新架构中。目前的研究结果表明,基本变换(如添加方法变换)在 24 次重构和 11 次其他变换中被重复使用;删除方法变换在 11 次重构和 7 次其他变换中被重复使用。
{"title":"A new architecture reconciling refactorings and transformations","authors":"Balša Šarenac ,&nbsp;Nicolas Anquetil ,&nbsp;Stéphane Ducasse ,&nbsp;Pablo Tesone","doi":"10.1016/j.cola.2024.101273","DOIUrl":"https://doi.org/10.1016/j.cola.2024.101273","url":null,"abstract":"<div><p><em>Refactorings</em> are behavior-preserving code transformations. They are a recommended software development practice and are now a standard feature in modern IDEs. There are however many situations where developers need to perform mere <em>transformations</em> (non-behavior-preserving) or to mix refactorings and transformations. Little work exists on the analysis of transformations <em>implementation</em>, how refactorings could be composed of smaller, reusable, parts (simple transformations or other refactorings), and, conversely, how transformations could be <em>reused</em> in isolation or to compose new refactorings. In a previous article, we started to analyze the seminal implementation of refactorings as proposed in the Ph.D. of D. Roberts, and whose evolution is available in the Pharo IDE. We identified a dichotomy between the class hierarchy of <em>refactorings</em> (56 classes) and that of <em>transformations</em> (70 classes). We also noted that there are different kinds of preconditions for different purposes (applicability preconditions or behavior-preserving preconditions). In this article, we go further by proposing a new architecture that: (i) supports two important scenarios (interactive use or scripting, <em><em>i.e.,</em></em> batch use); (ii) defines a clear API unifying refactorings and transformations; (iii) expresses refactorings as decorators over transformations, and; (iv) formalizes the uses of the different kinds of preconditions, thus supporting better user feedback. We are in the process of migrating the existing Pharo refactorings to this new architecture. Current results show that elementary transformations such as the <span>Add Method</span> transformation is reused in 24 refactorings and 11 other transformations; and the <span>Remove Method</span> transformation is reused in 11 refactorings and 7 other transformations.</p></div>","PeriodicalId":48552,"journal":{"name":"Journal of Computer Languages","volume":"80 ","pages":"Article 101273"},"PeriodicalIF":2.2,"publicationDate":"2024-05-31","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"141312955","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":3,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Towards a Dynabook for verified VM construction 开发用于验证虚拟机构建的 Dynabook
IF 2.2 3区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2024-05-23 DOI: 10.1016/j.cola.2024.101275
Boris Shingarov , Jan Vraný

We present Smalltalk-25, a scientific Programm of research towards the synthesis of Smalltalk VMs by formal methods. We approach this through a Dynabook-style implementation of Hilbert’s “manipulating proofs as mathematical objects”. We begin by implementing an automated-reasoning engine based on refinement types. Having that foundation laid, we build a program logics for a simple “model” language; a framework for reasoning about a real intermediate language by translating into the model language; an ahead-of-time bootstrapper; and a framework for debugging thus-constructed VMs.

Our Programm is an ongoing research effort; this paper provides a report of its current status. Every part of our system is implemented in Smalltalk and available from GitHub under the MIT license.

我们介绍了Smalltalk-25,这是一项通过形式化方法合成Smalltalk虚拟机的科学研究计划。我们通过Dynabook式实现希尔伯特的 "将证明作为数学对象进行操作 "来实现这一目标。我们首先实现了一个基于细化类型的自动推理引擎。在此基础上,我们为简单的 "模型 "语言构建了一个程序逻辑;一个通过翻译成模型语言来推理真实中间语言的框架;一个超前引导器;以及一个用于调试由此构建的虚拟机的框架。我们系统的每一部分都是用 Smalltalk 实现的,可在 GitHub 上以 MIT 许可的方式获取。
{"title":"Towards a Dynabook for verified VM construction","authors":"Boris Shingarov ,&nbsp;Jan Vraný","doi":"10.1016/j.cola.2024.101275","DOIUrl":"10.1016/j.cola.2024.101275","url":null,"abstract":"<div><p>We present <em>Smalltalk-25</em>, a scientific <em>Programm</em> of research towards the synthesis of Smalltalk VMs by formal methods. We approach this through a Dynabook-style implementation of Hilbert’s “manipulating proofs as mathematical objects”. We begin by implementing an automated-reasoning engine based on refinement types. Having that foundation laid, we build a program logics for a simple “model” language; a framework for reasoning about a real intermediate language by translating into the model language; an ahead-of-time bootstrapper; and a framework for debugging thus-constructed VMs.</p><p>Our <em>Programm</em> is an ongoing research effort; this paper provides a report of its current status. Every part of our system is implemented in Smalltalk and available from GitHub under the MIT license.</p></div>","PeriodicalId":48552,"journal":{"name":"Journal of Computer Languages","volume":"80 ","pages":"Article 101275"},"PeriodicalIF":2.2,"publicationDate":"2024-05-23","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"141140750","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":3,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Pharo: A reflective language—Analyzing the reflective API and its internal dependencies Pharo:一种反思性语言--分析反思性应用程序接口及其内部依赖关系
IF 2.2 3区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2024-05-18 DOI: 10.1016/j.cola.2024.101274
Iona Thomas, Stéphane Ducasse, Pablo Tesone, Guillermo Polito

Reflective operations are powerful APIs (Application Programming Interface) that let developers build advanced tools and architectures. Reflective operations are used for implementing tools and development environments (e.g., compilers, debuggers, inspectors) or language features (e.g., distributed systems, exceptions, proxies, aspect-oriented programming). In addition, languages are evolving, introducing better concepts, and revising practices and APIs. Since 2008 Pharo has evolved from Squeak and its reflective API has evolved accordingly, diverging consequently from the original Smalltalk reflective API. With more than 500 reflective methods identified, Pharo has one of the largest reflective feature sets ranging from structural reflection to on-demand stack reification. Those operations are often built on top of the other, creating different layers of reflective operations, from low-level to high-level ones.

There is a need to understand the current reflective APIs to understand their underlying use, potential dependencies, and whether some reflective features can be scoped and optional. Such an analysis is challenged by new metaobjects organically introduced in the system, such as first-class instance variables, and their mixture with the base-level API of objects and classes.

In this article, we analyze the reflective operations used in Pharo 12 and their interdependencies. We propose a classification based on their semantics and we identify a set of issues of the current implementation. Such an analysis of reflective operations in Pharo is important to support the revision of the reflective layer and its potential redesign.

反射操作是一种功能强大的应用程序接口(API),可让开发人员构建先进的工具和架构。反射操作可用于实现工具和开发环境(如编译器、调试器、检查器)或语言特性(如分布式系统、异常、代理、面向方面的编程)。此外,语言也在不断发展,引入了更好的概念,并修改了实践和 API。自2008年以来,Pharo从Squeak发展而来,其反射式应用程序接口也随之演变,与最初的Smalltalk反射式应用程序接口大相径庭。Pharo拥有500多种反射方法,是反射功能最齐全的公司之一,包括结构反射和按需堆栈重化。这些操作通常建立在其他操作之上,形成了从低级到高级的不同层次的反射操作。我们有必要了解当前的反射API,以了解它们的基本用途、潜在的依赖性,以及某些反射功能是否可以被范围化和可选。系统中有机引入的新元对象(如一流的实例变量)以及它们与对象和类的底层 API 的混合给这种分析带来了挑战。本文将分析 Pharo 12 中使用的反射操作及其相互依存关系,并根据其语义提出一种分类方法,同时指出当前实现中存在的一系列问题。对 Pharo 中的反射操作进行这样的分析对于支持反射层的修订及其潜在的重新设计非常重要。
{"title":"Pharo: A reflective language—Analyzing the reflective API and its internal dependencies","authors":"Iona Thomas,&nbsp;Stéphane Ducasse,&nbsp;Pablo Tesone,&nbsp;Guillermo Polito","doi":"10.1016/j.cola.2024.101274","DOIUrl":"10.1016/j.cola.2024.101274","url":null,"abstract":"<div><p>Reflective operations are powerful APIs (Application Programming Interface) that let developers build advanced tools and architectures. Reflective operations are used for implementing tools and development environments (<em>e.g.,</em> compilers, debuggers, inspectors) or language features (<em>e.g.,</em> distributed systems, exceptions, proxies, aspect-oriented programming). In addition, languages are evolving, introducing better concepts, and revising practices and APIs. Since 2008 Pharo has evolved from Squeak and its reflective API has evolved accordingly, diverging consequently from the original Smalltalk reflective API. With more than 500 reflective methods identified, Pharo has one of the largest reflective feature sets ranging from structural reflection to on-demand stack reification. Those operations are often built on top of the other, creating different layers of reflective operations, from low-level to high-level ones.</p><p>There is a need to understand the current reflective APIs to understand their underlying use, potential dependencies, and whether some reflective features can be scoped and optional. Such an analysis is challenged by new metaobjects organically introduced in the system, such as first-class instance variables, and their mixture with the base-level API of objects and classes.</p><p>In this article, we analyze the reflective operations used in Pharo 12 and their interdependencies. We propose a classification based on their semantics and we identify a set of issues of the current implementation. Such an analysis of reflective operations in Pharo is important to support the revision of the reflective layer and its potential redesign.</p></div>","PeriodicalId":48552,"journal":{"name":"Journal of Computer Languages","volume":"80 ","pages":"Article 101274"},"PeriodicalIF":2.2,"publicationDate":"2024-05-18","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"141130163","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":3,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Explanations for combinatorial optimization problems 组合优化问题的解释
IF 2.2 3区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2024-05-03 DOI: 10.1016/j.cola.2024.101272
Martin Erwig, Prashant Kumar

We introduce a representation for generating explanations for the outcomes of combinatorial optimization algorithms. The two key ideas are (A) to maintain fine-grained representations of the values manipulated by these algorithms and (B) to derive explanations from these representations through merge, filter, and aggregation operations. An explanation in our model presents essentially a high-level comparison of the solution to a problem with a hypothesized alternative, illuminating why the solution is better than the alternative. Our value representation results in explanations smaller than other dynamic program representations, such as traces. Based on a measure for the conciseness of explanations we demonstrate through a number of experiments that the explanations produced by our approach are small and scale well with problem size across a number of different applications.

我们介绍了一种为组合优化算法的结果生成解释的表示方法。其中的两个关键思想是:(A)维护这些算法所处理值的细粒度表示法;(B)通过合并、过滤和聚合操作,从这些表示法中得出解释。在我们的模型中,解释实质上是将问题的解决方案与假设的替代方案进行高层次比较,阐明解决方案优于替代方案的原因。与其他动态程序表示法(如轨迹)相比,我们的值表示法所产生的解释更小。基于对解释简洁性的衡量标准,我们通过大量实验证明,我们的方法所产生的解释较小,并能很好地随着问题规模的扩大而扩展,适用于许多不同的应用。
{"title":"Explanations for combinatorial optimization problems","authors":"Martin Erwig,&nbsp;Prashant Kumar","doi":"10.1016/j.cola.2024.101272","DOIUrl":"https://doi.org/10.1016/j.cola.2024.101272","url":null,"abstract":"<div><p>We introduce a representation for generating explanations for the outcomes of combinatorial optimization algorithms. The two key ideas are (A) to maintain fine-grained representations of the values manipulated by these algorithms and (B) to derive explanations from these representations through merge, filter, and aggregation operations. An explanation in our model presents essentially a high-level comparison of the solution to a problem with a hypothesized alternative, illuminating why the solution is better than the alternative. Our value representation results in explanations smaller than other dynamic program representations, such as traces. Based on a measure for the conciseness of explanations we demonstrate through a number of experiments that the explanations produced by our approach are small and scale well with problem size across a number of different applications.</p></div>","PeriodicalId":48552,"journal":{"name":"Journal of Computer Languages","volume":"79 ","pages":"Article 101272"},"PeriodicalIF":2.2,"publicationDate":"2024-05-03","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"140880436","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":3,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
期刊
Journal of Computer Languages
全部 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