Définition
Condition dans laquelle une spécification (formelle ou informelle) omet des contraintes sur des aspects essentiels du comportement attendu, laissant la place à de multiples interprétations ou implémentations non souhaitées.
Principe
Principe
Les spécifications doivent contraindre suffisamment le comportement pour exclure des degrés de liberté indésirables ; la sous-spécification survient lorsque des invariants nécessaires, des pré/post-conditions ou des hypothèses environnementales sont omis ou laissés implicites.
Démonstration
Démonstration
Une définition de protocole qui précise les formats de messages mais ne spécifie ni l'endianness ni la sémantique de gestion d'erreur permet aux implémentations interopérantes de faire des choix divergents, produisant des comportements incompatibles malgré le respect littéral de la spécification.
Mauvaise application
Mauvaise application
Considérer toute interface flexible ou extensible comme sous-spécifiée ignore une conception volontaire pour la variabilité ; à l'inverse, qualifier un choix de conception délibéré de 'sous-spécification' confond ouverture tolérable et erreur.
Conséquence
Conséquence
Identifier la sous-spécification mène à ajouter des contraintes, des choix normatifs, des suites de tests ou des procédures décisionnelles ; ne pas y remédier engendre des problèmes d'interopérabilité, des bogues latents et des implémentations divergentes qui violent les attentes des utilisateurs.
Inversion
Inversion
Sur-Spécification : mode d'échec complémentaire où une spécification impose des contraintes inutiles, réduisant la liberté de l'implémenteur et empêchant éventuellement des optimisations ou variations légitimes.
Limite
Limite
S'applique aux parties d'une spécification où le comportement prévu doit être déterminé pour la correction ; ne condamne pas toute omission (certaines omissions sont volontaires pour permettre l'extension), mais signale les omissions qui compromettent les garanties visées.
Tension sémantique
Tension sémantique
Conflit avec les notions de flexibilité de conception et d'abstraction : la sous-spécification critique l'absence de contraintes, tandis que la flexibilité défend le maintien de choix ouverts ; résoudre la tension exige une politique explicite sur les choix qui doivent être canoniques et ceux qui peuvent varier.
Synthèse
Synthèse
La Sous-Spécification est l'absence de contraintes nécessaires dans une spécification qui permet une variabilité non désirée ; y remédier nécessite de clarifier invariants, hypothèses et comportements normatifs par des axiomes supplémentaires, des tests ou une documentation prescriptive.