Yann-Gaël Guéhéneuc | École Polytechnique de Montréal (original) (raw)

Papers by Yann-Gaël Guéhéneuc

Research paper thumbnail of Object-oriented reengineering

The ability to reengineer object-oriented legacy systems has become a vital matter in today's sof... more The ability to reengineer object-oriented legacy systems has become a vital matter in today's software industry. Early adopters of the object-oriented programming paradigm are now facing the problem of transforming their object-oriented “legacy” systems into full-fledged frameworks. To address this problem, a series of workshops has been organised to set up a forum for exchanging experiences, discussing solutions, and exploring new ideas.

Research paper thumbnail of Performance Analysis of Metaheuristic and Constraint Programming Approaches to Generate Structural Test Cases

Structural test case generation has been carried out by various approaches in software testing. M... more Structural test case generation has been carried out by various approaches in software testing. Metaheuristics and constraint programming approaches are two of the more important approaches used for generating structural test cases [1],[2]. However, both of these approaches have limitations, which prevent them to be used in various applications, like wireless communication and aeronautical engineering, because the problems in these areas involve variables with large domains and complex constraints.

Research paper thumbnail of Détection et correction automatique des défauts de conception dans les architectures à objets

Résumé: Les défauts de conception sont à rapprocher des patrons de conception qui sont aujourd'hu... more Résumé: Les défauts de conception sont à rapprocher des patrons de conception qui sont aujourd'hui utilisés et étudiés dans l'industrie et la recherche académique: les patrons de conception proposent de bonnes solutions à des problèmes récurrents dans les architectures à objets, tandis que les défauts de conception sont de mauvaises solutions. La détection et la correction automatique des défauts de conception sont des enjeux importants pour faciliter la compréhension, l'évolution et la maintenance des architectures à objets.

Research paper thumbnail of Mendel: A Model, Metrics, and Rules to Understand Class Hierarchies

Abstract Inheritance is an important mechanism when developing object-oriented programs with clas... more Abstract Inheritance is an important mechanism when developing object-oriented programs with class-based programming languages: it enables subtyping, polymorphism, and code reuse. Inheritance is also known as a difficult feature to grasp and to use correctly because of its many purposes. We propose a model of inheritance to help understand class hierarchies of class-based object-oriented programs. We define metrics and rules to highlight interesting classes and behaviours with respect to inheritance.

Research paper thumbnail of Perception and Reality: What are Design Patterns Good For?

Abstract We present a study of the impact of design patterns on quality attributes. An empirical ... more Abstract We present a study of the impact of design patterns on quality attributes. An empirical study is performed by asking respondents their evaluations of the impact of all design patterns on several quality attributes. We present detailed results for three design patterns (Abstract Factory, Composite, and Flyweight) and three quality attributes (reusability, understandability, and expendability).

Research paper thumbnail of A novel process and its implementation for the multi-objective miniaturization of software

ABSTRACT Smart phones, gaming consoles, wireless routers are ubiquitous; the increasing diffusion... more ABSTRACT Smart phones, gaming consoles, wireless routers are ubiquitous; the increasing diffusion of such devices with limited resources, together with society's unsatiated appetite for new applications, pushes companies to miniaturize their programs. Miniaturizing a program for a hand-held device is a time-consuming task often requiring complex decisions. Companies must accommodate conflicting constraints: customers' satisfaction may be in conflict with a device's limited storage and memory.

Research paper thumbnail of Virtual Machines

Computing machine The fundamental of computer science is to provide a universal computational fra... more Computing machine The fundamental of computer science is to provide a universal computational framework to compute algorithms. An algorithm defines a set of data and the sequences of instructions to manipulate that data. The computation of the algorithm consists in following the instructions to transform the data and to obtain a result. The machine performing the computation of an algorithm is a computing machine. There exists four main types of computing machines, depending on their abstractness.

Research paper thumbnail of Ptidej: A Tool Suite

Abstract Ptidej is a tool suite dedicated to the analysis and maintenance of object-oriented arch... more Abstract Ptidej is a tool suite dedicated to the analysis and maintenance of object-oriented architectures. It includes four tools:(1) SAD, a tool for the detection and correction of software architecture defects;(2) EPI, a tool for the efficient identification of design patterns occurrences in a program;(3) DRAM, a tool for the visualisation of the static and dynamic data of programs with adjacency matrices; and (4) Aspects, a tool for modeling and computing metrics on aspect-oriented abstractions.

Research paper thumbnail of IDS: An Immune-inspired Approach for the Detection of Software Design Smells

Abstract We propose a parallel between object-oriented system designs and living creatures. We su... more Abstract We propose a parallel between object-oriented system designs and living creatures. We suggest that, like any living creature, system designs are subject to diseases, which are design smells (code smells and anti patterns). Design smells are conjectured in the literature to impact the quality and life of systems and, therefore, their detection has drawn the attention of both researchers and practitioners with various approaches.

Research paper thumbnail of Ptidej: Promoting patterns with patterns

Abstract We introduce the Ptidej project and its tool suite to evaluate and to enhance software q... more Abstract We introduce the Ptidej project and its tool suite to evaluate and to enhance software quality by promoting patterns. First, we summarise the components of the tool suite and describe its implementation in Java, which uses several architectural, design, and language patterns. Then, we take position on issues related to pattern claims, choices, uses, and limits from our experience with pattern definition, formalisation, use for reverse-engineering and for implementation.

Research paper thumbnail of Divide-by-zero exception raising via branch coverage

In this paper, we discuss how a search-based branch coverage approach can be used to design an ef... more In this paper, we discuss how a search-based branch coverage approach can be used to design an effective test data generation approach, specifically targeting divide-by-zero exceptions. We first propose a novel testability transformation combining approach level and branch distance.

Research paper thumbnail of ADvISE: Architectural Decay in Software Evolution

Abstract Software systems evolve continuously, requiring continuous maintenance and development. ... more Abstract Software systems evolve continuously, requiring continuous maintenance and development. Consequently, their architecture tends to degrade with time as it becomes less relevant to new, emerging requirements. Therefore, stability or resilience is a primary criterion for evaluating an architecture. In this paper, we propose a quantitative approach to study the evolution of the architecture of object oriented systems over time.

Research paper thumbnail of Is it a bug or an enhancement?: a text-based approach to classify change requests

Abstract Bug tracking systems are valuable assets for managing maintenance activities. They are w... more Abstract Bug tracking systems are valuable assets for managing maintenance activities. They are widely used in open-source projects as well as in the software industry. They collect many different kinds of issues: requests for defect fixing, enhancements, refactoring/restructuring activities and organizational issues. These different kinds of issues are simply labeled as" bug" for lack of a better classification support or of knowledge about the possible kinds.

Research paper thumbnail of Quantitative approaches in object-oriented software engineering

Abstract This report summarizes the contributions and debates of the 5th International ECOOP Work... more Abstract This report summarizes the contributions and debates of the 5th International ECOOP Workshop on Quantitative Approaches in Object-Oriented Software Engineering (QAOOSE 2001), which was held in Budapest on 18-19 June, 2001. The objective of the QAOOSE workshop series is to present, discuss and encourage the use of quantitative methods in object-oriented software engineering research and practice.

Research paper thumbnail of Java reflection exercises, correction, and FAQs

This document summarizes the exercices given to the EMOOSE students for the practical sessions of... more This document summarizes the exercices given to the EMOOSE students for the practical sessions of the course on Reflection. These practical sessions took place on the 18th, 19th, and 20th of December 2001. During the practical sessions, the students met the following topics:

Research paper thumbnail of Cerberus: Tracing requirements to source code using information retrieval, dynamic analysis, and program analysis

Abstract The concern location problem is to identify the source code within a program related to ... more Abstract The concern location problem is to identify the source code within a program related to the features, requirements, or other concerns of the program. This problem is central to program development and maintenance. We present a new technique called prune dependency analysis that can be combined with existing techniques to dramatically improve the accuracy of concern location.

Research paper thumbnail of Software evolution the need for empirical evidence

An intrinsic property of software is its malleability, the fact that it may change and evolve. So... more An intrinsic property of software is its malleability, the fact that it may change and evolve. Software evolution is costly, because software systems tend to be highly complex and large. They are highly humanintensive and risky, because unplanned and undisciplined changes in any software system of realistic size risk degrading software quality and may produce unwanted and unexpected side effects.

Research paper thumbnail of Decor: a tool for the detection of design defects

Abstract Software engineers often need to identify design defects, recurring design problems that... more Abstract Software engineers often need to identify design defects, recurring design problems that hinder the development process, to improve and assess the quality of their systems. However, this is di±cult because of the lack of specifications and tools. We propose Decor, a method to specify design defects systematically and to generate automatically detection algorithms.

Research paper thumbnail of A quality model for design patterns

Abstract Design patterns are high level building blocks that are claimed to promote elegance in o... more Abstract Design patterns are high level building blocks that are claimed to promote elegance in object-oriented programs by increasing flexibility, scalability, usability, reusability, and robustness. However, there is also some evidence that design patterns do not intrinsically promote quality. We believe that the problem of quality with design patterns comes both from the design patterns themselves and from their misuse. Unfortunately, little work has attempted so far to study the quality characteristics of design patterns rigorously.

Research paper thumbnail of Using explanations for design-patterns identification

Abstract Design patterns describe micro-architectures that solve recurrent architectural problems... more Abstract Design patterns describe micro-architectures that solve recurrent architectural problems in objectoriented programming languages. It is important to identify these micro-architectures during the maintenance of object-oriented programs. But these micro-architectures often appear distorted in the source code. We present an application of explanation-based constraint programming for identifying these distorted micro-architectures.

Research paper thumbnail of Object-oriented reengineering

The ability to reengineer object-oriented legacy systems has become a vital matter in today's sof... more The ability to reengineer object-oriented legacy systems has become a vital matter in today's software industry. Early adopters of the object-oriented programming paradigm are now facing the problem of transforming their object-oriented “legacy” systems into full-fledged frameworks. To address this problem, a series of workshops has been organised to set up a forum for exchanging experiences, discussing solutions, and exploring new ideas.

Research paper thumbnail of Performance Analysis of Metaheuristic and Constraint Programming Approaches to Generate Structural Test Cases

Structural test case generation has been carried out by various approaches in software testing. M... more Structural test case generation has been carried out by various approaches in software testing. Metaheuristics and constraint programming approaches are two of the more important approaches used for generating structural test cases [1],[2]. However, both of these approaches have limitations, which prevent them to be used in various applications, like wireless communication and aeronautical engineering, because the problems in these areas involve variables with large domains and complex constraints.

Research paper thumbnail of Détection et correction automatique des défauts de conception dans les architectures à objets

Résumé: Les défauts de conception sont à rapprocher des patrons de conception qui sont aujourd'hu... more Résumé: Les défauts de conception sont à rapprocher des patrons de conception qui sont aujourd'hui utilisés et étudiés dans l'industrie et la recherche académique: les patrons de conception proposent de bonnes solutions à des problèmes récurrents dans les architectures à objets, tandis que les défauts de conception sont de mauvaises solutions. La détection et la correction automatique des défauts de conception sont des enjeux importants pour faciliter la compréhension, l'évolution et la maintenance des architectures à objets.

Research paper thumbnail of Mendel: A Model, Metrics, and Rules to Understand Class Hierarchies

Abstract Inheritance is an important mechanism when developing object-oriented programs with clas... more Abstract Inheritance is an important mechanism when developing object-oriented programs with class-based programming languages: it enables subtyping, polymorphism, and code reuse. Inheritance is also known as a difficult feature to grasp and to use correctly because of its many purposes. We propose a model of inheritance to help understand class hierarchies of class-based object-oriented programs. We define metrics and rules to highlight interesting classes and behaviours with respect to inheritance.

Research paper thumbnail of Perception and Reality: What are Design Patterns Good For?

Abstract We present a study of the impact of design patterns on quality attributes. An empirical ... more Abstract We present a study of the impact of design patterns on quality attributes. An empirical study is performed by asking respondents their evaluations of the impact of all design patterns on several quality attributes. We present detailed results for three design patterns (Abstract Factory, Composite, and Flyweight) and three quality attributes (reusability, understandability, and expendability).

Research paper thumbnail of A novel process and its implementation for the multi-objective miniaturization of software

ABSTRACT Smart phones, gaming consoles, wireless routers are ubiquitous; the increasing diffusion... more ABSTRACT Smart phones, gaming consoles, wireless routers are ubiquitous; the increasing diffusion of such devices with limited resources, together with society's unsatiated appetite for new applications, pushes companies to miniaturize their programs. Miniaturizing a program for a hand-held device is a time-consuming task often requiring complex decisions. Companies must accommodate conflicting constraints: customers' satisfaction may be in conflict with a device's limited storage and memory.

Research paper thumbnail of Virtual Machines

Computing machine The fundamental of computer science is to provide a universal computational fra... more Computing machine The fundamental of computer science is to provide a universal computational framework to compute algorithms. An algorithm defines a set of data and the sequences of instructions to manipulate that data. The computation of the algorithm consists in following the instructions to transform the data and to obtain a result. The machine performing the computation of an algorithm is a computing machine. There exists four main types of computing machines, depending on their abstractness.

Research paper thumbnail of Ptidej: A Tool Suite

Abstract Ptidej is a tool suite dedicated to the analysis and maintenance of object-oriented arch... more Abstract Ptidej is a tool suite dedicated to the analysis and maintenance of object-oriented architectures. It includes four tools:(1) SAD, a tool for the detection and correction of software architecture defects;(2) EPI, a tool for the efficient identification of design patterns occurrences in a program;(3) DRAM, a tool for the visualisation of the static and dynamic data of programs with adjacency matrices; and (4) Aspects, a tool for modeling and computing metrics on aspect-oriented abstractions.

Research paper thumbnail of IDS: An Immune-inspired Approach for the Detection of Software Design Smells

Abstract We propose a parallel between object-oriented system designs and living creatures. We su... more Abstract We propose a parallel between object-oriented system designs and living creatures. We suggest that, like any living creature, system designs are subject to diseases, which are design smells (code smells and anti patterns). Design smells are conjectured in the literature to impact the quality and life of systems and, therefore, their detection has drawn the attention of both researchers and practitioners with various approaches.

Research paper thumbnail of Ptidej: Promoting patterns with patterns

Abstract We introduce the Ptidej project and its tool suite to evaluate and to enhance software q... more Abstract We introduce the Ptidej project and its tool suite to evaluate and to enhance software quality by promoting patterns. First, we summarise the components of the tool suite and describe its implementation in Java, which uses several architectural, design, and language patterns. Then, we take position on issues related to pattern claims, choices, uses, and limits from our experience with pattern definition, formalisation, use for reverse-engineering and for implementation.

Research paper thumbnail of Divide-by-zero exception raising via branch coverage

In this paper, we discuss how a search-based branch coverage approach can be used to design an ef... more In this paper, we discuss how a search-based branch coverage approach can be used to design an effective test data generation approach, specifically targeting divide-by-zero exceptions. We first propose a novel testability transformation combining approach level and branch distance.

Research paper thumbnail of ADvISE: Architectural Decay in Software Evolution

Abstract Software systems evolve continuously, requiring continuous maintenance and development. ... more Abstract Software systems evolve continuously, requiring continuous maintenance and development. Consequently, their architecture tends to degrade with time as it becomes less relevant to new, emerging requirements. Therefore, stability or resilience is a primary criterion for evaluating an architecture. In this paper, we propose a quantitative approach to study the evolution of the architecture of object oriented systems over time.

Research paper thumbnail of Is it a bug or an enhancement?: a text-based approach to classify change requests

Abstract Bug tracking systems are valuable assets for managing maintenance activities. They are w... more Abstract Bug tracking systems are valuable assets for managing maintenance activities. They are widely used in open-source projects as well as in the software industry. They collect many different kinds of issues: requests for defect fixing, enhancements, refactoring/restructuring activities and organizational issues. These different kinds of issues are simply labeled as" bug" for lack of a better classification support or of knowledge about the possible kinds.

Research paper thumbnail of Quantitative approaches in object-oriented software engineering

Abstract This report summarizes the contributions and debates of the 5th International ECOOP Work... more Abstract This report summarizes the contributions and debates of the 5th International ECOOP Workshop on Quantitative Approaches in Object-Oriented Software Engineering (QAOOSE 2001), which was held in Budapest on 18-19 June, 2001. The objective of the QAOOSE workshop series is to present, discuss and encourage the use of quantitative methods in object-oriented software engineering research and practice.

Research paper thumbnail of Java reflection exercises, correction, and FAQs

This document summarizes the exercices given to the EMOOSE students for the practical sessions of... more This document summarizes the exercices given to the EMOOSE students for the practical sessions of the course on Reflection. These practical sessions took place on the 18th, 19th, and 20th of December 2001. During the practical sessions, the students met the following topics:

Research paper thumbnail of Cerberus: Tracing requirements to source code using information retrieval, dynamic analysis, and program analysis

Abstract The concern location problem is to identify the source code within a program related to ... more Abstract The concern location problem is to identify the source code within a program related to the features, requirements, or other concerns of the program. This problem is central to program development and maintenance. We present a new technique called prune dependency analysis that can be combined with existing techniques to dramatically improve the accuracy of concern location.

Research paper thumbnail of Software evolution the need for empirical evidence

An intrinsic property of software is its malleability, the fact that it may change and evolve. So... more An intrinsic property of software is its malleability, the fact that it may change and evolve. Software evolution is costly, because software systems tend to be highly complex and large. They are highly humanintensive and risky, because unplanned and undisciplined changes in any software system of realistic size risk degrading software quality and may produce unwanted and unexpected side effects.

Research paper thumbnail of Decor: a tool for the detection of design defects

Abstract Software engineers often need to identify design defects, recurring design problems that... more Abstract Software engineers often need to identify design defects, recurring design problems that hinder the development process, to improve and assess the quality of their systems. However, this is di±cult because of the lack of specifications and tools. We propose Decor, a method to specify design defects systematically and to generate automatically detection algorithms.

Research paper thumbnail of A quality model for design patterns

Abstract Design patterns are high level building blocks that are claimed to promote elegance in o... more Abstract Design patterns are high level building blocks that are claimed to promote elegance in object-oriented programs by increasing flexibility, scalability, usability, reusability, and robustness. However, there is also some evidence that design patterns do not intrinsically promote quality. We believe that the problem of quality with design patterns comes both from the design patterns themselves and from their misuse. Unfortunately, little work has attempted so far to study the quality characteristics of design patterns rigorously.

Research paper thumbnail of Using explanations for design-patterns identification

Abstract Design patterns describe micro-architectures that solve recurrent architectural problems... more Abstract Design patterns describe micro-architectures that solve recurrent architectural problems in objectoriented programming languages. It is important to identify these micro-architectures during the maintenance of object-oriented programs. But these micro-architectures often appear distorted in the source code. We present an application of explanation-based constraint programming for identifying these distorted micro-architectures.