Software Evolution and Reengineering Group

 
RESEARCH PROJECTS AT A GLANCE
System Re-engineering Using AI
   


The constant innovation of information technology and ever increasing of new market requirement stuff more and more existing software systems into the bunk of legacy systems. For many big companies, developing completely new applications with millions of lines from scratch only means losing of previous investment, unaffordable budget, stringent development deadlines and high risk of employing incompletely-tested new products. Tackling legacy systems and reengineering them into new systems with refurbished architecture, innovative supporting techniques and augmented functionalities is generally regarded as a semi-panacea to the problem commonly termed as `software crisis'.

Developed decades of years ago when modern software engineering concepts have not been introduced into IT industry, most legacy systems are known to be poor structured, badly documented. To make it worse, the mobilising of expertise and inconsistent modifications to documents over years have been continuously building up an understandability barrier to legacy systems. However, substantial understanding of a legacy system is prior to most software maintenance activities such as software evolution, software migration, component excavation, etc.

Existing methods for reverse engineering focus on either low level code analysis which deal with ordinary program elements or manually linking among multiple levels of knowledge sources. Few exciting result has been reported. We believe that a successful and efficient understanding of source code must be built upon high-level-semantics-dealing, a certainty kind of automation and extensive human expertise.

Artificial Intelligence (AI) is a subject which studies and simulates human intelligence. It is an overlapping domain among biology, cognitive science, mathematics and computer science. Its research topics range from individual behaviour to social group coordination and it attracts wide range of attentions in various disciplines, from theoretical studies to pragmatic applications. In this project, we are aiming at tackling the issues of source code understanding by modelling the psychological process human programmers employed and deploying suitable AI techniques to develop a tool for system reengineering.