Maintainable software

Maintainable software are more than just software.

Software that are maintainable are easy to understand, easy to modify and easy to create a new release for, even for software developers that have not been working with the software before.

Basic environment

To get in control of your software maintenance you'll need a software environment you can rely on. The more customers you have for your software the more sophisticated tools you'll need. The following list is a minimum to be able to provide maintainable software.

- An issue tracking system is required to keep track of issues and requests from the customers.
- A version control system is required to track software changes.
- A regression test environment is required to maintain software quality.
- A release build environment is required to create releases to rely on and shall be maintained separated from development environments.

Software rules

When the following rules are implemented correctly you'll have maintainable software.

Keep it simple

Keep requirements simple to keep them understandable. Keep algorithms as simple as possible for your needs to keep complexity low. Keep every single line of code simple to improve readability.

Keep it consistent

Keep your software consistent by solving one type of problem in the same way everywhere. Apply generic rules like naming conventions etc.

Abstraction levels

Keep the same abstraction level for an entire API, for all classes in a module, for all methods in a class and throughout each method.

Clear responsibilities

Every item shall have exactly one responsibility. Each module, each class, each method and each variable shall only have one responsibility.

Clear interfaces

By keeping the interfaces simple and clear, the entire software base will be more maintainable. This applies to modules, classes and methods. Clear interfaces allows no side effects.