Vous êtes sur la page 1sur 44

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 off-
the-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 analyse-
programmation (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 { Exprimé ici sous forme
rra = ra[ir-1]; de fonction JavaScript
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;
};
};
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 2iè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

Vous aimerez peut-être aussi