Bacchiani, Lorenzo
(2025)
Behaviour matters: towards reliable and adaptable systems, [Dissertation thesis], Alma Mater Studiorum Università di Bologna.
Dottorato di ricerca in
Computer science and engineering, 37 Ciclo. DOI 10.48676/unibo/amsdottorato/12030.
Documenti full-text disponibili:
Abstract
In today's technologically driven society, the critical importance of ensuring a predictable behaviour in component-based systems cannot be overlooked. Modern software engineering practices, e.g., application autoscaling and Continuous Integration/Continuous Deployment (CICD), promote effective adaptation to time-varying workloads, code quality and rapid deployment. Despite their effectiveness, these practices cannot guarantee the absence of unexpected events within complex systems. The consequences of misbehaviour, e.g., service unavailability, violation of the Quality of Service, highlight the pressing need for enhanced practices. In this Dissertation, we address these challenges through three primary objectives. First, we propose a new timed modelling/execution language to model the behaviour and simulate the execution of component-based systems. Such language enables the evaluation of system functioning early on in the software development lifecycle, giving DevOps teams the possibility of assessing the impact of their choices, e.g., deployment decisions and scaling policies, at the modelling stage. Then, we present orchestration-based architectural reconfiguration techniques targeted at ensuring the system reaches a given goal, e.g., service replication/migration. In particular, leveraging the knowledge of component properties, e.g., functional dependencies, required resources, is crucial: starting from declarative specifications of these properties, we can automatically synthesise correct-by construction orchestrations that guarantee to instil the desired behaviour in the system. Moreover, service replication techniques exploiting these orchestrations overcome the drawbacks, i.e., the "domino effect" caused by uncoordinated scaling, of existing service-level adaptation approaches, e.g., Kubernetes Horizontal Pod Autoscaler. Finally, we devise a theoretical machinery for behavioural-based analyses in object-oriented languages endowed with typestates, i.e., protocols attached to classes dictating order of method calls, and we implement it in a typestate-based checker for Java. Our type checker can be easily integrated in CICD pipelines, enhancing them with static analyses to proactively prevent component misbehaviours.
Abstract
In today's technologically driven society, the critical importance of ensuring a predictable behaviour in component-based systems cannot be overlooked. Modern software engineering practices, e.g., application autoscaling and Continuous Integration/Continuous Deployment (CICD), promote effective adaptation to time-varying workloads, code quality and rapid deployment. Despite their effectiveness, these practices cannot guarantee the absence of unexpected events within complex systems. The consequences of misbehaviour, e.g., service unavailability, violation of the Quality of Service, highlight the pressing need for enhanced practices. In this Dissertation, we address these challenges through three primary objectives. First, we propose a new timed modelling/execution language to model the behaviour and simulate the execution of component-based systems. Such language enables the evaluation of system functioning early on in the software development lifecycle, giving DevOps teams the possibility of assessing the impact of their choices, e.g., deployment decisions and scaling policies, at the modelling stage. Then, we present orchestration-based architectural reconfiguration techniques targeted at ensuring the system reaches a given goal, e.g., service replication/migration. In particular, leveraging the knowledge of component properties, e.g., functional dependencies, required resources, is crucial: starting from declarative specifications of these properties, we can automatically synthesise correct-by construction orchestrations that guarantee to instil the desired behaviour in the system. Moreover, service replication techniques exploiting these orchestrations overcome the drawbacks, i.e., the "domino effect" caused by uncoordinated scaling, of existing service-level adaptation approaches, e.g., Kubernetes Horizontal Pod Autoscaler. Finally, we devise a theoretical machinery for behavioural-based analyses in object-oriented languages endowed with typestates, i.e., protocols attached to classes dictating order of method calls, and we implement it in a typestate-based checker for Java. Our type checker can be easily integrated in CICD pipelines, enhancing them with static analyses to proactively prevent component misbehaviours.
Tipologia del documento
Tesi di dottorato
Autore
Bacchiani, Lorenzo
Supervisore
Dottorato di ricerca
Ciclo
37
Coordinatore
Settore disciplinare
Settore concorsuale
Parole chiave
Microservices, Autoscaling, Architecture-Level Reconfiguration, Deployment Orchestrations, Behavioural Types, Subtyping, Type-Checking, Object-Oriented Languages
DOI
10.48676/unibo/amsdottorato/12030
Data di discussione
9 Aprile 2025
URI
Altri metadati
Tipologia del documento
Tesi di dottorato
Autore
Bacchiani, Lorenzo
Supervisore
Dottorato di ricerca
Ciclo
37
Coordinatore
Settore disciplinare
Settore concorsuale
Parole chiave
Microservices, Autoscaling, Architecture-Level Reconfiguration, Deployment Orchestrations, Behavioural Types, Subtyping, Type-Checking, Object-Oriented Languages
DOI
10.48676/unibo/amsdottorato/12030
Data di discussione
9 Aprile 2025
URI
Statistica sui download
Gestione del documento: