Our overall aim is to develop a number of coherent and integrated innovative techniques for the development of reliable software systems. Modern software systems are complex, distributed, heterogeneous, dynamically evolving, often operate in contexts with unpredictable behaviour, and should be able to adapt to changes in the environment or the requirements. Tipically, they are not developed from scratch, but, rather, by composing and modifying existing systems. Hence, we focus on providing maximal flexibility and adaptability, still guaranteeing reliability.
Notably, we investigate new development methodologies (including analysis, design and testing techniques), flexible linguistic constructs for code evolution and reuse (including integration with code mobility and the agent paradigm), and extensions of traditional static typechecking by dynamic/incremental checks and more sophisticated types which express semantic properties.
Our current research interests include:
- Design, foundations and implementation of programming languages
- Object-oriented paradigm
- Advanced modular programming
- Type systems
- Service Oriented Architecture
- Visual notations
- Model Driven Engineering
- Empirical Software Engineering
- Software and Web Testing
- Agent Oriented Software Engineering