AL5L Architecture logicielle. Séance 2 Design patterns et qualité de code
|
|
- Jean-François Turgeon
- il y a 8 ans
- Total affichages :
Transcription
1 AL5L Architecture logicielle Séance 2 Design patterns et qualité de code Sébastien Combéfis lundi 24 novembre 2014
2 Ce(tte) œuvre est mise à disposition selon les termes de la Licence Creative Commons Attribution Pas d Utilisation Commerciale Pas de Modification 4.0 International.
3 Objectifs Découvrir en détails plusieurs design patterns Comprendre un design pattern Identifier quand et comment appliquer un design pattern Comprendre et utiliser des critères de qualité de code Évaluer la qualité d un code Réfactorer un code en vue de l améliorer 3
4 Première partie Design patterns
5 Design pattern Un design pattern est une solution à un problème commun Solution répétable à appliquer en design de logiciel Il s agit d un modèle qui décrit comment résoudre le problème Il ne s agit pas de code tout fait à simplement importer Accélère le développement logiciel Solution testée et prouvée adaptée pour chaque problème 5
6 Catégories I Trois catégories principales et 23 patterns Établies par le Gang of Four (GoF) en Patterns de construction (Creational) Instanciation de classes 2 Patterns structuraux (Structural) Composition de classes et d objets 3 Patterns comportementaux (Behavioural) Communication entre objets 6
7 Catégories II Les 23 patterns du GoF Construction Structurel Comportemental Abstract factory Adapter Chain of responsibility Builder Bridge Command Factory method Composite Interpreter Prototype Decorator Iterator Singleton Facade Mediator Flyweight Memento Proxy Observer State Strategy Template method Visitor 7
8 Les design patterns vous simplifient la vie! 8
9 Trois exemples Pattern Builder Construction d objets complexes Pattern Facade Interface client pour un sous-système Pattern Template Squelette d algorithme 9
10 Le pattern Builder Séparation de la construction d un objet et de son implémentation Builders Director Builder Builder 1 Builder 2... Product 1 Product
11 Contexte et application Algorithme de création d un objet complexe Indépendant de comment les objets sont assemblés Processus de construction générique Sur base d une classe abstraite 11
12 Acteurs Builder Classe abstraite pour la création de parties du produit ConcreteBuilder Construit et assemble les parties du produit Director Construit un objet en utilisant l interface Builder Product L objet complexe en cours de construction 12
13 Exemple I p u b l i c f i n a l c l a s s SebBurgerMenu private s t a t i c enum S i z e SMALL, MEDIUM, LARGE ; private s t a t i c enum Burger CLASSIC, CHEESE, BACON ; private s t a t i c enum Drink COCA, SPRITE, FANTA ; private s t a t i c enum D e s s e r t CHURROS, DONUT ; p r i v a t e f i n a l S i z e s i z e ; p r i v a t e f i n a l Burger b u r g e r ; p r i v a t e f i n a l Drink d r i n k ; p r i v a t e f i n a l D e s s e r t d e s s e r t ; p u b l i c s t a t i c f i n a l c l a s s B u i l d e r //... p r i v a t e SebBurgerMenu ( B u i l d e r b u i l d e r ) s i z e = b u i l d e r. s i z e ; b u r g e r = b u i l d e r. b u r g e r ; d r i n k = b u i l d e r. d r i n k ; d e s s e r t = b u i l d e r. d e s s e r t ; 13
14 Exemple II p u b l i c s t a t i c f i n a l c l a s s B u i l d e r // R e q u i r e d p r i v a t e f i n a l S i z e s i z e ; p r i v a t e f i n a l Burger b u r g e r ; p r i v a t e f i n a l Drink d r i n k ; // O p t i o n a l p r i v a t e D e s s e r t d e s s e r t ; p u b l i c B u i l d e r ( S i z e s i z e, Burger burger, Drink d r i n k ) t h i s. s i z e = s i z e ; t h i s. b u r g e r = b u r g e r ; t h i s. d r i n k = d r i n k ; p u b l i c B u i l d e r d e s s e r t ( D e s s e r t d e s s e r t ) t h i s. d e s s e r t = d e s s e r t ; r e t u r n t h i s ; p u b l i c SebBurgerMenu b u i l d ( ) r e t u r n new SebBurgerMenu ( t h i s ) ; 14
15 Exemple III p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) // Simple menu avec f r i t e s, burger et boisson SebBurgerMenu menu = new SebBurgerMenu. B u i l d e r ( S i z e. SMALL, Burger. CHEESE, Drink. SPRITE ). b u i l d ( ) ; System. out. p r i n t l n ( menu ) ; // Menu avancé avec un d e s s e r t en p l u s SebBurgerMenu. Builder b u i l d e r = new SebBurgerMenu. Builder ( S i z e. LARGE, Burger.BACON, Drink.COCA ) ; b u i l d e r. d e s s e r t ( D e s s e r t.donut) ; System. out. p r i n t l n ( b u i l d e r. b u i l d ( ) ) ; 15
16 Le pattern Facade Point d entrée unifié pour accéder aux fonctionnalités offertes par un sous-système Client Client Subsystem class Subsystem class Subsystem class Subsystem class Subsystem 16
17 Le pattern Facade Point d entrée unifié pour accéder aux fonctionnalités offertes par un sous-système Client Client Facade Subsystem class Subsystem class Subsystem class Subsystem class Subsystem 16
18 Contexte et application Interface simplifiée d un sous-système pour certains clients Le sous-système reste complètement accessible L implémentation peut changer, mais l interface reste stable La façade fait le lien avec des interfaces du sous-système Diminuer le couplage avec le sous-système Couplage avec les clients ou avec d autres sous-systèmes 17
19 Acteurs Facade Connait les classes responsables des requêtes Délégue les requêtes clients aux objets appropriés Classes du sous-système Ne savent pas qu elles sont derrière une façade Gèrent les requêtes transmises par le façade Implémentent les fonctionnalités du sous-système 18
20 Le pattern Template Définir le squelette d un algorithme et définir certaines opérations dans des sous-classes Client Abstract Concrete 1 Concrete 2 19
21 Contexte et application Plusieurs algorithmes avec des parties variables Factorisation de parties communes dans une sous-classe On remonte les parties communes dans la classe mère Impose un contrôle sur la liberté des sous-classes Par la définition de «hook» 20
22 Acteurs Abstract class Définit des opérations primitives abstraites Définit le squelette d un algorithme, basé sur les primitives Concrete class Implémente les opérations primitives 21
23 Exemple I c l a s s S o r t e r : metaclass = ABCMeta # Trie l e tableau tab d e f s o r t ( s e l f, tab ) : w h i l e not s e l f. _ i s S o r t e d ( tab ) : f o r i i n range ( l e n ( tab ) 1 ) : i f ( s e l f. _compare ( tab [ i ], tab [ i + 1 ] ) > 0 ) : s e l f. _swap ( tab, i, i + 1) # I n t e r v e r t i t l e s v a l e u r s d i n d i c e i e t j dans tab d e f _swap ( s e l f, tab, i, j ) : tab [ i ], tab [ j ] = tab [ j ], tab [ i ] # Teste s i l e t a b l e a u tab e s t t r i é d e f _ i s S o r t e d ( s e l f, tab ) : f o r i i n range ( l e n ( tab ) 1 ) : i f s e l f. _compare ( tab [ i ], tab [ i + 1 ] ) > 0 : r e t u r n F a l s e r e t u r n True # Compare x e t y # <0 s i x v i e n t avant y # >0 s i x v i e n t a p r è s y # =0 s i n o d e f _compare ( s e l f, x, y ) : pass 22
24 Exemple II # T r i par o r d r e c r o i s s a n t c l a s s A s c S o r t e r ( S o r t e r ) : d e f _compare ( s e l f, x, y ) : r e t u r n x y # T r i par o r d r e d é c r o i s s a n t c l a s s D e s c S o r t e r ( S o r t e r ) : d e f _compare ( s e l f, x, y ) : r e t u r n y x i f name == " main " : tab = [ 7, 2, 9, 5] p r i n t ( tab ) s o r t e r = A s c S o r t e r ( ) s o r t e r. s o r t ( tab ) p r i n t ( tab ) s o r t e r = D e s c S o r t e r ( ) s o r t e r. s o r t ( tab ) p r i n t ( tab ) 23
25 Autres patterns GoF patterns Concurrency patterns Patterns utilisés lors de la programmation multithread (Double-checking locking, Lock, Monitor, Thread pool...) Architectural patterns Patterns avec une portée plus large que les design patterns (Interceptor, MVC, n-tier, Active record...) 24
26 Deuxième partie Qualité de code
27 Refactoring I Transformation de code qui préserve son comportement A change made to the internal structure of software to make it easier to understand and cheaper to modify without changing its observable behaviour Martin Fowler Objectifs Rendre plus facile l ajout de nouveau code Améliorer le design du code existant Mieux comprendre un code Rendre le code moins ennuyeux 26
28 Refactoring II 27
29 Refactoring III Ne faire du refactoring que sur du code fonctionnel et testé Jeux de tests pour s assurer que le refactoring n a rien altéré Les problèmes de design proviennent de code......dupliqué...pas clair...compliqué 28
30 Code smell Les 22 code smells de Fowler et Beck Alternative classes with Long method different interfaces Comments Long parameter list Data class Message chains Data clumps Middle man Divergent change Parallel inheritance hierarchies Duplicated code Primitive obsession Feature envy Refused bequest Inappropriate intimacy Shotgun surgery Incomplete library class Speculative generality Large class Switch statements Lazy class Temporary field 29
31 Bien commenter son code! 30
32 Choisir ses noms 31
33 Duplicated code Deux formes de code dupliqué Duplication explicite de code identique Structure ou processus similaire Solutions Template design pattern Chain constructor... 32
34 Exemple p u b l i c f i n a l c l a s s Contact // I n s t a n c e v a r i a b l e s p r i v a t e String firstname ; p r i v a t e S t r i n g lastname ; p r i v a t e Address address ; // C o n s t r u c t o r s p u b l i c Contact ( S t r i n g l a s t n a m e ) t h i s. l a s t n a m e = l a s t n a m e ; p u b l i c Contact ( String firstname, String lastname ) t h i s. f i r s t n a m e = f i r s t n a m e ; t h i s. l a s t n a m e = l a s t n a m e ; p u b l i c Contact ( S t r i n g f i r s t n a m e, S t r i n g lastname, Address a d d r e s s ) t h i s. f i r s t n a m e = f i r s t n a m e ; t h i s. l a s t n a m e = l a s t n a m e ; t h i s. a d d r e s s = a d d r e s s ; 33
35 Après refactoring p u b l i c f i n a l c l a s s Contact p r i v a t e String firstname ; p r i v a t e S t r i n g lastname ; p r i v a t e Address address ; p u b l i c Contact ( S t r i n g l a s t n a m e ) t h i s ( n u l l, lastname, n u l l ) ; p u b l i c Contact ( String firstname, String lastname ) t h i s ( f i r s t n a m e, lastname, n u l l ) ; p u b l i c Contact ( S t r i n g f i r s t n a m e, S t r i n g lastname, Address a d d r e s s ) t h i s. f i r s t n a m e = f i r s t n a m e ; t h i s. l a s t n a m e = l a s t n a m e ; t h i s. a d d r e s s = a d d r e s s ; 34
36 Long method Méthode dont le corps comporte beaucoup d instructions Ne possède pas une seule fonctionnalité Limite la réutilisabilité Difficile à comprendre Solutions Compose method Extract method... 35
37 Exemple i n t main ( ) i n t data [ 1 5 ] ; // I n i t i a l i s a t i o n i n t i ; f o r ( i = 1 ; i <= 1 5 ; i ++) data [ i 1 ] = 42; // A f f i c h a g e p r i n t f ( " [ " ) ; i n t j ; f o r ( j = 0 ; j < 1 5 ; j ++) i f ( j == 14) p r i n t f ( "%d ", data [ j ] ) ; e l s e p r i n t f ( "%d, ", data [ j ] ) ; p r i n t f ( " ] \ n " ) ; r e t u r n 0 ; 36
38 Après refactoring v o i d f i l l T a b ( i n t data, i n t N, i n t v a l u e ) i n t i ; f o r ( i = 0 ; i < N; i ++) data [ i ] = v a l u e ; v o i d p r i n t T a b ( i n t data, i n t N) p r i n t f ( "[%d ", tab [ 0 ] ) ; i n t j ; f o r ( j = 1 ; j < N; j ++) p r i n t f ( ", %d ", data [ j ] ) ; p r i n t f ( " ] \ n " ) ; i n t main ( ) i n t N = 1 5 ; i n t data [N ] ; f i l l T a b ( data, N, 4 2 ) ; printtab ( data, N ) ; r e t u r n 0 ; 37
39 Large class Grosse classe... God Class Trop de variables d instance Trop de responsabilités Solutions Extract class Extract subclass... 38
40 Exemple c l a s s Student d e f i n i t i a l i z e ( f i r s t n a m e, lastname, day, month, year, s t u d y y e a r, c o u r s e s l i s t f i r s t n a m e = f i r s t n a m = l a s t n a m = = = y e a s t u d y y e a r = s t u d y y e a c o u r s e l i s t = c o u r s e s l i s t end d e f p r i n t n a m e puts "#@ firstname #@lastname " end d e f b i r t h y e a end d e f age end d e f i s r e g i s t e r e d ( c o u r s e c o u r s e l i s t. i n c l u d e? c o u r s e end end 39
41 Après refactoring I c l a s s Date d e f i n i t i a l i z e ( day, month, y e a r = = = y e a r end a t t r _ r e a d e r end : y e a r c l a s s Person d e f i n i t i a l i z e ( f i r s t n a m e, lastname, b i r t h d a t e f i r s t n a m e = f i r s t n a m = l a s t n a m b i r t h d a t e = b i r t h d a t e end d e f p r i n t n a m e puts "#@ firstname #@lastname " end d e f age birthdate. year end end 40
42 Après refactoring II c l a s s Student < Person d e f i n i t i a l i z e ( f i r s t n a m e, lastname, b i r t h d a t e, s t u d y y e a r, c o u r s e s l i s t ) s u p e r ( f i r s t n a m e, lastname, b i r t h d a t e s t u d y y e a r = s t u d y y e a c o u r s e l i s t = c o u r s e s l i s t end a t t r _ r e a d e r : c o u r s e s l i s t d e f i s r e g i s t e r e d ( c o u r s e c o u r s e l i s t. i n c l u d e? c o u r s e end end 41
43 Refactoring et développement agile Itérations courtes : développement, test, refactoring... Le refactoring ne doit pas affecter les fonctionnalités existantes Idéalement, tests après chaque transformation du code 42
44 Exemple I <html> <head>< t i t l e>mon A p p l i c a t i o n</ t i t l e></ head> <body> <h1>a c c u e i l</h1> <u l> < l i ><a h r e f=" page1. htm">page 1</a></ l i > < l i ><a h r e f=" page2. htm">page 2</a></ l i > < l i ><a h r e f=" page3. htm">page 3</a></ l i > </ u l> </ body> </ html> <html> <head>< t i t l e>mon A p p l i c a t i o n</ t i t l e></ head> <body> <h1>page 1</h1> <u l> < l i ><a h r e f=" page1 1.htm">Page 1</a></ l i> < l i ><a h r e f=" page1 2.htm">Page 2</a></ l i> </ u l> </ body> </ html> 43
45 Exemple II <html> <head>< t i t l e>a c c u e i l</ t i t l e></ head> < s c r i p t type=" t e x t / j a v a s c r i p t " s r c=" j q u e r y min. j s "></ s c r i p t> < s c r i p t type=" t e x t / j a v a s c r i p t " s r c=" s c r i p t. j s "></ s c r i p t> <body> <u l i d=" menu1 "> < l i ><a h r e f=" page1. htm">page 1</a></ l i > < l i ><a h r e f=" page2. htm">page 2</a></ l i > < l i ><a h r e f=" page3. htm">page 3</a></ l i > </ u l> <u l i d=" menu2 " s t y l e=" d i s p l a y : none "> < l i ><a h r e f=" page1 1.htm">Page 1</a></ l i> < l i ><a h r e f=" page1 2.htm">Page 2</a></ l i> </ u l> </ body> </ html> $ ( f u n c t i o n ( ) $ ( # menu1 li a:nth - child (1) ). c l i c k ( f u n c t i o n ( ) $ ( # menu1 ). h i d e ( ) ; $ ( # menu2 ). show ( ) ; ) ; ) ; 44
46 Exemple III <html> <head>< t i t l e>a c c u e i l</ t i t l e></ head> < s c r i p t type=" t e x t / j a v a s c r i p t " s r c=" j q u e r y min. j s "></ s c r i p t> < s c r i p t type=" t e x t / j a v a s c r i p t " s r c=" s c r i p t. j s "></ s c r i p t> <body> <u l i d="menu"></ u l> </ body> </ html> " data " : [ "id" : " menu1 ", " content " : [ " name " : " Page 1", " url " : " page1. html ", " name " : " Page 2", " url " : " page2. html ", " name " : " Page 3", " url " : " page3. html " ], "id" : " menu2 ", " content " : [ " name " : " Page 1", " url " : " page1-1. html ", " name " : " Page 2", " url " : " page1-2. html " ] ] $ ( f u n c t i o n ( ) $. getjson ( "data.json ", f u n c t i o n ( data ) //... $ ( # menu ). html ( c o n t e n t ) ; ) ; ) ; 45
47 Troisième partie Gestion de projet
48 L outil Trello 47
49 Crédits Photos des livres depuis Amazon 48
Analyse,, Conception Objet
Analyse,, Conception Objet Design Patterns Introduction Sommaire Conception Réutilisabilité Bibliothèque de classe vs. Framework Design Pattern Historique Catégories de Patterns Bibliographie O. Boissier,
Plus en détailPlan. Patrons de conception. Motivations. Design Pattern : principe. Philippe Collet
Plan Patrons de conception Philippe Collet Master 1 Informatique 2005-2006 http://deptinfo.unice.fr/twiki/bin/view/minfo/gloo Introduction Premier exemple Principes et classification Présentation des patrons
Plus en détailPatrons de Conception (Design Patterns)
Patrons de Conception (Design Patterns) Introduction 1 Motivation Il est difficile de développer des logiciels efficaces, robustes, extensibles et réutilisables Il est essentiel de comprendre les techniques
Plus en détailCours en ligne Développement Java pour le web
Cours en ligne Développement Java pour le web We TrainFrance info@wetrainfrance Programme général du cours Développement Java pour le web Module 1 - Programmation J2ee A) Bases de programmation Java Unité
Plus en détailUtilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa www.degenio.com Novembre 2008
Introduction Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa www.degenio.com Novembre 2008 Forms 10g permet l utilisation du JAVA côté client et côté application
Plus en détailTutoriel: Création d'un Web service en C++ avec WebContentC++Framework
Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework Gaël de Chalendar CEA LIST / LIC2M Journée de Présentation des Technologies WebContent INSTN 14/12/2009 Présentation de gsoap Plan
Plus en détailAlfstore workflow framework Spécification technique
Alfstore workflow framework Spécification technique Version 0.91 (2012-08-03) www.alfstore.com Email: info@alfstore.com Alfstore workflow framework 2012-10-28 1/28 Historique des versions Version Date
Plus en détailGénie Logiciel avec Ada. 4 février 2013
Génie Logiciel 4 février 2013 Plan I. Généralités II. Structures linéaires III. Exceptions IV. Structures arborescentes V. Dictionnaires I. Principes II. Notions propres à la POO I. Principes Chapitre
Plus en détailQuelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)
Quelques patterns pour la persistance des objets avec DAO Ce cours présente des modèles de conception utilisés pour effectuer la persistance des objets Université de Nice Sophia-Antipolis Version 1.4 30/8/07
Plus en détailLOG4430 : Architecture logicielle et conception avancée
LOG4430 : Architecture logicielle et conception avancée Yann-Gaël Guéhéneuc Cours 3 Bibliothèques et chargement Dynamique de composants Département de génie informatique et de génie logiciel École Polytechnique
Plus en détailTypes d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles
Types d applications pour la persistance Université de Nice Sophia-Antipolis Version 0.9 28/8/07 Richard Grin Toutes les applications n ont pas une complexité qui nécessite une architecture n- tiers Ce
Plus en détailAuto-évaluation Programmation en Java
Auto-évaluation Programmation en Java Document: f0883test.fm 22/01/2013 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INTRODUCTION AUTO-ÉVALUATION PROGRAMMATION EN
Plus en détailIntroduction à ElasticSearch
Introduction à ElasticSearch Présentée par : Romain Pignolet Lundi 7 Juillet 2014 Sommaire 1 Présentation de Elasticsearch 2 Installation et exemples simples 3 API Rest 4 Comment fonctionne Elasticsearch?
Plus en détailDesign patterns. Design patterns - définition. Design patterns - avantages
Design patterns Conception UML Implantation Java Anne Lapujade 1 Design patterns - définition 2 v Objectif : proposer des solutions standardisées à des problèmes de conception classiques v Design pattern
Plus en détailInfo0604 Programmation multi-threadée. Cours 5. Programmation multi-threadée en Java
Info0604 Programmation multi-threadée Cours 5 Programmation multi-threadée en Java Pierre Delisle Université de Reims Champagne-Ardenne Département de Mathématiques et Informatique 18 février 2015 Plan
Plus en détailVérifier la qualité de vos applications logicielle de manière continue
IBM Software Group Vérifier la qualité de vos applications logicielle de manière continue Arnaud Bouzy Kamel Moulaoui 2004 IBM Corporation Agenda Analyse de code Test Fonctionnel Test de Performance Questions
Plus en détailDéveloppement itératif, évolutif et agile
Document Développement itératif, évolutif et agile Auteur Nicoleta SERGI Version 1.0 Date de sortie 23/11/2007 1. Processus Unifié Développement itératif, évolutif et agile Contrairement au cycle de vie
Plus en détailLogiciel Libre Cours 3 Fondements: Génie Logiciel
Logiciel Libre Cours 3 Fondements: Génie Logiciel Stefano Zacchiroli zack@pps.univ-paris-diderot.fr Laboratoire PPS, Université Paris Diderot 2013 2014 URL http://upsilon.cc/zack/teaching/1314/freesoftware/
Plus en détailGOUVERNANCE DES IDENTITES ET DES ACCES ORIENTEE METIER : IMPORTANCE DE CETTE NOUVELLE APPROCHE
GOUVERNANCE DES IDENTITES ET DES ACCES ORIENTEE METIER : IMPORTANCE DE CETTE NOUVELLE APPROCHE RÉSUMÉ Depuis des années, les responsables de la sécurité de l information et les responsables opérationnels
Plus en détailHéritage presque multiple en Java (1/2)
Héritage presque multiple en Java (1/2) Utiliser deux classes ou plus dans la définition d'une nouvelle classe peut se faire par composition. class Etudiant{ int numero; Diplome d; float passeexamen(examen
Plus en détailbasée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB www.enseirb.fr/~legal Olivier Augereau Formation UML
basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB www.enseirb.fr/~legal Olivier Augereau Formation UML http://olivier-augereau.com Sommaire Introduction I) Les bases II) Les diagrammes
Plus en détailArchitecture N-Tier. Ces données peuvent être saisies interactivement via l interface ou lues depuis un disque. Application
Architecture Multi-Tier Traditionnellement une application informatique est un programme exécutable sur une machine qui représente la logique de traitement des données manipulées par l application. Ces
Plus en détailWINDOWS SHAREPOINT SERVICES 2007
WINDOWS SHAREPOINT SERVICES 2007 I. TABLE DES MATIÈRES II. Présentation des «content types» (Type de contenu)... 2 III. La pratique... 4 A. Description du cas... 4 B. Création des colonnes... 6 C. Création
Plus en détailAlignement avec les métiers par le test fonctionnel et d acceptation en projets agiles
Alignement avec les métiers par le test fonctionnel et d acceptation en projets agiles Laurent PY CEO, Smartesting Laurent.py@smartesting.com @py_laurent www.smartesting.com Guillaume Coquelle Testeur,
Plus en détailObjets et Programmation. origine des langages orientés-objet
Objets et Programmation origine des langages orientés-objet modularité, encapsulation objets, classes, messages exemples en Java héritage, liaison dynamique G. Falquet, Th. Estier CUI Université de Genève
Plus en détailLes Bonnes PRATIQUES DU TEST LOGICIEL
Les Bonnes PRATIQUES DU TEST LOGICIEL SOMMAIRE Qu est-ce que le test logiciel? Pourquoi le test est-il un maillon crucial de l ingénierie logicielle? Quels sont les différents types de tests? Qu est-ce
Plus en détailOrchestrer son cloud OpenStack avec Heat
Orchestrer son cloud OpenStack avec Heat Adrien Cunin adrien.cunin@osones.com Osones 7 juillet 2014 Adrien Cunin (Osones) Orchestrer son cloud OpenStack avec Heat 7 juillet 2014 1 / 43 Adrien Cunin (Osones)
Plus en détailIntroduction aux concepts d ez Publish
Introduction aux concepts d ez Publish Tutoriel rédigé par Bergfrid Skaara. Traduit de l Anglais par Benjamin Lemoine Mercredi 30 Janvier 2008 Sommaire Concepts d ez Publish... 3 Système de Gestion de
Plus en détailRetour d expérience RATP. Intégrer le test de performance au cœur du processus de développement agile. Challenges, techniques, résultats.
Retour d expérience RATP Intégrer le test de performance au cœur du processus de développement agile. Challenges, techniques, résultats. Les intervenants Alexis Bourgeois Chef de projet MOE (front web)
Plus en détailSavoir- Faire Offres mé1ers Offres technologiques
www.neuros.fr Savoir- Faire Offres mé1ers Offres technologiques! Audit et conseil (stratégie, organisation, urbanisation )! Assistance à maîtrise d'ouvrage! Développement d'applications métiers! Migration
Plus en détailProjet 2. Gestion des services enseignants CENTRE D ENSEIGNEMENT ET DE RECHERCHE EN INFORMATIQUE. G r o u p e :
CENTRE D ENSEIGNEMENT ET DE RECHERCHE EN INFORMATIQUE Projet 2 Gestion des services enseignants G r o u p e : B E L G H I T Y a s m i n e S A N C H E Z - D U B R O N T Y u r i f e r M O N T A Z E R S i
Plus en détailDiagramme de classes
Diagramme de classes Un diagramme de classes décrit les classes et leurs relations (associations, généralisation/spécialisation, ). classe association méthodes attributs héritage Diagramme de classes :
Plus en détailLMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour
LMI 2 Programmation Orientée Objet POO - Cours 9 Said Jabbour jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour CRIL UMR CNRS 8188 Faculté des Sciences - Univ. Artois Février 2011 Les collections
Plus en détailModélisation UML. Christine Solnon 2013-2014. INSA de Lyon - 3IF 1/140.
1/140. Modélisation UML Christine Solnon INSA de Lyon - 3IF 2013-2014 Introduction Positionnement de l UE / IF Domaines d enseignement du département IF : Système d Information Réseaux Architectures matérielles
Plus en détailBases de données - Modèle relationnel
Bases de données - Modèle relationnel Introduction SITE :http://www.univ-orleans.fr/lifo/members/mirian.halfeld/ BD - Mírian Halfeld-Ferrari p. 1 Les bases de données - Bibliographie Ullman and Widom,
Plus en détailAnalyse,, Conception des Systèmes Informatiques
Analyse,, Conception des Systèmes Informatiques Méthode Analyse Conception Introduction à UML Génie logiciel Définition «Ensemble de méthodes, techniques et outils pour la production et la maintenance
Plus en détailCQP Développeur Nouvelles Technologies (DNT)
ORGANISME REFERENCE STAGE : 26572 20 rue de l Arcade 75 008 PARIS CONTACT Couverture géographique : M. Frédéric DIOLEZ Bordeaux, Rouen, Lyon, Toulouse, Marseille Tél. : 09 88 66 17 40 Nantes, Lille, Strasbourg,
Plus en détailFOURNIR UN SERVICE DE BASE DE DONNÉES FLEXIBLE. Database as a Service (DBaaS)
FOURNIR UN SERVICE DE BASE DE DONNÉES FLEXIBLE Database as a Service (DBaaS) 1 The following is intended to outline our general product direction. It is intended for information purposes only, and may
Plus en détailAgile&:&de&quoi&s agit0il&?&
Association Nationale des Directeurs des Systèmes d Information &:&de&quoi&s agit0il&?& Pierre Delort, Président, Association Nationale des DSI http://www.andsi.fr/tag/delort/ Document confidentiel Ne
Plus en détailPrincipes. 2A-SI 3 Prog. réseau et systèmes distribués 3. 3 Programmation en CORBA. Programmation en Corba. Stéphane Vialle
2A-SI 3 Prog. réseau et systèmes distribués 3. 3 Programmation en CORBA Stéphane Vialle Stephane.Vialle@supelec.fr http://www.metz.supelec.fr/~vialle 1 Principes 2 Architecture 3 4 Aperçu d utilisation
Plus en détailConférence SIG 2011 Versailles 5-6 Octobre 2011 Atelier Technique ArcGIS for Server en 10.1
Conférence SIG 2011 Versailles 5-6 Octobre 2011 Atelier Technique ArcGIS for Server en 10.1 Gaëtan LAVENU Plan de la présentation Vision Installation et Configuration Architecture Publication de services
Plus en détailServeur d'application Client HTML/JS. Apache Thrift Bootcamp
Serveur d'application Client HTML/JS Apache Thrift Bootcamp Pré-requis La liste ci-dessous de logiciels doit être installée et opérationnelle sur la machine des participants : Compilateur thrift http://thrift.apache.org/
Plus en détailIntroduction au Génie Logiciel
Introduction au Génie Logiciel Lydie du Bousquet Lydie.du-bousquet@imag.fr En collaboration avec J.-M. Favre, I. Parissis, Ph. Lalanda Qu est-ce que le logiciel? programme, ensemble d instructions Caractéristiques
Plus en détailRetour d expérience. Le rôle du Business Analyst chez Orange. Nadia Magarino & Christophe Dufour 29 avril 2015
Retour d expérience Le rôle du Business Analyst chez Orange Nadia Magarino & Christophe Dufour 29 avril 2015 Plus de 161 000 salariés à votre service mobile entreprises internet et fixe Plus de 161 000
Plus en détailXP DAY 2009 26 mai. Erwan Alliaume Nicolas Le Coz
Qualité du code source et intégration continue XP DAY 2009 26 mai Erwan Alliaume Nicolas Le Coz www.xebia.fr / blog.xebia.fr Sommaire de la présentation La démarche Intégration continue Comment faire du
Plus en détailBases Java - Eclipse / Netbeans
Institut Galilée PDJ Année 2014-2015 Master 1 Environnements Java T.P. 1 Bases Java - Eclipse / Netbeans Il existe plusieurs environnements Java. Il est ESSENTIEL d utiliser la bonne version, et un environnement
Plus en détailRapport de Synthèse. Création d un Générateur de modèle PADL pour le langage C++ Sébastien Colladon
L Y O N Département Informatique Année 2011/2012 Rapport de Synthèse Création d un Générateur de modèle PADL pour le langage C++ Sébastien Colladon Laboratoire Ptidej de L Ecole Polytechnique de Montréal
Plus en détailIFT785 Approches Orientées Objets. FINAL Été 2002. Remise : Jeudi 19 août 2002 à 9h00 am
IFT785 Approches Orientées Objets FINAL Été 2002 2 e session d examen Début : Lundi 16 septembre 2002 à 9h00 am Remise : Jeudi 19 août 2002 à 9h00 am Professeur : Sylvain GIROUX Note : /100 points Remarques
Plus en détailChapitre VI- La validation de la composition.
Chapitre VI- La validation de la composition. Objectifs du chapitre : Expliquer les conséquences de l utilisation de règles de typage souples dans SEP. Présenter le mécanisme de validation des connexions
Plus en détailSYSTÈMES D INFORMATIONS
SYSTÈMES D INFORMATIONS Développement Modx Les systèmes de gestion de contenu Les Content Management Système (CMS) servent à simplifier le développement de sites web ainsi que la mise à jour des contenus.
Plus en détailLes méthodes Agile. Implication du client Développement itératif et incrémental
Les méthodes Agile Simon ALEXANDRE - CETIC Plan Overview Agile ne signifie pas Agile signifie Objectifs poursuivis Pourquoi les méthodes Agile apparaissent-elles? Principales causes des échecs de projets
Plus en détailMODALITES DE SUIVI DU PROJET ANNUEL DU MASTER 2 SOLUTIONS INFORMATIQUES LIBRES
MODALITES DE SUIVI DU PROJET ANNUEL DU MASTER 2 SOLUTIONS INFORMATIQUES LIBRES Département Informatique UFR Sciences 2 Boulevard Lavoisier 49045 Angers Cedex 01 Auteur : Jean-Michel Richer Email : jean-michel.richer@univ-angers.fr
Plus en détailUniversité de Bangui. Modélisons en UML
Université de Bangui CRM Modélisons en UML Ce cours a été possible grâce à l initiative d Apollinaire MOLAYE qui m a contacté pour vous faire bénéficier de mes connaissances en nouvelles technologies et
Plus en détailArchitecture Agile et développement durable
Architecture Agile et développement durable FÉLIX-ANTOINE BOURBONNAIS B.ING., M.SC., PSM Agile Tour Québec 2014 5 novembre 2014 http://www.internetlivestats.com/ ^ 2 Je suis formateur et coach Je fournis
Plus en détailJ2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation
J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation Cycle Ingénierie 2e année SIGL Dernière mise à jour : 19/10/2006 Christophe Porteneuve Threads Principes Cycle de vie Création java.lang.thread
Plus en détailProjet Active Object
Projet Active Object TAO Livrable de conception et validation Romain GAIDIER Enseignant : M. Noël PLOUZEAU, ISTIC / IRISA Pierre-François LEFRANC Master 2 Informatique parcours MIAGE Méthodes Informatiques
Plus en détailVérification formelle de la plate-forme Java Card
Vérification formelle de la plate-forme Java Card Thèse de doctorat Guillaume Dufay INRIA Sophia Antipolis Cartes à puce intelligentes Java Card : Environnement de programmation dédié. Dernières générations
Plus en détailFormula Negator, Outil de négation de formule.
Formula Negator, Outil de négation de formule. Aymerick Savary 1,2, Mathieu Lassale 1,2, Jean-Louis Lanet 1 et Marc Frappier 2 1 Université de Limoges 2 Université de Sherbrooke Résumé. Cet article présente
Plus en détailArchitecture d'entreprise : Guide Pratique de l'architecture Logique
Guides Pratiques Objecteering Architecture d'entreprise : Guide Pratique de l'architecture Logique Auteur : Version : 1.0 Copyright : Softeam Equipe Conseil Softeam Supervisée par Philippe Desfray Softeam
Plus en détailIntroduction aux «Services Web»
Introduction aux «Services Web» Sana Sellami sana.sellami@univ-amu.fr 2014-2015 Modalité de contrôle de connaissances Note de contrôle de continu Note projet Evaluation du projet la semaine du 17 novembre
Plus en détailVers une meilleure gouvernance des plateformes d ingénierie
Vers une meilleure gouvernance des plateformes d ingénierie Vincent Chartier 2012 IBM Corporation La mise en œuvre d une plateforme d ingénierie est complexe Intégrations entre produits nombreuses et complexes
Plus en détailArchitecture distribuée
Architecture distribuée Conception et développement d algorithmes distribués pour le moteur Baboukweb Jean-Christophe DALLEAU Département de Mathématiques et Informatique Université de La Réunion 26 juin
Plus en détailtech days AMBIENT INTELLIGENCE
tech days 2015 AMBIENT INTELLIGENCE techdays.microsoft.fr techdays.microsoft.fr Time To Market Demande croissante des métiers de réduire le délai de mise sur le marché Immédiateté Ergonomie, rapidité et
Plus en détailPrésentation du Modèle de Référence pour les Bibliothèques FRBR
Submitted on: 03.08.2015 Présentation du Modèle de Référence pour les Bibliothèques FRBR French translation of the original paper: Introducing the FRBR Library Reference Model. Traduit par : Mélanie Roche,
Plus en détailMettre en place une infrastructure Web nouvelle génération avec Drupal et Acquia
Mettre en place une infrastructure Web nouvelle génération avec Drupal et Acquia Pour l architecte de solutions web Table des matières Présentation générale... 3 Des outils disparates.... 4 Une gestion
Plus en détailPar Laurent DESECHALLIERS. Mastère Spécialisé en Management de Projets en Milieu Industriel. CESI de Rouen Promotion 2002/2003.
JAVA et Design Pattern Page 1/26 JAVA et Design Pattern Etude des Pattern Design Modélisation UML, Etude et critique des implémentations Java Par Laurent DESECHALLIERS Mastère Spécialisé en Management
Plus en détailChapitre I : le langage UML et le processus unifié
I. Introduction Les méthodes d analyse orientées objet sont initialement issues des milieux industriels. La préoccupation dominante de leurs auteurs est le génie logiciel, c est-àdire les principes et
Plus en détailProgrammer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr)
Programmer en JAVA par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Plan 1. Présentation de Java 2. Les bases du langage 3. Concepts avancés 4. Documentation 5. Index des mots-clés 6. Les erreurs fréquentes
Plus en détailEn face du commanditaire, on met un chef de projet qui connait le domaine (banque, administration, etc.)
Atelier «Science du projet» séance 4 8 novembre 2008 Compte rendu 1. Sébastien Larribe : la méthode AGILE, méthode de gestion de projet Sébastien Larribe part de l hypothèse que des méthodes de conception,
Plus en détailProcessus d Informatisation
Processus d Informatisation Cheminement de la naissance d un projet jusqu à son terme, deux grandes étapes : Recherche ou étude de faisabilité (en amont) L utilisateur a une idée (plus ou moins) floue
Plus en détailCP Upgrade Guide HOPEX V1R1 FR. Révisé le : 25 octobre 2013. Créé le : 16 juillet 2012. Auteur : Jérôme Horber
CP Upgrade Guide HOPEX V1R1 FR Révisé le : 25 octobre 2013 Créé le : 16 juillet 2012 Auteur : Jérôme Horber SOMMAIRE Sommaire... 2 Préambule... 3 Mettre à niveau les programmes HOPEX... 4 Mettre à niveau
Plus en détailDéveloppement d'applications Web HTML5 L'art et la manière avec Visual Studio 2015 et TFS
Avant de commencer 1. Introduction 15 2. HTML5 oui, mais pas que... 15 2.1 HTML5 16 2.2 JavaScript 17 2.3 CSS 18 3. Les outils 18 Préparation des outils et création du projet 1. Introduction 21 2. Team
Plus en détailAccélérer la transformation de vos nouveaux modèles assurances
Accélérer la transformation de vos nouveaux modèles assurances Enjeux critiques des systèmes de distribution Assurance Etude Accenture Assurances 2020 4 axes d amélioration : Articuler le SI Assurance
Plus en détailWWW.MELDANINFORMATIQUE.COM
Solutions informatiques Procédure Sur Comment créer un premier Site SharePoint 2010 Historique du document Revision Date Modification Autor 3 2013-04-29 Creation Daniel Roy 1. But.4 2. Configuration..4
Plus en détailProxies,, Caches & CDNs
Proxies,, Caches & CDNs Anthony Busson Plan Exemple de page web simple Anatomie du téléchargement d une page web Problématique Définition : Proxy, Reverse Proxy Interception, Redirection Système de cache
Plus en détailLa Latecion protection anti-intrusion Web Web Le concept «Zero effort Security» La protection des applications Extranet
REALSENTRY TM Gestion, Performance et Sécurité des infrastructures Web La Latecion protection anti-intrusion Web Web Le concept «Zero effort Security» La protection des applications Extranet L authentification
Plus en détailJava et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour http://cuiwww.unige.
: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java Michel Bonjour http://cuiwww.unige.ch/~bonjour Plan JDBC: API bas niveau pour l accès aux BD (SQL) - Introduction - JDBC et : Java, ODBC, SQL
Plus en détailRational Unified Process
Rational Unified Process For Christiane DAVOINE-GUHUR Société GICAB - Vannes Christiane.Davoine@CA-GICAB.fr Table des Matières 1 INTRODUCTION... 1 2 LES COMPOSANTS ET LES GRANDS PRINCIPES DU PROCESSUS...
Plus en détailvcloud Director Comment créer et gérer son «Cloud» Jean-Claude DAUNOIS Senior Systems Engineer VMware
vcloud Director Comment créer et gérer son «Cloud» Jean-Claude DAUNOIS Senior Systems Engineer VMware «Rendre les choses compliquées est facile. Rendre les choses faciles est compliqué.» *Dicton informatique
Plus en détailOSIATISBIZ UN SERVICE DESK HORS DU COMMUN EQUANT SOLUTIONBIZ PARTAGEONS NOS SAVOIRS EXTRAIT DU Nº9
OSIATISBIZ PARTAGEONS NOS SAVOIRS EXTRAIT DU Nº9 SOLUTIONBIZ EQUANT UN SERVICE DESK HORS DU COMMUN Gilles Deprost, responsable Knowledge Management & Tools d Equant 2F LES PHASES CLÉS DU PROJET SYNERGY
Plus en détailFormation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <jpountz@via.ecp.fr> Centrale Réseaux
Formation Webase 5 Ses secrets, de l architecture MVC à l application Web Adrien Grand Centrale Réseaux Sommaire 1 Obtenir des informations sur Webase 5 2 Composants de Webase 5 Un
Plus en détailApprendre la Programmation Orientée Objet avec le langage Java (avec exercices pratiques et corrigés)
Introduction à la POO 1. Histoire de la POO 9 2. Historique du 12 La conception orientée objet 1. Approche procédurale et décomposition fonctionnelle 13 2. La transition vers l'approche objet 14 3. Les
Plus en détail3 Octobre 2013. Les Communautés MS
3 Octobre 2013 Les Communautés MS Développement Office 365 et SharePoint 2013 : Apps ou pas Apps? Qui suis-je? Gilles Pommier Consultant sénior MCT et co-fondateur de la société SmartView http://www.smartview.fr
Plus en détailAtelier Progress Rollbase
Atelier Progress Rollbase Laurent KIEFFER : laurent@progress.com 11 Février 2014 Demonstration Application 10 Min Atelier Progress Rollbase Introduction à Rollbase 1 Rollbase avec OpenEdge 6 2 Créer l
Plus en détailGESTION DE PROJET SÉANCE 2 : LES CYCLE DE VIE D'UN PROJET
GESTION DE PROJET SÉANCE 2 : LES CYCLE DE VIE D'UN PROJET 1 Tianxiao LIU Licence Professionnelle Réseaux & Sécurité Université de Cergy-Pontoise http://depinfo.u-cergy.fr/~tliu/lpg.php PLAN Objectif et
Plus en détailBig Data. Cyril Amsellem Consultant avant-vente. 16 juin 2011. Talend 2010 1
Big Data Cyril Amsellem Consultant avant-vente 16 juin 2011 Talend 2010 1 Big Data Architecture globale Hadoop Les projets Hadoop (partie 1) Hadoop-Core : projet principal. HDFS : système de fichiers distribués
Plus en détailExtension SSO Java. Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java.
Note technique W4 Engine Extension SSO Java Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java. 1 Présentation 3 2 Custom SSO Java 4 3 Bilan 10 Sommaire Référence
Plus en détailAutomatiser le Software-Defined Data Center avec vcloud Automation Center
Automatiser le Software-Defined Data Center avec vcloud Automation Center 5 Juin 2014 2014 VMware Inc. All rights reserved. CONFIDENTIAL 2 Impact de l accélération du rythme de l entreprise DEMANDES CONSEQUENCES
Plus en détailSéance 1 Introduction aux bases de données
Introduction aux bases de données Séance 1 Introduction aux bases de données Sébastien Combéfis mardi 24 février 2015 Ce(tte) œuvre est mise à disposition selon les termes de la Licence Creative Commons
Plus en détailL enseignement de méthodes agiles dans un contexte d apprentissage actif
L enseignement de méthodes agiles dans un contexte d apprentissage actif Ruben González-Rubio Eugène Morin Balkrishna Sharma Gukhool Groupe ɛ X it C1-3019 Département de génie électrique et de génie informatique
Plus en détailWordPress Référencement naturel (SEO) Optimiser. son référencement. Daniel Roch. Préface d Olivier Andrieu
Daniel Roch Optimiser son référencement WordPress Référencement naturel (SEO) Préface d Olivier Andrieu Groupe Eyrolles, 2013, ISBN : 978-2-212-13714-9 Table des matières AVANT-PROPOS... 1 Pourquoi ce
Plus en détailSECTION 5 BANQUE DE PROJETS
SECTION 5 BANQUE DE PROJETS INF 4018 BANQUE DE PROJETS - 1 - Banque de projets PROJET 2.1 : APPLICATION LOGICIELLE... 3 PROJET 2.2 : SITE WEB SÉMANTIQUE AVEC XML... 5 PROJET 2.3 : E-LEARNING ET FORMATION
Plus en détailComment bien référencer mes sites internet? Les 100 SECRETS EN VIDÉO
Comment bien référencer mes sites internet? Les 100 SECRETS EN VIDÉO éditions Page 2/14 A propos de l auteur... Souvent défini comme «sérial-créateur», Jean-Marie PÉRON est à l origine depuis 1992 d entreprises
Plus en détailLambda! Rémi Forax Univ Paris-Est Marne-la-Vallée
Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée forax at univ-mlv dot fr - ParisJUG Java.next() - Mars 2012 What Else? Lambda == Inner class? Java a des lambdas depuis la version 1.1 Exemple utilisant
Plus en détailTP3 Intégration de pratiques agiles. 1. User Stories (1) Scénario d intégration agile. En direct-live du château
Rappel TP3 Intégration de pratiques agiles En direct-live du château 40 41 Scénario d intégration agile 1. User Stories (1) 1. Rédiger les User Stories (exigences) 2. Planifier les Itérations (quoi / quand)
Plus en détailTP1 : Initiation à Java et Eclipse
TP1 : Initiation à Java et Eclipse 1 TP1 : Initiation à Java et Eclipse Systèmes d Exploitation Avancés I. Objectifs du TP Ce TP est une introduction au langage Java. Il vous permettra de comprendre les
Plus en détailUrbanisation des systèmes d information
Urbanisation des systèmes d information 29-08-2013 Université Lyon 1, 7 Novembre 2013 Présentation Julien VILLANTI (julien.villanti@worldline.net) Unité Public Santé Transport (département Contacts) Fonctions
Plus en détailHAUTE DISPONIBILITÉ DE MACHINE VIRTUELLE AVEC HYPER-V 2012 R2 PARTIE CONFIGURATION OPENVPN SUR PFSENSE
HAUTE DISPONIBILITÉ DE MACHINE VIRTUELLE AVEC HYPER-V 2012 R2 PARTIE CONFIGURATION OPENVPN SUR PFSENSE Projet de semestre ITI soir 4ème année Résumé configuration OpenVpn sur pfsense 2.1 Etudiant :Tarek
Plus en détailLOG4430 : Architecture et conception avancée
LOG4430 : Architecture et conception avancée Abdou Maiga Patrons pour la conception d applications distribuées Département de génie informatique et de génie logiciel École Polytechnique de Montréal Guéhéneuc,
Plus en détailBases de données documentaires et distribuées Cours NFE04
Bases de données documentaires et distribuées Cours NFE04 Introduction a MongoDB Auteurs : Raphaël Fournier-S niehotta, Philippe Rigaux, Nicolas Travers prénom.nom@cnam.fr Département d informatique Conservatoire
Plus en détail