The only thing not changing is the change itself. My research is about changes to do with software systems, including changes at development time ("evolution"), at runtime ("adaptation"), among viewpoints ("meaningful"), to stakeholders ("requirements"), to attack/defense ("security"), to the disclosure ("privacy"), bidirectional synchronisations ("invariant traceability"), and safety regulations ("live blackboxes").
  • Learning to Classify Algorithms by All Means
  • fAST: Flattening Abstract Syntax Trees in Action
  • ConCodeSe: Locating bugs without Looking back

  • Dragonfly: a Tool Simulating Self-Adaptive Drone Behaviours
  • Handling Facebook Evidence using Verifiable Limited Disclosure

  • Building IoT Software Like Piecing a Puzzle

  • From Bird Watching to Watching Bird
    If we'd used the cloud, we might know where MH370 is now
  • Right hammer versus right nail?
    Requirements and Architectures for Adaptive Twin Peaks
  • When and to whom shall you disclose private information?
    Privacy arguments: analysing selective disclosure requirements for mobile applications.
  • How to monitor classified states of goals?
    Stateful requirements monitoring for self-repairing socio-technical systems.
  • How to protect your changes in generated code?
    Maintaining invariant traceability through bi-directional transformations.
  • Can enterprise benefit from adaptive UI?
    Using interpreted runtime models for devising adaptive user interfaces of enterprise applications.
  • What changes matter to you?
    Specifying and detecting meaningful changes in programs.
  • Is your PIN entry device secure?
    RISA: a risk-based argumentation method for practical security.
  • Are your sites down?
    Requirements-driven self-tuning for the survivability of web systems.
  • What has happened to the Eclipse architecture over time?
    Assessing architectural evolution.
  • Can we model requirements together?
    Using OpenRE: the Open Requirements Engineering lab.

  • Email: Office: +44 (0) 1908 6 55562