Definition
Zustand, in dem eine Spezifikation (formal oder informell) essentielle Aspekte des beabsichtigten Verhaltens unbeschränkt lässt, sodass mehrere ungewollte Interpretationen oder Implementierungen möglich sind.
Prinzip
Prinzip
Spezifikationen müssen Verhalten hinreichend einschränken, um unerwünschte Freiheitsgrade auszuschließen; Unterspezifikation entsteht, wenn notwendige Invarianten, Vor-/Nachbedingungen oder Umweltannahmen weggelassen oder implizit gelassen werden.
Demonstration
Demonstration
Eine Protokolldefinition, die Nachrichtenformate festlegt, aber Endianness oder Fehlerbehandlungssemantik nicht spezifiziert, erlaubt es interoperierenden Implementierungen, divergente Entscheidungen zu treffen und dadurch inkompatible Verhaltensweisen zu erzeugen, obwohl sie die wörtliche Spezifikation einhalten.
Fehlanwendung
Fehlanwendung
Jede flexible oder erweiterbare Schnittstelle als Unterspezifikation zu bezeichnen, ignoriert bewusstes Design zugunsten von Variabilität; umgekehrt bedeutet das Nennen einer absichtlichen Designentscheidung 'Unterspezifikation', dass tolerierte Offenheit fälschlich als Fehler interpretiert wird.
Konsequenz
Konsequenz
Die Identifikation von Unterspezifikation führt dazu, Einschränkungen, normative Entscheidungen, Test-Suites oder Entscheidungsverfahren hinzuzufügen; wird sie nicht adressiert, ergeben sich Interoperabilitätsprobleme, latente Fehler und divergente Implementierungen, die Benutzererwartungen verletzen.
Umkehrung
Umkehrung
Überspezifikation: ein komplementärer Fehlerfall, bei dem eine Spezifikation unnötige Beschränkungen auferlegt, die Freiheit der Implementierenden reduziert und legitime Optimierungen oder Variationen verhindern können.
Abgrenzung
Abgrenzung
Gilt für die Teile einer Spezifikation, in denen beabsichtigtes Verhalten zur Korrektheit determiniert sein muss; verurteilt nicht jede Auslassung (einige Auslassungen sind intentional, um Erweiterungen zu ermöglichen), markiert jedoch Auslassungen, die beabsichtigte Garantien untergraben.
Semantische Spannung
Semantische Spannung
Spannung zu Designflexibilität und Abstraktion: Unterspezifikation kritisiert fehlende Beschränkungen, während Flexibilität das Offenlassen von Entscheidungen verteidigt; die Lösung dieser Spannung erfordert eine explizite Politik darüber, welche Entscheidungen kanonisch sein müssen und welche variieren dürfen.
Synthese
Synthese
Unterspezifikation ist das Fehlen notwendiger Beschränkungen in einer Spezifikation, das unerwünschte Variabilität erlaubt; Abhilfe schafft das Klarifizieren von Invarianten, Annahmen und normativen Verhaltensweisen durch zusätzliche Axiome, Tests oder normative Dokumentation.