The modifiability of software describes the effort with which it can be adapted to new, future requirements. The modifiability usually relates to the architecture of the software, its design or certain implementations .
Basically, the doctrine is that implementations are easier to modify than designs, and designs are easier than architectures.
For the importance of the modifiability criterion in software technology , largely the same rules apply as for maintainability . However, the software technology means for generating modifiable software are different, especially in terms of architecture and design.
Modifiable architectures are all the more important
- the more diverse the environments in which the software is supposed to work;
- the more imprecise the software requirements are;
- the more general the tasks processed by the software are;
- the better the software should scale .
Important criteria for the modifiability of architectures are:
- the logical separation of platforms and modules in the architecture,
- the use of standardized techniques in interfaces,
- the consideration of parallel processes .
Modifiable designs are all the more important
- the less modifiable the architecture is,
- the more extensions the software is to receive (later),
- the more implementations of a design are developed.
Important criteria for the modifiability of designs are:
- the meticulous modularization of (partial) interfaces,
- the use of standardized design patterns in the definition of interfaces ,
- the abstraction level of the definition of the design (the higher the more modifiable).
To a large extent, the same rules apply to the modifiability of implementations as to maintainability, which is generally achieved with the same means. In addition, empirical value applies that the more programming experience the implementer has, the higher the modifiability of an implementation, which is not or less true for maintainability.