Pub Date : 2024-11-05DOI: 10.1016/j.jss.2024.112260
Pierre Martou, Benoît Duhoux, Kim Mens, Axel Legay
Due to the large number of possible interactions and transitions among features in dynamically adaptive systems, testing such systems poses significant challenges. To verify that such systems behave correctly, combinatorial interaction testing (CIT) can create concise test suites covering all valid pairs of features of such systems. While CIT claims to find all errors caused by two features, it does not cover certain errors occurring only for specific transitions between features. To address this issue we study the technique of Combinatorial Transition Testing (CTT), which includes both generation and detection of what we call behavioural transition errors. From an initial generation algorithm that combines both interaction and transition coverage but lacks scalability, we propose an optimised version that enables CTT even for hundreds of features. From a valid test suite covering all transitions, we complete our testing approach with a test oracle that detects all behavioural transition errors without any prior knowledge of the system’s behaviour. After a comprehensive analysis over a large number of feature models, we conclude that size of CTT-generated test suites and test effort needed to use our test oracle are linearly correlated to CIT-generated ones and that CTT grows logarithmically in the number of features.
{"title":"Combinatorial transition testing in dynamically adaptive systems: Implementation and test oracle","authors":"Pierre Martou, Benoît Duhoux, Kim Mens, Axel Legay","doi":"10.1016/j.jss.2024.112260","DOIUrl":"10.1016/j.jss.2024.112260","url":null,"abstract":"<div><div>Due to the large number of possible interactions and transitions among features in dynamically adaptive systems, testing such systems poses significant challenges. To verify that such systems behave correctly, combinatorial interaction testing (CIT) can create concise test suites covering all valid pairs of features of such systems. While CIT claims to find all errors caused by two features, it does not cover certain errors occurring only for specific <em>transitions</em> between features. To address this issue we study the technique of Combinatorial Transition Testing (CTT), which includes both generation and detection of what we call behavioural transition errors. From an initial generation algorithm that combines both interaction and transition coverage but lacks scalability, we propose an optimised version that enables CTT even for hundreds of features. From a valid test suite covering all transitions, we complete our testing approach with a test oracle that detects all behavioural transition errors without any prior knowledge of the system’s behaviour. After a comprehensive analysis over a large number of feature models, we conclude that size of CTT-generated test suites and test effort needed to use our test oracle are linearly correlated to CIT-generated ones and that CTT grows logarithmically in the number of features.</div></div>","PeriodicalId":51099,"journal":{"name":"Journal of Systems and Software","volume":"221 ","pages":"Article 112260"},"PeriodicalIF":3.7,"publicationDate":"2024-11-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"142698573","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}
Pub Date : 2024-11-01DOI: 10.1016/j.jss.2024.112276
Ana I. Molina , Crescencio Bravo , Jesús Gallardo , Carmen Lacave , Miguel A. Redondo
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 awareness 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 What-Artifact dimension, i.e., highlighting in which part of the shared workspace (the source code) the user with floor control is working.
{"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}
Pub Date : 2024-10-30DOI: 10.1016/j.jss.2024.112262
Lorenzo Bacchiani , Mario Bravetti , Saverio Giallorenzo , Maurizio Gabbrielli , Gianluigi Zavattaro , Stefano Pio Zingaro
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.
Editor’s note: Open Science material was validated by the Journal of Systems and Software Open Science Board.
{"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}
Pub Date : 2024-10-30DOI: 10.1016/j.jss.2024.112263
Syed Ishtiaque Ahmad , Shaiful Chowdhury , Reid Holmes
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.
{"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}
Pub Date : 2024-10-29DOI: 10.1016/j.jss.2024.112264
Muhammad Rusyadi Ramli, Fredrik Asplund
Context:
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.
Objective:
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.
Methodology and Methods:
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.
Results:
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.
{"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}
Pub Date : 2024-10-29DOI: 10.1016/j.jss.2024.112268
Hwi Ahn , Sungwon Kang , Seonah Lee
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.
执行架构视图在描述软件系统运行时的结构以及分析其执行方面(如并发性和性能)方面发挥着至关重要的作用。然而,这种执行视图在现实世界的实践中经常缺失。因此,研究人员努力从软件系统中重建执行架构视图。然而,现有的方法要么需要领域专家的知识,要么只适用于具有特定架构风格的系统。在本文中,我们提出了一种重构执行架构视图的系统方法,无需事先了解目标系统中的组件和连接器。利用所提出的方法,开发人员可以通过定义执行视图连接器的候选集以及从源代码到执行视图连接器的映射规则来重构执行视图。为了评估所提出的方法,我们将其应用于三个真实世界的软件系统。我们的评估结果表明,该方法重构执行架构的 F1 分数高于 86%,耗时少于 13.9 人时。
{"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}
Pub Date : 2024-10-28DOI: 10.1016/j.jss.2024.112261
Kambiz Nezami Balouchi , Julien Mercier , Roberto E. Lopez-Herrejon
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.
{"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}
Pub Date : 2024-10-28DOI: 10.1016/j.jss.2024.112267
Paul A. Akiki , Andrea Zisman , Amel Bennaceur
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.
软件系统执行的任务依赖于不同类型的资源。然而,资源的多变性可能会影响软件系统执行重要任务的能力。在本文中,我们提出了一种主动和被动的资源驱动适应框架,它支持不同类型的资源,并以任务的优先级为基础。在之前的工作中,我们定义了一种名为 SERIES 的任务建模符号。本文以该符号为基础,重点关注适应过程,通过用变体任务替代任务、用替代资源替代资源、以不同顺序执行任务或取消执行低优先级任务来提高资源利用率。该框架根据已执行关键任务请求的百分比、已执行任务请求与未执行任务请求的平均关键度、开销和可扩展性进行了评估。评估使用了与药品消费系统和制造系统相关的两个数据集。评估结果表明,在资源多变的情况下,建议的框架提高了已执行关键任务请求的数量和已执行任务请求的平均临界度,而开销很小。
{"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}
Pub Date : 2024-10-28DOI: 10.1016/j.jss.2024.112242
Xu Yang , Guofeng Zhang , Ziqi Shuai, Zhenbang Chen, Ji Wang
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.
{"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}
Pub Date : 2024-10-28DOI: 10.1016/j.jss.2024.112265
Lei Wang, Shuhan Chen, Xikai Zhang, Jiyuan Liu
With the help of the Software as a Service (SaaS) delivery model, the rapid advancement of cloud computing has become the most prevalent distributed computing paradigm. A large number of application vendors and developers choose to integrate cloud-hosted Application Program Interfaces (APIs) into their systems as system components to construct new and value-added cloud-based systems. When executed in an open cloud environment, each system component is constantly at risk of Distributed Denial of Service (DDoS) attacks. Such cloud-based systems are challenged by reliability fluctuations when a system component is attacked. A change in the reliability of the remote system components, e.g., performance decline or runtime anomalies, can threaten the stability of the entire cloud-based system. To enable timely reliability assurance against cloud-based systems DDoS attacks, it is necessary to analyze runtime reliability of its system components. In this paper, we formally present a new model for evaluating the reliability of the system components based on concept drift. Based on the model, we propose a novel method named runtime reliability anomaly detection (RAD), leveraging the Singular Value Decomposition (SVD) technique. RAD analyzes the reliability of a system component during its operation by detecting peaks in Fractional Distribution Change (FDC) within its reliability time series data. Specifically, it calculates the Jensen Shannon divergence between historical and up-to-date reliability data streams, based on feature vectors that are dimensionality-reduced using SVD. The results of extensive experiments conducted on two public cloud APIs performance datasets demonstrate the effectiveness and efficiency of RAD.
在软件即服务(SaaS)交付模式的帮助下,云计算的快速发展已成为最普遍的分布式计算模式。大量应用程序供应商和开发人员选择将云托管应用程序接口(API)作为系统组件集成到自己的系统中,以构建新的增值云系统。在开放的云环境中执行时,每个系统组件都时刻面临着分布式拒绝服务(DDoS)攻击的风险。当系统组件受到攻击时,这种基于云的系统就会面临可靠性波动的挑战。远程系统组件可靠性的变化,如性能下降或运行时异常,会威胁到整个基于云的系统的稳定性。为了能够及时保证云系统在受到 DDoS 攻击时的可靠性,有必要对其系统组件的运行时可靠性进行分析。本文正式提出了一种基于概念漂移的系统组件可靠性评估新模型。基于该模型,我们利用奇异值分解(SVD)技术提出了一种名为运行时可靠性异常检测(RAD)的新方法。RAD 通过检测可靠性时间序列数据中分数分布变化(FDC)的峰值,分析系统组件在运行期间的可靠性。具体来说,它基于使用 SVD 降维的特征向量,计算历史可靠性数据流与最新可靠性数据流之间的詹森-香农发散。在两个公共云 API 性能数据集上进行的大量实验结果证明了 RAD 的有效性和效率。
{"title":"Runtime reliability fractional distribution change analytics against cloud-based systems DDoS attacks","authors":"Lei Wang, Shuhan Chen, Xikai Zhang, Jiyuan Liu","doi":"10.1016/j.jss.2024.112265","DOIUrl":"10.1016/j.jss.2024.112265","url":null,"abstract":"<div><div>With the help of the Software as a Service (SaaS) delivery model, the rapid advancement of cloud computing has become the most prevalent distributed computing paradigm. A large number of application vendors and developers choose to integrate cloud-hosted Application Program Interfaces (APIs) into their systems as <em>system components</em> to construct new and value-added cloud-based systems. When executed in an open cloud environment, each system component is constantly at risk of Distributed Denial of Service (DDoS) attacks. Such cloud-based systems are challenged by reliability fluctuations when a system component is attacked. A change in the reliability of the remote system components, e.g., performance decline or runtime anomalies, can threaten the stability of the entire cloud-based system. To enable timely reliability assurance against cloud-based systems DDoS attacks, it is necessary to analyze runtime reliability of its system components. In this paper, we formally present a new model for evaluating the reliability of the system components based on concept drift. Based on the model, we propose a novel method named runtime reliability anomaly detection (RAD), leveraging the Singular Value Decomposition (SVD) technique. RAD analyzes the reliability of a system component during its operation by detecting peaks in Fractional Distribution Change (FDC) within its reliability time series data. Specifically, it calculates the Jensen Shannon divergence between historical and up-to-date reliability data streams, based on feature vectors that are dimensionality-reduced using SVD. The results of extensive experiments conducted on two public cloud APIs performance datasets demonstrate the effectiveness and efficiency of RAD.</div></div>","PeriodicalId":51099,"journal":{"name":"Journal of Systems and Software","volume":"220 ","pages":"Article 112265"},"PeriodicalIF":3.7,"publicationDate":"2024-10-28","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"142560839","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}