Software re-engineering involves reorganizing and modifying existing software systems to improve maintainability. It includes activities like reverse engineering, program restructuring, modularization, and data re-engineering. Reverse engineering analyzes software to understand its design and specification. Program restructuring improves structure by removing complex logic and simplifying conditions. Modularization groups related program parts together. Data re-engineering analyzes and reorganizes data structures and values to create a more managed data environment. The objective is to make systems easier to understand and maintain through these re-engineering processes.