Software Maintenance

What is software maintenance?

Software maintenance is the improvement of existing software. To improve performance, security or other attributes and correct faults. The primary purpose is to preserve the value of the software investment.

Software maintenance activities provide cost-effective support for software.

Changes to software after it’s in operation are considered to be maintenance work.

Software and its operating environments change or evolve and new user requirements surface. The software maintenance phase begins following a warranty period or post delivery support period.

Software maintenance is an integral part of a software life cycle. Companies strive to get the most out of their software development investment. By keeping software operating as long as possible.

Five key attributes of software maintenance activities:

  • Maintaining control over the software’s day-to-day functions
  • Maintaining control over software modifications
  • Perfecting existing functions
  • Identifying security threats and fixing vulnerable software
  • Preventing software performance from degrading to unacceptable levels

A common perception of software maintenance is that it only involves fixing defects. However, one study indicated that over 80% of maintenance effort is for non-corrective actions.

Importance of software maintenance

The objective of software maintenance is to modify existing software while preserving its integrity.

The value of software maintenance to a business includes:

  • Expanding your customer base
  • Meeting additional requirements
  • Becoming easier to use
  • Being more efficient
  • Employing newer technology
  • Being more secure

Software maintenance is needed to ensure that the software continues to satisfy user requirements. Maintenance is applicable to any software development method or software life cycle model.

Software products change due to corrective and non-corrective software actions.

Software requires maintenance in order to:

  • Correct faults
  • Improve the design
  • Implement enhancements
  • Interface with other software
  • Adapt programs to use different hardware, software and system features
  • Migrate legacy software

Software maintenance can include:

  • Application / System Maintenance
  • Modifications
  • Bug-fixing
  • Software upgrades & optimization
  • Software enhancements
  • New feature development
  • Re-engineering
  • Performance improvements
  • Improvements in reliability & robustness
  • GUI modification & enhancement
  • Porting & conversion to other platforms
  • Conversion of data from existing systems to another
  • Development of add-on modules
  • Interface development to in-house software or third-party software
  • Recovery, back-up & system management

Software Maintenance

Software maintenance categories in ISO/IEC 14764

  • Corrective maintenance: Reactive correction of discovered problems in software
  • Adaptive maintenance: Keep software usable in a changing environment
  • Perfective maintenance: Improve software performance or add new features
  • Preventive maintenance: Detect and fix latent faults before they become effective faults

Software maintenance planning

A key part of software development is maintenance. Software development requires an accurate maintenance plan from the start. It should specify how users will request changes or report problems. The budget should include resource and cost estimates. A maintenance plan should exist for developing every new system feature.

Who will be responsible for the maintenance of software?

It’s important to delegate software maintenance to a single group.

The original software developers may maintain the software or companies may use a dedicated software maintenance team. Having a dedicated maintenance team has many benefits, including:

  • Enabling specialization
  • Creating communication channels
  • Reducing dependency on individuals
  • Allowing for periodic audit checks

Software maintenance outsourcing

Outsourcing software maintenance has become a major industry. Companies now outsource all aspects of software development, including software maintenance.

Software re-engineering

Software re-engineering is the rebuilding of software into a new form. It’s undertaken to replace aging legacy software rather than improve maintainability.

Re-factoring is a re-engineering technique. Used to reorganize a program without changing its behavior. It seeks to improve a program structure and its maintainability. Minor changes use re-factoring techniques.

Software migration

During software’s life, it may have to be modified to run in different environments. Determine actions to accomplish the migration. Document the steps required to effect the migration. Including migration requirements, conversion of data, execution, verification, and support.

Migrating software can entail a number of other activities such as:

  • Notification of intent: a statement of why the old environment is no longer supported and description of the new environment and its date of availability
  • Parallel operations: making both the old and new environments to ensure a smooth transition
  • Notification of completion: when the migration is complete, a notification is sent to all concerned
  • Post-operation review: an assessment of the impact of changing to the new environment
  • Data archival: storing the old software data.

Software Maintenance FAQ

Based on over 38 years of experience maintaining software and questions we receive from our clients, here’s a list of Frequently Asked Questions (FAQ) about software maintenance.

Software maintenance refers to the process of updating, modifying, and improving existing software to ensure it continues to function effectively and efficiently.

Maintenance is crucial for ensuring that software is up-to-date, secure, and reliable. Regular maintenance can prevent system crashes, data loss, and other issues that can negatively impact business operations.

Neglecting software maintenance can result in security vulnerabilities, system crashes, loss of data, reduced performance, and other issues that can negatively impact business operations.

Effective software maintenance requires a proactive approach, regular updates, and ongoing monitoring. It's important to work with a qualified software development company that implements best practices, and stays up-to-date with the latest trends and technologies.

Software maintenance costs may vary significantly depending on an application's specific attributes. Factors that influence the total cost of software maintenance are: The type of software maintenance (adaptive, corrective, preventive). The chosen time coverage, and the scope of maintenance activities. The software type, its complexity and fault tolerance requirements.

Contact Us

Our software development company offers ongoing support and maintenance services to ensure that your software remains up-to-date and functional.

Contact us today to learn more about maintenance for your software.