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.

When you are ready, contact us to learn more about software maintenance …