Maintenance 1 PreClass
Maintenance 1 PreClass
Development Upgrade
Develop requirements and Development
Development
baselines, build software
Production Production
Upgrade
Test and Deploy Software Production
Utilization Utilization
Software is deployed and used
Support Support
Keep the software running
Retirement Retirement
Remove the software from operation
Goal of Maintenance
Modify existing code without compromising its integrity
General Steps/Activities
Preparation • Includes staffing, training, acquiring tools and environments, and establishing
procedures
Operation • Activities to run the software and provide user assistance including monitoring
performance, logging defect reports, and managing release versions
Additive
Perfective
Emergency
Corrective
• Reactive modifications and repairs to correct discovered
problems (after delivery)
• Key tools:
• Ticket & Prioritization Systems (e.g. Jira, Github Issues)
• Test Environment that is as similar to production as possible
• May Include:
• Architectural review, e.g. identifying which components interact with the defective or
changed component
• Code Review: looking for defects or unexpected alterations
• Exploratory Testing and/or A/B Testing
• Examples Outcomes:
• Description of issue, solution, and/or other change
• Estimated cost and time to complete change and/or fix
• List of Trade-offs made, and the pros and cons of each
Refactoring The process of
changing the structure
of code without
changing its
functionality
Refactoring Types – Encapsulate and Generalize
• Encapsulate Field – if using a language that relies on getters and
setters, ensure the field has getters and setters
• Extract Class
• Create a new class (or subclass) using some of the code from an existing class
• Extract Method/Function
• Create a new method or function using part of an existing method or function
Refactoring Types – improving names and
location of code
• Rename method / field / class / etc.
• Rename a method, field, or other entity so that the name better reflects
the purpose