Specifications de Systemes Logiciels المواصفات الشكلية Software Specifications Chapitre 7
Proprietes des Specifications Proprietes du produit Precision Simplicite Abstraction Proprietes du processus Completude Minimalite.
Mathematiques Discretes Espace, S x, y, z: int; s dans S: x(s), y(s), z(s) R sur S: {(s,s’)| x(s’)=x(s)+y(s)} {(s,s’)| x’=x+y}
Exemple de specification Nous avons deux variables reelles x et y, nous voulons specifier un programme qui calcule la racine carree de x dans y. Ecrivez une relation R qui contient toutes les paires d’entrée sortie decrites dans cette specification.
Interpretations, 1 Nous supposons que x est initialement non negatif, et que y est une racine positive ou negative de x.
Interpretations, 1 Nous supposons que x est initialement non negatif, et que y est une racine positive ou negative de x.
Interpretations, 2 Nous supposons que x est initialement non negatif, et que y est une approximation de la racine positive ou negative de x a epsilon pres, ou epsilon = 10^-6.
Interpretations, 2 Nous supposons que x est initialement non negatif, et que y est une approximation de la racine positive ou negative de x a epsilon pres, ou epsilon = 10^-6.
Interpretations, 3 Nous supposons que x est initialement non negatif, et que y est une approximation de la racine positive de x a epsilon pres, ou epsilon = 10^-6.
Interpretations, 3 Nous supposons que x est initialement non negatif, et que y est une approximation de la racine positive de x a epsilon pres, ou epsilon = 10^-6.
Interpretations, 4 La valeur intiale de x n’est pas necessairement non negative, et nous demandons que y soit une approximation de la racine positive de la valeur absolue de x a epsilon pres, ou epsilon = 10^-6.
Interpretations, 4 La valeur intiale de x n’est pas necessairement non negative, et nous demandons que y soit une approximation de la racine positive de la valeur absolue de x a epsilon pres, ou epsilon = 10^-6.
Interpretations, 5 La valeur intiale de x n’est pas necessairement non negative, et nous demandons que si x est positive ou nulles alors y est une approximation de la racine positive de x a epsilon pres, ou epsilon = 10^-6. Si x est negative, alors y prend la valeur -1.
Interpretations, 5 La valeur intiale de x n’est pas necessairement non negative, et nous demandons que si x est positive ou nulles alors y est une approximation de la racine positive de x a epsilon pres, ou epsilon = 10^-6. Si x est negative, alors y prend la valeur -1.
Interpretations, 6 La valeur intiale de x n’est pas necessairement non negative, et nous demandons que si x est positive ou nulle alors y est une approximation de la racine positive de x a epsilon pres, ou epsilon = 10^-6.
Interpretations, 6 La valeur intiale de x n’est pas necessairement non negative, et nous demandons que si x est positive ou nulle alors y est une approximation de la racine positive de x a epsilon pres, ou epsilon = 10^-6.
Interpretations, 7 La valeur intiale de x n’est pas necessairement non negative, et nous demandons que si x est positive ou nulle alors nous preservons x et mettons dans y une approximation de la racine positive de x a epsilon pres, ou epsilon = 10^-6.
Interpretations, 7 La valeur intiale de x n’est pas necessairement non negative, et nous demandons que si x est positive ou nulle alors nous preservons x et mettons dans y une approximation de la racine positive de x a epsilon pres, ou epsilon = 10^-6.
Un programme de Recherche Espace: a: array [indextype] of itemtype; x: itemtype; k: indextype U {0}; // indextype 1..N; Specification: specifier un programme de recherche de x dans a.
Interpretation 1 Le tableau a contient x qqe part; nous devons placer dans k un index ou x se trouve.
Interpretation 1 Le tableau a contient x qqe part; nous devons placer dans k un index ou x se trouve.
Interpretation 2 Le tableau a contient x qqe part; nous devons placer dans k un index ou x se trouve tout en preservant a et x.
Interpretation 2 Le tableau a contient x qqe part; nous devons placer dans k un index ou x se trouve tout en preservant a et x.
Interpretation 3 Le tableau a contient x qqe part; nous devons placer dans k le plus grand index ou x se trouve.
Interpretation 3 Le tableau a contient x qqe part; nous devons placer dans k le plus grand index ou x se trouve.
Interpretation 4 Le tableau ne contient pas necessairement x; nous voulons placer dans la variable booleenne found la valeur vraie ssi x se trouve dans a.
Interpretation 5 Le tableau ne contient pas necessairement x; nous voulons placer dans la variable entiere k l’indice 0 si x n’est pas dans a, un indice ou se trouve x sinon.
Generation de specifications complexes
Deux Methodes Orthogonales Analyse de cas Partition du domaine Conjonction de proprietes Intersection de relations Etant donne trois variables entieres a, b, c, rearranger les de maniere triee.
Analyse de Cas
Conjonction de Proprietes
Exemple Etant donne un tableau reel a[N], un nbre reel x, et un indice k, mettre dans x l’element maximal de a et dans k l’indice maximal dans lequel se trouve x.
Validation de Specifications Completude Minimalite
Etant donnees les variables x et y de type int, faire croitre x en preservant la somme
Raffinement Une specification R raffine une specification R’ ssi tout programme correct par rapport a R est correct par rapport a R’. Raffiner: exprimer une exigence plus forte.
Raffinement
Raffinement: Definition R raffine R’ ssi:
Raffinement et Validation V: Propriete de completude. R complet par rapport a V: R raffine V. W: Propriete de Minimalite R minimal par rapport a W: