6.- Maintainability

Maintainability refers to the ease with which a product can be maintained in order to isolate and correct defects or their cause, repair or replace faulty or worn-out components without having to replace still working parts, prevent unexpected breakdowns, maximize a product’s useful life, maximize efficiency, reliability, and safety, meet new requirements, make future maintenance easier, or cope with a changed environment.

Depending on the used programming language, maintainability is also related to the adherence to the official language programming standards. Examples:

  • For C:
    • C11: The international standard which defines the C programming language is available from ISO.  The current revision is ISO/IEC 9899:2011.  You can obtain something very close to the standard for free because of the working drafts available, the latest is N1570.
    • C99: The former standard ISO/IEC 9899:1999 is unavailable from official sources, due to the ISO adoption of C11. The closest free working draft is N1256.
  • For C++:
    • Draft C++17: Check the C++ standard draft sources at Github.
    • C++14: The current ISO C++ standard is officially known as ISO International Standard ISO/IEC 14882:2014(E) – Programming Language C++. You can get it from ISO or ANSI. The latest free working document available is N4296.
    • C++11: The former ISO C++ standard was ISO/IEC 14882:2011. You can get it from ISO. The closest free working document available is N3337.

In other programming languages, this could refer to the minimum (oldest) / maximum (most recent) working version(s) of the corresponding compiler or interpreter. Examples:

Indicators of Maintainability

It follows a list of possible maintainability indicators for a software-defined GNSS receiver:

  • Time to Fix Defects.
  • Source code under a version control system.
  • Well–established programming language.
  • Automated build environments.
  • Availability of an issue tracking system.
  • Availability of “debugging modes” and tools.
  • Availability of static and dynamic code analysis tools.
  • Definition of a source tree structure.
  • Automated documentation system.
  • Availability and observance of a coding style guide.
  • Availability of required and optional software dependencies (type of license, pricing, maintenance / development status).

Updated:

Leave a Comment