We are investigating and developing automated techniques and tools to better support human activities in software development, from analysis and design, to implementation, testing, and maintenance. We have developed a number of tools for architecture analysis repair, design analysis and composition, security analysis, code restructuring, program comprehension, and consistency management of software artefacts.
- Requirements and Code. We have provided a diff and patch tool to define and detect meaningful changes in general programs; (tool); We have also designed a systematic and automated approach to monitoring and diagnosing of software requirements, and to detect nocuous ambiguity in natural language requirements.
- Traceability. We have also developed rule-based techniques to support automatic generation of different types of traceability relations in various software artefacts produced during the development of object-oriented, agent-oriented, and product family systems. Another work is concerned with dynamic configuration of traceability infrastructure, based on the use of genetic algorithm, in order to optimise the accuracy of generated trace links. In model-driven software development, we conceptualise and support invariant traceability by automated bidirectional transformations. In security access control, we support the adaptation through causal traceability.
- Security, Privacy and Forensics. We are developing automated techniques to support the engineering of secure, privacy-aware, and forensic-ready systems. Examples include the FICS tool for supporting collaborative security, Packrat for supporting data privacy and exchange, and Social-Lift for supporting forensic evidence collection.