Software Maintenance is not Software Enhancement
Maintenance is about
- Repair / Replace
- Prevention of Edge Cases and Increase Safety and Realibility
- Speed / Memory Performance
- Increase Cohesion
- Decrease Coupling
- Data Integrity
New requirements should not be considered a part of maintenance. Maintenance is strictly connected to the utilization stage of the product or technical system.
Plugins are the only way to enhance and evolve software, like how wordpress/firefox do it. Objects “may” help in maitenance but definitely not in enhancement. Modules help in both enhancement and maintenance. Interface Decomposition and Design is key to enhance Software Repair and Replace.
For enhancement use dynamic loading of modules aka plugins or runtime delegation. A litmus test for a programmer understanding modularity is whether h/she can implement a plugin system.