380 likes | 477 Views
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;
E N D
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, y, z> 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.
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.
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: 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: