LOG4430 : Architecture logicielle et conception avancée



Documents pareils
Programmation par les Objets en Java

Méthodologies agiles. Argument. Plan. Résumé des épisodes précédents. Cinquième et dernière partie. 5. Itinéraire d un objet gâté 1

Cours 1: Java et les objets

LOG4430 : Architecture logicielle et conception avancée

LOG4430 : Architecture logicielle et conception avancée

Programmation Orientée Objet

Programmation en Java IUT GEII (MC-II1) 1

Package Java.util Classe générique

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

Cours en ligne Développement Java pour le web

IRL : Simulation distribuée pour les systèmes embarqués

JAVA TD0. Prise en main du langage Environnement de base JAVA 1

Jacques Lonchamp. Conception. d applications en Java/JEE. Principes, patterns et architectures

LOG4430 : Architecture et conception avancée

Java 1.5 : principales nouveautés

Derrière toi Une machine virtuelle!

Java c est quoi? Java pourquoi?

Héritage presque multiple en Java (1/2)

Introduction aux Bases de Données Relationnelles Conclusion - 1

LOG4430 : Architecture logicielle et conception avancée

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Évaluation et implémentation des langages

Objets et Programmation. origine des langages orientés-objet

S7 Le top 10 des raisons d utiliser PHP pour moderniser votre existant IBM i

Java Aspect Components (JAC)

11 Février 2014 Paris nidays.fr. ni.com

10. Base de données et Web. OlivierCuré

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Cours 1 : La compilation

IFT3902 : (Gestion de projet pour le) développement, (et la) maintenance des logiciels

Corrigé des exercices sur les références

Environnements de Développement

Université de Montréal. Une architecture pour l évaluation qualitative de l impact de la programmation orientée aspect. par Jean-Yves Guyomarc h

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)

Patrons de Conception (Design Patterns)

Cours. Cours 8 : Révisions. Importance. Interface homme-machine

Auto-évaluation Programmation en Java

Bases Java - Eclipse / Netbeans

[APPLICATON REPARTIE DE VENTE AUX ENCHERES]

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

Machines virtuelles Cours 1 : Introduction

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <jpountz@via.ecp.fr> Centrale Réseaux

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

Présentations personnelles. filière IL

API04 Contribution. Apache Hadoop: Présentation et application dans le domaine des Data Warehouses. Introduction. Architecture

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

IFT3902 : (Gestion de projet pour le) développement, (et la) maintenance des logiciels

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

Table des matières Introduction Démarrage Les composants graphiques... 26

Programme ASI Développeur

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée

Initiation à JAVA et à la programmation objet.

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Projet de programmation (IK3) : TP n 1 Correction

IFT785 Approches Orientées Objets. FINAL Été Remise : Jeudi 19 août 2002 à 9h00 am

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

Généralités sur le Langage Java et éléments syntaxiques.

Chapitre VI- La validation de la composition.

Travaux soutenus par l ANR. Jean-François CAPURON (DGA) Bruno LEGEARD (Smartesting)

Initiation au HPC - Généralités

TD/TP PAC - Programmation n 3

Composants logiciels Exemples : Java Beans, Enterprise Java Beans

IFT6251 : Sujets spéciaux en génie logiciel

2 Chapitre 1 Introduction

Développement Logiciel

1. Développement embarqué. André KPOZEHOUE DOMAINES DE COMPETENCES CONNAISSANCES TECHNIQUES

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

Programmation Par Objets

Devenez un véritable développeur web en 3 mois!

Druais Cédric École Polytechnique de Montréal. Résumé

UML 2.0. (IUT, département informatique, 1 re année) Laurent AUDIBERT

JavaServer Pages (JSP)

Argument-fetching dataflow machine de G.R. Gao et J.B. Dennis (McGill, 1988) = machine dataflow sans flux de données

as Architecture des Systèmes d Information

TP1 : Initiation à Java et Eclipse

Efficient Object Versioning for Object- Oriented Languages From Model to Language Integration

Design patterns. Design patterns - définition. Design patterns - avantages

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

Projet Active Object

Analyse des logiciels d application spécialisée pour le courtage en épargne collective

2. Comprendre les définitions de classes

Talend Technical Note

Intégration de l interface graphique de Ptidej dans Eclipse

Groupe Eyrolles, 2004 ISBN :

Les Langages Informatiques

Auto-évaluation Aperçu de l architecture Java EE

30.avr.10 Présentation miniprojet. 9.mars.10 Cours 3 4.mai.10 Cours C mars.10 Cours 4 11.mai.10 Cours C++ 2

Introduction aux composants logiciels : JavaBeans Master des Technologies de l'internet

Entraînement au concours ACM-ICPC

Messagerie asynchrone et Services Web

Remote Method Invocation Les classes implémentant Serializable

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

5.5 Utiliser le WiFi depuis son domicile

Intégration de systèmes

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Alfstore workflow framework Spécification technique

Mise en œuvre des serveurs d application

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

Transcription:

LOG4430 : Architecture logicielle et conception avancée Yann-Gaël Guéhéneuc Applications de base de la conception orientée aspect : surveillance, traçage et profilage Partie 1/4 Histoire Département de génie informatique et de génie logiciel École Polytechnique de Montréal Guéhéneuc 2009

Applications de base de la conception orientée aspect 1. Contexte 2. Introduction aux aspects 3. Conception par aspects 4. Exemples 5. Avantages et inconvénients 2/19

1. Contexte Pensez à la source de tous les maux en génie logiciel? 3/19

Following slides courtesy of Gregor Kiczales, original available at [http://www.cs.ubc.ca/~gregor/papers/kiczales-java-one-04-aop-panel.ppt] 4/19

objects are intuitive Vous pensez intuitivement a des objets? Points, lignes Surfaces de dessin (Drawing) GUI Widgets Display Point * 2 Shape Line getx() gety() setx(int) sety(int) getp1() getp2() setp1(point) setp2(point) 5/19

objects are not intuitive objects are intuitive En 1969, la plupart des programmeurs auraient utilises la difficile conception et l implantation suivante! 2 4 22 12 65 93 43 86 29 65 + collection of procedures to operate on and manage table entries 6 7 5 8 6/19

OOP not intuitive intuitive La programmation par objets Inventée en 1961 A peu près au même moment que la programmation structurée Devient «par objets» en 1967 Rend le code de simulation plus proche du modèle original 7/19

Aparté 8/19

Aparté Ole-Johan Dahl 12 octobre 1931 29 juin 2002 Norvégien Père de Simula et de la PPO Récipiendaire ACM A.M. Turing Award IEEE John von Neumann Medal Développe l idée de la PPO dans les années 1950 au Centre de calculs norvégien (Norsk Regnesentral) http://heim.ifi.uio.no/~olejohan/ 9/19

Aparté Kristen Nygaard 27 aout 1926 19 aout 2002 Norvégien Père de Simula et de la PPO Récipiendaire ACM A.M. Turing Award IEEE John von Neumann Medal Développe l idée de la PPO dans les années 1950 au Centre de calculs norvégien (Norsk Regnesentral) http://en.wikipedia.org/wiki/kristen_nygaard 10/19

OOP intuitive Qu est-ce la programmation par objets? Une façon de penser Objets, classes, hiérarchies Des mécanismes de soutient de cette pensée Classes, interfaces, encapsulation, polymorphisme Une façon de Rendre le code plus proche de sa conception Améliorer la modularité de la conception et du code Avec de nombreuses implantations Styles, bibliothèques, extension ad-hoc 11/19

OOP MVC Observer Pattern Bonne modularité de la conception mais faible modularité de l implantation class Point extends Shape { private int x = 0, y = 0; int getx() { return x; } int gety() { return y; } Display 1 * Shape } void setx(int x) { this.x = x; display.update(this); } void sety(int y) { this.y = y; display.update(this); } Point getx() gety() setx(int) sety(int) 2 Line getp1() getp2() setp1(point) setp2(point) 12/19

OOP MVC AOP Observer Pattern Pendant ce temps la Début des années 80 (peut-être même plus tôt) D autres travaillaient Structure «entrecoupantes» Mécanismes Réflexion comportementale MOP Programmation orientée sujets Le terme «programmation par aspects» apparaît en 1997 13/19

OOP AOP aspect ObserverPattern { private Display Shape.display; pointcut change(): call(void figures.point.setx(int)) call(void Point.setY(int)) call(void Line.setP1(Point)) call(void Line.setP2(Point)) call(void Shape.); after(shape s) returning: change() && target(s) { s.display.refresh(); } } Display ObserverPattern Point 1 2 * Shape Line getx() gety() setx(int) sety(int) getp1() getp2() setp1(point) setp2(point) 14/19

OOP AOP aspect ObserverPattern { private Display Shape.display; pointcut change(): call(void figures.point.setx(int)) call(void Point.setY(int)) call(void Line.setP1(Point)) call(void Line.setP2(Point)) call(void Shape.); after(shape s) returning: change() && target(s) { s.display.refresh(); } } Display ObserverPattern Point 1 2 * Shape Line getx() gety() setx(int) sety(int) getp1() getp2() setp1(point) setp2(point) 15/19

OOP AOP Maintenant, est-ce que vous pourriez appeler une classe «ObserverPattern»? 16/19

OOP AOP Qu est-ce la programmation par aspects? Une façon de penser Aspects, structures entrecoupantes Des mécanismes de soutient de cette pensée Points de jointure, points de coupe, «advice» Une façon de Rendre le code encore plus proche de sa conception Améliorer la modularité de la conception et du code Avec de nombreuses implantations Styles, bibliothèques, extension ad-hoc 17/19

1. Contexte Autres aspects? Patron de conception Sureté des fils d exécution Swing Application de politiques Authentification, synchronisation Gestion des transactions Débogage Logging 18/19

1. Contexte IBM rapporte Implémentation de politiques 15 a 30% d amélioration de la qualité Gains en productivités significatifs Popularisation de logiciels complexes De nouvelles opportunités d affaires 19/19