Détection et correction des défauts de conception

Slides:



Advertisements
Présentations similaires
Cliquez pour modifier les styles du texte du masque Deuxième niveau Troisième niveau Quatrième niveau Cinquième niveau IVOA Inerop meeting 09/20/2006 Moscow.
Advertisements

« Gen Y- Why? » Chantal Westgate
Produit Gammes Nomenclatures Modules Techniques Prix de Revient Prix de Vente Modules Techniques Client Marges Mise en route Temps Unitaire Prix (Ex:
Quelle heure est-il?.
Portée des variables VBA & Excel
Gestion des événements (suite)
Calculs de complexité d'algorithmes
Quelle est la date de ton anniversaire?
Quelle heure est-il?.
Time with minutes French II Le 30 Octobre.
Cours MIAGE « Architectures Orientées Services » Henry Boccon-Gibod 1 Architectures Orientées Services Composants de Service Exemple pratique de développement.
JXDVDTEK – Une DVDthèque en Java et XML
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
LICENCE MIAGE Introduction Programmation Orientée Objet JAVA philippe
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
Analyse de la variance à un facteur
What is todays date and when is your birthday Ask someone what star sign they are and answer Say and ask for the time Say what you do for your birthday.
Copyright © 2004, SAS Institute Inc. All rights reserved. Processus Stockés SAS une perspective analytique Sylvain Tremblay SAS Canada 25 avril 2006.
Les requêtes La Requête est une méthode pour afficher les enregistrements qui répondent à des conditions spécifiques. La requête est donc un filtre.
Développement d’applications web
Contrôles d'accès aux données
44 Contrôle du déroulement du programme. 4-2 Objectifs A la fin de ce cours, vous serez capables de : Utiliser les constructions de prise de décision.
Exposé de 3ème année Refactoring. 28 novembre 2013 Merci de votre venue Champs Sur Marne, France Présentateur: M. Damien Trouillet Apprenti.
Langage Oriente Objet Cours 4.
Principes de persistance dans les applications orienté objet
Magnets fiche projet / project sheet IAFACTORY THE MAGNETIC FACTORY magnets. IAFACTORY | conseil en architecture de linformation | |
1 CLUB DES UTILISATEURS SAS DE QUÉBEC COMMENT TRANSFORMER UN PROGRAMME SAS EN TÂCHE PLANIFIÉE SOUS WINDOWS Présentation de Jacques Pagé STRiCT Technologies.
Job Interview. Francais 3 Regulier (1 Oral Formative Assessment, 1 Written Formative Assessment, 1 Vocab Quiz Formative Assessment.
77 Utilisation des classes (suite). 7-2 Objectifs A la fin de ce cours, vous serez capables de : Définir des méthodes surchargées dans une classe Fournir.
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.

66 Utilisation des classes et des objets. 6-2 Objectifs A la fin de ce cours, vous serez capables de : Créer de nouvelles classes à laide de Eclipse Utiliser.
Révision Unité 1.
Programmation concurrente
IFT 6800 Atelier en Technologies d’information
Objectives Revise the numbers Say and ask for the time in French Say when you do different activities Ecrivez la date.
Comment choisir un métier…
Quelle heure est-il ??. THE TIME: OCLOCK IL EST HEURE IL EST + + HEURES etc.
COURS DE PROGRAMMATION ORIENTEE OBJET :
CSI 1502 Principes fondamentaux de conception de logiciels
Nous finissons Je regarde.. Le Présent Ils vendent.
How many of these flags do you recognise? Work with your partner to see if you know many – write them down - some will crop up shortly!
How many of these flags do you recognise? Work with your partner to see if you know many – write them down - some will crop up shortly!
Agreement. Send someone from each table to grab a worksheet.
99 Réutilisation du code grâce à l'héritage. 9-2 Objectifs À la fin de ce cours, vous serez capables de : Définir l'héritage Utiliser l'héritage pour.
Chapitre 3 Les bibliothèques de balises JSP et la JSTL
Structures des données
Quelle heure est-il? What time is it ?.
Objectifs À la fin de ce cours, vous serez capables de :
Repetez

Gérer la sécurité des mots de passe et les ressources
01. Liste des noms de candidats avec leur date de naissance.
LES PILES ET FILES.
Bonjour!! Pour être prêt: Répondez aux questions:
Chapitre 6.2 Les curseurs Cours SGBD 3A Mme hkimi Jihène
To practice: Quantities Un, une, des, de Du, de la, de l’, de Le, la, l’, les.
Variables et accès en Java. Déclaration des variables final transient static private Printer hp; transient => ne doivent pas être sérialisées volatile.
Créer des packages.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Les erreurs communes en Java.
Le pluriel des articles, noms et adjectifs
IFT 232 Méthodes de Conception Orientées Objets Introduction.
THE ADJECTIVES: BEAU, NOUVEAU AND VIEUX 1.
Héritage Conception par Objet et programmation Java
Irregular Adjectives Not all adjectives are made the same.
Welcome everyone.
Créez des applications Silverlight 3 David Rousset Relations Techniques avec les développeurs Microsoft France
Transcription de la présentation:

Détection et correction des défauts de conception Cours ift3912, responsable du cours: Bruno Dufor Démonstrateurs : Marouane Kessentini, Hassen grati 22/03/2010

Détecter les défauts de ce joueur? Joueur de référence Tout être différent, sortant de la norme, est considéré comme fou. [Eric Cantona] Calcul de similarité Détecter les défauts de ce joueur? Joueur de référence

Contexte Défaut de conception des problèmes d'implémentation et de conception provenant de ''mauvais'' choix conceptuels [Brown et al., 1998]

Exemples de défaut de conception: Blob Blob : “Procedural-style design leads to one object with a lion’s share of the responsibilities while most other objects only hold data or execute simple processes ” (Brown et al.’98)

Exemple du blob

Exemple du blob

Exemple du blob

Exemples de défaut de conception: Spaghetti code Spaghetti code : “Ad hoc software structure makes it difficult to extend and optimize code. ” (Brown et al.’98)

Exemples de défaut de conception: Functionnal Decomposition Functionnal decomposition : “ Procedural design in an OO language” (Brown et al.’98)

Contexte Comment détecter les défauts de conception?

Détection des défauts

Détection des défauts Plusieurs techniques utilisées Limites Métriques (Moha et al. ’08, Marinescu et al. ’04) Visualisation (Dhambri et al. ’08, Langelier et. ’05) Méta-heuristiques (Harman et al. ’07, O’Keeffe et al. ’08) Limites Listes exhaustives des défauts de conception Difficile de définir les défauts Ordonner les défauts selon un degré de risque Deviance from Perfection is a Better Criterion than Closeness to Evil when Identifying Risky Code

Contexte Refactoring

Refactoring JDT has actions for refactoring Java code

Refactoring Refactoring actions rewrite source code Within a single Java source file Across multiple interrelated Java source files Refactoring actions preserve program semantics Does not alter what program does Just affects the way it does it Encourages higher code quality Makes it easier to rewrite poor code

Refactoring Full preview of all ensuing code changes Programmer can veto individual changes List of changes Screen shot shows Extract Method applied to the print statement in HelloWorld.main method. “before” vs. “after”

Refactoring Growing catalog of refactoring actions Rename {field, method, class, package} Move {field, method, class} Extract method Extract local variable Inline local variable …

Extract Method Crée une nouvelle méthode encapsulant les éléments sélectionnés, et remplace toutes les références à ces éléments (même ailleurs dans le code), par un appel vers cette méthode.cette fonction permet de rapidement nettoyer une méthode trop longue en la découpant en éléments singuliers.

Rename Move Renomme l'élément sélectionné. Déplace l'élément sélectionné, par exemple enlever la classe du paquetage actuel, et la place dans un autre paquetage

Change Method Signature Modifie la signature de la méthode en cours, c'est-à-dire ses droits d'accès (public / private / protected / default). Peuvent également être modifiés par cet assistant : le type du résultat, l'ordre, le nom et le type des paramètres et les déclarations d'exceptions.

Extract Local Variable... De la même manière que Extract Method, cette fonction crée une nouvelle variable assignée à l'expression sélectionnée. Convert Local Variable to Field Transforme une variable locale, définie dans une méthode, en champ de classe.

Push Down, Pull Up Ces deux fonctions marchent dans le même sens, mais avec des directions différentes : elles déplacent la sélection respectivement vers la sous-classe ou la superclasse actuelle.