Introduction au génie logiciel.
Diagramme UML = Non formel (Semi-formel) Il y a des méthodes formelles, surtout pour les applications critiques. 2/3 semestre: Méthodes semi-formelles 1/3 semestre: Réseaux de pétri et vérification (jeux de tests) www.iro.umontreal.ca/~pift2251 4 TPs à remettre… UML (1.8 ou 1.9 pour le cours, 2.0 est sorti, mais pas pour les cours) Rational rolls (ou roads) (outils plus avancé) SmartDraw ou MagicDraw comme outils de dessin (suffisant pour le cours) Pas de livre comme tel, quelques références sur le plan de cours (par exemple pour des exercices). Association d’idées: – La modularité: Principe – Théorie musicale: Notation (UML, Un langage de programmation) – Le grand guide du jardinage: Méthodologie (au sens d’ensemble de techniques) – Le jazz: Paradigme (Un style, une façon de faire) – Le tri par bulle: Méthode/Technique – Le compilateur java: Outil Cours 2, mercredi 11 janvier 2006 Faute (…) Erreur (interne) Défaillance (externe) Le test rend visible les erreurs en engendrant des défaillances. Le débogage s’intéresse à éliminer les erreurs. Le coût des modifications ou corrections d’erreur augmente exponentiellement. On cherche à rapprocher la courbe cloche de détection des erreurs de celle similaire de la création de celles-ci afin de minimiser les coûts. La vérification s’assure que les spécifications sont correctes. [Correction au 2e sens] Diapos: p.9 VFFV, p.13 FVF, p.14 FF, p.16 VFF p.22 Correction, p.23 Fiabilité, p.24 Robustesse, p.25 Performance, p.26 Convivialité, p.27 Vérifiabilité, p.28 Facilité de maintenance (Maintenabilité), p.31 Réutilisabilité, p.32 Portabilité, p.33 Interpérabilité (MS Office), Cours 3, vendredi 13 janvier 2006 Logiciel système: OS Pilote Logiciel temps réel: 1ms à 1s de temps de réponse. (logiciel réactif) Pilote automatique Appareil médicaux (échographie) Logiciel affaire: Paie Gestion des comptes Scientifiques / Ingénérie: MathLab Mathematica RationalRoad Compilateurs Logiciel embarqué: (sert à controler un appareil, souvent temps réel aussi) ABS (freins) Électro-ménagers Avions Montres Stimulateur cardiaque Applications web: Services genre convertisseur monétaire, maps, etc. Intelligence artificielle: (Algorithmes non-numériques) Jeux d’échecs avancé Système expert (avec stratégies de recherche) Système diagnostique (avec sous-questions) Système qui apprend … Réseaux neuronaux. Qualités d’un logiciel: Interne: Portabilité, correction, robustesse, facilité de maintenance, interopérabilité. Externe: Fiabilité, robustesse, performance, convivialité Métric (exemple) déterminant d’une qualité pour un logiciel, par exemple, le nombre de liens entre les classes si on cherche à définir la maintenabilité d’un code en fonction de l’indépendance des classes. Nature des changements dans un système: (p.53) Perfectifs (nouveaux beosins) Correctifs Adaptatifs Cours 4, lundi 16 janvier 2006 • À quel autre principe l’abstraction est-il intimement lié? La Généralité • À quelles qualités logicielles le principe d’abstraction contribue-t-il directement? Réutilisation, Portabilité, Vérifiabilité, Correction • L’anticipation du changement, la généralité et l’incrémentalité sont des principes davantage liés au génie logiciel qu’aux autres disciplines d’ingénérie classiques. Pourquoi? À cause de la maléabilité du produit fini, on peut le modifier, en faire des versions. Chap2,p.4: Pas très réaliste puisqu’on n’y prévoit pas de retour en arrière.
Planification stratégique.
L’analyste doit aussi avoir des connaissance sur son environnement, voire en gestion, de même en relations. Diagramme du contexte: Déterminer ce qui fait partie du système Complet lorsqu’il rencontre le cahier des charges. Un bon outil pour une méthodologie de gestion des changements: CVS Chap2,p.29: Prototype jetable Prototype évolutif (ou réutilisable) on doit s’assurer de sa rigueur. Un autre processus de développement: RUP (Rational Unified Process) Larman Le modèle en spirale est un modèle dit «évolutif» – Montrer/Livrer quelque chose au client – Évaluer la plus-value pour le client + critiques. – Ajuster le design et les objectifs RUP est aussi un processus évolutif Inception Élaboration Construction Transition Besoins Itération 1, ité2, ité3, ité4, ité5, ité6, ité7, ité8, ité9, ité10, … Inception: Phase préliminaire, première conception, visualisation, etc… Processus évolutif: Processus où on reprend les étapes avec des ajouts. RUP est itératif et incrémental, à chaque quelques itérations, on va livrer une version du système. (Le noyau, le noyau et un service, etc.) Chapître 3: Analyse et spécification p.8: Services, Contraintes Besoins non-foncitonnels: Fonctionalités supplémentaires (FURPS, Fonctionality, Usability, Reuability, Performance, S…) p.10: Traçable: Être capable d’associer le besoin aux modules, au moyens utilisés pour y répondre (numérotation?) Cours 6, lundi 23 janvier 2006 Réponses du .doc: 1. Fonctionnel, entrées 2. Fonctionnel, sorties 3. Foncitonnel, calcul 4. Fonctionnel, stockage 5. Non-fonctionnel, Qualité, Facilité de maintenance, amélioration (perfectif) 6. Non-Fonctionnel, PR, planning/délais 7. Non-Fonctionnel, Qualité, fiabilité/robustesse 8. Plateforme 9. X p.22: 1. Cas d’utilisation 2. acteurs 3. scénarios p.23: à faire… (exercice) nota: Jad, méthode par réunions intensives (genre brainstorming), méthodologie prescrite à suivre. Cours 7, mercredi 25 janvier 2006 Cahier des charges: Services du système Besoins fonctionnels Contraintes du système Besoins non-fonctionnels p.34: Manque: Réutilisabilité et Facilité de maintenance. p.32: Besoins, Modules de conception, code, tests, documentation. Degré de formalisme: Formel: notament quand on peut le prouver. pp.36-36, UML serait semi-formel, et surtout opérationnel. Chap3.2, p.6: externes, temporels, d’état Cours 8, lundi 30 janvier 2006 Chap4,p.8: Analyse structurée: 1980 Cours 9, mercredi 1er février 2006 OMG: Object Management Group Architectures: Pipeline, Client-Serveur, Par tableau, etc. Objets (p.39): Par comportement on parle plus d’opération que de méthode (plusieurs méthodes possibles pour une opération) Exemple (système de télémarketing): Cours 10, lundi 6 février 2006 Élément: Ce qu’on veut stocker. Association: Entre des classes, (représente l’ensemble des liens) Lien: Entre des instances Dans le diagramme de classe: uniquement des liens.Les éléments peuvent exister par eux-même et appartenir à plusieurs agrégats. (Segment d’un chemin) Composition: Les éléments ne peuvent exister sans le composite. Ni appartenir à plusieurs composites. (Appartement d’un immeuble) Cours 11, mercredi 8 février 2006 DFD: Agent externe DFD de la démo2#1, revu et corrigé: UML: Acteur Diagramme de classe: Pendant l’analyse et puis version revisée après. (Pas tout au départ) (pas de qualifiant) Association dérivée: Avec un backslash en avant. Attributs dérivés: Avec un \ aussi. Sac de liens: Ensemble avec redondances possibles. Emploi, dans 4.2.26/27 = un travail précis, pas « travaille chez ». Exercices: (Instanciation, Généralisation, Spécialisation, Association, Agrégation, Composition ou Attribution).
Roger est un restaurateur: Instanciation Un restaurateur est une personne: Spécialisation (point de vue du restaurateur) Un repas complet a (entrée/plat pr./dessert): Agrégation Un plat est une entrée, un plat pr. ou un dessert: Généralisation Table 3 est une table du restaurant: Instanciation La table 3 est vide: Attribution Une boisson est soit de l’eau, du vin ou du café: Généralisation L’eau est froide, le café est chaud: Attribution Le café va bien avec le dessert: Association Cours 12, lundi 13 février 2006 Diagramme de cas d’utilisation: En lien avec la limite automatisable du système. (en opposition avec contexte qui parle du système complet) p.3.5: On devrait, dans n cas réel, parler de «préposé au prêt». Cours 13, mercredi 15 février 2006 Les flèches pour les include et les extends NE SONT PAS des flots de données. Extend: pour répondre aux cas entrainant des scénarios secondaires (cas d’exception). (if) Cours 14, lundi 20 février 2006 4.4.10: Cours 15, mercredi 22 février 2006 p.4.5.10: Ordre: b1-c1-a2 … Cours 16, lundi 6 mars 2006 Diag. d’état: Normalement, les transitions ont un événement et une garde, mais quand il s’agit d’une transition de sortir dite «de complétion», on n’a besoin que d,une garde. Point d’entrée: toujours (noter l’état initial) Point de sortie: surtout pour les états composites, pas trop grave pour le shéma global. Cours 18, lundi 13 mars 2006 Deux types de diagramme d’interaction: Séquence et Collaboration Diagramme de séquence: On représente des objets, pas des classes. Cours 19, mercredi 15 mars 2006 p.23: abab Diag. de collaboration: «une instance du diagramme de classes» Collaboration: «réalisation d’un cas d’utilisation» • Soit par un diagramme de collaboration • Soit par un diagramme de séquence ET un diagramme de classes. métrique: la mesure d’une qualité. (par exemple la cohésion) Cours 20, lundi 20 mars 2006 Approche de conception (BCE) 1- Reviser les scénarios des uses case 2- Schéma de robustesse * Inclure les classes interface au diagramme de classes 3- Diagramme de collaboration/squence * Ajouter les opérations au diagramme des classes 4- Réviser Les objets entity, s’ils ne sont pas en mémoire, il faut prévoir uen interface pour y accéder (base de donées, etc.) Cours 21, mercredi 22 mars 2006 – Analyse: – Diagramme de cas d’utilisation + document(scénario) – Diagramme de classes (éléments du domaine) – Autres diagrammes (état, activités, séquence) [liés au scénario] – Conception: 1) Réviser scénarios des cas d’utilisation 2) Schéma de robustesse 3) Diagramme de séquence ou collaboration* | attribuer les responsabilités 4) Réviser la cohérence inter-diagrammes *collaboration = réalisation d’un cas d’utilisation p.5.1.52: L’ovale en pointillé est une collaboration. On affiche les rôles sur les liens et on défini la collaboration ailleurs, par exemple avec un autre diagramme de classes, … «Design pattern GoF»: Un catalogue de design patterns Cours 22, lundi 27 mars 2006 Composant: mini-programme exécutable avec entrées/sorties. (en oposition à la notion de classe) Cours 23, mercredi 29 mars 2006 p.5.2.13: Observer Plusieurs clients: ne peut être tableau noir, plutôt client-serveur Cours 24, lundi 3 avril 2006 p6.6: Inflow = {(kp,A),(ks,A)} (compote p.4) Outflow={(A,pc),(A,pg)} p6.8: In(A) = kp,ks Out(A) = pc,pg p6.9 M(kp)=nombre de jetons dans kp (Marquage / État) Cours 25, mercredi 5 avril 2006 p.6.27, Pour modéliser un tampon de n unités, il suffit d’initialiser le contenu du tampon avec n jetons et de changer le sens des deux places modélisant le tampon pour ‘nombre d’éléments dans le tampon’ et ‘nombre de position libres’. Cours 26, lundi 10 avril 2006 p.6.65: pas k-borné pcq contient un w pas réversible pcq pas de boucle sur un état qui match l’initial (avec ou sans w), (ou pcq contient un blocage) pas vivant, parce que blocage Cours 27, mercredi 12 avril 2006 Caractéristiques fondamentales du graphe des marcages accessibles: GA(<R,M0>): Un marquage M est atteignable ssi il existe un sommet M dans GA(<R,M0>). GC(<R,M0>): Si le marquage M est atteignable dans <R,M0> alors il existe un sommet qui couvre M dans GC(<R,M0>). Réseau vivant si toutes les transitions sont vivantes. À partir d’un graphe de couverture on ne peut pas décider de la vivacité, mais on peut décider d’un deadlock.