Given the challenges of maintaining software, we can still make the best of the situation. Part of this can be set up during the initial software development. Designs with high cohesion and low couple make for easier maintenance later. But often this is out of the maintenance engineer's control.
A good problem resolution process can also go a long way to keeping maintenance tasks under control. This can be applied to any level of software maintenance maturity, because there is always room for process improvement.
The main way to ensure quality software maintenance is to drive it from a management level. This could be as simple as keeping an accurate work breakdown structure of major tasks. It will serve as a communication tool to internal staff as well as external customers.
Another beneficial management tactic is risk management. Being proactive instead of reactive to perceived risks is essential. And being proactive requires more than just lip service. It means truly analyzing, documenting, ranking, and mitigating risks before they become problems.
This is just an overview of ways to control the software maintenance beast. I plan to discuss each of these topics at length later.
Mysterious Double Instance Hampering Performance - I study the existing code base. Confer with a colleague. Then I determine the optimal plan to change the functionality to load only a slice of all the dat...