Le développement d'applications informatiques



Documents pareils
Annexe : La Programmation Informatique

Génie logiciel (Un aperçu)

Le génie logiciel. maintenance de logiciels.

Patrons de Conception (Design Patterns)

DA MOTA Anthony - Comparaison de technologies : PhoneGap VS Cordova

AJAX. (Administrateur) (Dernière édition) Programme de formation. France, Belgique, Suisse, Roumanie - Canada

Visual Paradigm Contraintes inter-associations

Refonte front-office / back-office - Architecture & Conception -

Cours de Java. Sciences-U Lyon. Java - Introduction Java - Fondamentaux Java Avancé.

Identification du module

Agilitéet qualité logicielle: une mutation enmarche

PROGRAMME DU CONCOURS DE RÉDACTEUR INFORMATICIEN

Expert technique J2EE

Analyse,, Conception des Systèmes Informatiques

Mercredi 15 Janvier 2014

openarchitectureware & transformation de modèle Yannick Lizzi Architecte Logiciel itemis France Mail: lizzi@itemis.de

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

GESTION DE PROJET SÉANCE 2 : LES CYCLE DE VIE D'UN PROJET

Tableau comparatif des offres Visual Studio

Vers l urbanisation agile d un client mobile ios/android natif, économique, flexible et pérenne

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/ Vue générale 2 - Mon premier programme 3 - Types de Programme Java

1. Considérations sur le développement rapide d'application et les méthodes agiles

Les nouvelles architectures des SI : Etat de l Art

Des applications locales à l infonuagique: comment faire la transition?

Qu'est-ce que le BPM?

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

Programmation Web. Introduction

Vérifier la qualité de vos applications logicielle de manière continue

Stage Ingénieur en développement logiciel/modélisation 3D

Bases de données et environnements distribués Chapitre I : Architecture logicielle technologies de developpement en environnement

Stages ISOFT : UNE SOCIETE INNOVANTE. Contact : Mme Lapedra, stage@isoft.fr

Cours en ligne Développement Java pour le web

LICENCE : INFORMATIQUE GENERALE

Catalogue des Formations

LICENCE PROFESSIONNELLE SYSTEMES INFORMATIQUES & LOGICIELS

Cours de Génie Logiciel

Formations qualifiantes pour demandeurs d emploi

les techniques d'extraction, les formulaires et intégration dans un site WEB

Semarchy Convergence for Data Integration La Plate-Forme d Intégration pour le MDM Évolutionnaire

SQL Server, MySQL, Toad (client MySQL), PowerAMC (modélisation) Proxy SLIS

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Conduite de projets informatiques Développement, analyse et pilotage (2ième édition)

Calendrier crim.ca/formation

Méthodes agiles. CONSEIL & DÉVELOPPEMENT DE SOLUTIONS E-BUSINESS. Jean-Louis Bénard jlb@businessinteractif.

PLATE-FORME DE CLOUD COMPUTING SLAPOS. Intégration d applications

Analyse et Conception objet du logiciel Analyse et conception objet du logiciel : Méthode de conception objet et notation UML.

GPC Computer Science

Catalogue des Formations Techniques

CQP Développeur Nouvelles Technologies (DNT)

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

SITE WEB E-COMMERCE ET VENTE A DISTANCE

Architecture N-Tier. Ces données peuvent être saisies interactivement via l interface ou lues depuis un disque. Application

Présentation du PL/SQL

C est quoi le SWAT? Les équipes décrites par James Martin s appellent SWAT : Skilled With Advanced Tools.

CAHIER DES CHARGES D IMPLANTATION

Point sur les solutions de développement d apps pour les périphériques mobiles

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Formation en Logiciels Libres. Fiche d inscription

Description de la formation

Environnements de développement (intégrés)

de logiciels Web 2.0, SaaS Logiciels collaboratifs Portails pour entreprises Développement iphone, Android WebApp HTML5 Mobile marketing

Qu'est ce que Safari Books Online?

Intégration de l interface graphique de Ptidej dans Eclipse

Master Technologies numériques appliquées à l'histoire Deuxième année

Java pour le Web. Cours Java - F. Michel

Dispositif sur budget fédéral

Architecte Logiciel. Unité de formation 1 : Développer en s appuyant sur les modèles et les frameworks 7 semaines

Les formations. ENI Ecole Informatique

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Bases de données avancées Introduction

Environnements de Développement

4.2 Unités d enseignement du M1

Présentation du Programme Régional de Formations Qualifiantes

PostgreSQL, le cœur d un système critique

Jade. Projet Intelligence Artificielle «Devine à quoi je pense»

Urbanisme du Système d Information et EAI

Le Cloud Computing et le SI : Offre et différentiateurs Microsoft

Conception d'un système d'information WEB avec UML Par Ass SERGE KIKOBYA

Introduction à la modélisation

Cloud Computing. 19 Octobre 2010 JC TAGGER

INGÉNIEUR - DÉVELOPPEUR EXPÉRIMENT É PHP - MAGENT O. 30 ans - 6 ans d'expérience

IFT2255 : Génie logiciel

Perspectives pour l entreprise. Desktop Cloud. JC Devos IBM IT Architect jdevos@fr.ibm.com IBM Corporation

Technologies Web. Ludovic Denoyer Sylvain Lamprier Mohamed Amine Baazizi Gabriella Contardo Narcisse Nya. Université Pierre et Marie Curie

De l'open source à l'open cloud

Master Informatique Aix-Marseille Université

Description de l implantation dans le centre d examen (nom du service ou de l outil et caractéristiques techniques)

INGÉNIEUR - DÉVELOPPEUR SENIOR PHP. 28 ans - 8 ans d'expérience

La tête dans les nuages

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

Logiciel Enterprise Guide Version 1.3 Windows

Applications distribuées: le retour du client "riche"

Master CCI. Compétences Complémentaires en Informatique. Livret de l étudiant

Méthode de Test. Pour WIKIROUTE. Rapport concernant les méthodes de tests à mettre en place pour assurer la fiabilité de notre projet annuel.

ÉdIteur officiel et fournisseur de ServIceS professionnels du LogIcIeL open Source ScILab

UML est-il soluble dans les méthodes agiles?

COMPÉTENCES TECHNIQUES

INF 1250 INTRODUCTION AUX BASES DE DONNÉES. Guide d étude

Transcription:

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