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.