Le développement d'applications informatiques Des bibliothèques de fonctions aux "design patterns" Copyright 2011-2015 Yves Marcoux 1
Sources bibliographiques Ramon, Jorge. "Preface". Ext JS 3.0 Cookbook: 109 Great Recipes for Building Impressive Rich Internet Applications Using the Ext JS JavaScript Library. Packt Publishing. 2009. Books24x7. <http://common.books24x7.com/book/id_32910/book.asp> (accessed March 29, 2010) Vora, Pawan. Web Application Design Patterns. Morgan Kaufmann Publishers. 2009. Books24x7. <http://common.books24x7.com/book/id_32163/book.asp> (accessed March 29, 2010) Software development methodology Wikipedia <http://en.wikipedia.org/wiki/software_development_methodology> Marcoux, Yves. Méthodologies de mise sur pied de systèmes d'information documentaire. <http://marcoux.ebsi.umontreal.ca/enseign/6131/methodologies.htm> Copyright 2011-2015 Yves Marcoux 2
Méthodologie de développement Développement ou "mise sur pied" Inclut un aspect "gestion de projet" Processus systématique visant à assurer que le besoin à combler par une application informatique est bien identifié et compris que l'application développée répond de façon satisfaisante au besoin identifié que le développement se fait de façon efficace et efficiente Copyright 2011-2015 Yves Marcoux 3
Méthodologies: forme générale Faisabilité / Analyse des besoins Évaluation de la solution implantée Conception d'une solution Implantation de la solution Développement de la solution Copyright 2011-2015 Yves Marcoux 4
Étape "développement" Peut prendre plusieurs formes Programmation Agencement de logiciels déjà faits (on parle alors "d'intégration") Développement de "passerelles" Déborde souvent sur d'autres étapes Surtout conception et étude des besoins "Analyse et programmation" Copyright 2011-2015 Yves Marcoux 5
Importance de la programmation Méthodologies varient selon la place donnée à la programmation Méthodologies "COTS" (commercial offthe-shelf) Privilégie l'utilisation de logiciels déjà tout faits Programmation n'intervient que pour les passerelles, personnalisation, etc. Copyright 2011-2015 Yves Marcoux 6
Importance de la programmation Certaines approches couvrent analyseprogrammation (incluant habituellement les tests) Extreme programming ICONIX En général: méthodologies dites "agiles" ou "légères" Visent surtout développement sur mesure Copyright 2011-2015 Yves Marcoux 7
Concepts du développement centré programmation Philosophies de développement Approches ou modèles de développement Paradigmes de programmation Langages de modélisation Environnements de développement Cadres logiciels (frameworks) Copyright 2011-2015 Yves Marcoux 8
Philosophies de développement Aux extrêmes: Intervention «clé-en-main» End-user development Entre les deux: Accompagnement Maîtrise d œuvre vs maîtrise d ouvrage Contrats de consultation Copyright 2011-2015 Yves Marcoux 9
Modèles de développement Chute d'eau (waterfall) Non intératif Spirale Basé sur la gestion des risques Interatif et incrémental Petits cycles d'abord Développement agile Copyright 2011-2015 Yves Marcoux 10
Méthodologies "agiles" 2001: "Agile Manifesto" http://agilemanifesto.org/ Réaction aux méthodologies et méthodes traditionnelles "lourdes" Extreme Programming Scrum http://www.scrumalliance.org/ D un concept du Rugby etc. Copyright 2011-2015 Yves Marcoux 11
Copyright 2011-2015 Yves Marcoux 12
Paradigmes de programmation Programmation procédurale Orientation-objets Programmation fonctionnelle Programmation logique Copyright 2011-2015 Yves Marcoux 13
Interprétation vs compilation Notion de "langage machine" Analogie: Traduire une recette Suivre la recette avec un dictionnaire Approches intermédiaires "Byte-code" Machines virtuelles (ex.: Java) Émulation Copyright 2011-2015 Yves Marcoux 14
Langages de modélisation Modélisation: des données des règles d'affaires des processus d'affaires Organigrammes Diagrammes entités-relations UML: Unified Modeling Language UML 2.2: 14 types de diagrammes Copyright 2011-2015 Yves Marcoux 15
Environnements intégrés de développement IDE: Integrated Development Environment Comprend: Éditeur de code source (coloration syntaxique) Compilateur ou interprète Débogueur Computer-aided software engineering (CASE) Inclut modélisation Copyright 2011-2015 Yves Marcoux 16
Cadres de développement (frameworks) Base sur laquelle les nouveaux programmes développés s'appuient Objectifs Ne pas réinventer la roue Éviter les erreurs lors de copier-coller Augmenter la qualité des programmes (absence de bugs) Paradigme objet particulièrement efficace Copyright 2011-2015 Yves Marcoux 17
Types de cadres logiciels Bibliothèques logicielles Environnements ou plateformes d'exécution Systèmes d'exploitation Autres regroupements de fonctionnalités Bases de données Accès réseau etc. Copyright 2011-2015 Yves Marcoux 18
Bibliothèques logicielles "Software Libraries" Sous-routines ou procédures Fonctions (retournent un résultat) Objets (propriétés + méthodes) Classes (moules à objets + autres classes) Les "objets" ainsi utilisés sont intégrés au programme en développement; ils en font partie Copyright 2011-2015 Yves Marcoux 19
Limite des bibliothèques logicielles: une analogie Programmer exclusivement en utilisant des bibliothèques de fonctions est un peu comme parler une autre langue exclusivement par "phrase book" À un certain niveau d avancement, l'expressivité est insuffisante Copyright 2011-2015 Yves Marcoux 20
Application Programming Interface (API) Description précise et détaillée d'interagir avec un environnement ou une plateforme Défini de façon indépendante d'un langage de programmation spécifique Abstraction Pour langage spécifique: "Binding" Language Binding Nomme précisément tous les éléments Copyright 2011-2015 Yves Marcoux 21
Solutions réutilisables Pour être général On sépare l'abstraction + les implantations Deux cas de figure: Algorithme "Design pattern" Copyright 2011-2015 Yves Marcoux 22
Algorithme (1) Façon uniforme et efficace de traiter un type précis de problèmes de calcul ou de traitement des données. Ex.: Tri de données arbitraires Quicksort, Heapsort, etc. PGCD, PPCM, racine carrée, etc. Problèmes de réseaux: composantes fortement connexes, etc. Optimisation Copyright 2011-2015 Yves Marcoux 23
Algorithme (2) Fortement optimisés, souvent difficiles à comprendre Souvent exprimés en "pseudo-code" Indépendant d'un langage particulier Notion d'algorithme optimal Copyright 2011-2015 Yves Marcoux 24
Exemple d'algorithme: Heapsort function heapsort(ra) { // Trie un tableau de chaînes de caractères avec l'algorithme classique "Heapsort" var el, i, j, ir, n, rra; if ((ir = n = ra.length) < 2) return; el = (n >> 1) + 1; for (;;) { }; if (el > 1) rra = ra[--el-1] else { rra = ra[ir-1]; ra[ir-1] = ra[0]; if (--ir == 1) { ra[0] = rra; return; }; }; i = el; j = el << 1; for ( ; j <= ir ; ) { if (j < ir && ra[j-1].localecompare(ra[j]) < 0) ++j; if (rra.localecompare(ra[j-1]) < 0) { ra[i-1] = ra[j-1]; j += (i = j); } else j = ir + 1; }; ra[i-1] = rra; }; Exprimé ici sous forme de fonction JavaScript Copyright 2011-2015 Yves Marcoux 25
"Design patterns" Solution stéréotypée et ayant fait ses preuves à un problème de haut niveau devant être résolu sur une base régulière dans des applications informatiques Inclut très souvent des façons d'interagir avec l'utilisateur Pas du calcul ou traitement des données Peut cependant inclure des algorithmes, ex.: CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart) Copyright 2011-2015 Yves Marcoux 26
Design patterns - Historique Architecture A Pattern Language (Alexander et al., 1977) The Timeless Way of Building (Alexander, 1979) Génie logiciel Design Patterns: Elements of Reusable Object-Oriented Software (Gamma, Helm, Johnson, Vlissides, 1994) "Gang of Four" (GoF) Copyright 2011-2015 Yves Marcoux 27
Design patterns La documentation des DP est primordiale C'est véritablement un outil de gestion des connaissances Indique quoi faire, pas comment Variante: "Cookbook" Souvent lié à une plateforme et/ou un langage spécifique Copyright 2011-2015 Yves Marcoux 28
Quelques DP Source: Vora, op.cit. Copyright 2011-2015 Yves Marcoux 29
Exemple tiré de Vora op.cit. CAPTCHA Copyright 2011-2015 Yves Marcoux 30
Copyright 2011-2015 Yves Marcoux 31
Copyright 2011-2015 Yves Marcoux 32
Copyright 2011-2015 Yves Marcoux 33
Copyright 2011-2015 Yves Marcoux 34
Autre exemple Model-View-Controller Copyright 2011-2015 Yves Marcoux 35
Model-View-Controller (MVC) En fait un pattern architectural Idée: séparer la logique de domaine de l'interface utilisateur Une implantation en JavaScript PureMVC Copyright 2011-2015 Yves Marcoux 36
Critiques Méthodologies peuvent être paralysantes Faire oublier le "gros bon sens" "Anti-patterns" Toute approche a ses défenseurs et ses détracteurs Extreme Programming Parfois impression de guerre de clans Éviter l'évangélisme Copyright 2011-2015 Yves Marcoux 37
Logiciels par modalités d acquisition Logiciel commercial payant Partagiciel On doit payer si on décide d utiliser régulièrement le logiciel Gratuiciel Software as a Service (SaaS) Versions démo ou d évaluation Limitées en capacité et/ou dans le temps Copyright 2011-2015 Yves Marcoux 38
Qu est-ce qui peut être «acquis» dans tout ça? Méthodologie: non, mais les documents oui (rare) Design patterns: non Algorithmes: non Cadres logiciels: oui Bibliothèques de fonctions: oui Logiciels génériques tout faits: oui Copyright 2011-2015 Yves Marcoux 39
Software as a Service (1/2) Pas d acquisition: accès par internet (web) après inscription Le logiciel n est installé que sur le serveur du producteur Exemples Services de courriel (Gmail, etc.) Google docs, Microsoft Windows Live & Office Live Idéal pour mobilité et partage d information Copyright 2011-2015 Yves Marcoux 40
Software as a Service (2/2) C est la forme la plus connue de l infonuagique (cloud computing) Rendu possible par l'omniprésence des réseaux et la puissance des ordinateurs Retour aux débuts de l'informatique Client-serveur Et même serveur-terminaux Au lieu d'un terminal: client "léger" (thin client) Requiert à la base la connectivité continue Copyright 2011-2015 Yves Marcoux 41
Logiciels par modalités d utilisation (1/3) Utilisation contrôlée (et en général $$$) En fonction du nombre d usagers et/ou du volume de données Nécessaire pour SaaS (au moins inscription, sinon paiement) Utilisation non contrôlée Une fois acquis, pas de contrôle d utilisation C est la «1 ère liberté de l utilisateur» du logiciel libre Copyright 2011-2015 Yves Marcoux 42
Par modalités d utilisation (2/3) Trois autres «libertés» du logiciel libre 2. Liberté d inspecter le code source (les programmes) et de le modifier 3. Liberté de redistribuer le logiciel à d autres 4. Liberté de distribuer les versions modifiées Exemples de logiciels libres GNU/Linux (système d exploitation), MySQL (SGBD relationnel), Apache (serveur web), Mozilla/Firefox (navigateur web) Copyright 2011-2015 Yves Marcoux 43
Par modalités d utilisation (3/3) Deux notions à ne pas confondre avec «logiciel libre» : Logiciel à code source ouvert (open source) Une partie de la 2 ième liberté seulement C est plus une méthode de développement et de mise au point du logiciel qu une liberté d utilisation Gratuiciel (logiciel dont l acquisition est gratuite) Copyright 2011-2015 Yves Marcoux 44