Software Engineering

The Software Engineering (SE) unit aims at supporting the improvement of the quality of the software, by providing developers with innovative techniques, tools and methodologies that increase their effectiveness and efficiency in two key areas of software development:

Requirements engineering
The unit provides methods and techniques for the specification and management of the requirements of complex software systems, following a goal-oriented requirements analysis approach; modelling and measuring the risk of open source adoption; gathering user feedback to support requirements elicitation and evolution.

Code analysis and testing
The unit provides advanced testing techniques and tools based on search-based algorithms for automated test case generation; model inference and model driven test case derivation; test oracle assessment and improvement. The unit has also a solid experience in the migration of legacy systems and has developed tools for automated software protection.


SUPERSEDE (SUpporting evolution and adaptation of PERsonalized Software by Exploiting contextual Data and End-user feedback) is a European H2020 project (n. 644018), funded under the theme ICT-09-2014 (Tools and Methods for Software Development). The SUPERSEDE project proposes a feedback-driven approach for software life cycle management, with the ultimate purpose of improving users’ quality of experience.

GAUSS (Governing Adaptive and Unplanned Systems of Systems) is a PRIN project funded by MIUR. The GAUSS project will deliver the methodological enablers required to identify, integrate, and manage “emergent” Systems of Systems (eSoS). These require dynamic and opportunistic engineering due to their intrinsically variable nature tied to their scale and heterogeneity. GAUSS will release a set of integrated technologies to address these engineering problems of eSoS at runtime, when specific execution contexts may invalidate design-time solutions.

Head of Unit