- Software Reliability and Analysis Research
- Advanced Software Engineering Methodologies
- Software Testing and Debugging Techniques
- Software Engineering Research
- Software System Performance and Reliability
- Formal Methods in Verification
- Service-Oriented Architecture and Web Services
- Cloud Computing and Resource Management
- Real-Time Systems Scheduling
- Machine Learning and Algorithms
- Safety Systems Engineering in Autonomy
- Distributed systems and fault tolerance
- Model-Driven Software Engineering Techniques
- Advanced Malware Detection Techniques
- Scientific Computing and Data Management
- Software Engineering Techniques and Practices
- Adversarial Robustness in Machine Learning
- Logic, programming, and type systems
- Distributed and Parallel Computing Systems
- Embedded Systems Design Techniques
- Reliability and Maintenance Optimization
- Forensic and Genetic Research
- Reinforcement Learning in Robotics
- Parallel Computing and Optimization Techniques
- Advanced Vision and Imaging
Imperial College London
2016-2024
Amazon (United States)
2022-2023
The London College
2017
University of Stuttgart
2013-2015
Schloss Dagstuhl – Leibniz Center for Informatics
2015
Stuttgart University of Applied Sciences
2014
Politecnico di Milano
2010-2013
Unpredictable changes continuously affect software systems and may have a severe impact on their quality of service, potentially jeopardizing the system's ability to meet desired requirements. Changes occur in critical components system, clients' operational profiles, requirements, or deployment environments.
Self-adaptation enables software to execute successfully in dynamic, unpredictable, and uncertain environments.
Modern software-intensive systems often interact with an environment whose behavior changes over time, unpredictably. The occurrence of may jeopardize their ability to meet the desired requirements. It is therefore desirable design software in a way that it can self-adapt limited, or even without, human intervention. Self-adaptation be achieved by bringing models and model checking run support perpetual automatic reasoning about changes. Once change detected, system itself predict if...
Software reliability analysis tackles the problem of predicting failure probability software. Most current approaches base on architectural abstractions useful at early stages design, but not directly applicable to source code. In this paper we propose a general methodology that exploit symbolic execution code for extracting and success paths be used probabilistic assessment against relevant usage scenarios. Under assumption finite countable input domains, provide an efficient implementation...
Empirical Standards are natural-language models of a scientific community's expectations for specific kind study (e.g. questionnaire survey). The ACM SIGSOFT Paper and Peer Review Quality Initiative generated empirical standards research methods commonly used in software engineering. These living documents, which should be continuously revised to reflect evolving consensus around best practices, will improve quality make peer review more effective, reliable, transparent fair.
This paper investigates a novel approach to derive self-adaptive software by automatically modifying the model of application using control-theoretical approach. Self adaptation is achieved at level assure that model-which lives alongside run-time- continues satisfy its reliability requirements, despite changes in environment might lead violation. We assume given terms Discrete Time Markov Chain (DTMC). DTMCs can express concerns modeling possible failures through transitions failure states....
While software is becoming more complex everyday, the requirements on its behavior are not getting any easier to satisfy. An application should offer a certain quality of service, adapt current environmental conditions and withstand runtime variations that were simply unpredictable during design phase. To tackle this complexity, control theory has been proposed as technique for managing software's dynamic behavior, obviating need human intervention. Control-theoretical solutions, however,...
In the past, spectrum-based fault localization (SBFL) techniques have been developed to pinpoint a location in program given set of failing and successful test executions. Most algorithms use similarity coefficients only evaluated on established but small benchmark programs from Software-artifact Infrastructure Repository (SIR). this paper, we evaluate feasibility applying 33 state-of-the-art SBFL large real-world project, namely ASPECTJ. From an initial 350 faulty version iBugs repository...
The pervasiveness and growing complexity of software systems are challenging engineering to design that can adapt their behavior withstand unpredictable, uncertain, continuously changing execution environments. Control theoretical adaptation mechanisms have received interest from the community in last few years for mathematical grounding, allowing formal guarantees on controlled systems. However, most these tailored specific applications hardly be generalized into broadly applicable...
Software reliability analysis tackles the problem of predicting failure probability software. Most current approaches base on architectural abstractions useful at early stages design, but not directly applicable to source code. In this paper we propose a general methodology that exploit symbolic execution code for extracting and success paths be used probabilistic assessment against relevant usage scenarios. Under assumption finite countable input domains, provide an efficient implementation...
The software engineering community has proposed numerous approaches for making self-adaptive. These take inspiration from machine learning and control theory, constructing that monitors modifies its own behavior to meet goals. Control in particular, received considerable attention as it represents a general methodology creating adaptive systems. Control-theoretical implementations, however, tend be ad hoc. While such solutions often work practice, is difficult understand reason about the...
DevOps is an emerging paradigm that reduces the barriers between developers and operations teams to offer continuous fast delivery enable quick responses changing requirements within software life cycle. A significant volume of activity has been carried out in recent years with aim coupling stages tools methods improve quality produced underpinning methodology. While research community a sustained effort by conducting numerous studies innovative development support analyses DevOps, there...
Probabilistic model checking traditionally verifies properties on the expected value of a measure interest. This restriction may fail to capture quality service significant proportion system's runs, especially when probability distribution interest is poorly represented by its due heavy-tail behaviors or multiple modalities. Recent works inspired distributional reinforcement learning use discrete histograms approximate integer reward distribution, but they struggle with continuous space and...
Probabilistic software analysis aims at quantifying how likely a target event is to occur during program execution. Current approaches rely on symbolic execution identify the conditions reach and try quantify fraction of input domain satisfying these conditions. Precise quantification usually limited linear constraints, while only approximate solutions can be provided in general through statistical approaches. However, may fail converge an acceptable accuracy within reasonable time.
Probabilistic software analysis seeks to quantify the likelihood of reaching a target event under uncertain environments. Recent approaches compute probabilities execution paths using symbolic execution, but do not support nondeterminism. Nondeterminism arises naturally when no suitable probabilistic model can capture program behavior, e.g., for multithreading or distributed systems.
Summary Pure spectrum‐based fault localization (SBFL) is a well‐studied statistical debugging technique that only takes set of test cases (some failing and some passing) their code coverage as input produces ranked list suspicious program elements to help the developer identify location bug causes failed case. Studies show pure SBFL techniques produce good lists for small programs. However, our previous study based on iBugs benchmark uses A spect J repository shows that, realistic programs,...
Modern software should satisfy multiple goals simultaneously: it provide predictable performance, be robust to failures, handle peak loads and deal seamlessly with unexpected conditions changes in the execution environment. For this happen, designs account for possibility of runtime formal guarantees software's behavior. Control theory is one possible design drivers adaptation, but adopting control theoretic principles often requires additional, specialized knowledge. To overcome limitation,...
Symbolic execution techniques have been proposed recently for the probabilistic analysis of programs. These seek to quantify likelihood reaching program events interest, e.g., assert violations. They many promising applications but scalability issues due high computational demand. To address this challenge, we propose a statistical symbolic technique that performs Monte Carlo sampling paths and uses obtained information Bayesian estimation hypothesis testing with respect probability target...
Adaptive software systems are designed to cope with unpredictable and evolving usage behaviors environmental conditions. For these reasoning mechanisms needed drive evolution, which usually based on models capturing relevant aspects of the running software. The continuous update in environments requires efficient learning procedures, having low overhead being robust changes. Most available approaches achieve one goals at price other. In this paper we propose a lightweight adaptive filter...
Adaptive software systems are designed to cope with unpredictable and evolving usage behaviors environmental conditions. For these reasoning mechanisms needed drive evolution, which usually based on models capturing relevant aspects of the running software. The continuous update in environments requires efficient learning procedures, having low overhead being robust changes. Most available approaches achieve one goals at price other. In this paper we propose a lightweight adaptive filter...