SENG 41522


Status : Core Pre-requisite : SENG 22582 Co-requisite : None


On completion of this course, the student should be able to:

  • Realize the challenges of software evolution
  • Reengineer legacy systems
  • Describe Lehman’s laws of software evolution
  • Predict software maintenance and changes
  • Compare system reengineering approaches.

History and challenges of software evolution, importance of evolution, understanding and analysing software evolution, identifying and analysing software clones, analysing software repositories to understand software evolution, predicting bugs from history, reengineering of legacy systems, object-oriented reengineering, migration of legacy information systems, architectural transformation: from legacy to three-tier and services, novel trends in software evolution Spiral model of evolution, program evolution dynamics, Lehman’s laws, applicability of Lehman’s laws, software maintenance, types of maintenance, distribution of maintenance efforts, maintenance cost factors, maintenance prediction, change prediction, complexity metrics, process metrics, the system evolution process, change implementation, system reengineering process, reengineering approaches, system quality and business values.

Lectures, self-study assignments and group work.

End of course unit examination and continuous assessment.

  1. Mens, T and Demeyer, S (2010). Software Evolution. Springer-Verlag
  2. Sommerville, I (2011). Software Engineering. Pearson
  3. Madhavji, N H, Fernandez-Ramil, J and Perry, D E (2006). Software Evolution and Feedback: Theory and Practice. John Wiley & Sons.