Back to the 2019 paper

Module 5: Software Maintenance

201914m

Software maintenance costs are influenced by a number of technical and non-technical factors. Some of the factors are—module independence, programming style, documentation, staff stability, hardware stability and software age. Which of the above factors can be controlled by software engineer while developing new software? For each of these controllable factors, explain how a software engineer would attempt to minimize future maintenance costs.

Worked SolutionAI Assisted

Controlling Future Software Maintenance Costs

The question lists six factors: module independence, programming style, documentation, staff stability, hardware stability and software age.

A software engineer can directly control or strongly influence the following during development:

1. Module independence

Design modules with high cohesion and low coupling.

How to reduce future cost:

  • Give each module a clear responsibility.
  • Minimize unnecessary dependencies.
  • Use well-defined interfaces.
  • Avoid shared global data where possible.

This localizes changes and reduces regression risk.

2. Programming style

Use consistent, readable and maintainable coding standards.

How to reduce future cost:

  • Follow naming and formatting conventions.
  • Use meaningful identifiers.
  • Avoid unnecessary complexity.
  • Apply code reviews and static analysis.
  • Keep functions/classes reasonably focused.

Readable code reduces the time needed to understand and modify the system.

3. Documentation

Maintain accurate technical and user documentation.

How to reduce future cost:

  • Document architecture and interfaces.
  • Explain important design decisions.
  • Keep API and configuration documentation current.
  • Document installation, operation and troubleshooting.

Good documentation reduces knowledge-transfer and maintenance effort.

Factors not directly controlled by the software engineer

  • Staff stability: strongly influenced by organizational management and retention policies.
  • Hardware stability: depends on hardware, infrastructure and external operational factors.
  • Software age: increases naturally as the system remains in use.

An engineer can design for portability and maintainability to reduce the impact of these factors, but cannot directly control them.

Conclusion: During development, the strongest direct levers are module independence, programming style and documentation.

Similar questions