The fading boundary between development time and run time


Modern software applications are often embedded in dynamic contexts, where requirements, environment assumptions, and usage profiles continuously change. Changes are difficult to predict and anticipate, and are out of control of the application. In many cases, changes cannot be handled off-line, but require the software to self-react by adapting its behavior dynamically, in order to continue to ensure the required quality of service. The big challenge in front of us is how to achieve the necessary degrees of flexibility and dynamism required in this setting without compromising dependability.

To achieve dependability, a software engineering paradigm shift is needed. The traditional focus on quality, verification, models, and model transformations must extend from development time to run time. Not only software development environments (SDEs) are important for the software engineer to develop better software. Feature-full Software Run-time Environments (SREs) are also key. SREs must be populated by a wealth of functionalities that support on-line monitoring of the environment, inferring significant changes through machine-learning methods, keeping models alive and updating them accordingly, reasoning on models about requirements satisfaction after changes occur, and triggering model-driven self-adaptive reactions, if necessary. In essence, self-adaptation must be grounded on the firm foundations provided by formal methods and tools in a seamless SDE-SRE setting.

The talk discusses these concepts by focusing on non-functional requirements---reliability and performance---that can be expressed in quantitative probabilistic requirements. In particular, it shows how probabilistic model checking can help reasoning about requirements satisfaction and how it can be made run-time efficient.

The talk reports on some results of research developed within the SMScom project, funded by the European Commission, Programme IDEAS-ERC, Project 227977 (

Brief Bio

Carlo Ghezzi is a Professor and Chair of Software Engineering in the Department of Electronics and Information of Politecnico di Milano. He is an ACM Fellow, an IEEE Fellow, and a member of the Italian Academy of Sciences. He was awarded the ACM SIGSOFT Distinguished Service Award.

He is a regular member of the program committee of important conferences in the software engineering field, such as the ICSE and ESEC/FSE, for which he also served as Program and General Chair. He has been the Editor in Chief of the ACM Trans. on Software Engineering and Methodology. He is currently an Associate Editor of the Communications of the ACM, IEEE Trans. on Software Engineering, Science of Computer Programming, Service Oriented Computing and Applications, Software Process Improvement and Practice, Computing.

Ghezzi’s research has been focusing on software engineering and programming languages. Currently, he is especially interested in methods and tools to improve dependability of adaptable and evolvable distributed applications, such as service-oriented architectures and ubiquitous/pervasive computer applications. He co-authored over 180 papers and 8 books. He coordinated several national and international (EU funded) research projects. He has recently been awarded an Advanced Grant from the European Research Council.