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.
|