Académique Documents
Professionnel Documents
Culture Documents
Modélisation et spécification
formelles des logiciels
Hiver 2018
Alexandre Terrasa
Département d’informatique, UQÀM
Présentation du cours
2
Description du cours
Initiation aux méthodes formelles de spécification
● mode descriptif vs. mode opérationnel
● assertions, contraintes et contrats
Et ainsi,
● de spécifier et modéliser des logiciels
● en utilisant des méthodes formelles
4
Déroulement du cours
Cours magistraux
● Mardi, de 09h30 à 12h30 (SH-3580)
● Mardi, de 18h00 à 21h00 (PK-2205)
7
Communiquer avec moi
Par email
● terrasa.alexandre@uqam.ca
En personne
● après le cours
● sur rendez-vous
8
Délais de réponse
9
Spécification de
logiciels
10
Questions?
● qu’est-ce que le cycle de vie d’un logiciel?
● qu’est-ce que la spécification d’un logiciel?
● quelle différence avec la conception?
● importance de la spécification?
11
Le cycle de vie des logiciels
Selon l’IEEE (1991)
“ La période de temps qui débute au moment de la
définition et du développement d’un produit logiciel et se
termine lorsque le produit logiciel n’est plus disponible
pour utilisation. ”
Illustration:
15
http://www.commentcamarche.net/contents/473-cycle-de-vie-d-un-logiciel
Modèle en V
Illustration:
16
http://www.commentcamarche.net/contents/473-cycle-de-vie-d-un-logiciel
Points communs entre les
modèles
Beaucoup de modèles
● cascade, V, spirale, semi-itératif, itératif...
Mais beaucoup de points communs
● analyse et spécification
● conception générale et détaillée
● implémentation
● tests et validation
17
Analyse et spécification
Analyse du problème
● comprendre le problème à résoudre
● les besoins et exigences des usagers
● les contraintes à respecter
Description du produit
● décrire le système qui satisfera aux
besoins et aux exigences
● respectera les contraintes 18
Document de Spécification
du Logiciel (DSL)
Document contractuel avec le client décrivant
ses besoins et exigences
● résultat de l’analyse des besoins du client
● décrit les fonctionnalités requises du
système à développer
● énoncé du problème auquel le concepteur
devra trouver une solution
19
Conception
Selon l’IEEE (1991)
“Processus qui consiste à définir l’architecture du
logiciel, les composants, les modules, les interfaces, les
stratégies de tests et les données qui feront en sorte
que le système logiciel va satisfaire aux spécifications.”
Spécification = QUOI ?
● que fera le système ?
Conception = COMMENT ?
● comment le système sera-t-il construit ?
21
En fonction du point de vue
Spécification = Utilisateurs
● concepts et interfaces pour utiliser le
système
Conception = Développeurs
● concepts et interfaces pour construire le
système
23
Importance de la
spécification
Contrat entre le client et le développeur
● attentes du client
● limites du projet
Le système doit satisfaire la spécification
● rien de moins, rien de plus
● obligation pour le développeur
24
Validation et vérification
Processus consistant à s’assurer qu’un
système satisfait une spécification.
Validation
Construit-on le bon produit ?
Are we building the right product?
Vérification
Construit-on le produit correctement ?
Are we building it right?
25
Validation et Vérification dans le cycle de vie
VALIDATION
VÉRIFICATION
VÉRIFICATION
26
Exercice
Spécification ou conception?
● Le calcul doit s’effectuer en moins d’une minute.
● Les listes de produits sont implémentées avec des listes
chaînées.
● La classe Homme dépend de la classe Personne.
● Si aucun paramètre n’est fourni, le système produit une
erreur et s’arrête.
● Les échanges doivent être sécurisés avec HTTPS.
● Les échanges entre les modules A et B sont en JSON.
27
Impacts de la spécification
Elle guide le projet
● fonctionnalités à développer
● contraintes à respecter
● processus de validation et vérification
Impacts d’une mauvaise spécification :
Selon certaines études, 45 à 55% des problèmes
rencontrés lors des tests, seraient en fait des erreurs
dans la compréhension du problème ou la formulation
28
de la solution.
Résumé
● qu’est-ce que le cycle de vie d’un logiciel?
○ période entre la définition et le retrait d’un produit
● qu’est-ce que la spécification d’un logiciel?
○ élaboration des besoins et exigences du client
● quelle différence avec la conception?
○ spécification = QUOI, conception = COMMENT
● importance de la spécification?
○ contrat entre le client et le développeur
29
Ressources
● Pressman R - Software Engineering: A
Practitioner's Approach - Pressman &
Associates (part 1)
● www.commentcamarche.net/contents/473-cyc
le-de-vie-d-un-logiciel
30
Introduction aux
méthodes formelles
31
Questions?
● qu’est-ce qu’une méthode formelle?
● qu’est-ce que la spécification formelle?
● quel est l’intérêt des méthodes formelles?
● qui utilise les méthodes formelles?
32
Que signifie
“méthodes formelles” ?
Selon Wing (1990), les méthodes formelles
● sont des techniques basées sur les
mathématiques pour décrire les
propriétés d’un système.
● fournissent un cadre systématique
○ pour développer le système
○ pour valider et vérifier le système
33
Spécification formelle
Holloway (1996),
“Les méthodes formelles peuvent êtres utilisées pour
spécifier et modéliser le comportement d’un système et
pour vérifier de façon mathématique que la conception
et la mise en oeuvre du système satisfont bien les
fonctionnalités ainsi que diverses propriétés de sûreté.”
34
Place des mathématiques
Les mathématiques requises pour l’écriture des
spécifications sont faciles.
Hal (1990),
“Un haut niveau de sophistication mathématique est
requis [seulement] si on désire effectuer un
développement formel complet qui inclut des preuves.”
35
Qu’est-ce qu’un langage
formel de spécification ?
C’est un langage
● à la syntaxe et à la sémantique bien
définies
○ pas de flou possible
36
Syntaxe d’un langage
La syntaxe décrit les mots, les phrases et les
énoncés acceptables et biens formés.
37
Sémantique d’un langage
La sémantique définit le sens et la signification
des énoncés du langage.
38
Différence avec un langage
de programmation
C, Java, Python possèdent eux aussi une
syntaxe et une sémantique bien définies
Mais sont trop peu abstraits
● comportement décrit de manière
opérationnelle
● algorithme décrivant explicitement chaque
étape
39
Variété des méthodes
formelles
Beaucoup de notations et méthodes différentes
● CSP (Hoare, 1987)
● LOTOS (Bolognesi Brinksma, 1987)
● Z (Spivey, 1988)
● CCS (Milner, 1989)
● Spec (Berzins Luqi 1990)
● VDM (Jones, 1992)
● ONE (Meer Roth Vuong 1992)
● Larch (Guttag Horning 1993)
● … on ne les verra pas toutes :)
40
Bénéfices des méthodes
formelles ?
● analyse et spécification
● conception architecturale
● vérification
43
Conclusion
44
Réponses
● qu’est-ce qu’une méthode formelle?
○ méthode basée sur les mathématiques
● qu’est-ce que la spécification formelle?
○ spécification utilisant une méthode formelle
● quel est l’intérêt des méthodes formelles?
○ clarté, concision, jeux d’essai et automatisation
● qui utilise les méthodes formelles?
○ l’industrie de pointe, projets sensibles
45
Ressources
● Tremblay, G - Modélisation et spécification
formelle de logiciels - Loze-Dion Editeurs
Inc., 2004 (chap 1)
46