People fix computer programs. 
People fix computer programs. 

Software maintenance is the work done on a program after it is released. 

This work follows a set of steps. First, a user sends a change request. This is a note asking for a fix or a new feature. A programmer then studies the existing code to learn how it works. Next, they change the code. Finally, they must do a lot of testing. Testing makes sure the new changes work and do not break old parts. This testing can cost a lot of money.
There are different ways to do this work. Some teams use corrective maintenance to fix bugs. Other teams use adaptive maintenance to help the software work in new settings. Some even use perfective maintenance to make the software better or faster. This work helps keep a program useful for a long time. It can last many years before the software is finally retired.
Software maintenance is the work done on a computer program after it is released to users. 
This work follows a specific way it works called a change cycle. First, a customer sends a change request to ask for a fix or a new feature. A team then evaluates the request to see if it is possible or too expensive. If they decide to do it, a programmer must study the existing code. They need to understand how the code works before they can change it. After the code is modified, the team must do a lot of testing. This testing makes sure the new parts work and that the old parts did not break. 
People have been thinking about this work for a long time. In the early 1970s, companies began creating special teams just for maintenance. This helped the main developers focus on building new things. In 1972, a man named R. G. Canning wrote about the "Maintenance Iceberg." He argued that maintenance is like an extension of development, but with the existing system added as a new part. Even though technology has changed, our understanding of this work has stayed mostly the same since the 1980s.
There are four main types of maintenance used to help software. Corrective maintenance is used to fix bugs reported by users. Preventive maintenance is forward-looking to stop problems before they happen. Adaptive maintenance helps software work in a changing environment. Finally, perfective maintenance makes the software better or faster. 
Maintaining software is a lot like taking care of a car. When you first buy a car, it works well. But over time, you might need to fix a broken light or change the oil. If you want a new radio, that is like adding a new feature. If the roads change, you might need new tires to keep driving safely. Software needs this same kind of care to stay useful. Without it, the software becomes a "legacy system" that is hard to use. Eventually, the software is withdrawn from the market entirely.
Software maintenance is the process of modifying computer programs after they have been delivered to users. While creating new software is a high-profile task, maintenance is the longest phase of the software life cycle. It can account for 80 to 90 percent of the total cost of a software product's life. The primary goal of maintenance is to preserve the usefulness of the software. This is often necessary because requirements change or errors are discovered. 
Each maintenance task follows a specific process known as a change cycle. The cycle begins when a customer submits a change request. This request might ask for a bug fix or a new feature. A team then evaluates the request to see if it is feasible or too expensive. If they proceed, a programmer must study the existing code to understand its logic. This step is vital because changing code can cause unexpected ripple effects. After the modification, the team performs extensive testing. This includes regression testing to ensure that old functions still work correctly. Testing often consumes the largest portion of maintenance costs.
There are four distinct categories of maintenance defined by the ISO/IEC 14764 specification. Corrective maintenance involves fixing bugs or failures reported by users. Preventive maintenance is forward-looking and aims to stop problems before they occur. Adaptive maintenance modifies the software so it can function in a changing environment. Finally, perfective maintenance improves qualities like user experience or processing efficiency. Some estimates suggest that enhancement tasks, which include adaptive and perfective maintenance, make up 80 percent of all maintenance work.
Software maintenance has a long history in the computing industry. In the early 1970s, companies began forming dedicated engineering teams for support tasks. This allowed original development teams to focus on building new products. In 1972, R. G. Canning published a concept called the "Maintenance Iceberg." He argued that maintenance is an extension of development that includes the existing system as an input. Although technology has advanced, our fundamental understanding of these processes has changed little since the 1980s.
As software ages, it undergoes a predictable transition toward the end of its life. Initially, a product may receive many enhancements and new features based on user feedback. Over time, a company might decide that further improvements are no longer profitable. At this stage, support is restricted to essential bug fixes and emergency updates. The software may become difficult and expensive to change due to decaying architecture. This phenomenon is sometimes called software aging. Eventually, the product is withdrawn from the market and becomes known as a legacy system. 
One major challenge in this field is the concept of maintainability. Maintainability is the ease with which software can be modified without breaking. Many organizations neglect this to meet tight deadlines, creating what is called technical debt. Technical debt occurs when programmers choose quick, messy solutions instead of building long-term stability. This can lead to code entropy, where the integrity of the system degrades over time. To combat this, engineers use a maintainability index to track the health of the code. This helps them decide if it is cheaper to rewrite the code than to keep changing it.
The workforce for software maintenance faces unique professional challenges. The job is often viewed as less rewarding than new development and typically pays less. Because maintenance teams are often different from the original developers, they may lack the incentive to write clean, easy-to-read code. Developers may also deliver incomplete software to avoid going over budget or time limits. Consequently, maintenance engineers often need extra resources to fix defects left over from the initial release. In 2008, approximately 900,000 of the 1.3 million software professionals in the United States were working in maintenance.
🖼️ Images & Media (2)
More to explore
✨ What else?
Related topics you might enjoy
🔬 Go deeper
More advanced topics to explore
🪜 Step back
Simpler topics to build understanding
What is Nepedia?
A free, ad-free encyclopedia for children. Every article is written at five reading levels, so the same page works for a five-year-old and a fifteen-year-old — use the level switcher above to see this one change. No account needed to read.