Objectif du cours La modélisation et UML dans les activités du Génie Logiciel... ESIR2, GL (LSI) Benoit Combemale Université de Rennes 1, ESIR & IRISA (Triskell team) Benoit.Combemale@irisa.fr Identifier les activités de l ingénierie du logiciel, Comprendre le rôle de la modélisation dans l ingénierie du logiciel, Savoir passer d une utilisation passive à une utilisation active de la modélisation, Acquérir une vision pragmatique et efficace d UML. Ce cours n est pas une introduction à la notation et la sémantique d UML (cf. cours J.M. Jézéquel), mais une mise en situation d UML. Ce cours n est pas une introduction aux processus logiciel tel que RUP, mais permet de comprendre leur utilité Supports disponibles sur : http://www.irisa.fr/triskell/perso_pro/combemale/teaching/modeling/ 2 Outline Complexité des systèmes modernes From Software Engineering...... to Software Modeling: The Unified Modeling Language... Past, Present and Future: Open Conclusion! 3 4
Complexité des systèmes modernes Complexité des systèmes modernes - Critique - Temps-réel - Embarqué - Variabilité - Durabilité => Time To Market! - Plateforme 5 Complexité des systèmes modernes 6 Complexité des systèmes modernes Google :! 300 000 serveurs Autonomic Computing Cloud Computing PaaS, SaaS, IoS, IoT... répartis dans une vingtaine de datacenters. répondre à plus d'1 milliard de requêtes par jour, chacune interrogeant 8 milliards de pages Web en moins d'un cinquième de seconde! Building for Scale: - Distribué - Large-echelle 6,000 developer / 1,500+ projects Each product has custom release cycles few days to few weeks 1(!!) code repository No binary releases everything builds from HEAD 20+ code changes per minute 50% of the code changes every month Source: http://googletesting.blogspot.com/search/label/copeland 7 8
Quelques axes de la complexité critique, temps-réel, embarqué, distribué, paramétré, réutilisable, interoperable, durable, large-échelle, pervasif, dynamique, (auto-) adaptable, autonome... Software Engineering: definition! The production of operational software satisfying defined standards of quality...!... includes programming, but is more than programming!! The five components of Software Engineering [Meyer]: Describe: requirements, design, specification, documentation... Implement: design, programming Assess: testing and other V&V techniques Manage: plans, schedules, communication, reviews Operate: deployment, installation... 9 10 Software Engineering: definition Software Engineering: basics is a profession dedicated to designing, implementing, and modifying software so that it is of higher quality, more affordable, maintainable, and faster to build. Carlo Ghezzi, Mehdi Jazayeri, and Dino Mandrioli. Fundamentals of Software Engineering, 2nd edition. 2002. is a systematic approach to the analysis, design, assessment, implementation, test, maintenance and re-engineering of a software by applying engineering to the software. first appeared in the 1968 NATO Software Engineering Conference (to provoke thought regarding the perceived "software crisis" at the time). Cf. http://en.wikipedia.org/wiki/software_engineering 11 12
Software Engineering @ ESIR (LSI) Techniques Methods Principles, ESIR 3 and Tools approche générative, intégration continue,... Aspects, IDM, V&V ESIR 2 ESIR 1 Modélisation Objet et par contrat, patrons de conception et d architecture (composant, SOA...) du procédural...... à l objet. Principles, and Tools Principles, and Tools d un processus en cascade... à un processus en V, itératif et agile; ligne de produit; TDD; conduite de projet... identification des activités d un développement logiciel, cycle de vie en cascade. Tentative! Seamless Method- and Model-based Software and Systems Engineering 13 Seamless Method- and Model-based Software and Systems Engineering Eclipse, MagicDraw RUP, SCRUM, XP modèles, programmes, tests unitaires Patrons d architecture, patrons de conception Lignes de produit, processus itératif, TDD Manfred Broy http://en.wikipedia.org/wiki/manfred_broy Modélisation et programmation Objet (UML, OCL, Java), Test (Junit) from http://fose.ethz.ch/slides/broy.pdf Séparation des préoccupation, abstraction, agilité
A retenir... Outline Rappel: couplage fort de matériel et du logiciel! ingénierie système! Les systèmes (logiciels) deviennent de plus en plus prépondérants et complexes Le métier d ingénieur logiciel est complexe: principes, techniques, méthodes, et outils pour décrire, implémenter, vérifier, gérer, et rendre opérationnel un système logiciel Réponse de l Ingénierie du Logiciel! séparation des préoccupations! montée en abstraction! agilité des développements From Software Engineering...... to Software Modeling: The Unified Modeling Language... Past, Present and Future: Open Conclusion! 17 18 Des Modèles plutôt que du Code Un modèle est la simplification/abstraction de la réalité Nous construisons donc des modèles afin de mieux comprendre les systèmes que nous développons Nous modélisons des systèmes complexes parce que nous somme incapables de les comprendre dans leur totalité Le code ne permet pas de simplifier/abstraire la réalité La modélisation: qu elle utilisation? Pour réfléchir :! représentation abstraite! séparation des préoccupations Pour communiquer :! représentation graphique! génération de documentation Pour automatiser le développement :! génération de code! application de patrons! migration Pour vérifier :! validation et vérification de modèles (e.g., simulation, model-checking...)! model-based testing 19 20
La modélisation dans l ingénierie du logiciel Outline From Software Engineering...... to Software Modeling: Analyse Conception Développement Test Déploiement Maintenance Exécution * Taux d utilisation de la modélisation dans l ingénierie du logiciel The Unified Modeling Language... Past, Present and Future: Open Conclusion!? ET VOUS? conception, documentation analyse... conception avancée gestion des exigences, ingénierie système... V&V, génération (code, test). état de la pratique dans l industrie... DSML, transformation/ composition... maintenance... exécution. état de VOTRE pratique (?) état de la pratique que doit atteindre un ingénieur logiciel de l ESIR, parcours LSI! 21 22 et UML? Historique L utilisation d UML suit la même évolution dans l ingénierie du logiciel :! d une utilisation contemplative (pour réfléchir, communiquer)...!... à une utilisation active (pour vérifier, automatiser les développement,...).! UML est une notation ET une sémantique Attention:! UML n est QU UNE des notations et sémantiques Ingénierie des langages!! UML n est pas une méthode (RUP...) Les travaux des années 90 ont abouti à un consensus sur les besoins pour décrire un logiciel (cas d utilisation, objets, classes, méthodes, associations, package, composant...) Pourquoi?! Réfléchir! Définir la structure gros grain! Documenter! Guider le développement! Développer, tester et auditer 23 24
Les 4 vues d une modélisation UML Une démarche sous-jacente Vue Structurelle (package, class, object, composite diagrams) Vue Fonctionnelle (use case diagram) Vue Comportementale (sequence, activity, state, timing, interaction and communication diagrams) Analyse fonctionnelle (diag. de cas d utilisation) Spécification (diag. de classe métier, diag. de séquence système, principaux diag. d état/d activité) Conception : diag. de classe complet, diag. de composite et d objet, diag. de séquence, d état, d activité, de timing... Et...?? Vue Implementaion (component, deployment diagrams) La démarche doit être formalisée au sein d un processus Il existe certains processus standard (e.g., RUP) 25 26 Raffiner ses modèles: les profils Raffiner ses modèles: les profils Par nature, un modèle UML ne peut pas être productif! Indépendance des langages, sémantique trop générale Il faut donc spécialiser UML pour être productif! UML pour CORBA, UML pour EJB, UML pour RT, Un profil UML permet de spécialiser UML à un domaine particulier! p. ex., pour préciser qu une classe UML est en fait un EJB session Un profil est composé de stéréotypes, de tagged value et de contraintes (+ des règles de manipulation/ génération) Il existe plusieurs profils standards (EJB, CORBA, SPEM ), et des outils proposant des règles de génération. 27 28
UML: how it is defined? By a (meta)model! UML: excerpt of the metamodel Cf. OMG Unified Modeling LanguageTM (OMG UML), Infrastructure, Version 2.3, May 2010 (http://www.omg.org/spec/uml/) The UML metamodel is a (MOF-based) class model (+OCL constraints) that describes UML The metamodel describes the UML concepts and their relationships 29 30 Tools UML References and links IBM Rational Software Architect Softeam Modelio MagicDraw Sparx Systems Enterprise Architect Poséidon TopCased: http://topcased.gforge.enseeiht.fr/ Papyrus: http://www.papyrusuml.org! Eclipse (Helios) Modeling: MDT Papyrus ArgoUML, BoUML,... Books:! Pierre-Alain Muller, Nathalie Gaertner. Modélisation objet avec UML, second edition. Eyrolles, 2000.! many, many, many more books about UML are available. Just have a look on amazon! The Official OMG UML websites:! http://uml.org! http://www.omg.org/spec/uml/ Dia, Visio UML template! Full list at http://uml.org/#links-tools 31 32
Outline Seamless Method- and Model-based Software and Systems Engineering From Software Engineering...... to Software Modeling: The Unified Modeling Language... Past, Present and Future: Open Conclusion! Seamless Method- and Model-based Software and Systems Engineering from http://fose.ethz.ch/slides/broy.pdf 33 Manfred Broy http://en.wikipedia.org/wiki/manfred_broy Seamless Method- and Model-based Software and Systems Engineering from http://fose.ethz.ch/slides/broy.pdf
References References OMG specifications and white papers Jean-Marc Jézéquel! http://www.irisa.fr/prive/jezequel/enseignement/dvpobjetuml.htm! Poly C119 : http://www.irisa.fr/prive/jezequel/enseignement/ PolyUML/poly.pdf Bertrand Meyer SWEBOK: «Guide to the Software Engineering Body of Knowledge»! http://www.swebok.org! http://se.ethz.ch/teaching/2009-h/eprog-0001/ Computer Software Engineers and Computer Programmers Textbook : http://touch.ethz.ch/! http://se.ethz.ch/teaching/ss2007/252-0204-00/ C. A. R. Hoare, The Emperor's old clothes, Comm. ACM 24(2), 75-83 (February 1981)! http://tinyurl.com/3yk3v2! http://www.omg.org/! http://www.uml.org/ 37 References! http://www.bls.gov/oco/ocos303.htm Tips for Software Projects! http://www.comp.nus.edu.sg/~damithch/guide3e/ 38 References NATO Conference Get connected!! http://homepages.cs.ncl.ac.uk/brian.randell/nato/! blog, forum, rss, tutorials, mailing lists,... Conferences! ICSE: International Conference on Software Engineering! and many more: FSE, ASE, AOSD, MoDELS, ICST, PoPL, CBSE, ICSP, ICSM, ICMT, ICLP, ICFP, SPLC, EDOC, ECOOP, SPLASH/OOPSLA, ETAPS, DisCoTec, FM, IFM, ISSRE, etc. Journals! IEEE Software, TSE, TOSEM, ASE, SoSym, JOT, TAOSD, STVR, JSS, JSW, STTT, etc. 39 40