May 5, 2000
Learning the Concept of Relevance Among Files in a Software Maintenance Context
Software maintenance is the costly part of software life cycles. Estimates on the cost of software maintenance vary from 50% to the excess of 70% of the total cost of the system. The 20-80 rule suggests that 20% of the development work is performed during original application development, and the other 80% is performed during maintenance. Consequently it is expected that assisting software engineers in maintenance activities result in a reduction in the overall cost and effort spent during the lifetime of a software system.
In early 1980s, in an attempt to address some of the existing problems in software engineering, researches proposed the use of artificial intelligence in different phases of software development process. The application of artificial intelligence technology to software engineering is known as Knowledge Based Software Engineering (KBSE). While this definition is fairly broad, in practice it has meant the creation of systems which employ knowledge bases which explicitly encode the knowledge regarding the particular task of interest. On the other hand, machine learning techniques which have the potential of learning general concepts from previously seen examples have not been widely applied to software engineering domain.
The focus of our research is assisting software engineers with low level, daily maintenance activities. When a maintenance programmer is looking at a piece of code, such as a file, one of the important questions which he needs to answer is: