Practical Software Maintenance: Best Practices for Managing Your Software Investment