Date Added: Jul 2009
Maintenance is one of the key phases of software development life cycle, for long-term effective use of any software. It can become very lengthy and costly for large software systems, especially when subsystem boundaries are not clearly defined. System evolution, lack of up-to-date documentation and high turnover rate of software professionals (leading to non availability of original designers of the software systems) can complicate the system structure many folds by making the subsystem boundaries ambiguous. Automated software module clustering helps software professionals to recover high-level structure of the system by decomposing the system into smaller manageable subsystems, containing interdependent modules.