{"title":"Low-code design of collective systems with ScaFi-Blocks","authors":"Gianluca Aguzzi, Matteo Cerioni, Mirko Viroli","doi":"10.1016/j.scico.2025.103356","DOIUrl":"10.1016/j.scico.2025.103356","url":null,"abstract":"<div><div>ScaFi-Blocks is a visual, low-code programming environment for designing and implementing swarm algorithms. Built on the ScaFi aggregate computing framework and the Blockly visual programming library, ScaFi-Blocks enables users to visually compose algorithms using intuitive building blocks, abstracting away the complexities of traditional swarm programming frameworks. This approach simplifies the development of collective behaviours for a wide range of swarm systems, including robot swarms, IoT device ensembles, and sensor networks, fostering broader accessibility and innovation within the field. This contribution bridges the gap between visual programming and textual code, lowering the barrier to entry for non-experts while promoting a deeper understanding of aggregate computing principles.</div></div>","PeriodicalId":49561,"journal":{"name":"Science of Computer Programming","volume":"247 ","pages":"Article 103356"},"PeriodicalIF":1.5,"publicationDate":"2025-06-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"144518309","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}
{"title":"Fossil 2.0: Design, usage and impact of a software tool for verification and control of dynamical models","authors":"Alec Edwards , Andrea Peruffo , Alessandro Abate","doi":"10.1016/j.scico.2025.103354","DOIUrl":"10.1016/j.scico.2025.103354","url":null,"abstract":"<div><div>This paper introduces <span>Fossil</span> 2.0, an advanced software tool designed for synthesizing certificates such as Lyapunov and barrier functions for dynamical systems represented by ordinary differential equations and difference equations. <span>Fossil</span> 2.0 features a range of significant enhancements, including improved user interfaces, an expanded library of certificates, controller synthesis capabilities, and an extensible architecture. These advancements are detailed as part of this paper. The core of <span>Fossil</span> is a counterexample-guided inductive synthesis (CEGIS) framework that ensures soundness. The tool employs neural networks as templates to generate candidate functions, which are rigorously validated using a satisfiability modulo theories (SMT) solver. Key improvements over the previous release include support for a broader class of certificates, integration of control law synthesis, and compatibility with discrete-time models.</div></div>","PeriodicalId":49561,"journal":{"name":"Science of Computer Programming","volume":"247 ","pages":"Article 103354"},"PeriodicalIF":1.5,"publicationDate":"2025-06-23","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"144472132","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}
Linlin Wen , Chengying Mao , Dave Towey , Jifu Chen
{"title":"An adaptive pairwise testing algorithm based on deep reinforcement learning","authors":"Linlin Wen , Chengying Mao , Dave Towey , Jifu Chen","doi":"10.1016/j.scico.2025.103353","DOIUrl":"10.1016/j.scico.2025.103353","url":null,"abstract":"<div><div>Pairwise testing is an important branch of combinatorial testing that focuses on finding a minimum test suite that satisfies pairwise coverage. However, most existing methods fail to achieve a good balance between exploration and exploitation capabilities when searching for the test suite, or may not fully utilize the information related to the already-generated test cases: This can lead to unsatisfactory performance in combination coverage. To address these limitations, we propose an adaptive pairwise testing framework based on deep reinforcement learning, APT-DRL. Using this, a deep reinforcement learning model for pairwise testing based on the Proximal Policy Optimization (PPO) method is developed. We design the pairwise coverage vector as the state space, and use neural networks to solve the search problem in this huge state space. To reduce the size of the Markov decision space, we also design a masking technique to avoid repeated generation of actions (test cases) that have already been used. We conducted experiments using APT-DRL and eight other baseline algorithms (representing three categories): The results show that APT-DRL, as a novel pairwise testing method, significantly outperforms four random-based pairwise testing methods (RT, ARTsum, FSCS-HD, and FSCS-SD); is comparable to, or surpasses, the two heuristic algorithms (IPOG and AETG); and has better test-suite-generation efficiency and superior effectiveness than the two swarm-intelligence-based algorithms (GSTG and DPSO).</div></div>","PeriodicalId":49561,"journal":{"name":"Science of Computer Programming","volume":"247 ","pages":"Article 103353"},"PeriodicalIF":1.5,"publicationDate":"2025-06-23","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"144490705","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}
Tiago Possato , João H. Valentini , Luiz F.P. Southier , Marco A.C. Barbosa , Marcelo Teixeira
{"title":"DEScMaker: A tool for automated code generation for discrete event systems controllers","authors":"Tiago Possato , João H. Valentini , Luiz F.P. Southier , Marco A.C. Barbosa , Marcelo Teixeira","doi":"10.1016/j.scico.2025.103350","DOIUrl":"10.1016/j.scico.2025.103350","url":null,"abstract":"<div><div>The <em>Supervisory Control Theory</em> (SCT ) is a formal approach that allows computing correct-by-construction controllers for <em>Discrete Event Systems</em> (DESs ), having <em>Finite State Machines</em> (FSMs ) as its basic building block. Usually, tools that implement SCT operations over FSMs have resources for the design, processing, simulation, synthesis, and verification, but not for implementation, including code generation resources. Without them, designers still must manually code the control solution, shedding the practical appeal of SCT. This paper claims that SCT can more smoothly meet automated implementation via the proposed <em>DEScMaker</em> tool. It receives an FSM representing the output of the SCT synthesis and converts it into <em>C</em> or <span><math><mi>P</mi><mi>y</mi><mi>t</mi><mi>h</mi><mi>o</mi><mi>n</mi></math></span> code that preserves the idea of event controllability, maximum permissiveness within a set of specifications, and non-blockingness. The tool handles both centralized and modular architectures, and its output is a generic implementation structured in layers, with supervisors, an event handler, and the interface between software and hardware, which requires minimal effort to be customized for each target platform. Examples illustrate the approach and allow for quantifying its gains compared with empirical programming.</div></div>","PeriodicalId":49561,"journal":{"name":"Science of Computer Programming","volume":"247 ","pages":"Article 103350"},"PeriodicalIF":1.5,"publicationDate":"2025-06-16","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"144312701","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}
{"title":"Auto-active verification of distributed systems and specification refinements with Why3-do","authors":"Cláudio Belo Lourenço , Jorge Sousa Pinto","doi":"10.1016/j.scico.2025.103352","DOIUrl":"10.1016/j.scico.2025.103352","url":null,"abstract":"<div><div>In this paper, we introduce a novel approach for rigorously verifying safety properties of state machine specifications. Our method leverages an auto-active verifier and centers around the use of action functions annotated with contracts. These contracts facilitate inductive invariant checking, ensuring correctness during system execution. Our approach is further supported by the Why3-do library, which extends the Why3 tool's capabilities to verify concurrent and distributed algorithms using state machines.</div><div>Two distinctive features of Why3-do are: (i) it supports <em>specification refinement</em> through refinement mappings, enabling hierarchical reasoning about distributed algorithms; and (ii) it can be easily extended to make verifying specific classes of systems more convenient. In particular, the library contains models allowing for message-passing algorithms to be described with programmed <em>handlers</em>, assuming different network semantics.</div><div>A gallery of examples, all verified with Why3 using SMT solvers as proof tools, is also described in the paper. It contains several auto-actively verified concurrent and distributed algorithms, including the Paxos consensus algorithm.</div></div>","PeriodicalId":49561,"journal":{"name":"Science of Computer Programming","volume":"247 ","pages":"Article 103352"},"PeriodicalIF":1.5,"publicationDate":"2025-06-13","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"144312699","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}
{"title":"A Haskell-embedded DSL for secure information-flow","authors":"Cecilia Manzino, Gonzalo de Latorre","doi":"10.1016/j.scico.2025.103351","DOIUrl":"10.1016/j.scico.2025.103351","url":null,"abstract":"<div><div>This paper presents a domain-specific language, embedded in Haskell (EDSL), for enforcing the information flow property <em>Delimited Release</em>. To build this language we use Haskell extensions that will allow some kind of dependently-typed programming.</div><div>Considering the effort it takes to build a language from scratch, we decided to provide an information-flow security language as an EDSL, using the infrastructure of the host language to support it.</div><div>The decision to use Haskell as the implementation language was driven by its powerful type system that makes it possible to encode the security type system of the embedded language at the type level, as well as by its nature as a general-purpose language.</div><div>The implementation follows an approach in which the type of the abstract syntax of the embedded language is decorated with security type information. In this way, typed programs will correspond to secure programs, and the verification of the security invariants of programs will be reduced to type-checking.</div><div>The embedded security language is designed in a way that is easy to use. We illustrate its use through three examples: an electronic purchase, secure reading of database information, and a password checker.</div></div>","PeriodicalId":49561,"journal":{"name":"Science of Computer Programming","volume":"247 ","pages":"Article 103351"},"PeriodicalIF":1.5,"publicationDate":"2025-06-13","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"144312700","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}
Giuseppe De Palma , Saverio Giallorenzo , Jacopo Mauro , Matteo Trentin , Gianluigi Zavattaro
{"title":"tAPP OpenWhisk: A serverless platform for topology-aware allocation priority policies","authors":"Giuseppe De Palma , Saverio Giallorenzo , Jacopo Mauro , Matteo Trentin , Gianluigi Zavattaro","doi":"10.1016/j.scico.2025.103349","DOIUrl":"10.1016/j.scico.2025.103349","url":null,"abstract":"<div><div>The Function-as-a-Service (FaaS) paradigm offers a serverless approach that abstracts the management of underlying infrastructure, enabling developers to focus on application logic. However, leveraging infrastructure-aware features can further optimize serverless performance.</div><div>We present a software prototype that enhances Apache OpenWhisk serverless platform with a novel architecture incorporating tAPP (topology-aware Allocation Priority Policies), a declarative language designed for specifying topology-aware scheduling policies. Through a case study involving distributed data access across multiple cloud regions, we show that tAPP can significantly reduce latency and minimizes performance variability compared to the standard OpenWhisk implementation.</div></div>","PeriodicalId":49561,"journal":{"name":"Science of Computer Programming","volume":"247 ","pages":"Article 103349"},"PeriodicalIF":1.5,"publicationDate":"2025-06-09","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"144239371","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}
{"title":"Evaluating a continuous feedback strategy to enhance machine learning code smell detection","authors":"Daniel Cruz, Amanda Santana, Eduardo Figueiredo","doi":"10.1016/j.scico.2025.103346","DOIUrl":"10.1016/j.scico.2025.103346","url":null,"abstract":"<div><div>Code smells are symptoms of bad design choices implemented on the source code. Several code smell detection tools and strategies have been proposed over the years, including the use of machine learning algorithms. However, we lack empirical evidence on how expert feedback could improve machine learning based detection of code smells. This paper aims to propose and evaluate a conceptual strategy to improve machine-learning detection of code smells by means of continuous feedback. To evaluate the strategy, we follow an exploratory evaluation design to compare results of the smell detection before and after feedback provided by a service - acting as a software expert. We focus on four code smells - God Class, Long Method, Feature Envy, and Refused Bequest - detected in 20 Java systems. As results, we observed that continuous feedback improves the performance of code smell detection. For the detection of the class-level code smells, God Class and Refused Bequest, we achieved an average improvement in terms of F1 of 0.13 and 0.58, respectively, after 50 iterations of feedback. For the method-level code smells, Long Method and Feature Envy, the improvements of F1 were 0.66 and 0.72, respectively. Our promising results are a stepping stone towards the development of new strategies and tools relying on continuous feedback for machine learning detection of code smells.</div></div>","PeriodicalId":49561,"journal":{"name":"Science of Computer Programming","volume":"247 ","pages":"Article 103346"},"PeriodicalIF":1.5,"publicationDate":"2025-06-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"144239369","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}
{"title":"Earley table traversing parsers","authors":"Elizabeth Scott, Adrian Johnstone","doi":"10.1016/j.scico.2025.103335","DOIUrl":"10.1016/j.scico.2025.103335","url":null,"abstract":"<div><div>We present a version of Earley's general parsing algorithm which uses a precomputed table. Our algorithm generates a set based representation of sentence derivations, precomputed components of which are also held in the table. We give experimental results for Java and ANSI C showing that the data structures produced are considerably smaller than the corresponding Earley data structures, and that the algorithm runs faster. The algorithm retains the simplicity of Earley's approach and, without explanatory discussion, takes only about a page to fully specify. This paper contains both motivational discussion, describing a recogniser version of the algorithm first and then its extension to a parser, and a concise, bare, but complete parser specification.</div></div>","PeriodicalId":49561,"journal":{"name":"Science of Computer Programming","volume":"247 ","pages":"Article 103335"},"PeriodicalIF":1.5,"publicationDate":"2025-05-28","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"144203431","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}
{"title":"Interleaving semantics and verification of UML 2 dynamic interactions using process algebra","authors":"Aissam Belghiat","doi":"10.1016/j.scico.2025.103334","DOIUrl":"10.1016/j.scico.2025.103334","url":null,"abstract":"<div><div>UML sequence diagrams provide a visual notation for modeling the behavior of object interactions in systems. They lack precise formal semantics due to the semi-formal nature of the UML language which hinders their automated analysis and verification. Process algebras have been widely used in the literature in order to deal with such problems. <em>π</em>-calculus is a well-known process algebra recognized for its rich theoretical foundation and high expressivity power. It is also characterized by its capabilities in specifying interleaving and weak sequencing which is considered by the OMG standard as the default semantics for interaction diagrams. Thus, this paper presents a novel approach to formalizing UML 2 sequence diagrams by translating them into <em>π</em>-calculus. The translation captures the semantics of their basic elements as well as their combined fragments. A compositional technique is adopted to gradually build the corresponding <em>π</em>-calculus specification which results in easy induction/recursion of elements and their meaning enabling reasoning about complex dynamic behaviors. The latter task could be done using different analysis tools such as the MWB tool used in this study. The mapping provides a formal semantics as well as formal analysis and verification for UML2 sequence diagrams according to the OMG standard. A case study is shown to illustrate the usefulness of the translation.</div></div>","PeriodicalId":49561,"journal":{"name":"Science of Computer Programming","volume":"246 ","pages":"Article 103334"},"PeriodicalIF":1.5,"publicationDate":"2025-05-28","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"144167754","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}