{"title":"Developing and sustaining a student-driven software solutions center—An experience report","authors":"Saheed Popoola, Vineela Kunapareddi, Hazem Said","doi":"10.1016/j.jss.2024.112279","DOIUrl":"10.1016/j.jss.2024.112279","url":null,"abstract":"<div><div>Traditional approaches to software engineering education often limit students’ exposure and engagement to real-world projects; thereby, failing to fully harness their potential and creativity. Yet, the dynamic and rapidly-advancing digital landscape means that there is a continuous need to empower students to become active participants, problem solvers, and innovators in delivering high-quality software solutions. Therefore, it is not surprising that fresh graduates are often ill-equipped to handle industrial projects. Existing approaches to exposing students to industrial projects such as internships or capstone projects have not achieved the desired result because industries are often reluctant to assign important tasks to interns, and a capstone project is likely to be discontinued by the student after completing the course. Furthermore, all the team members in a capstone project are usually inexperienced engineers, and this may limit mentorship opportunities for the students. This paper presents an experience report on the establishment and sustenance of a student-driven software solutions center named <em>Information Technology Solutions Center (ITSC)</em>, a unit within the School of Information Technology at the University of Cincinnati. A student-driven solution center empowers students to drive the design, development, execution, and maintenance of software solutions for industrial clients. This exposes the students to real-world projects and ensures that students are fully prepared to meet the demands of the ever-changing industrial landscape. The ITSC was established over a decade ago, has trained over 100 students, and executes about 20 projects annually with several industrial partners including Fortune 500 companies, government institutions, and research agencies. This paper discusses the establishment and maintenance of the center with the goal of motivating and providing a clear blueprint for computing programs that want to establish a similar student-driven software solutions center.</div></div>","PeriodicalId":51099,"journal":{"name":"Journal of Systems and Software","volume":"220 ","pages":"Article 112279"},"PeriodicalIF":3.7,"publicationDate":"2024-11-14","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"142654932","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":2,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Yves R. Kirschner , Moritz Gstür , Timur Sağlam , Sebastian Weber , Anne Koziolek
{"title":"Retriever: A view-based approach to reverse engineering software architecture models","authors":"Yves R. Kirschner , Moritz Gstür , Timur Sağlam , Sebastian Weber , Anne Koziolek","doi":"10.1016/j.jss.2024.112277","DOIUrl":"10.1016/j.jss.2024.112277","url":null,"abstract":"<div><div>Software systems, which have become an integral part of our daily lives, are constantly evolving and growing in complexity. The challenge of understanding and managing these systems has led to a shift towards automated extraction of models from software artifacts. However, extracting architectural models for web service or microservice systems is challenging due to the heterogeneity of formats, languages, and semantics. This challenge arises from the independent deployment and loose coupling of services, as well as the diverse technologies and platforms that comprise the heterogeneous artifacts. This paper addresses this issue with two key ideas: a knowledge representation model for diverse artifacts and a framework for integrating individual views into a unified architectural model. The former involves model-to-model transformations that consider technology-specific relationships and concepts. At the same time, the latter uses model transformation and composition techniques to create a unified model based on an existing metamodel. This work goes beyond the current state of the art by introducing an approach for reconstructing component-based software architectures and combining model-driven reverse engineering processes to capture information across multiple views. As empirical evidence of its applicability and accuracy, we report on its successful application in real projects of different sizes. Our evaluation shows scalability in generating architectural models and can reconstruct the components of a software system and their interactions with <span><math><msub><mrow><mi>F</mi></mrow><mrow><mn>1</mn></mrow></msub></math></span> values up to 0.94 for structural properties and up to 0.88 for behavioral properties.</div></div>","PeriodicalId":51099,"journal":{"name":"Journal of Systems and Software","volume":"220 ","pages":"Article 112277"},"PeriodicalIF":3.7,"publicationDate":"2024-11-09","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"142654931","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":2,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"OA","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Ana I. Molina , Crescencio Bravo , Jesús Gallardo , Carmen Lacave , Miguel A. Redondo
{"title":"Awareness support in collaborative programming tools: An evaluation based on programmer's perception and eye tracking","authors":"Ana I. Molina , Crescencio Bravo , Jesús Gallardo , Carmen Lacave , Miguel A. Redondo","doi":"10.1016/j.jss.2024.112276","DOIUrl":"10.1016/j.jss.2024.112276","url":null,"abstract":"<div><div>Groupware technology is an essential asset for organizations and a successful medium to support social meetings and teacher-learning processes when people are geographically distributed. Computer programming is a domain that can take advantage of the Collaborative Work paradigm and of this technology. However, to be truly effective, groupware systems must provide suitable <em>awareness</em> support, i.e., be capable of informing users of the activity taking place and of the team outcome, so that they can build a setting for their work. The study of awareness mechanisms and their influence on collaborative programming processes is an open research question. In this context, this article contributes an experimental study to evaluate the mechanisms to support coordination, communication, and awareness of COLLECE, a distributed group programming system rich in awareness support. This study brings as a novel approach the combination of subjective and objective information sources, specifically eye tracking techniques, and incorporates a heuristic evaluation of awareness support based on a well-known framework. Thanks to this experiment, we have been able to verify that this blended approach, in which users participate intensively, provides a more comprehensive and deeper assessment of awareness and other coordination and communication mechanisms, and thus a better understanding of how their use can influence the collaborative programming process and outcome (program or piece of software). The study has revealed strengths, weaknesses and opportunities for improvement of the evaluated system, and has yielded concrete results as to which are the most useful awareness components of the user interface not related to the activity supported by the system (programming), these being the traffic lights; the easiest to use, such as the session panel; or the components that impose a greater cognitive load, such as the multi-scrollbar. Regarding the relationship between the supported awareness dimensions and the quality of the collaboration outcome (computer program), the results point to the need to adequately support the <em>What-Artifact</em> dimension, i.e., highlighting in which part of the shared workspace (the source code) the user with floor control is working.</div></div>","PeriodicalId":51099,"journal":{"name":"Journal of Systems and Software","volume":"220 ","pages":"Article 112276"},"PeriodicalIF":3.7,"publicationDate":"2024-11-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"142654933","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":2,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"OA","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Lorenzo Bacchiani , Mario Bravetti , Saverio Giallorenzo , Maurizio Gabbrielli , Gianluigi Zavattaro , Stefano Pio Zingaro
{"title":"Proactive–reactive microservice architecture global scaling","authors":"Lorenzo Bacchiani , Mario Bravetti , Saverio Giallorenzo , Maurizio Gabbrielli , Gianluigi Zavattaro , Stefano Pio Zingaro","doi":"10.1016/j.jss.2024.112262","DOIUrl":"10.1016/j.jss.2024.112262","url":null,"abstract":"<div><div>We develop a novel approach for run-time global adaptation of microservice applications, based on synthesis of architecture-level reconfigurations. More precisely, we devise an algorithm for proactive–reactive automatic scaling that reaches a target system’s Maximum Computational Load by performing optimal deployment orchestrations. We evaluate our approach by developing a platform for the modeling and simulation of microservice architectures, and we use such a platform to compare local/global and reactive/proactive scaling. Empirical benchmarks, obtained through our platform, show that proactive global scaling consistently outperforms the reactive approach, but the best performances can be obtained by our original approach for mixing proactivity and reactivity. In particular, our approach surpasses the state-of-the-art when both performance and resource consumption are considered.</div><div><em>Editor’s note: Open Science material was validated by the Journal of Systems and Software Open Science Board</em>.</div></div>","PeriodicalId":51099,"journal":{"name":"Journal of Systems and Software","volume":"220 ","pages":"Article 112262"},"PeriodicalIF":3.7,"publicationDate":"2024-10-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"142578791","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":2,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Syed Ishtiaque Ahmad , Shaiful Chowdhury , Reid Holmes
{"title":"Impact of methodological choices on the analysis of code metrics and maintenance","authors":"Syed Ishtiaque Ahmad , Shaiful Chowdhury , Reid Holmes","doi":"10.1016/j.jss.2024.112263","DOIUrl":"10.1016/j.jss.2024.112263","url":null,"abstract":"<div><div>Many statistical analyses and prediction models rely on past data about how a system evolves to learn and anticipate the number of changes and bugs it will have in the future. As a software engineer or data scientist creates these models, they need to make several methodological choices such as deciding on size measurements, whether size should be controlled, from what time range metrics should be obtained, etc. In this work, we demonstrate how different methodological decisions can cause practitioners to reach conclusions that are significantly and meaningfully different. For example, when measuring SLOC from evolving source code of a method, one could decide to use the initial, median, average, final, or a per-change measure of method size. These decisions matter; for instance, some prior studies observed better performance of code metrics for bug prediction in general, while other studies found negative results when performance was evaluated through a time-based approach. Understanding the impact of these different methodological decisions is especially important given the increasing significance of approaches that use these large datasets for software analysis tasks. This paper can impact both practitioners and researchers by helping them understand which of the methodological choices underpinning their analyses are important, and which are not; this can lead to more consistency among research studies and improved decision-making for deployed analyses.</div></div>","PeriodicalId":51099,"journal":{"name":"Journal of Systems and Software","volume":"220 ","pages":"Article 112263"},"PeriodicalIF":3.7,"publicationDate":"2024-10-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"142592998","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":2,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Reference architectures as boundary objects in the co-engineering of system properties: An empirical study","authors":"Muhammad Rusyadi Ramli, Fredrik Asplund","doi":"10.1016/j.jss.2024.112264","DOIUrl":"10.1016/j.jss.2024.112264","url":null,"abstract":"<div><h3>Context:</h3><div>The complexity of large-scale, software-intensive systems demands collaborative efforts across engineering disciplines to assure that all system properties are correctly implemented. Effective communication and knowledge sharing among the involved engineering are critical for fostering this collaboration. As a result, engineering artifacts, such as reference architectures, play a key role as boundary objects—shared objects used by different communities to reach a mutual understanding.</div></div><div><h3>Objective:</h3><div>This study aimed to understand how engineer should utilize reference architectures as boundary objects, and explored the challenges in using them in the co-engineering of system properties.</div></div><div><h3>Methodology and Methods:</h3><div>Semi-structured interviews were conducted with 10 experts from two engineering disciplines focusing on system properties of particular importance to contemporary large-scale software-intensive systems development. To analyze the data, an abductive thematic analysis approach was used.</div></div><div><h3>Results:</h3><div>Reference architectures can be used as promoters of synergy, change, and learning by the engineers involved in the co-engineering of system properties. However, related challenges with regard to organizational contexts were identified. These findings underscore the need for further investigations into the relationship between the role of reference architectures, power, and organizational theory.</div></div>","PeriodicalId":51099,"journal":{"name":"Journal of Systems and Software","volume":"220 ","pages":"Article 112264"},"PeriodicalIF":3.7,"publicationDate":"2024-10-29","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"142586088","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":2,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"OA","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Reconstruction of an execution architecture view by identifying mapping rules for connectors","authors":"Hwi Ahn , Sungwon Kang , Seonah Lee","doi":"10.1016/j.jss.2024.112268","DOIUrl":"10.1016/j.jss.2024.112268","url":null,"abstract":"<div><div>An execution architecture view plays a crucial role in depicting the structure of a software system at runtime and analyzing its execution aspects, such as concurrency and performance. However, such execution views are frequently missing in real-world practices. Therefore, researchers have endeavored to reconstruct execution architecture views from software systems. However, existing approaches either require domain experts’ knowledge or are applicable only to systems with particular architecture styles. In this paper, we propose a systematic approach to reconstructing an execution architecture view, without prior knowledge of the components and connectors in the target system. With the proposed approach, by defining a candidate set of execution view connectors and mapping rules from source code to execution view connectors, developers can reconstruct an execution view. To evaluate the proposed approach, we applied it to three real-world software systems. Our evaluation results show that the proposed approach reconstructs an execution architecture with a higher than 86 % F1-score and less than 13.9 person-hours.</div></div>","PeriodicalId":51099,"journal":{"name":"Journal of Systems and Software","volume":"220 ","pages":"Article 112268"},"PeriodicalIF":3.7,"publicationDate":"2024-10-29","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"142592999","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":2,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"OA","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Kambiz Nezami Balouchi , Julien Mercier , Roberto E. Lopez-Herrejon
{"title":"An exploratory empirical eye-tracker study of visualization techniques for coverage of combinatorial interaction testing in software product lines","authors":"Kambiz Nezami Balouchi , Julien Mercier , Roberto E. Lopez-Herrejon","doi":"10.1016/j.jss.2024.112261","DOIUrl":"10.1016/j.jss.2024.112261","url":null,"abstract":"<div><div>Software Product Lines (SPLs) typically provide a large number of configurations to cater to a set of diverse requirements of specific markets. This large number of configurations renders unfeasible to test them all individually. Instead, Combinatorial Interaction Testing (CIT) computes a representative sample according to criteria of the interactions of features in the configurations. We performed an empirical study using eye-tracker technologies to analyze the effectiveness of two basic visualization techniques at conveying test coverage information of ten case studies of varying complexity. Our evaluation considered response accuracy, time-on-task, metacognitive monitoring, and visual attention. The study revealed clear advantages of a visualization technique over the other in three evaluation aspects, with a reverse effect depending on the strength of the coverage and distinct areas of visual attention.</div></div>","PeriodicalId":51099,"journal":{"name":"Journal of Systems and Software","volume":"220 ","pages":"Article 112261"},"PeriodicalIF":3.7,"publicationDate":"2024-10-28","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"142560579","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":2,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Resources don't grow on trees: A framework for resource-driven adaptation","authors":"Paul A. Akiki , Andrea Zisman , Amel Bennaceur","doi":"10.1016/j.jss.2024.112267","DOIUrl":"10.1016/j.jss.2024.112267","url":null,"abstract":"<div><div>Software systems execute tasks that depend on different types of resources. However, the variability of resources may interfere with the ability of software systems to execute important tasks. In this paper, we present a proactive and reactive resource-driven adaptation framework that supports different types of resources and is based on the prioritisation of tasks. In our previous work, we defined a task modelling notation called SERIES. This paper builds on that notation and focuses on the adaptation process to improve resource utilisation by substituting tasks with their variants, substituting resources with alternative ones, executing tasks in a different order, or cancelling the execution of low-priority tasks. The framework was evaluated in terms of the percentage of executed critical task requests, average criticality of the executed task requests in comparison to the non-executed ones, overhead, and scalability. The evaluation was executed using two datasets related to a medicine consumption system and a manufacturing system. The evaluation results showed that the proposed framework increased the number of executed critical task requests and the average criticality of the executed task requests under resource variability with marginal overhead.</div></div>","PeriodicalId":51099,"journal":{"name":"Journal of Systems and Software","volume":"220 ","pages":"Article 112267"},"PeriodicalIF":3.7,"publicationDate":"2024-10-28","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"142572226","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":2,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Xu Yang , Guofeng Zhang , Ziqi Shuai, Zhenbang Chen, Ji Wang
{"title":"Symbolic execution of floating-point programs: How far are we?","authors":"Xu Yang , Guofeng Zhang , Ziqi Shuai, Zhenbang Chen, Ji Wang","doi":"10.1016/j.jss.2024.112242","DOIUrl":"10.1016/j.jss.2024.112242","url":null,"abstract":"<div><div>Floating-point programs are challenging for symbolic execution due to the constraint solving problem. This paper empirically studies five existing symbolic execution methods for floating-point programs to evaluate their effectiveness and limitations. We have implemented the existing methods based on the state-of-the-art symbolic execution tool KLEE and constructed a real-world floating-point program benchmark for evaluation. We evaluate the existing methods with respect to statement coverage and the ability to detect floating-point exceptions. The results demonstrate that the existing methods complement each other. Based on the evaluation results, we propose a synergistic approach to improving the efficiency of the symbolic execution for floating-point programs. The experimental results indicate our synergistic method’s effectiveness in finding floating-point exceptions.</div></div>","PeriodicalId":51099,"journal":{"name":"Journal of Systems and Software","volume":"220 ","pages":"Article 112242"},"PeriodicalIF":3.7,"publicationDate":"2024-10-28","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"142572220","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":2,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}