- Distributed Computing: architecture description languages and support environments; distributed algorithms; dynamic configuration and self-organising systems.
- Behaviour analysis: compositional techniques for modelling and analysis of concurrent and distributed systems: Labelled Transition Systems (LTS) and Compositional Reachability Analysis (CRA); probabilistic model: Analysis Tool for Concurrent and Distributed systems: LTSA - Labelled Transition System Analyser
- Software architectures: Architectural Description Languages (ADL): structural concepts; underlying theory; application to the specification, analysis and construction of concurrent and distributed software systems: Darwin Architectural Description Language.
- Software evolution and change: Change as fundamental in architecture definition: rigorous techniques for unplanned change, decentralised development and conflict detection using ADLs: Evolve software tool and demo video.
- Adaptive software systems: rigorous architectural approaches to self-organised adaptive software, including dynamic planning, component assembly and execution.
- Requirements analysis: multiple perspectives (ViewPoints): elicitation, inconsistency; requirements evolution, synthesis of behaviour models from scenarios and goals; requirements elaboration combining model checking and machine learning..