{"title":"JoT: A Jolie framework for testing microservices","authors":"Saverio Giallorenzo , Fabrizio Montesi , Marco Peressotti , Florian Rademacher , Narongrit Unwerawattana","doi":"10.1016/j.scico.2024.103215","DOIUrl":"10.1016/j.scico.2024.103215","url":null,"abstract":"<div><div>We present JoT, a testing framework for Microservice Architectures (MSAs) based on technology agnosticism, a core principle of microservices. The main advantage of JoT is that it reduces the amount of work for a) testing for MSAs whose services use different technology stacks, b) writing tests that involve multiple services, and c) reusing tests of the same MSA under different deployment configurations or after changing some of its components. In JoT, tests are orchestrators that can both consume or offer operations from/to the MSA under test. The language for writing JoT tests is Jolie, which provides constructs that support technology agnosticism and the definition of terse test behaviours.</div></div>","PeriodicalId":49561,"journal":{"name":"Science of Computer Programming","volume":"240 ","pages":"Article 103215"},"PeriodicalIF":1.5,"publicationDate":"2024-10-03","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"142441135","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":"An exploratory study on automatic identification of assumptions in the development of deep learning frameworks","authors":"Chen Yang , Peng Liang , Zinan Ma","doi":"10.1016/j.scico.2024.103218","DOIUrl":"10.1016/j.scico.2024.103218","url":null,"abstract":"<div><h3>Context</h3><div>Stakeholders constantly make assumptions in the development of deep learning (DL) frameworks. These assumptions are related to various types of software artifacts (e.g., requirements, design decisions, and technical debt) and can turn out to be invalid, leading to system failures. Existing approaches and tools for assumption management usually depend on manual identification of assumptions. However, assumptions are scattered in various sources (e.g., code comments, commits, pull requests, and issues) of DL framework development, and manually identifying assumptions has high costs (e.g., time and resources).</div></div><div><h3>Objective</h3><div>The objective of the study is to evaluate different classification models for the purpose of identification with respect to assumptions from the point of view of developers and users in the context of DL framework projects (i.e., issues, pull requests, and commits) on GitHub.</div></div><div><h3>Method</h3><div>First, we constructed a new and largest dataset (i.e., the AssuEval dataset) of assumptions collected from the TensorFlow and Keras repositories on GitHub. Then we explored the performance of seven non-transformers based models (e.g., Support Vector Machine, Classification and Regression Trees), the ALBERT model, and three decoder-only models (i.e., ChatGPT, Claude, and Gemini) for identifying assumptions on the AssuEval dataset.</div></div><div><h3>Results</h3><div>The study results show that ALBERT achieves the best performance (f1-score: 0.9584) for identifying assumptions on the AssuEval dataset, which is much better than the other models (the 2nd best f1-score is 0.8858, achieved by the Claude 3.5 Sonnet model). Though ChatGPT, Claude, and Gemini are popular models, we do not recommend using them to identify assumptions in DL framework development because of their low performance. Fine-tuning ChatGPT, Claude, Gemini, or other language models (e.g., Llama3, Falcon, and BLOOM) specifically for assumptions might improve their performance for assumption identification.</div></div><div><h3>Conclusions</h3><div>This study provides researchers with the largest dataset of assumptions for further research (e.g., assumption classification, evaluation, and reasoning) and helps researchers and practitioners better understand assumptions and how to manage them in their projects (e.g., selection of classification models for identifying assumptions).</div></div>","PeriodicalId":49561,"journal":{"name":"Science of Computer Programming","volume":"240 ","pages":"Article 103218"},"PeriodicalIF":1.5,"publicationDate":"2024-10-03","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"142424071","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":"Ranking co-change candidates suggested by FLeCCS using programmer sensitivity","authors":"Abid Afsan Hamid, Md. Fizul Haque, Manishankar Mondal","doi":"10.1016/j.scico.2024.103216","DOIUrl":"10.1016/j.scico.2024.103216","url":null,"abstract":"<div><div>Identifying co-change candidates when making changes to a particular program entity is an important software engineering task which is known as change impact analysis. A number of techniques for detecting co-change candidates currently exist. Most of these techniques work considering file level, class level, or method level granularity. FLeCCS is a recently introduced technique that suggests co-change candidates considering even fragment level granularity. FLeCCS ranks its co-change candidates considering file proximity. However, programmer sensitivity might be an important factor while ranking co-change candidates. Intuitively, it is more comfortable for a programmer to change her own code rather than changing someone else's code. Considering this fact, we investigate ranking co-change candidates suggested by FLeCCS considering programmer sensitivity.</div><div>In our research, we have two main contributions: (1) proposing a composite ranking mechanism considering three things - file proximity, code similarity, and programmer sensitivity and (2) an empirical evaluation of our proposed mechanism by comparing it with file proximity ranking and similarity extent ranking mechanisms on thousands of revisions of five subject systems. We compare the ranking mechanisms in ranking the co-change candidates suggested by FLeCCS. According to our investigation incorporating four measures (Precision At K, Recall At K, Mean Average Precision and Mean Reciprocal Rank), composite ranking mechanism significantly outperforms the other two existing ranking mechanisms. Our findings are supported by statistical significance tests. We believe that our Proposed Composite Ranking mechanism is not only applicable to FLeCCS but also to other co-change suggestion techniques.</div></div>","PeriodicalId":49561,"journal":{"name":"Science of Computer Programming","volume":"240 ","pages":"Article 103216"},"PeriodicalIF":1.5,"publicationDate":"2024-09-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"142358918","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}
Jose-Miguel Horcas , Jose A. Galindo , Lidia Fuentes , David Benavides
{"title":"FM fact label","authors":"Jose-Miguel Horcas , Jose A. Galindo , Lidia Fuentes , David Benavides","doi":"10.1016/j.scico.2024.103214","DOIUrl":"10.1016/j.scico.2024.103214","url":null,"abstract":"<div><div><em>FM Fact Label</em> is a tool for visualizing the characterizations of feature models based on their metadata, structural measures, and analytical metrics. Although there are various metrics available to characterize feature models, there is no standard method to visualize and identify unique properties of feature models. Unlike existing tools, <em>FM Fact Label</em> provides a standalone web-based platform for configurable and interactive visualization, enabling export to various formats. This contribution is significant because it supports the Universal Variability Language (UVL) and enhances the UVL ecosystem by offering a common representation of the results of existing analysis tools.</div></div>","PeriodicalId":49561,"journal":{"name":"Science of Computer Programming","volume":"240 ","pages":"Article 103214"},"PeriodicalIF":1.5,"publicationDate":"2024-09-26","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"142358917","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}
{"title":"A systematic literature review on dynamic testing of blockchain oriented software","authors":"Mariam Lahami , Afef Jmal Maalej , Moez Krichen","doi":"10.1016/j.scico.2024.103211","DOIUrl":"10.1016/j.scico.2024.103211","url":null,"abstract":"<div><div>This Systematic Literature Review (SLR) provides a thorough analysis of the most pertinent research with regard to testing Blockchain oriented Software (BoS). Indeed, it is highly required to test and check the correctness of such kind of software systems before their deployment since they are immutable and cannot be modified once deployed. All the selected primary studies, published between 2017 and October 2022, make use of dynamic testing techniques in order to ensure the trustworthiness and the quality of BoS and to check functional and non-functional aspects such as security and performance. First of all, we study <strong>53</strong> research papers from various electronic databases and classify them according to several factors including (i) the accessibility of smart contract code, (ii) the adopted testing techniques and (iii) the supported vulnerabilities. Then, we emphasize works' benefits and drawbacks while providing a summary about the work done on test generation and selection in this field. At the end, we identify research challenges and potential research opportunities with the aim of giving research lines not yet explored.</div></div>","PeriodicalId":49561,"journal":{"name":"Science of Computer Programming","volume":"240 ","pages":"Article 103211"},"PeriodicalIF":1.5,"publicationDate":"2024-09-26","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"142323997","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}
Joanna Delicaris , Anne Remke , Erika Ábrahám , Stefan Schupp , Jonas Stübbe
{"title":"Maximizing reachability probabilities in rectangular automata with random events","authors":"Joanna Delicaris , Anne Remke , Erika Ábrahám , Stefan Schupp , Jonas Stübbe","doi":"10.1016/j.scico.2024.103213","DOIUrl":"10.1016/j.scico.2024.103213","url":null,"abstract":"<div><div>This paper introduces two stochastic variants of rectangular automata. First, <em>rectangular automata with random events (RAE)</em> are introduced, which semantically embed random events. Second, in <em>rectangular automata with random clocks (RAC)</em>, the dynamics of random events are explicitly modeled as stopwatches which are called <em>random clocks</em>. We show that RAE can be transformed into RAC maintaining time- and jump-bounded reachability. Both modeling variants incorporate time-induced nondeterminism on discrete behavior and nondeterminism in the dynamic behavior. The difference between RAE and RAC lies in the modeling of the random events: while RAE semantically ensure that random events are correctly handled via stochastic guards, in RAC it is the responsibility of the modeler to ensure, e.g., that random clocks are enabled and disabled such that the resulting random delay correctly models the desired random event. However, the advantage of RAC is that existing methods for nonstochastic rectangular automata can directly be applied to RAC to compute the reachable state space. We then propose an algorithm to maximize reachability probabilities for RAC with history-dependent prophetic scheduling. Specifically, we use a backward refinement approach to identify the maximum prophetic scheduler and prove the correctness of the proposed method. The feasibility of the presented approach is illustrated on a scalable model and the results computed with our tool <span>RealySt</span> are validated against the tool <span>ProHVer</span>.</div></div>","PeriodicalId":49561,"journal":{"name":"Science of Computer Programming","volume":"240 ","pages":"Article 103213"},"PeriodicalIF":1.5,"publicationDate":"2024-09-25","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"142424072","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}
{"title":"Baital: Sampling configurable systems with high t-wise coverage","authors":"Eduard Baranov, Axel Legay","doi":"10.1016/j.scico.2024.103209","DOIUrl":"10.1016/j.scico.2024.103209","url":null,"abstract":"<div><div>Testing of highly configurable systems is challenging due to an immense number of configurations and is usually performed on a small sample set. Its quality is often measured with <em>t</em>-wise coverage. We propose a tool <span><math><mi>Baital</mi></math></span> for sampling highly configurable systems with thousands of features capable of achieving high <em>t</em>-wise coverage. The effectiveness and scalability of the tool are based on two novel techniques: the adaptive weighted sampling and the approximation techniques for the <em>t</em>-wise coverage computation. <span><math><mi>Baital</mi></math></span> can easily handle sampling and computation for 6-wise coverage. The latest version supports multi-valued features.</div></div>","PeriodicalId":49561,"journal":{"name":"Science of Computer Programming","volume":"240 ","pages":"Article 103209"},"PeriodicalIF":1.5,"publicationDate":"2024-09-23","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"142319085","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}
Marek Chalupa , Fabian Muehlboeck , Stefanie Muroya Lei , Thomas A. Henzinger
{"title":"Vamos: Middleware for best-effort third-party monitoring","authors":"Marek Chalupa , Fabian Muehlboeck , Stefanie Muroya Lei , Thomas A. Henzinger","doi":"10.1016/j.scico.2024.103212","DOIUrl":"10.1016/j.scico.2024.103212","url":null,"abstract":"<div><div>As the complexity and criticality of software increase every year, so does the importance of runtime monitoring. Third-party and best-effort monitoring are especially valuable, yet under-explored areas of runtime monitoring. In this context, third-party monitoring means monitoring with a limited knowledge of the monitored software (as it has been developed by a third party). Best-effort monitoring keeps pace with the monitored software at the cost of possibly imprecise verdicts when keeping up with the monitored software would not be feasible. Most existing monitoring frameworks do not support the combination of third-party and best-effort monitoring because they either require the full access to the monitored code or the ability to process all observable events, or both.</div><div>We present a middleware framework, <span>Vamos</span>, for the runtime monitoring of software. <span>Vamos</span> is explicitly designed to support third-party and best-effort scenarios. The design goals of <span>Vamos</span> are (i) efficiency (tracing events with low overhead), (ii) flexibility (the ability to monitor a variety of different event channels, and to connect to a wide range of monitors), and (iii) ease-of-use. To achieve its goals, <span>Vamos</span> combines aspects of event broker and event recognition systems with aspects of stream processing systems.</div><div>We implemented a prototype toolchain for <span>Vamos</span> and conducted a set of experiments demonstrating the usability of the scheme. The results indicate that <span>Vamos</span> enables writing useful yet efficient monitors, and simplifies key aspects of setting up a monitoring system from scratch.</div></div>","PeriodicalId":49561,"journal":{"name":"Science of Computer Programming","volume":"240 ","pages":"Article 103212"},"PeriodicalIF":1.5,"publicationDate":"2024-09-23","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"142326805","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}
Philippe Collet, Johann Mortara, Yann Brault, Anne-Marie Dery-Pinna
{"title":"The VariCity ecosystem: City visualization of object-oriented variability in Java and TypeScript","authors":"Philippe Collet, Johann Mortara, Yann Brault, Anne-Marie Dery-Pinna","doi":"10.1016/j.scico.2024.103210","DOIUrl":"10.1016/j.scico.2024.103210","url":null,"abstract":"<div><div>In object-oriented variability-rich software systems, the implemented variability often relies on traditional mechanisms (<em>i.e.</em>, inheritance, overloading, and design patterns). It is then not well-documented and buried in a single codebase, hampering its comprehension and maintenance. <em>VariCity</em> helps developers understand the implemented variability in Java and TypeScript using a 3D city metaphor in which classes are buildings shaped by the occurrences of variability implementations, while usage relationships form the city streets. Extensions of <em>VariCity</em> support IDE integration with navigation and spot zones with variability debt through quality metrics mapped on the city buildings.</div></div>","PeriodicalId":49561,"journal":{"name":"Science of Computer Programming","volume":"240 ","pages":"Article 103210"},"PeriodicalIF":1.5,"publicationDate":"2024-09-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"142319082","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}
Seongmin Lee , Dave Binkley , Robert Feldt , Nicolas Gold , Shin Yoo
{"title":"Causal program dependence analysis","authors":"Seongmin Lee , Dave Binkley , Robert Feldt , Nicolas Gold , Shin Yoo","doi":"10.1016/j.scico.2024.103208","DOIUrl":"10.1016/j.scico.2024.103208","url":null,"abstract":"<div><p>Discovering how program components affect one another plays a fundamental role in aiding engineers comprehend and maintain a software system. Despite the fact that the degree to which one program component depends upon another can vary in strength, traditional dependence analysis typically ignores such nuance. To account for this nuance in dependence-based analysis, we propose Causal Program Dependence Analysis (CPDA), a framework based on causal inference that captures the degree (or strength) of the dependence between program elements. For a given program, CPDA intervenes in the program execution to observe changes in value at selected points in the source code. It observes the association between program elements by constructing and executing modified versions of a program (requiring only light-weight parsing rather than sophisticated static analysis). CPDA applies causal inference to the observed changes to identify and estimate the strength of the dependence relations between program elements. We explore the advantages of CPDA's quantified dependence by presenting results for several applications. Our further qualitative evaluation demonstrates 1) that observing different levels of dependence facilitates grouping various functional aspects found in a program and 2) how focusing on the relative strength of the dependences for a particular program element provides a detailed context for that element. Furthermore, a case study that applies CPDA to debugging illustrates how it can improve engineer productivity.</p></div>","PeriodicalId":49561,"journal":{"name":"Science of Computer Programming","volume":"240 ","pages":"Article 103208"},"PeriodicalIF":1.5,"publicationDate":"2024-09-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"https://www.sciencedirect.com/science/article/pii/S016764232400131X/pdfft?md5=59869ae58db39102a7aea3d20ab99b35&pid=1-s2.0-S016764232400131X-main.pdf","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"142240494","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}