Software development efforts result in delivery of a software product that satisfies user requirements. Accordingly, the software product must change or evolve. Once in operation, anomalies are uncovered, operating environments change, and new user requirements surface The maintenance phase of the life cycle commences upon delivery but maintenance activities occur much earlier. Software maintenance sustains the software product throughout its life cycle. Modification requests are logged and tracked, the impact of proposed changes is determined, code is modified, testing is conducted, and a new version of the software product is released. Training is provided to users.