System Re-Engineering

Module code: CO4206

Software ages over time. All software is susceptible to failing after continuous running, requiring the need for software re-engineering. Some software publishers prevent this problem by continuously rolling out updates – think of Microsoft Windows or macOS. However, not many software programs receive this type of ongoing support – causing software to deteriorate in performance or simply crash due to the accumulation of errors, fragmentation, depletion of operating system resources, memory leaks or data corruption. Rebooting is only a short-term fix.

In this module we will explore the causes and the challenges of renovating and maintaining software systems, in particular, software systems that are outdated but still in use – legacy systems. We will look at the methods available for dealing with legacy systems and make reasoned decisions on which reengineering methods to apply for certain types of legacy system renovation tasks.


  • 20 hours of lectures
  • 7 hours of seminars
  • 14 hours of supervised lab/practical class/workshop time
  • 109 hours of guided independent study


  • Coursework (100%)