Introduction aux méthodes formelles
Transcription
Introduction aux méthodes formelles
INF3143 Modélisation et spécification formelles des logiciels Hiver 2017 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 Liens avec le cycle de vie des logiciels ● spécification ● tests et vérifications 3 Objectifs du cours À la fin du cours, vous serez capable de ● lire et naviguer dans des diagrammes de classes UML ● utiliser la logique et les assertions pour spécifier un comportement ● écrire des contraintes et des contrats en plusieurs notations Et ainsi, ● de spécifier et modéliser des logiciels ● en utilisant des méthodes formelles 4 Déroulement du cours Cours magistraux ● G20: Mardi, 09h30 à 12h30 au PK-2205 ● G21: Mardi, 18h00 à 21h00 au SH-3560 Les notes de cours, ressources et TPs sont diffusés sur la page du cours: info.uqam.ca/~terrasa/cours/INF3143/ 5 Évaluation TP 1 (15 %) par groupe de 2 personnes ● UML et OCL ● distribué le 24/01 à remettre le 14/02 Examen Intra (35 %) - le samedi 04 mars TP 2 (15 %) par groupe de 2 personnes ● Contrats et vérification ● distribué le 28/03, à remettre le 18/04 Examen Final (35 %) - le samedi 29 avril 6 Rappel sur le plagiat Le plagiat c’est mal! Pour plus de détails, consulter le règlement #18 sur les infractions de nature académique. Rappel: le plagiat c’est mal! 7 Communiquer avec moi Par email ● [email protected] 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. ” Le cycle de vie comporte différentes étapes ● en fonction du type de projet ● en fonction de la méthodologie adoptée 12 Modéliser le cycle de vie Modèle de cycle de vie : représentation idéale et simplifiée des principales activités durant le développement. Décrire ce qui est censé se passer durant le développement : ● Qu’est-ce qui sera fait ? ● Dans quel ordre ? ● Quand le processus termine-t-il ? 13 Intérêts d’un modèle de cycle de vie ? ● fournir un vocabulaire de base ○ faciliter la communication ○ pour tous les acteurs (utilisateurs, clients, gestionnaires, développeurs) ● rendre explicite les étapes du développement ○ rendre visible le processus ○ montrer les étapes et leurs relations ● permettre la gestion et le contrôle du processus 14 Modèle en cascade Illustration: http://www.commentcamarche.net/contents/473-cycle-de-vie-d-un-logiciel 15 Modèle en V Illustration: http://www.commentcamarche.net/contents/473-cycle-de-vie-d-un-logiciel 16 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.” Pour apporter une solution au problème ● Comment le système sera-t-il construit ? ● Quelle sera sa structure interne ? ● Comment fonctionnera-t-il ? 20 Distinction entre spécification et conception 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 = Vue extérieure ● comportement observable du système Conception = Vue intérieure ● rouages internes 22 En fonction de l’acteur 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 de la solution. 28 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 ● permettant une description abstraite du comportement d’un système ○ concision 36 Syntaxe d’un langage La syntaxe décrit les mots, les phrases et les énoncés acceptables et biens formés. Les vaches produisent du lait. .lait vache Produise du la 37 Sémantique d’un langage La sémantique définit le sens et la signification des énoncés du langage. Les vaches produisent du lait. Les vaches demeurent des sapins. 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 ? ● obtenir des spécifications claires, précises, non-ambiguës, plus explicites ● plus concises et compactes que la langue naturelle (mais plus difficile à comprendre) ● fournit une base précise pour le développement des tests et des jeux d’essais ● peut s’analyser automatiquement pour effectuer une vérification formelle 41 Quand utiliser les méthodes formelles ? À différentes étapes du cycle de vie ● analyse et spécification ● conception architecturale ● vérification ● implémentation: génération de code 42 Qui utilise les méthodes formelles ? Quelques exemples ● ● ● ● ● NASA: Contrôle de satellites, navettes RATP: Contrôle du métro de Paris SNCF: Limitations de vitesse des trains FAA: Prévention des collisions en vol Darlington, Ontario: Extinction de réacteurs nucléaires 43 Conclusion Méthodes de spécification formelles ● Pour spécifier clairement et précisément le comportement attendu d’un système ● Essentiellement pour des applications sensibles: nucléaire, avionique, médical, finances, électronique... 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