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.

Automated Software Engineering for Requirements or 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.

Automated Software Engineering for 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.