8

Software Maintenance Types: Corrective, Adaptive, Perfective, and Preventive

 3 years ago
source link: https://hackernoon.com/what-do-you-need-to-know-about-software-maintenance-types-as-an-engineer-421335fl
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Software Maintenance Types: Corrective, Adaptive, Perfective, and Preventive

@alex-omeyerAlex Omeyer

Co-founder & CEO at stepsize.com, SaaS to measure & manage technical debt

Software developers need to constantly nurture their product to enhance its functionality, reduce deterioration, satisfy users' needs, and ensure the success of their product. They can achieve these goals through software maintenance.

0 reactions
heart.png
light.png
money.png
thumbs-down.png

Software maintenance is a critical part of the software development lifecycle. Many companies are embracing DevOps principles and processes. These principles require shifting left, performing testing early in the development cycle to identify and respond to problems as soon as possible. But even when software is released, it's not a case of launch and forget.

0 reactions
heart.png
light.png
money.png
thumbs-down.png

You can classify software maintenance tasks under four types:

0 reactions
heart.png
light.png
money.png
thumbs-down.png
  1. Corrective Software Maintenance
  2. Adaptive Software Maintenance
  3. Perfective Software Maintenance
  4. Preventive Software Maintenance

Let's have a look at each one in detail:

0 reactions
heart.png
light.png
money.png
thumbs-down.png

Corrective Software Maintenance

Corrective software maintenance is unsurprisingly about correcting software defects, errors and faults. These errors are typically observed while the software is in use and may indicate deeper flaws or errors in software design, logic, or code. They may come to your attention via bug or error reports from end-user feedback. This kind of maintenance is responsive. It’s about correcting errors that prevent software from working as expected. 

0 reactions
heart.png
light.png
money.png
thumbs-down.png

Corrective maintenance should resolve the underlying problems impacting software, but there's also the temptation of a company opting for patching, which only solves the problem in this instance. Suppose corrective maintenance is a persistent, increasingly time-consuming task for developers. In that case, it could indicate wider problems with developer skills, code quality, testing practices, or the existence of a significant technical debt. You can automate corrective maintenance with automatic bug fixing.

0 reactions
heart.png
light.png
money.png
thumbs-down.png

Adaptive Software Maintenance

Adaptive software maintenance is about changing software in response to changes in its environment. It occurs in situations such as changes to the operating system (or its software), software dependencies, hardware, or cloud storage.

0 reactions
heart.png
light.png
money.png
thumbs-down.png

You may also require adaptive software maintenance due to new company policies, changes in vendors, app stores, or payment processes. There might be things outside the company's control, such as a change of regulations such as GDPR or Tax regarding payment processes. However, it's not about simply fixing a specific problem but being able to anticipate change and thus making your software flexible enough to adapt to a plethora of changes.

0 reactions
heart.png
light.png
money.png
thumbs-down.png

A typical example is the infamous Y2K bug of 1999, where companies believed their software would no longer function as the date shifted from 31/12/1999 to 1/1/2000. In response, developers worked to prepare their software in anticipation of Y2K problems. If they failed to do so, they would be dealing with a corrective maintenance problem on January 1. (There's now talk of Y3K in 2030, so stay tuned…)

0 reactions
heart.png
light.png
money.png
thumbs-down.png

Perfective Software Maintenance

Perfective software maintenance focuses on features that improve the user experience through functional enhancements. It's about improving the system performance in ways that aren't in response to a fault or problem but instead in response to customer feedback.

0 reactions
heart.png
light.png
money.png
thumbs-down.png

Examples are code functionality enhancements, usability changes, or speed optimization. All of these improve the value of software and enhance the user experience. 

0 reactions
heart.png
light.png
money.png
thumbs-down.png

Preventive Software Maintenance

Preventive Software Maintenance is about software changes and adaptations that reduce the risk of deterioration as software is operated for a long time by improving maintainability and stability through code optimization, restructuring, and documentation updates.

0 reactions
heart.png
light.png
money.png
thumbs-down.png

Examples include new features to improve software reliability and performance and refining software to reduce software complexity to make it easier to maintain and understand.

0 reactions
heart.png
light.png
money.png
thumbs-down.png

Software systems age. Preventive software is about future-proofing its longevity and efficacy by implementing good practices for long-term gain.

0 reactions
heart.png
light.png
money.png
thumbs-down.png

All types of software maintenance are critical 

It can be beneficial to measure how much time developers spend on maintenance as a means to measure the maturity and skill of the software development team as well as the product and codebase. 

0 reactions
heart.png
light.png
money.png
thumbs-down.png

It’s a fine balance between the different types. Even the best efforts to release bug-free code can require corrective maintenance but if this is a constant pain point that is impacting the quality of the software released, it suggests the need for improved bug testing practices. It also may signify processes that preference speed over efficacy - good code may take longer initially to produce but can result in less bug fixing and refactoring and remove the long-term pain of technical debt.

0 reactions
heart.png
light.png
money.png
thumbs-down.png

Good quality code makes long-term development and maintainability easier. An overall commitment to perfective tasks such as reducing technical debt and code refactoring helps to maintain a baseline that makes it easier to expand upon existing code and add new features faster. 

0 reactions
heart.png
light.png
money.png
thumbs-down.png

Today’s software companies need to be agile and visionary. Software maintenance can signify growth as a company adds product features or responds to a vastly expanding customer base. It should also be emblematic of a company with a good knowledge of the ecosystem around its products including the customer and wider business challenges faced as well as the pace of competitor evolution.

0 reactions
heart.png
light.png
money.png
thumbs-down.png

It’s not enough to create a great product from the first release, but also to be able to support and nurture it in the wild throughout its lifespan.

0 reactions
heart.png
light.png
money.png
thumbs-down.png
6
heart.pngheart.pngheart.pngheart.png
light.pnglight.pnglight.pnglight.png
boat.pngboat.pngboat.pngboat.png
money.pngmoney.pngmoney.pngmoney.png
Join Hacker Noon

Create your free account to unlock your custom reading experience.


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK