Maintenance may span decades, whereas initial development is typically less than 3 years. Software maintenance planning An integral part of software is maintenance, which requires an accurate maintenance plan to be constructed during the software development. It should specify how users will request modifications or report problems. The budget should include resource and cost estimates, and a new decision should be addressed for the development of every new system feature and its quality objectives. The software maintenance, which can last for 5+ years (or even decades) after the development process, calls for an effective plan which can address the scope of software maintenance, the tailoring of the post delivery/deployment process, the designation of who will provide maintenance, and an estimate of the life-cycle costs. Software maintenance processes This section describes the six software maintenance processes as: Implementation - software preparation and transition activities, such as the creation of the maintenance plan; the preparation for handling problems identified during development; and the follow-up on product configuration management. Problem and modification analysis - Requests and problems are confirmed (reproduced), analyzed and investigated. Solutions are proposed and documented. Authorization to apply modifications is obtained. Modification implementation - software code, data and/or configuration is updated, compiled, and re-deployed. Modification acceptance - the individual who submitted the request operates/tests the software to confirm that the issue has been resolved. Migration (platform migration, for example) is exceptional, and is not part of daily maintenance tasks. If the software must be ported to another platform without any change in functionality, this process will be used and a maintenance project team is likely to be assigned to this task. Retirement of obsolete/replaced software components. This, typically does not occur on a daily basis. There are a number of processes, activities, and practices that are unique to maintainers, for example: Transition: a controlled and coordinated sequence of activities during which a system is transferred progressively from the developer to the maintainer. Ideally, it should include a Knowledge Transfer (KT) to occur during a typical hand-over. Service Level Agreements (SLAs) and specialized (domain-specific) maintenance contracts negotiated by maintainers Modification Request and Problem Report Help Desk: a problem-handling process used by maintainers to prioritize, document, and route requests. Categories of software maintenance E.B. Swanson initially identified three categories of maintenance: corrective, adaptive, and perfective. The IEEE 1219 standard was superseded in June 2010 by P14764. These have since been updated and