MI3/GL Cours de Génie Logiciel Programmation Orientée Objet (Avancée)



Documents pareils
Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Patrons de Conception (Design Patterns)

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

Analyse,, Conception des Systèmes Informatiques

Gestion de projet Agile. STS IRIS Module «Gérer et organiser un projet informatique»

Introduction au génie logiciel

Séance 1 Méthodologies du génie logiciel

Les méthodes Agiles Introduction. Intervenant : Tremeur Balbous tremeur@agilegardener.com 04/09/2008

ACTIVITÉ DE PROGRAMMATION

Mise en oeuvre de tests unitaires dans un contexte de programmation extrème répartie

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

Programmer en JAVA. par Tama

Corrigé des exercices sur les références

Méthodologies Orientées-Objet!

Plan. Tests. 1. Introduction. 1. Introduction

OCL - Object Constraint Language

énie avec Scrum, Lean, extreme Programming

Les méthodes Agile. Implication du client Développement itératif et incrémental

Présentation des experts

Introduction Les processus traditionnels extreme Programming Conclusion. extreme Programming. vers plus d agilité. F. Miller francois.miller@inpg.

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

Le développement d'applications informatiques

IFT2255 : Génie logiciel

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

DES SYSTÈMES D INFORMATION

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

Bibliographie sommaire pour le programme de B. Sc. (informatique de gestion), concentration en génie logiciel

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

Présentation. Au programme. Fonctionnement. A l issue de ce module vous devriez...

Les méthodes itératives. Hugues MEUNIER

LOG4430 : Architecture logicielle et conception avancée

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

TP1 : Initiation à Java et Eclipse

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

Cours Composant 2. Qualité logicielle et spécications algébriques

Programmation Objet Java Correction

Introduction à l extreme Programming et au développement agile

Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN

Modélisation de Lignes de Produits en UML *

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

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

Génie logiciel (Un aperçu)

Architectures Ouvertes pour l Adaptation des Logiciels

Ingénierie des Modèles. Méta-modélisation

Besoins utilisateurs. Quelle démarche pour passer des besoins au code? Code. chapitre1 UNIFIED MODELING LANGUAGE. package LogiqueMetier.

Chapitre I : le langage UML et le processus unifié

Bases de données relationnelles : Introduction

Les Bonnes PRATIQUES DU TEST LOGICIEL

Cours 1 : La compilation

Daylight. Démarche ergonomique et RUP. Daylight 2001 Démarche ergonomique et RUP 1/1 07/03/02 CSI_RUPERGO02

Étude de l interopérabilité de deux langages de programmation basée sur la machine virtuelle de Java

Annexe : La Programmation Informatique

AGILE Historique et évolution

Tolérance aux Fautes des Grappes d Applications J2EE. Applications Internet dynamiques

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Management des processus opérationnels

Génie Logiciel Avancé Cours 1 Introduction

Remote Method Invocation Les classes implémentant Serializable

Programmation Orientée Objet application au langage Java Version Novembre 2007

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Master MIDO 2ème année. Spécification et Conception en UML Maude Manouvrier

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

Programmation en Java IUT GEII (MC-II1) 1

Auto-évaluation Programmation en Java

COMPARAISONDESLANGAGESC, C++, JAVA ET

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Presses des MINES - TRANSVALOR, 60, boulevard Saint-Michel Paris Cedex 06 - France

Cours Base de données relationnelles. M. Boughanem, IUP STRI

Programmation Par Objets

Agile et CMMi. L agilité et la norme. Jean-Pierre Vickoff

Introduction à la modélisation

SIO Page 1 de 5. Applications Web dynamiques. Prof. : Dzenan Ridjanovic Assistant : Vincent Dussault

Alignement avec les métiers par le test fonctionnel et d acceptation en projets agiles

Contexte et motivations Les techniques envisagées Evolution des processus Conclusion

Le Guide Pratique des Processus Métiers

Règles d engagement. Présentation Diapositives Bibliographie Questions Les vertus de la marche

Approche méthodologique pour la modélisation des processus de l entreprise

TP3 Intégration de pratiques agiles. 1. User Stories (1) Scénario d intégration agile. En direct-live du château

Un ordonnanceur stupide

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Programmation MacOSX / ios

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

Le cadre des Web Services Partie 1 : Introduction

Ne renvoyez pas vos architectes! Utilisez-les avec agilité

Agile Maroc 24 Novembre Méthodes agiles. Thierry Cros. Agile Maroc 24 novembre 2010

CC30 Certificat de compétence Conception, développement et animation de sites Web

Généralités. javadoc. Format des commentaires. Format des commentaires. Caractères spéciaux. Insérer du code

Génie logiciel avec UML. Notions sur le langage UML adapté pour les cours du programme Techniques de l informatique

Composants génériques de calcul scientifique

Bibliographie commentée

Introduction au langage C

GPC Computer Science

Ergonomie des Interfaces Homme-Machine

Le Rational Unified Process

3. UML - Unified Modeling Language Diagrammes statiques

ANALYSE D UN SYSTEME D INFORMATION ET EXTENSION DE

UE C avancé cours 1: introduction et révisions

Architecture Orientée Service, JSON et API REST

Fusion : l interopérabilité chez Oracle

Chapitre 10. Les interfaces Comparable et Comparator 1

Transcription:

Aperçu du cours Avant propos Définitions MI3/GL Cours de Génie Logiciel Programmation Orientée Objet (Avancée) Daniel Le Berre CRIL-CNRS FRE 2499, Université d Artois, Lens, FRANCE {leberre}@cril.univ-artois.fr 1 er novembre 2004 MI3GL 2004/2005 1

Aperçu du cours Avant propos Définitions Avant propos Définitions MI3GL 2004/2005 2

Aperçu du cours Avant propos Définitions Au début... Le génie logiciel (software engineering) est un terme qui est apparu lors d une conférence de l OTAN, du 7 au 11 octobre 1968 à Garmisch-Partenkirchen (Allemagne). Il a été défini par un groupe de scientifiques dans le but de résoudre deux problèmes liés à l augmentation en puissance des ordinateurs 1. les logiciels ne sont pas stables 2. il est très difficile de réaliser dans les délais prévus un logiciel satisfaisant son cahier des charges. MI3GL 2004/2005 3

Aperçu du cours Avant propos Définitions Aujourd hui 40 ans après, les mêmes problèmes sont observés. La POO améliore le développement des applications depuis 20 ans. Pas de méthode universelle pour garantir le succès d un projet informatique. On connait quelques pièges à éviter. Erreurs suivantes trouvées dans [2], proviennent de [12]. MI3GL 2004/2005 4

Aperçu du cours Avant propos Définitions Bug de l an 2000, de l année bisextile Un supermarché a reçu une amende de 1000 US$ pour avoir vendu de la viande ayant dépassé sa date limite de consommation d un jour, un 29 Février 1988. Le logiciel imprimant les dates limite de consommation ne prennait pas en compte les années bisextiles. MI3GL 2004/2005 5

Aperçu du cours Avant propos Définitions Mauvaise utilisation d interface Le 10 avril 1990 ; à Londre, un métro est parti de sa station sans son conducteur. Le conducteur avait appuyé sur le bouton qui démarrait le train, en laissant le soin au système de sécurité des portes des wagons qui empêche le métro de démarrer portes ouvertes de faire véritablement démarrer le métro. Ce jour là, le conducteur était sortit du train pour fermer une porte restée coincée... MI3GL 2004/2005 6

Aperçu du cours Avant propos Définitions Securité Le 2 novembre 1988, un ver apparu sur Internet. Le programme explaitait des vulnérabilités de services réseaux, comme par exemple le programme sendmail, pour se propager d un ordinateur à un autre. Malheureusement, une fois sur la machine, le ver consommait toutes ses ressources de calcul et la plantait. On estime que 10% des machines qui étaient reliées à Internet furent touchées. L éradication du ver pris plusieurs jours. MI3GL 2004/2005 7

Aperçu du cours Avant propos Définitions Retard et dépassement de budget En 1995, des problèmes dans un système automatique de prise en charge des bagages à l aéroport International de Denver entrainait la détérioration des bagages. L aéroport a ouvert avec 16 mois de retard, un dépassement de budget de 3.2 milliards de $, avec un système de gestion de bagage presque manuel. MI3GL 2004/2005 8

Aperçu du cours Avant propos Définitions Pourquoi faire simple... L avion cargo C-17 de McDonnell Douglas dépassa son budget de 500 millions de $ à cause de ses logiciels embarqués. Le C-17 était composé de 19 ordinateurs de bord, de 80 microprocesseurs et de 6 langages de programmation différents. MI3GL 2004/2005 9

Aperçu du cours Avant propos Définitions Pourtant... Nos systèmes d exploitations sont de plus en plus complexes et fonctionnent! Nos applications aussi : suites office, jeux, environnements de développement, etc. Les avions de ligne (et maintenant les voitures) sont gérés par des logiciels et il y a peu de problèmes. Qu est ce qui fait que certains projets aboutissent et d autres pas? L équipe de développement! MI3GL 2004/2005 10

Aperçu du cours Avant propos Définitions Mes Mentors Bertrand Meyer[11] Erich Gamma, Richard Helm, Ralph Johnson et John Vlissides[6] Martin Fowler[3, 4, 5] Kent Beck[1] Robert C. Martin[9, 10] Ward Cunningham Grady Booch, Jim Rumbaugh et Ivar Jacobson MI3GL 2004/2005 11

Aperçu du cours Avant propos Définitions Logiciel/Software Ce n est pas seulement un programme pour ordinateur. Il s agit aussi de toutes les données qui lui sont associées : documentation, fichiers de configuration etc. Par exemple, un logiciel est souvent constitué de un ou plusieurs programmes, des fichiers de configuration, de la documentation du système qui indique la structure du système et la documentation utilisateur qui indique comment utiliser le système, avec éventuellement un site web qui permet aux utilisateurs d accéder à des informations récentes sur le produit. On distingue généralement deux types de logiciels : les logiciels génériques et les logiciels à façon (progiciels). MI3GL 2004/2005 12

Aperçu du cours Avant propos Définitions Processus de développement de logiciel/software process Il s agit des activités et des résultats associés qui conduisent à la création d un logiciel. Il y a quatre activités principales : Spécification, Développement, Validation et Evolution. MI3GL 2004/2005 13

Aperçu du cours Avant propos Définitions Génie Logiciel le génie logiciel est donc l art de spécifier, de concevoir de réaliser, et de faire évoluer, avec des moyens et dans des délais raisonnables, des programmes, des documentations et des procédures de qualité en vue d utiliser un ordinateur pour résoudre certains problèmes. [7] MI3GL 2004/2005 14

Aperçu du cours Avant propos Définitions Vers un bon logiciel Qu est ce qui fait un bon logiciel? Evolutivité Fiabilité (sécurité, robustesse, sûreté) Efficacité (CPU, mémoire, etc) Ergonomie MI3GL 2004/2005 15

De l utilité des tests Vérifier/Garantir le comportement du programme Aider du développement du programme Donner confiance au programmeur MI3GL 2004/2005 16

Les tests du programmeur Programmer Testing des tests écrits par les programmeurs plus général que unit testing dédiés au test des objets suivent le modèle : créer un objet invoquer une méthode vérifier le résultat conditions nécessaires : être automatisés être explicites faciles à exécuter MI3GL 2004/2005 17

Mais aussi... Les tests se font aussi dans le code les assertions permettent de vérifier que ce qui ne devrait pas arriver n arrive effectivement pas les exceptions permettent de se prémunir d une mauvaise utilisation du code. MI3GL 2004/2005 18

Assertion: syntaxe Pour vérifier le comportement du code que l on écrit. Aussi appelé white box testing. assert x>0; assert x>0 : x negatif ou nul ; Les assertions peuvent être activées au désactivées à l exécution du programme : java -ea MonProg # assertions activees java MonProg # assertions desactivees Laisser les assertions activées pendant le développement voire en production MI3GL 2004/2005 19

Implantation des assertions en Java assert x>0 : texte est traduit par : if (ASSERTION_ENABLED&&!(x>0)) { throw new AssertionError(texte); } Problèmes potentiels : affecte les performances du programme? OUI [13] affecte la taille des programmes? OUI MI3GL 2004/2005 20

Programmation assertive (assertive programming) Si cela ne peut pas arriver, utiliser une assertion pour vérifier que cela n arrivera pas [8] attention aux effets de bord : ne jamais exécuter une méthode qui doit être appelée dans un assert. MI3GL 2004/2005 21

Exercice : Une pile MI3GL 2004/2005 22

/** @param a should be strictly positive */ public int faitle(int a) throws Exception { if (a<=0) { throw new Exception( a should be positive ); }... } try { int i = faitle(v); // tout va bien } catch (MyException e) { // exception lancee, il faut la gerer } finally { // Dans tous les cas... (optionnel) } MI3GL 2004/2005 23 Exceptions: syntaxe

Quand utiliser des exceptions? Pour gérer des cas exceptionnels Pour s assurer que les méthodes publiques sont appelées convenablement. Pour indiquer un état inattendu de l objet Il y a trois types d exceptions (Throwable) en Java : Exceptions d exécution runtime exception : ce sont les seules exceptions qui peuvent être lancées sans être déclarées. Erreurs Error : problèmes graves (AssertionError, OutOfMemoryError,. Les autres : Il faut absolument les déclarer pour les utiliser, sinon, on obtient une erreur à la compilation. MI3GL 2004/2005 24

Quelques exceptions utiles en Java NullPointerException InvalidArgumentException : quand l un des arguments de la méthode ne respecte pas les préconditions. UnsupportedOperationException : quand le corps d une méthode n a pas encore été implanté ou quand une opération optionnelle n est pas disponible. NoSuchElementException IndexOutOfBoundException MI3GL 2004/2005 25

public TimeoutException() { super(); } public TimeoutException(String message) { super(message); } super(message, cause); } public TimeoutException(Throwable cause) { super(cause); } MI3GL 2004/2005 26 Créer ses propres exceptions Il suffit de créer une sous classe de java.lang.exception public class TimeoutException extends Exception {

Conception par contrat Design by Contract proposé par Bertand Meyer[11] Utilisé dans le langage Eiffel. précondition ce qui doit être vrai à l appel de la routine postcondition ce que la routine garantie ; l éat du monde après l appel à la routine. invariant de classe une condition qui est toujours vérifiée du point de vue de l appelant. si toutes les préconditions des routines sont vérifiées, alors les routines doivent garantir que les postconditions et les invariants de classe seront vérifiés après exécution. MI3GL 2004/2005 27

Exemple /** * Liste ordonnée * @inv forall Node n in elements() * n.prev()!=null * implies n.value().compareto(n.prev.value()) > 0 */ public class DBCList { /** * @pre contains(anode) == false * @post contains(anode) == true */ public void insertnode(final Node anode) { //... MI3GL 2004/2005 28

Conception par contrat en Java icontract n est plus disponible. Il n y a plus de bonne solution. utiliser des assertions ou des exceptions pour vérifier les préconditions utiliser des assertions pour vérifier les postconditions pas de mécanisme pour les invariants de classe: il faut les ajouter à la main dans le code à l aide d assertions par exemple. Utiliser la programmation par aspect MI3GL 2004/2005 29

Kent Beck. extreme Programming explained, Embrace Change. Addison Wesley, 2000. Bernd Bruegge and Allen H. Dutoit. Object Oriented Software Engineering: Conquering Complex and Changing Systems. Prentice Hall, 2000. ISBN: 0-13-017452-1. Martin Fowler. Refactoring: Improving the Design of Existing Code. Object Technology Series. Addison Wesley, 2000. Indispensable! Martin Fowler. Patterns of Enterprise Application Architecture. The Addison-Wesley Signature Series. Addison Wesley, 2003. MI3GL 2004/2005 30

Martin Fowler. UML distilled: A brief Guide to the Standard Object Modelling Language. Object Technology series. Addison Wesley, 3rd edition, 2004. Indispensable! Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. Design Patterns, Elements of Reusable Object-Oriented Software. Addison Wesley, 1995. A posséder absolument! Marie-Claude Gaudel, Bruno Marre, Françoise Schienger, and Gilles Bernot. Précis de Génie Logiciel. Enseignement de l Informatique. Masson, 1996. ISBN : 2-225-85189-1. MI3GL 2004/2005 31

Andrew Hunt and David Thomas. The Pragmatic Programmer. Addison Wesley, 2000. Un livre interessant (mais en anglais) pour tous les programmeurs. Robert C. Martin. Agile Software Development: Principles, Patterns and Practices. Prentice Hall, 2003. Utile. Robert C. Martin. UML for Java Programmers. Prentice Hall, 2003. Bertrand Meyer. Conception et programmation orientées objet. MI3GL 2004/2005 32

Eyrolles, 1997. Indispensable pour tout programmeur dans un langage objet, même si les exemples donnés sont plutôt en Eiffel. P. G. Neumann. Computer-Related Risks. Reading. Addison-Wesley, MA, 1995. Jack Shirazi. Java Performance Tuning, 2nd edition. O Reilly, 2003. MI3GL 2004/2005 33