This document summarizes key aspects of software re-engineering discussed in Chapter 28. Software re-engineering involves reorganizing and modifying existing software systems to improve maintainability. It describes activities like reverse engineering existing code to understand it, improving program structure by removing "spaghetti code", modularizing code into logical units, and re-engineering data structures. The goal is to evolve legacy systems in a lower risk and lower cost way than full redevelopment while preserving existing functionality.