Conclusion

publicité
INF3143
Modélisation et spécification
formelles des logiciels
Hiver 2017
Alexandre Terrasa
Département d’informatique, UQÀM
Conclusion
Retours sur le plan de
cours
2
Description du cours
Le cours vise à initier les étudiants aux méthodes formelles
de spécification et à leur rôle dans le cycle de
développement des logiciels.
● Entres autres, il vise à familiariser les étudiants avec le
mode descriptif de spécifications plutôt qu'avec le mode
opérationnel (algorithme) auquel ils sont habitués.
● Il vise aussi à familiariser les étudiants avec les notions
d'assertions, de contraintes et de contrats avec leur
utilisation pour le développement de logiciels.
3
Spécifications et méthodes
formelles
Rôle des spécifications et méthodes formelles
● raisonner à l’aide de la logique
mathématique
● utiliser une notation formelle
● pour valider un programme en fonction
d’une spécification
4
Descriptions de composants
logiciels
Introduction à certaines notions formelles pour
décrire des systèmes et composantes logiciels
●
●
●
●
diagrammes de classes
contraintes OCL
automates et systèmes de transitions
contrats.
5
Approche basée sur les
contraintes et contrats
Approfondissement d'une approche basée sur
les contraintes et contrats (OCL)
● logique: propositions et prédicats, quantificateurs,
modélisation conceptuelle et description de propriétés
● types abstraits: ensemble et multi-ensembles,
séquences
● spécifications comportementales, modélisation de
composants divers (fonctions, types muables, types
immuables), invariants, pré/post conditions.
6
Utilisation des assertions et contrats
durant le développement
Utilisation des assertions et contrats à l'étape
de construction de logiciels : test unitaires,
vérification dynamique de contrats
● utilisation des assertions en Java
● tests unitaires avec JUnit
● vérification de contrats avec Cofoja
7
Objectifs du cours
8
Objectifs du cours
Le cours vise à initier les étudiants aux
méthodes formelles de spécification et à leur
rôle dans le cycle de développement des
logiciels.
● vérifier le respect de la spécification
● prédicats et quantificateurs
● types abstraits fondamentaux (collections)
9
Objectifs du cours
Entres autres, il vise à familiariser les étudiants
avec le mode descriptif de spécifications plutôt
qu'avec le mode opérationnel (algorithme)
auquel ils sont habitués.
● spécifier le comportement et les
propriétés d’opérations et de types de
données
● invariants, pré-conditions, post-conditions
10
Objectifs du cours
Il vise aussi à familiariser les étudiants avec les
notions d'assertions, de contraintes et de
contrats avec leur utilisation pour le
développement de logiciels.
● assertions: en Java, OCL, Cofoja, Junit…
● contraintes: OCL (USE, Dresden)
● contrats: Java, Eiffel et C/C++
11
Auto-évaluation
À la fin du cours l’étudiant devrait être
capable de...
12
Je suis capable de...
Lire et naviguer dans des diagrammes de
classe UML
● comprendre la notation UML
○ classes, propriétés, relations et associations
● naviguer dans un diagramme de classes
○ suivre les associations entre les classes
○ navigabilité, cardinalité
13
Je suis capable de...
Expliquer les différents rôles que peuvent jouer
les assertions dans le développement de
logiciels
● comprendre la notion d’assertion
○ une expression qui doit être évaluée à vrai
● utiliser des assertions
○ pour vérifier et valider des logiciels
14
Je suis capable de...
Utiliser de façon pratique la logique et les
assertions pour spécifier le comportement et
les propriétés d'opérations et de types de
données
● utiliser des assertions
○ en Java, en OCL, dans les contrats, dans les
tests unitaires...
● spécifier des comportements
○ pré-conditions, post-conditions, invariants
15
Je suis capable de...
Écrire des contraintes et contrats en utilisant la
notation OCL
● utiliser la notation OCL
○ OCL standard, USE-OCL, Dresden-OCL
● écrire des contraintes en OCL
○ invariants
● écrire des contrats en OCL
○ pré-conditions et post-conditions
16
Je suis capable de...
Lire et comprendre des contrats écrits dans
d'autres langages (par ex., JASS, iContract,
Eiffel ou JML)
● Eiffel
● Java: IContract, Cofoja
● C/C++: préprocesseur, APP
17
Je suis capable de...
Expliquer comment des assertions peuvent être
utilisées pour obtenir des programmes plus
robustes et faciliter le débogage
● énoncer les règles à respecter
○ spécification du programme
○ pour les clients, pour les mainteneurs
● documenter ces règles
○ documentation toujours à jours
● les faire appliquer
○ quand les exceptions sont activées ⇒ debug
18
Conclusion
19
La semaine prochaine...
Révisions pour l’examen final
●
●
●
●
assertions
tests-unitaires
contrats
correction de l’exemple d’examen
Une requête particulière pour les révisions?
● envoyez moi un email avant lundi
prochain
20
Téléchargement