Die Modifizierbarkeit von Software beschreibt, mit welchem Aufwand dieselbe an neue, zukünftige Anforderungen angepasst werden kann. Die Modifizierbarkeit bezieht sich dabei üblicherweise auf die Architektur der Software, deren Design oder bestimmte Implementierungen.
Grundsätzlich besteht die Lehrmeinung, dass Implementierungen leichter modifizierbar sind als Designs, und Designs leichter als Architekturen.
Für die Wichtigkeit des Kriteriums Modifizierbarkeit in der Softwaretechnik gelten weitgehend dieselben Regeln wie bei der Wartbarkeit. Die softwaretechnischen Mittel zu Erzeugung modifizierbarer Software sind jedoch insbesondere in Architektur und Design andere.
Modifizierbare Architekturen
Modifizierbare Architekturen sind umso wichtiger
- je vielfältiger die Umgebungen sind, in denen die Software arbeiten soll;
- je ungenauer die Anforderungen an die Software sind;
- je allgemeiner die durch die Software bearbeiteten Aufgaben sind;
- je besser die Software skalieren soll.
Wichtige Kriterien für die Modifizierbarkeit von Architekturen sind:
- die logische Trennung von Plattformen und Modulen in der Architektur,
- die Verwendung standardisierter Techniken in Schnittstellen,
- die Berücksichtigung paralleler Prozesse.
Modifizierbare Designs
Modifizierbare Designs sind umso wichtiger
- je weniger modifizierbar die Architektur ist,
- je mehr Erweiterungen die Software (später) erhalten soll,
- je mehr Implementierungen eines Designs entwickelt werden.
Wichtige Kriterien für die Modifizierbarkeit von Designs sind:
- die akribische Modularisierung von (Teil-)Schnittstellen,
- die Verwendung standardisierter Entwurfsmuster in der Definition von Schnittstellen,
- die Abstraktionsebene der Definition des Designs (je höher desto modifizierbarer).
Modifizierbare Implementierungen
Für die Modifizierbarkeit von Implementierungen gelten weitgehend dieselben Regeln wie für die Wartbarkeit, welche im Allgemeinen auch mit denselben Mitteln erreicht wird. Darüber hinaus gilt als Erfahrungswert, dass die Modifizierbarkeit einer Implementierung üblicherweise desto höher ist, je mehr Programmiererfahrung der Implementierende hat, was für die Wartbarkeit so nicht oder weniger gilt.