All publications sorted by title

2011
  1. Nasir Ali, Yann-Gaël Guéhéneuc, and Giuliano Antoniol. Factors Impacting the Inputs of Traceability Recovery Approaches, chapter 7. Springer, September 2011. Note: 28 pages. [Text ] Keyword(s): Features and requirements, SST.
    Abstract:
    In requirement engineering, researchers have proposed various tractability recovery approaches. To the best of our knowledge, all traceability recovery approaches have low precision and recall. Our main claim in this chapter is that there exist factors that impact the traceability approaches' inputs, in particular \emph{source document}, \emph{target document}, and \emph{experts' opinion}, that cause low precision and recall. In this chapter, we pursue four objectives: first, to identify and document factors that impact traceability recovery approaches' inputs; second, to identify metrics/tools to measure/improve the quality of the inputs with respect to the identified factors, third, to provide precautions to control these factors, and, fourth, to empirically prove and quantify the effect of one of these factors---expert's programming knowledge---on the traceability recovery approaches' inputs. To achieve the first two objectives, we perform an incremental literature review of traceability recovery approaches and identify and document three key inputs and the seven factors impacting these inputs, out of 12 identified factors. We analyse the reported results in literature for the identified factors to address our third objective. We conduct an empirical study to assess the impact of expert's programming knowledge, to address our fourth objective. We use the effort, number of correct answers, and time to measure the effect of expert's programming knowledge on traceability recovery. We conclude that, in the literature, seven factors impacting the inputs of traceability recovery approaches have been identified, documented, and reported along with related metrics/tools and precautions. We suggest that practitioners should be wary of these seven factors and researchers should focus on the five others to improve traceability recovery approaches.
    [bibtex-key = Ali11-SST-FactorImpactingTraceability]


  2. Latifa Guerrouj, Massimiliano Di Penta, Giuliano Antoniol, and Yann-Gaël Guéhéneuc. TIDIER: An Identifier Splitting Approach using Speech Recognition Techniques. Journal of Software Maintenance and Evolution: Research and Practice (JSME), 2011. Note: In press. 31 pages. [Text ] Keyword(s): Understanding program comprehension, JSME.
    Abstract:
    The software engineering literature reports empirical evidence on the relation between various characteristics of a software system and software quality. Among many factors, recent studies have shown that a proper choice of identifiers influences software understandability and maintainability. Indeed, identifiers are developers' main source of information and guide their cognitive processes during program understanding when high-level documentation is scarce or outdated and when source code is not sufficiently commented. This paper proposes a novel approach to recognize words composing source code identifiers. The approach is based on an adaptation of Dynamic Time Warping used to recognize words in continuous speech. The approach overcomes the limitations of existing identifier splitting approaches when naming conventions (\eg{} Camel Case) are not used or when identifiers contain abbreviations. The proposed approach has been applied on a sample of more than 1,000 identifiers extracted from 340 C programs and compared with a simple Camel Case splitter and with an implementation of an alternative identifier splitting approach, Samurai. Results indicate the capability of the novel approach (i) to outperform the alternative ones when a dictionary augmented with domain knowledge or a contextual dictionary are used and (ii) to expand 48\% of a set of selected abbreviations into dictionary words.
    [bibtex-key = Guerrouj11-JSME-TIDIER]


  3. Foutse Khomh, Massimiliano Di Penta, Yann-Gaël Guéhéneuc, and Giuliano Antoniol. An Exploratory Study of the Impact of Antipatterns on Class Change- and Fault-Proneness. Empirical Software Engineering (EMSE), August 2011. Note: 27 pages. [Text ] Keyword(s): Code and design smells, EMSE.
    Abstract:
    ~\\ {\bf Context: } Antipatterns are poor design choices that are conjectured to make object-orien\-ted systems harder to maintain. oindent {\bf Aim: } We investigate the impact of antipatterns on classes in object-oriented systems by studying the relation between the presence of antipatterns and the change- and fault-proneness of the classes. oindent {\bf Method: } We detect umberofap{} antipatterns in umberofver{} releases of ArgoUML, Eclipse, Mylyn, and Rhino, and analyse (1) to what extent classes participating in antipatterns have higher odds to change or to be subject to fault-fixing than other classes, (2) to what extent these odds (if higher) are due to the sizes of the classes or to the presence of antipatterns, and (3) what kinds of changes affect classes participating in antipatterns. oindent {\bf Results:} We show that, in almost all releases of the four systems, classes participating in antipatterns are more change- and fault-prone than others. We also show that size alone cannot explain the higher odds of classes with antipatterns to underwent a (fault-fixing) change than other classes. Finally, we show that structural changes affect more classes with antipatterns than others. We provide qualitative explanations of the increase of change- and fault-proneness in classes participating in antipatterns using release notes and bug reports. oindent {\bf Conclusions: } The obtained results justify \emph{a posteriori} previous work on the specification and detection of antipatterns and could help to better focus quality assurance and testing activities.
    [bibtex-key = Khomh11-EMSE-AntiPatternsImpact]


  4. Foutse Khomh, Stéphane Vaucher, Yann-Gaël Guéhéneuc, and Houari Sahraoui. A GQM-based Method and a Bayesian Approach for the Detection of Code and Design Smells. Journal of Software and Systems (JSS), 84(4), April 2011. Note: 35 pages. [Text ] Keyword(s): Code and design smells, JSS.
    Abstract:
    The presence of code and design smells can have a severe impact on the quality of a program. Consequently, their detection and correction have drawn the attention of both researchers and practitioners who have proposed various approaches to detect code and design smells in programs. However, none of these approaches handle the inherent uncertainty of the detection process. We propose a Bayesian approach to manage this uncertainty. First, we present a systematic process to convert existing state-of-the-art detection rules into a probabilistic model. We illustrate this process by generating a model to detect occurrences of the Blob antipattern. Second, we present results of the validation of the model: we built this model on two open-source programs, \product{GanttProject v1.10.2} and \product{Xerces v2.7.0}, and measured its accuracy. Third, we compare our model with another approach to show that it returns the same candidate classes while ordering them to minimise the quality analysts' effort. Finally, we show that when past detection results are available, our model can be calibrated using machine learning techniques to offer an improved, context-specific detection.
    [bibtex-key = Khomh11-JSS-GQMBayesianDesignSmells]


  5. Segla Kpodjedo, Filippo Ricca, Philippe Galinier, Yann-Gaël Guéhéneuc, and Giuliano Antoniol. Design Evolution Metrics for Defect Prediction in Object Oriented Systems. Empirical Software Engineering (EMSE), 16(1), February 2011. Note: 34 pages. [Text ] Keyword(s): Evolution patterns, EMSE.
    Abstract:
    Testing is the most widely adopted practice to ensure software quality. However, this activity is often a compromise between the available resources and software quality. In object-oriented development, testing effort should be focused on defective classes. Unfortunately, identifying those classes is a challenging and difficult activity on which many metrics, techniques, and models have been tried. In this paper, we investigate the usefulness of elementary design evolution metrics to identify defective classes. The metrics include the numbers of added, deleted, and modified attributes, methods, and relations. The metrics are used to recommend a ranked list of classes likely to contain defects for a system. They are compared to Chidamber and Kemerer's metrics on several versions of Rhino and of ArgoUML. Further comparison is conducted with the complexity metrics computed by Zimmermann extit{et al.} on several releases of Eclipse. The comparisons are made according to three criteria: presence of defects, number of defects, and defect density in the top-ranked classes. They show that the design evolution metrics, when used in conjunction with known metrics, improve the identification of defective classes. In addition, they show that the design evolution metrics make significantly better predictions of defect density than other metrics and, thus, can help in reducing the testing effort by focusing test activity on a reduced volume of code.
    [bibtex-key = Kpodjedo11-EMSE-DesignEvolutionMetrics]


  6. Benoît de Smet, Lorent Lempereur, Yann-Gaël Guéhéneuc, Giuliano Antoniol, and Naji Habra. Taupe: Visualising and Analysing Eye-tracking Data. Science of Computer Programming (SCP), 2011. Note: 2nd special issue on Experimental Software and Toolkits. Under minor revision. 20 pages. [Text ] Keyword(s): Understanding program comprehension, SCP-EST.
    Abstract:
    Program comprehension is an essential part of any maintenance activity. It allows developers to build mental models of the program before undertaking any change. It has been studied by the research community for many years to devise models and tools to understand and ease this activity. Recently, researchers introduced the use of eye-tracking devices to gather and analyse data about the developers' cognitive processes during program comprehension. However, eye-tracking devices are not completely reliable and, thus, recorded data sometimes must be processed, filtered, or corrected. Moreover, the analysis software tools packaged with eye-tracking devices are not open-source and do not always provide extension points to seamlessly integrate new sophisticated analyses. Consequently, we develop the aupe{} software system to help researchers visualise, analyse and edit the data recorded by eye-tracking devices. The two main objectives of aupe{} are neutrality and extensibility so that researchers can easily (1) apply the system on any eye-tracking data and (2) extend the system with their own analyses. To meet our objectives, we base the development of the aupe{}: (1) on well-known good practices, such as design patterns and a plug-in architecture using reflection, (2) on a thorough documentation, validation and verification process, and (3) on lessons learned from existing analysis software systems. This paper describes the context of development of the aupe{}, the architectural and design choices made during its development, and its documentation, validation and verification process. It also illustrates the application of aupe{} in three experiments on the use of design patterns by developers during program comprehension.
    [bibtex-key = DeSmet11-SCP-EST-Taupe]


  7. Marwen Abbes, Foutse Khomh, Yann-Gaël Guéhéneuc, and Giuliano Antoniol. An Empirical Study of the Impact of Two Antipatterns, Blob and Spaghetti Code, On Program Comprehension. In Yiannis Kanellopoulos and Tom Mens, editors, Proceedings of the 15th European Conference on Software Maintenance and Reengineering (CSMR), March 2011. IEEE Computer Society Press. Note: Best paper. 10 pages. [Text ] [Slides ] Keyword(s): Code and design smells, CSMR.
    Abstract:
    Antipatterns are ``poor'' solutions to recurring design problems which are conjectured in the literature to make object-oriented systems harder to maintain. However, little quantitative evidence exists to support this conjecture. We performed an empirical study to investigate whether the occurrence of antipatterns does indeed affect the understandability of systems by developers during comprehension and maintenance tasks. We designed and conducted three experiments, with 24 subjects each, to collect data on the performance of developers on basic tasks related to program comprehension and assessed the impact of two antipatterns and of their combinations: Blob and Spaghetti Code. We measured the developers' performance with: (1) the NASA task load index for their effort; (2) the time that they spent performing their tasks; and, (3) their percentages of correct answers. Collected data show that the occurrence of one antipattern does not significantly decrease developers' performance while the combination of two antipatterns impedes significantly developers. We conclude that developers can cope with one antipattern but that combinations of antipatterns should be avoided possibly through detection and refactorings.
    [bibtex-key = Abbes11-CSMR-AntipatternsImpactComprehension]


  8. Nasir Ali, Yann-Gaël Guéhéneuc, and Giuliano Antoniol. Requirements Traceability for Object Oriented Systems by Partitioning Source Code. In Martin Pinzger and Denys Poshyvanyk, editors, Proceedings of the 18th Working Conference on Reverse Engineering (WCRE), October 2011. IEEE Computer Society Press. Note: 10 pages. [Text ] [Slides ] Keyword(s): Requirement traceability, WCRE.
    Abstract:
    Requirements traceability ensures that source code is consistent with documentation and that all requirements have been implemented. During software evolution, features are added, removed, or modified, the code drifts away from its original requirements. Thus traceability recovery approaches becomes necessary to re-establish the traceability relations between requirements and source code. This paper presents an approach (Coparvo) complementary to existing traceability recovery approaches for object-oriented programs. Coparvo reduces false positive links recovered by traditional traceability recovery processes thus reducing the manual validation effort. Coparvo assumes that information extracted from different entities (e.g., class names, comments, class variables, or methods signatures) are different information sources; they may have different level of reliability in requirements traceability and each information source may act as a different expert recommending traceability links. We applied Coparvo on three data sets, Pooka, SIP Communicator, and iTrust, to filter out false positive links recovered via the information retrieval approach \ie{} vector space model. The results show that Coparvo significantly improves the of the recovered links accuracy and also reduces up to $83\%$ effort required to manually remove false positive links.
    [bibtex-key = Ali11-WCRE-MacroCoChange]


  9. Nasir Ali, Yann-Gaël Guéhéneuc, and Giuliano Antoniol. Trust-Based Requirements Traceability. In Susan E. Sim and Filippo Ricca, editors, Proceedings of the 19th International Conference on Program Comprehension (ICPC), June 2011. IEEE Computer Society Press. Note: 10 pages. [Text ] [Slides ] Keyword(s): Requirement traceability, ICPC.
    Abstract:
    Information retrieval (IR) approaches have proven useful in recovering traceability links between free-text documentation and source code. IR-based traceability recovery approaches produce ranked lists of traceability links between pieces of documentation and source code. These traceability links are then pruned using various strategies and, finally, validated by human experts. In this paper we propose two contributions to improve the precision and recall of traceability links and, thus, reduces the required human experts' manual validation effort. First, we propose a novel approach, Trustrace, inspired by Web trust models to improve the precision and recall of traceability links: Trustrace uses any traceability recovery approach to obtain a set of traceability links, which rankings are then re-evaluated using a set of other traceability recovery approaches. Second, we propose a novel traceability recovery approach, Histrace, to identify traceability links between requirements and source code through CVS/SVN change logs using a Vector Space Model (VSM). We combine a traditional recovery traceability approach with Histrace to build Trustrace{ ext{VSM},~ ext{Histrace}} in which we use Histrace as one expert adding knowledge to the traceability links extractted from CVS/SVN change logs. We apply Trustrace{ ext{VSM},~ ext{Histrace}} on two case studies to compare its traceability links with those recovered using only the VSM-based approach, in terms of precision and recall. We show that Trustrace{ ext{VSM},~ ext{Histrace}} improves with statistical significance the precision of the traceability links while also improving recall but without statistical significance.
    [bibtex-key = Ali11-ICPC-TrustTraceability]


  10. Nasir Ali, Wei Wu, Giuliano Antoniol, Massimiliano Di Penta, Yann-Gaël Guéhéneuc, and Jane H. Hayes. MoMS: Multi-objective Miniaturization of Software. In James R. Cordy and Paolo Tonella, editors, Proceedings of the 27th International Conference on Software Maintenance (ICSM), September 2011. IEEE Computer Society Press. Note: 10 pages. [Text ] [Slides ] Keyword(s): Features and requirements, ICSM.
    Abstract:
    Smart phones, gaming consoles, and 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 with features may be in conflict with a device's limited storage, memory, or battery life. This paper proposes a process, \OdMoMS{}, for the multi-objective miniaturization of software to help developers miniaturize programs while satisfying multiple conflicting constraints. It can be used to support the reverse engineering, next release problem, and porting of both software and product lines. The process directs the elicitation of customer pre-requirements, their mapping to program features, and the selection of the features to port. We present two case studies based on Pooka, an email client, and SIP Communicator, an instant messenger, to demonstrate that \OdMoMS{} supports optimized miniaturization and helps reduce effort by 77\%, on average, over a manual approach.
    [bibtex-key = Ali11-ICSM-Miniaturisation]


  11. Ahmed Belderrar, Segla Kpodjedo, Yann-Gaël Guéhéneuc, Giuliano Antoniol, and Philippe Galinier. Sub-graph Mining: Identifying Micro-architectures in Evolving Object-oriented Software. In Yiannis Kanellopoulos and Tom Mens, editors, Proceedings of the 15th European Conference on Software Maintenance and Reengineering (CSMR), March 2011. IEEE Computer Society Press. Note: 10 pages. [Text ] [Slides ] Keyword(s): Evolution patterns, CSMR.
    Abstract:
    Developers introduce novel and undocumented micro-architectures when performing evolution tasks on object-oriented applications. We are interested in understanding whether those organizations of classes and relations can bear, much like cataloged design and anti-patterns, potential harm or benefit to an object-oriented application. We present SGFinder, a sub-graph mining approach and tool based on an efficient enumeration technique to identify recurring micro-architectures in object-oriented class diagrams. Once SGFinder has detected instances of micro-architectures, we exploit these instances to identify their desirable properties, such as stability, or unwanted properties, such as change or fault proneness. We perform a feasibility study of our approach by applying SGFinder on the reverse-engineered class diagrams of several releases of two Java applications: ArgoUML and Rhino. We characterize and highlight some of the most interesting micro-architectures, \eg{} the most change and fault prone, and conclude that SGFinder opens the way to further interesting studies.
    [bibtex-key = Belderrar11-CSMR-SubgraphsEvolution]


  12. Neelesh Bhattacharya, Abdelilah Sakti, Giuliano Antoniol, Yann-Gaël Guéhéneuc, and Gilles Pesant. Divide-by-zero Exceptions Raising via Branch Coverage. In Myra Cohen and Mel Ó Cinnéide, editors, Proceedings of the 3rd International Symposium on Search-based Software Engineering (SSBSE), September 2011. IEEE Computer Society Press. Note: 10 pages. [Text ] [Slides ] Keyword(s): Test case generation, SSBSE.
    Abstract:
    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 additive fitness function combining \emph{approach level} and \emph{branch distance}. We then use different search strategies, \ie{} hill climbing, simulated annealing, and genetic algorithm, to evaluate the performance of the novel fitness function on a small synthetic example as well as on methods known to throw divide-by-zero exceptions, extracted from real world systems, namely Eclipse and Android. Finally, we also describe how the test data generation for divide-by-zero exceptions can be formulated as a constraint programming problem and compare the resolution of this problem with a genetic algorithm in terms of execution time. We thus report evidence that genetic algorithm using our novel fitness function out-performs hill climbing and simulated annealing and a previous approach (in terms of numbers of fitness evaluation) but is out-performed by constraint programming (in terms of execution time).
    [bibtex-key = Bhattacharya11-SSBSE-DivideByZero]


  13. Neelesh Bhattacharya, Abdelilah Sakti, Giuliano Antoniol, Yann-Gaël Guéhéneuc, and Gilles Pesant. Performance Analysis of Metaheuristic and Constraint Programming Approaches to Generate Structural Test Cases. In Fevzi Belli and Michael Linschulte, editors, Proceedings of the 4th International Conference on Software Testing, Verification, and Validation (ICST), March 2011. IEEE Computer Society Press. Note: Poster. 2 pages. [Text ] [Slides ] Keyword(s): Test case generation, ICST.
    Abstract:
    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. However, both of these approaches have limitations, which prevent them to be used in various applications, like wireless telecommunication and aeonautical engineering, because the problems in these areas involve variables with large domains and complex constraints.
    [bibtex-key = Bhattacharya11-ICST-P-CSPGAComparisonTestGeneration]


  14. Laleh Eshkevari, Venera Arnaoudova, Massimiliano Di Penta, Rocco Oliveto, Yann-Gaël Guéhéneuc, and Giuliano Antoniol. An Exploratory Study of Identifier Renamings. In Tao Xie and Thomas Zimmermann, editors, Proceedings of the 8th Working Conference on Mining Software Repositories (MSR), May 2011. ACM Press. Note: 10 pages. [Text ] [Slides ] Keyword(s): Quality models, MSR.
    Abstract:
    Identifiers play an important role in source code understandability, maintainability, and fault-proneness. This paper reports a study of identifier renamings in software systems, studying how terms (identifier atomic components) change in source code identifiers. Specifically, the paper (i) proposes a term renaming taxonomy, (ii) presents an approximate lightweight code analysis approach to detect and classify term renamings automatically into the taxonomy dimensions, and (iii) reports an exploratory study of term renamings in two open source projects, Eclipse-JDT and Tomcat. We thus report evidence that not only synonyms are involved in renaming but also (in a small fraction) more unexpected changes occur: surprisingly, we detected hypernym (a more abstract term, \eg{} size vs.\ length) and hyponym (a more concrete term, \eg{} restriction vs.\ rule) renamings, and antonym renamings (a term replaced with one having the opposite meaning, \eg{} closing vs.\ opening). Despite being only a fraction of all renamings, synonym, hyponym, hypernym, and antonym renamings may hint to some program understanding issues and, thus, could be used in a renaming-recommendation system to improve code quality.
    [bibtex-key = Eshkevari11-MSR-IdentifierRenamingTaxonomy]


  15. Salima Hassaine, Ferdaous Boughamni, Yann-Gaël Guéhéneuc, Sylvie Hamel, and Giuliano Antoniol. Change Impact Analysis: An Earthquake Metaphor. In Susan E. Sim and Filippo Ricca, editors, Proceedings of the 19th International Conference on Program Comprehension (ICPC), June 2011. IEEE Computer Society Press. Note: Poster. 2 pages. [Text ] [Slides ] Keyword(s): Evolution patterns, ICPC.
    Abstract:
    The maintenance of large programs is a costly activity because their evolution often leads to two problems: an increase in their complexity and an erosion of their design. Impact analysis is crucial to make decisions among different alternatives to implement a change and to assess and plan maintenance activities by highlighting artefacts that should change when another artefact changes. Several approaches were proposed to identify software artefacts being affected by a change. However, to the best of our knowledge, none of these approaches have been used to study two pieces of information: (1) the scope of a change in a program and (2) the propagation of the change in time. Yet, these pieces of information are useful for developers to better understand and, thus, plan changes. In this paper, we present a metaphor inspired by seismology and propose a mapping between the concepts of seismology and software evolution. Our metaphor relate the problems of (1) change impact and earthquake's debris and (2) change propagation and damaged site predictions to observe the scopes and the evolution in time of changes. We show the applicability and usefulness of our metaphor using Rhino and Xerces-J.
    [bibtex-key = Hassaine11-ICPC-P-EarthquakeSE]


  16. Salima Hassaine, Ferdaous Boughanmi, Yann-Gaël Guéhéneuc, Sylvie Hamel, and Giuliano Antoniol. A Seismology-inspired Approach for Change Impact Analysis. In James R. Cordy and Paolo Tonella, editors, Proceedings of the 27th International Conference on Software Maintenance (ICSM), September 2011. IEEE Computer Society Press. Note: 10 pages. [Text ] [Slides ] Keyword(s): Evolution patterns, ICSM.
    Abstract:
    Change impact analysis aims at identifying software artefacts that are being affected by a change. It helps developers to assess their change efforts and perform more adequate changes. Several approaches have been proposed to aid in impact analysis. However, to the best of our knowledge, none of these approaches have been used to study the scope of changes in a program. We present a metaphor inspired by seismology and propose a mapping between the concepts of seismology and change propagation, to study the scope of change propagation. We perform three case studies on Pooka, Rhino, and Xerces-J to observe change propagation. We use ANOVA and Duncan statistical tests to assess the statistically significance of our observations, which show that changes propagate to a limited scope.
    [bibtex-key = Hassaine11-ICSM-ChangeImpactSeismology]


  17. Fehmi Jaafar, Yann-Gaël Guéhéneuc, Sylvie Hamel, and Giuliano Antoniol. (Dephase) Macro Co-changes: Beyond Co-changes. In Martin Pinzger and Denys Poshyvanyk, editors, Proceedings of the 18th Working Conference on Reverse Engineering (WCRE), October 2011. IEEE Computer Society Press. Note: 10 pages. [Text ] [Slides ] Keyword(s): Evolution patterns, WCRE.
    Abstract:
    The literature describes several approaches to identify the artefacts of programs that change together to reveal the (hidden) dependencies among these artefacts. These approaches analyse historical data, mined from version control systems, and report co-changing artefacts, which hint at the causes, consequences, and actors of the changes. We introduce the novel concepts of \emph{macro co-changes} (MCC), \ie{} of artefacts that co-change within a large time interval, and of \emph{dephase macro co-changes} (DMCC), \ie{} macro co-changes that always happen with the same shifts in time. We describe typical scenarios of MCC and DMCC and we use the Hamming distance to detect approximate occurrences of MCC and DMCC. We present our approach, \DeMaCCC, to identify these concepts in large programs. We apply \DeMaCCC{} and compare it in terms of precision and recall with UMLDiff (file stability) and association rules (co-changing files) on four systems: ArgoUML, FreeBSD, SIP, and XalanC, developed with three different languages (C, C++, and Java) and of sizes ranging from 597 to 3,603 files and from 6,050 to 735,324 changes over periods of eight to 15 years. We also use external information to validate the (approximate) MCC and DMCC found by \DeMaCCC{}. We thus answer two research questions showing the existence and usefulness of theses concepts and explaining scenarios of hidden dependencies among artefacts.
    [bibtex-key = Jaafar11-WCRE-MacroCoChange]


  18. Soumaya Medini, Philippe Galinier, Massimiliano Di Penta, Yann-Gaël Guéhéneuc, and Giuliano Antoniol. A Fast Algorithm to Locate Concepts in Execution Traces. In Myra Cohen and Mel Ó Cinnéide, editors, Proceedings of the 3rd International Symposium on Search-based Software Engineering (SSBSE), September 2011. IEEE Computer Society Press. Note: 10 pages. [Text ] [Slides ] Keyword(s): Features and requirements, SSBSE.
    Abstract:
    The identification of cohesive segments in execution traces is a important step in concept location which, in turns, is of paramount importance for many program-comprehension activities. In this paper, we reformulate the trace segmentation problem as a dynamic programming problem. Differently to approaches based on genetic algorithms, dynamic programming can compute an exact solution with better performance than previous approaches, even on long traces. We describe the new problem formulation and the algorithmic details of our approach. We then compare the performances of dynamic programming with those of a genetic algorithm, showing that dynamic programming reduces dramatically the time required to segment traces, without sacrificing precision and recall; even slightly improving them.
    [bibtex-key = Medini11-SSBSE-FastConceptSplitting]


2010
  1. Yann-Gaël Guéhéneuc. Un cadre pour la traçabilité des motifs de conception. Éditions universitaires européennes, June 2010. [Text ] [Slides ]
    Abstract:
    Les patrons de conception sont importants en g\'enie logiciel \`a objets car ils contribuent \`a la qualit\'e des programmes. Ils proposent des solutions \'el\'egantes \`a des probl\`emes r\'ecurrents de conception, des motifs utilis\'es pendant l'implantation. \`A~l'usage, ces motifs de conception sont diss\'emin\'es dans le code source et ne sont plus explicites lors de la maintenance~; pourtant, ils aideraient \`a comprendre l'implantation et la conception des programmes, assurant leur qualit\'e. Ce m\'emoire propose des mod\`eles et des algorithmes pour garantir la tra\c cabilit\'e des motifs de conception entre les phases d'implantation et de r\'etroconception des programmes par l'identification semi-automatique des micro-architectures similaires \`a ces motifs dans le code source. La m\'etamod\'elisation est utilis\'ee pour d\'ecrire les motifs de conception et les programmes Java. Elle am\`ene \`a expliciter certaines relations interclasses (association, agr\'egation et composition) offertes par les langages de conception comme UML et \`a pr\'eciser leurs propri\'et\'es (dur\'ee de vie, exclusivit\'e, multiplicit\'e et site d'invocation) pour les identifier avec des algorithmes d'analyses statiques et dynamiques. Elle conduit aussi \`a traduire les motifs en syst\`emes de contraintes et \`a identifier les micro-architectures similaires, formes compl\`etes et approch\'ees, par la r\'esolution de probl\`emes de satisfaction de contraintes. La programmation par contraintes avec explications permet de guider la r\'esolution et d'expliquer les micro-architectures identifi\'ees. La suite d'outils Ptidej est une implantation des mod\`eles et des algorithmes propos\'es. Elle est int\'egr\'ee \`a l'environnement Eclipse de d\'eveloppement en Java. Elle inclut le m\'etamod\`ele PADL, d\'eriv\'e du m\'etamod\`ele PDL ; des outils d'analyses statiques et dynamiques, Introspector et Caffeine ; et un solveur de contraintes, PtidejSolver, d\'eriv\'e du solveur de contraintes avec explications de r\'ef\'erence PaLM.
    [bibtex-key = Gueheneuc-EUE-PhDThesis]


  2. Gerardo Cepeda Porras and Yann-Gaël Guéhéneuc. An Empirical Study on the Efficiency of Different Design Pattern Representations in UML Class Diagrams. Empirical Software Engineering (EMSE), 15(5), January 2010. Note: 29 pages. [Text ] Keyword(s): Understanding program comprehension, EMSE.
    Abstract:
    Design patterns are recognized in the software engineering community as useful solutions to recurring design problems that improve the quality of programs. They are more and more used by developers in the design and implementation of their programs. Therefore, the visualization of the design patterns used in a program could be useful to efficiently understand how it works. Currently, a common representation to visualize design patterns is the UML collaboration notation. Previous work noticed some limitations in this representation and proposed new representations to tackle these limitations. However, none of these pieces of work conducted empirical studies to compare their new representations with this common representation. We designed and conducted an empirical study to collect data on the performance of developers on basic tasks related to design pattern comprehension to evaluate the impact of three visual representations and to compare them with the common one. We used eye-trackers to measure the developers' effort during the execution of the study. Collected data show that there exists for certain tasks a representation that is more efficient than the common one. We also found tasks for which the common representation works better.
    [bibtex-key = CepedaPorras10-EMSE-UMLNotations]


  3. José Côté, Pilar Ramirez-Garcia, Geneviève Rouleau, Diane Saulnier, Yann-Gaël Guéhéneuc, Annick Hernandez, and Gaston Godin. A Nursing Virtual Intervention: Real-Time Support for Managing Antiretroviral Therapy. Computers, Informatics, Nursing (CIN), 29(1), January--February 2010. Note: 22 pages. [Text ] Keyword(s): VIHTAVIE, CIN.
    Abstract:
    Based on a philosophy of empowerment, we developed the VIHTAVIE virtual intervention (HIV-Treatment, Virtual Nursing Assistance and Education) to equip persons living with HIV for managing with their daily antiretroviral therapies. In this article we describe the VIHTAVIE project and the process of developing it, which was carried out in three phases: 1) development of the intervention's clinical content, 2) generation of a multimedia presentation and 3) implementation of our web application via computer interface. VIHTAVIE consists of four interactive sessions at the computer, animated by a virtual nurse that takes the individual through the learning process about the capabilities necessary for taking the treatment. This information and strategies provided by the virtual nurse are specifically adapted to the participant, according to the responses he or she supplies. The VIHTAVIE approach, still experimental, is intended to be complementary with the actual clinical follow-up and has been developed in the context of reorganizing services and of the scarcity of resources. While we anticipate direct positive outcomes among the HIV clientele, it is also highly probable that this virtual support application will have ramifications among different clienteles who must also contend with the daily challenges of their health conditions.
    [bibtex-key = Cote09-CIN-VirtualIntervention]


  4. Yann-Gaël Guéhéneuc. Design Patterns: Empirical Studies on the Impact of Design Patterns on Quality. Encyclopedia of Software Engineering (ESE), September 2010. Note: Under publication. 16 pages. [Text ] Keyword(s): Design patterns, ESE.
    Abstract:
    Design patterns are a form of documentation that proposes solutions to recurring object-oriented software design problems. Design patterns became popular in software engineering thanks to the book published in 1995 by the Gand of Four: Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides. Since the publication of the book ``Design Patterns: Elements of Reusable Object-Oriented Software'', design patterns have been used to design programs and ease their maintenance, to teach object-oriented concepts and related ``good'' practices in classrooms, to assess quality and help program comprehension in research. However, design patterns may also lead to over-engineered programs and may negatively impact quality. We recall the history of design patterns and present some recent development characterising the advantages and disadvantages of design patterns.
    [bibtex-key = Gueheneuc10-ESE-DesignPatterns]


  5. Yann-Gaël Guéhéneuc, Jean-Yves Guyomarc'h, and Houari Sahraoui. Improving Design Pattern Identification: a New Approach and an Exploratory Study. Software Quality Journal (SQJ), 18(1):145--166, March 2010. Note: 21 pages. [Text ] Keyword(s): Design patterns, SQJ.
    Abstract:
    The identification of occurrences of design patterns in programs can help maintainers to understand the program design and implementation. It can also help them to make informed changes. Current identification approaches are limited to complete occurrences, are time- and resource-consuming, and lead to many false positives. We propose to combine a structural and a numerical approach to improve the identification of complete and incomplete occurrences of design patterns. We develop a structural approach using explanation-based constraint programming and we enhance this approach using experimentally-built numerical signatures. We show that the use of numerical signatures improves the identification of complete and incomplete occurrences in terms of performance and precision.
    [bibtex-key = Gueheneuc10-SQJ-MetricalPtidejSolver]


  6. Olivier Kaczor, Yann-Gaël Guéhéneuc, and Sylvie Hamel. Identification of Design Motifs with Pattern Matching Algorithms. Information and Software Technology (IST), 52, February 2010. Note: 16 pages. [Text ] Keyword(s): Design patterns, IST.
    Abstract:
    Design patterns are important in software maintenance because they help in understanding and re-engineering systems. They propose design motifs, solutions to recurring design problems. The identification of occurrences of design motifs in large systems consists of identifying classes whose structure and organization match exactly or approximately the structure and organization of classes as suggested by the motif. We adapt two classical approximate string matching algorithms based on automata simulation and bit-vector processing to efficiently identify exact and approximate occurrences of motifs. We then carry out two case studies to show the performance, precision, and recall of our algorithms. In the first case study, we assess the performance of our algorithms on seven medium-to-large systems. In the second case study, we compare our approach with three existing approaches (an explanation-based constraint approach, a metric-enhanced explanation-based constraint approach, and a similarity scoring approach) by applying the algorithms on three small-to-medium size systems, \JHotDraw{}, \ygg@product{Juzzle}, and \ygg@product{QuickUML}. Our studies show that approximate string matching based on bit-vector processing provides efficient algorithms to identify design motifs.
    [bibtex-key = Kaczor09-IST-EfficientDPIdentification]


  7. Segla Kpodjedo, Filippo Ricca, Philippe Galinier, Giuliano Antoniol, and Yann-Gaël Guéhéneuc. Studying Software Evolution of Large Object-oriented Software Systems using an ETGM Algorithm. Journal of Software Maintenance and Evolution: Research and Practice (JSME), September 2010. Note: 28 pages. [Text ] Keyword(s): Evolution patterns, JSME.
    Abstract:
    Analyzing and understanding the evolution of large object-oriented software systems is an important but difficult task, in which matching algorithms play a fundamental role. An error-tolerant graph matching (ETGM) algorithm is able to identify evolving classes that maintain a stable structure of relations (associations, inheritances, and aggregations) with other classes and that, thus, likely constitute the backbone of the system. Therefore, we first develop a novel ETGM algorithm to study the evolution of class diagrams. This algorithm improves the performance of our previous algorithm. Second, we describe the process of building an oracle to test and study our algorithm. Third, we report for the new algorithm the impact of the algorithm parameters on the F-measure summarizing precision and recall. Finally, with tuned algorithm parameters, we carry out and report an extensive empirical evaluation of our algorithm. Overall we show that: this novel algorithm is scalable, stable and has better time performance. In our empirical evaluation, we use small, \ie{} Rhino, medium, \ie{} Azureus and ArgoUML, and large systems, \ie{} Mozilla and Eclipse.
    [bibtex-key = Kpodjedo10-JSME-ETGMEvolution]


  8. Tom Mens, Yann-Gaël Guéhéneuc, Juan Fernandez-Ramil, and Maja D'Hondt. Guest Editor's Introduction: Software Evolution. IEEE Software, 27(4):22--25, July--August 2010. Note: 4 pages. [Text ] Keyword(s): Evolution patterns, IEEE Software. [bibtex-key = Mens10-IEEESoftwareGuestIntroduction]


  9. Naouel Moha, Yann-Gaël Guéhéneuc, Laurence Duchien, and Anne-Françoise Le Meur. DECOR: A Method for the Specification and Detection of Code and Design Smells. Transactions on Software Engineering (TSE), 36(1), January--February 2010. Note: 16 pages. [Text ] Keyword(s): Code and design smells, TSE.
    Abstract:
    Code and design smells are poor solutions to recurring implementation and design problems. They may hinder the evolution of a system by making it hard for software engineers to carry out changes. We propose three contributions to the research field related to code and design smells: (1) DECOR, a method that embodies and defines all the steps necessary for the specification and detection of code and design smells; (2) \DEX{} a detection technique that instantiates this method; and (3) an empirical validation in terms of precision and recall of \DEX. The originality of \DEX{} stems from the ability for software engineers to specify smells at a high-level of abstraction using a consistent vocabulary and domain-specific language for automatically generating detection algorithms. Using \DEX{}, we specify four well-known design smells: the antipatterns Blob, Functional Decomposition, Spaghetti Code, and Swiss Army Knife, and their 15 underlying code smells, and we automatically generate their detection algorithms. We apply and validate the detection algorithms in terms of precision and recall on \product{Xerces} v2.7.0, and discuss the precision of these algorithms on 11 open-source systems.
    [bibtex-key = Moha09-TSE-DECOR]


  10. Naouel Moha, Yann-Gaël Guéhéneuc, Anne-Françoise Le Meur, Laurence Duchien, and Alban Tiberghien. From a Domain Analysis to the Specification and Detection of Code and Design Smells. Formal Aspects of Computing (FAC), 22(3):345--368, May 2010. Note: 23 pages. [Text ] Keyword(s): Code and design smells, FACS.
    Abstract:
    Code and design smells are recurring design problems in software systems that need to be identified to avoid their possible negative consequences in development and maintenance. Consequently, several smell detection approaches and tools have been proposed in the literature. However, so far, they allow the detection of predefined smells but the detection of new smells or smells adapted to the context of the analysed systems is possible only by implementing new detection algorithms manually. Moreover, previous approaches do not explain the transition from specifications of smells to their detection. Finally, the validation of the existing detection approaches and tools has been limited on few proprietary systems and on a reduced number of smells. In this paper, we introduce an approach to automate the generation of detection algorithms from specifications written using a domain-specific language. This language is defined from a thorough domain analysis. It allows the specification of smells using high-level domain-related abstractions. It allows the adaptation of the specifications of smells to the context of the analysed systems. We specify 10 smells, generate automatically their detection algorithms using templates, and validate the algorithms in terms of precision and recall on \ygg@product{Xerces} v2.7.0 and \ygg@product{GanttProject} v1.10.2, two open-source object-oriented systems.
    [bibtex-key = Moha09-FACS-DDDomainAnalysis]


  11. Janice Ka-Yee Ng, Yann-Gaël Guéhéneuc, and Giuliano Antoniol. Identification of Behavioral and Creational Design Motifs through Dynamic Analysis. Journal of Software Maintenance and Evolution: Research and Practice (JSME), 22(8), December 2010. Note: 30 pages. [Text ] Keyword(s): Design patterns, JSME.
    Abstract:
    Design patterns offer design motifs, solutions to object-oriented design problems. Design motifs lead to well-structured designs and thus are believed to ease software maintenance. However, after use, they are often ``lost" and are consequently of little help during program comprehension and other maintenance activities. Therefore, several works proposed design pattern identification approaches to recover occurrences of the motifs. These approaches mainly used the structure and organisation of classes as input. Consequently, they have a low precision when considering behavioural and creational motifs, which pertain to the assignment of responsibilities and the collaborations among objects at runtime. We propose MoDeC, an approach to describe behavioral and creational motifs as collaborations among objects in the form of scenario diagrams. We identify these motifs using dynamic analysis and constraint programming. Using a proof-of-concept implementation of MoDeC and different scenarios for five other Java{} programs and extsf{Builder}, extsf{Command}, and extsf{Visitor}, we show that MoDeC has a better precision than a state-of-the-art static approaches.
    [bibtex-key = KaYeeNg09-JSME-BehaviouralCreationalIdentification]


  12. Houari Sahraoui, Lionel C. Briand, Yann-Gaël Guéhéneuc, and Olivier Beaurepaire. Investigating the Impact of a Measurement Program on Software Quality. Information and Software Technology (IST), 52, September 2010. Note: 10 pages. [Text ] Keyword(s): Quality models, IST.
    Abstract:
    Measurement programs have been around for several decades but have been often misused or misunderstood by managers and developers. This misunderstanding prevented their adoption despite their many advantages. In this paper, we present the results of an empirical study on the impact of a measurement program, MQL, in an industrial context. We analyzed data collected on 44 systems of different sizes: 22 systems were developed using MQL while the other 22 did not use a specific measurement program (control group). We studied the impact of MQL on a set of quality indicators. Our results show that MQL had a clearly positive impact on all the studied indicators. This impact is statistically significant for all the indicators but corrective maintenance effort. We therefore bring concrete evidence that a measurement program can have a significant, positive impact on the quality of software systems if combined with appropriate decision making procedures and corrective actions.
    [bibtex-key = Sahraoui10-IST-ImpactMeasurementProgram]


  13. Venera Arnaoudova, Laleh Eshkevari, Rocco Oliveto, Yann-Gaël Guéhéneuc, and Giuliano Antoniol. Physical and Conceptual Identifier Dispersion: Measures and Relation to Fault Proneness. In Rudolf Ferenc and Denys Poshyvanyk, editors, Proceedings of the 26th International Conference on Software Maintenance (ICSM), September 2010. IEEE Computer Society Press. Note: Early Research Achievements Track. Best paper. 5 pages. [Text ] [Slides ] Keyword(s): Evolution patterns, ICSM.
    Abstract:
    Poorly-chosen identifiers have been reported in the literature as misleading and increasing the program comprehension effort. Identifiers are composed of terms, which can be dictionary words, acronyms, contractions, or simple strings. We conjecture that the use of identical terms in different contexts may increase the risk of faults. We investigate our conjecture using a measure combining term entropy and term context coverage to study whether certain terms increase the odds ratios of methods to be fault-prone. Entropy measures the \emph{physical dispersion} of terms in a program: the higher the entropy, the more scattered across the program the terms. Context coverage measures the \emph{conceptual dispersion} of terms: the higher their context coverage, the more unrelated the methods using them. We compute term entropy and context coverage of terms extracted from identifiers in Rhino 1.4R3 and ArgoUML 0.16. We show statistically that methods containing terms with high entropy and context coverage are more fault-prone than others.
    [bibtex-key = Arnaoudova10-ICSM-ERA-IdentifierEntropy]


  14. Fatemeh Asadi, Giuliano Antoniol, and Yann-Gaël Guéhéneuc. Concept Location with Genetic Algorithms: A Comparison of Four Distributed Architectures. In Lionel Briand, editor, Proceedings of the 2nd International Symposium on Search Based Software Engineering (SSBSE), September 2010. IEEE Computer Society Press. Note: 10 pages. [Text ] [Slides ] Keyword(s): Features and requirements, SSBSE.
    Abstract:
    Genetic algorithms are attractive to solve many search-based software engineering problems because they allow the easy parallelization of computations, which improves scalability and reduces computation time. In this paper, we present our experience in applying different distributed architectures to parallelize a genetic algorithm used to solve the concept identification problem. We developed an approach to identify concepts in execution traces by finding cohesive and decoupled fragments of the traces. The approach relies on a genetic algorithm, on a textual analysis of source code using latent semantic indexing, and on trace compression techniques. The fitness function in our approach has a polynomial evaluation cost and is highly computationally intensive. A run of our approach on a trace of thousand methods may require several hours of computation on a standard PC. Consequently, we reduced computation time by parallelizing the genetic algorithm at the core of our approach over a standard TCP/IP network. We developed four distributed architectures and compared their performances: we observed a decrease of computation time up to 140 times. Although presented in the context of concept location, our findings could be applied to many other search-based software engineering problems.
    [bibtex-key = Asadi10-SSBSE-ComparisonDistributedArchitectures]


  15. Fatemeh Asadi, Massimiliano Di Penta, Giuliano Antoniol, and Yann-Gaël Guéhéneuc. A Heuristic-based Approach to Identify Concepts in Execution Traces. In Rudolf Ferenc and Juan Carlos Dueñas, editors, Proceedings of the 14th European Conference on Software Maintenance and Reengineering (CSMR), March 2010. IEEE Computer Society Press. Note: 10 pages. [Text ] [Slides ] Keyword(s): Features and requirements, CSMR.
    Abstract:
    Concept or feature identification, \ie{} the identification of the source code fragments implementing a particular feature, is a crucial task during software understanding and maintenance. This paper proposes an approach to identify concepts in execution traces by finding cohesive and decoupled fragments of the traces. The approach relies on search-based optimization techniques, textual analysis of the system source code using latent semantic indexing, and trace compression techniques. It is evaluated to identify features from execution traces of two open source systems from different domains, JHotDraw and ArgoUML. Results show that the approach is always able to identify trace segments implementing concepts with a high precision and, for highly cohesive concepts, with a high overlap with the manually-built oracle.
    [bibtex-key = Asadi10-CSMR-IdentifyConceptsTraces]


  16. Gabriele Bavota, Rocco Oliveto, Andrea De Lucia, Giuliano Antoniol, and Yann-Gaël Guéhéneuc. Playing with Refactoring: Identifying Extract Class Opportunities through Game Theory. In Rudolf Ferenc and Denys Poshyvanyk, editors, Proceedings of the 26th IEEE International Conference on Software Maintenance (ICSM), September 2010. IEEE Computer Society Press. Note: Early Research Achievements Track. 5 pages. [Text ] [Slides ] Keyword(s): Code and design smells, ICSM.
    Abstract:
    In software engineering, developers must often find solutions to problems balancing competing goals, e.g., quality versus cost, time to market versus resources, or cohesion versus coupling. Finding a suitable balance between contrasting goals is often complex and recommendation systems are useful to support developers and managers in performing such a complex task. We believe that contrasting goals can be often dealt with game theory techniques. Indeed, game theory is successfully used in other fields, especially in economics, to mathematically propose solutions to strategic situation, in which an individual's success in making choices depends on the choices of others. To demonstrate the applicability of game theory to software engineering and to understand its pros and cons, we propose an approach based on game theory that recommend extract-class refactoring opportunities. A preliminary evaluation inspired by mutation testing demonstrates the applicability and the benefits of the proposed approach.
    [bibtex-key = Bavota10-ICSM-ERA-RefactoringGameTheory]


  17. José Côté, Geneviève Rouleau, Diane Saulnier, Cécile Tremblay, Hélène Morin, Pilar Ramirez-Garcia, Yann-Gaël Guéhéneuc, Gaston Godin, and Joanne Otis. Découvrir aujourd'hui, réinventer demain ! Le mode virtuel : une voie prometteuse pour le soutien des clientèles dans l'autogestion de leur condition de santé. In Christine Thoer and Joseph Levy, editors, actes du 78e congrès de l'ACFAS, mai 2010. ACFAS. [Text ] Keyword(s): VIHTAVIE, ACFAS.
    Abstract:
    Bas\'ee sur une philosophie d'empowerment, VIH-TAVIE (VIH - Traitement, Assistance Virtuelle Infirmi\`ere et Enseignement) vise \`a outiller la personne vivant avec le VIH (PVVIH) dans la gestion quotidienne de ses antir\'etroviraux. Le but de cette communication est de faire une d\'emonstration de VIH-TAVIE et de pr\'esenter les r\'esultats pr\'eliminaires sur l'acceptabilit\'e et la faisabilit\'e de VIH-TAVIE.
    [bibtex-key = Cote10-ACFAS-ModeVirtuel]


  18. Massimiliano Di Penta, Daniel M. German, Yann-Gaël Guéhéneuc, and Giuliano Antoniol. An Exploratory Study of the Evolution of Software Licensing. In Prem Devanbu and Sebastian Uchitel, editors, Proceedings of the 32nd International Conference on Software Engineering (ICSE), May 2010. ACM Press. Note: 10 pages. [Text ] [Slides ] Keyword(s): Evolution patterns, ICSE.
    Abstract:
    ree and open source software systems (FOSS) are distributed and made available to users under different software licenses, mentioned in FOSS code by means of licensing statements. Various factors, such as changes in the legal landscape, commercial code licensed as FOSS, or code reused from other FOSS systems, lead to evolution of licensing, which may affect the way a system or part thereof can be subsequently used. Therefore, it is crucial to monitor licensing evolution. However, manually tracking the licensing evolution of thousands of files is a daunting task. After presenting several cases of the effects of licensing evolution, we argue that developers and system integrators must monitor licensing evolution and they need an automatic approach due to the sheer size of FOSS systems. We propose an approach to automatically track changes occurring in the licensing terms of a system and report an empirical study of the licensing evolution of six different FOSS systems. Results show that licensing underwent frequent and substantial changes.
    [bibtex-key = DiPenta10-ICSE-SoftwareLicensingEvolution]


  19. Salima Hassaine, Foutse Khomh, Yann-Gaël Guéhéneuc, and Sylvie Hamel. IDS: An Immune-inspired Approach for the Detection of Software Design Smells. In Mel Ó Cinnéide, editor, Proceedings of the 7th International Conference on the Quality of Information and Communications Technology (QUATIC), September--October 2010. IEEE Computer Society Press. Note: Quality in ICT Reengineering and Refactoring Track. 6 pages. [Text ] [Slides ] Keyword(s): Code and design smells, QUATIC.
    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 antipatterns). 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. With our parallel, we propose a novel approach built on models of the immune system responses to pathogenic material. We show that our approach can detect more than one smell at a time. We build and test our approach on GanttProject v1.10.2 and Xerces v2.7.0, for which manually-validated and publicly-available smells exist. The results show a significant improvement in detection time, precision, and recall, in comparison to the state--of--the--art approaches.
    [bibtex-key = Hassaine10-QUATIC-IDS]


  20. Günter Kniesel, Alexander Binun, Péter Hegedus, Lajos Jeno Fülöp, Alexander Chatzigeorgiou, Yann-Gaël Guéhéneuc, and Nikolaos Tsantalis. DPDX -- A Common Exchange Format for Design Pattern Detection Tools. In Rudolf Ferenc and Juan Carlos Dueñas, editors, Proceedings of the 14th European Conference on Software Maintenance and Reengineering (CSMR), March 2010. IEEE Computer Society Press. Note: Short paper. 5 pages. [Text ] [Slides ] Keyword(s): Design patterns, CSMR.
    Abstract:
    Tools for design pattern detection (DPD) can significantly ease program comprehension, helping programmers understand the design and intention of certain parts of a system's implementation. Many tools have been proposed in the past. However, the many different output formats used by the tools make it difficult to compare their results and to improve their accuracy and performance through data fusion. In addition, all the output formats have been shown to have several limitations in both their forms and contents. Consequently, we develop DPDX, a rich common exchange format for DPD tools, to overcome previous limitations. DPDX provides the basis for an open federation of tools that perform comparison, fusion, visualisation, and--or validation of DPD results. In the process of building the format, we also clarify some central notions of design patterns that lacked a common, generally accepted definitions, and thus provide a sound common foundation and terminology for DPD.
    [bibtex-key = Kniesel10-CSMR-DPDX]


  21. Nioosha Madani, Latifa Guerrouj, Massimiliano Di Penta, Yann-Gaël Guéhéneuc, and Giuliano Antoniol. Recognizing Words from Source Code Identifiers using Speech Recognition Techniques. In Rudolf Ferenc and Juan Carlos Dueñas, editors, Proceedings of the 14th European Conference on Software Maintenance and Reengineering (CSMR), March 2010. IEEE Computer Society Press. Note: Best paper. 10 pages. [Text ] [Slides ] Keyword(s): Understanding program comprehension, CSMR.
    Abstract:
    The existing software engineering literature has empirically shown that a proper choice of identifiers influences software understandability and maintainability. Researchers have noticed that identifiers are one of the most important source of information about program entities and that the semantic of identifiers guide the cognitive process. Recognizing the words forming identifiers is not an easy task when naming conventions (\eg{} Camel Case) are not used or strictly followed and--or when these words have been abbreviated or otherwise transformed. This paper proposes a technique inspired from speech recognition, \ie{} dynamic time warping, to split identifiers into component words. The proposed technique has been applied to identifiers extracted from two different applications: JHotDraw and Lynx. Results compared to manually-built oracles and with Camel Case algorithm are encouraging. In fact, they show that the technique successfully recognize words composing identifiers (even when abbreviated) in about 90\% of cases and that it performs better than Camel Case. Furthermore, it was able to spot mistakes in the manually-built oracle.
    [bibtex-key = Madani10-CSMR-IdentifiersSpeechRecognition]


  22. Rocco Oliveto, Foutse Khomh, Giuliano Antoniol, and Yann-Gaël Guéhéneuc. Numerical Signatures of Antipatterns: An Approach based on B-Splines. In Rudolf Ferenc and Juan Carlos Dueñas, editors, Proceedings of the 14th European Conference on Software Maintenance and Reengineering (CSMR), March 2010. IEEE Computer Society Press. Note: Short paper. 5 pages. [Text ] [Slides ] Keyword(s): Code and design smells, CSMR.
    Abstract:
    Antipatterns are poor object-oriented solutions to recurring design problems. The identification of occurrences of antipatterns in systems has received recently some attention but current approaches have two main limitations: either (1) they classify classes strictly as being or not antipatterns, and thus cannot report accurate information for borderline classes, or (2) they return the probabilities of classes to be antipatterns but they require an expensive tuning by experts to have acceptable accuracy. To mitigate such limitations, we introduce a new identification approach, ABS (Antipattern identification using B-Splines), based on a numerical analysis technique. The results of a preliminary study show that ABS generally outperforms previous approaches in terms of accuracy when used to identify Blobs.
    [bibtex-key = Oliveto10-CSMR-BSplineSmellDetection]


  23. Wei Wu, Yann-Gaël Guéhéneuc, Giuliano Antoniol, and Miryung Kim. AURA: A Hybrid Approach to Identify Framework Evolution. In Prem Devanbu and Sebastian Uchitel, editors, Proceedings of the 32nd International Conference on Software Engineering (ICSE), May 2010. ACM Press. Note: 10 pages. [Text ] [Slides ] Keyword(s): Evolution patterns, ICSE.
    Abstract:
    Software frameworks and libraries are indispensable to today's software systems. As they evolve, it is often time-consuming for developers to keep their code up-to-date, so approaches have been proposed to facilitate this. Usually, these approaches cannot automatically identify change rules for one-replaced-by-many and many-replaced-by-one methods, and they trade off recall for higher precision using one or more experimentally-evaluated thresholds. We introduce AURA, a novel hybrid approach that combines call dependency and text similarity analyses to overcome these limitations. We implement it in a Java system and compare it on five frameworks with three previous approaches by Dagenais and Robillard, M.\ Kim \ygg@latin{et al.}, and Sch\"afer \ygg@latin{et al.} The comparison shows that, on average, the recall of AURA is 53.07\% higher while its precision is similar, \ygg@latin{e.g.}, 0.10\% lower.
    [bibtex-key = Wu10-ICSE-AURA]


2009
  1. Luc Charest, Yann-Gaël Guéhéneuc, and Yousra Tagmouti. Translating Design Pattern Concepts to Hardware Concepts, chapter 4, pages 93--118. CRC Press, September 2009. Note: 25 pages. [Text ]
    Abstract:
    For half a century, hardware systems have become increasingly complex and pervasive. They are not only found in satellite navigation systems or automated factory machinery but also in everyday cell-phone, parc-o-meter, and car control-and-command systems. This increase in the use of hardware systems led to a revolution in their design and implementation: the chips are becoming more and more powerful, their logics is implemented as software systems executed by the chips, thus helping system designers to cope with their complexity. These \emph{mixed hardware--software systems} raise the level of generality of the ``hardware part'' and the level of abstraction of the ``software part'' of the systems. Thus, they suggest that mainstream software engineering techniques and good practices, such as design patterns, could be used by system designers to design and implement their mixed hardware--software systems. This chapter presents a proof of concept on ``translating'' the solutions of design patterns into hardware concepts to alleviate the system designers' work and, thus, to accelerate the design of mixed hardware--software systems. This chapter opens the path towards a new kind of hardware synthesis.
    [bibtex-key = Charest09-NETTechnology-PatternsHardware]


  2. Yann-Gaël Guéhéneuc. A Theory of Program Comprehension---Joining Vision Science and Program Comprehension. International Journal of Software Science and Computational Intelligence (IJSSCI), 1(2), April-June 2009. Note: 18 pages. [Text ] Keyword(s): Understanding program comprehension, JSSCI.
    Abstract:
    There exists an extensive literature on vision science, on the one hand, and on program comprehension, on the other hand. However, these two domains of research have been so far rather disjoint. Indeed, several cog- nitive theories have been proposed to explain program comprehension. These theories explain the processes taking place in the software engi- neers' minds when they understand programs. They explain how software engineers process available information to perform their tasks but not how software engineers acquire this information. Vision science provides ex- planations on the processes used by people to acquire visual information from their environment. Joining vision science and program comprehen- sion provides a more comprehensive theoretical framework to explain facts on program comprehension, to predict new facts, and to frame experi- ments. We join theories in vision science and in program comprehension; the resulting theory is consistent with facts on program comprehension and helps in predicting new facts, in devising experiments, and in putting certain program comprehension concepts in perspective.
    [bibtex-key = Gueheneuc08-JSSCI-VisionTheory]


  3. Daniel M. German, Massimiliano Di Penta, Yann-Gaël Guéhéneuc, and Giuliano Antoniol. Code Siblings: Technical and Legal Implications of Copying Code between Systems. In Michael W. Godfrey and Jim Whitehead, editors, Proceedings of the 6th Working Conference on Mining Software Repositories (MSR), May 2009. IEEE Computer Society Press. Note: 10 pages. [Text ] [Slides ] Keyword(s): Evolution patterns, MSR.
    Abstract:
    Source code cloning does not happen within a single system only. It can also occur between one system and another. We use the term code sibling to refer to a code clone that evolves in a different system than the code from which it originates. Code siblings can only occur when the source code copyright owner allows it and when the conditions imposed by such license are not incompatible with the license of the destination system. In some situations copying of source code fragments are allowed---legally---in one direction, but not in the other. In this paper, we use clone detection, license mining and classification, and change history techniques to understand how code siblings---under different licenses---flow in one direction or the other between Linux and two BSD Unixes, FreeBSD and OpenBSD. Our results show that, in most cases, this migration appears to happen according to the terms of the license of the original code being copied, favoring always copying from less restrictive licenses towards more restrictive ones. We also discovered that sometimes code is inserted to the kernels from an outside source.
    [bibtex-key = German09-MSR-CodeSiblings]


  4. Sébastien Jeanmart, Yann-Gaël Guéhéneuc, Houari Sahraoui, and Naji Habra. Impact of the Visitor Pattern on Program Comprehension and Maintenance. In James Miller and Rick Selby, editors, Proceedings of the 3rd International Symposium on Empirical Software Engineering and Measurement (ESEM), October 2009. IEEE Computer Society Press. Note: 10 pages. [Text ] [Slides ] Keyword(s): Understanding program comprehension, ESEM.
    Abstract:
    In the software engineering literature, many works claim that the use of design patterns improves the comprehensibility of programs and, more generally, their maintainability. Yet, little work attempted to study the impact of design patterns on the developers' tasks of program comprehension and modification. We design and perform an experiment to collect data on the impact of the Visitor pattern on comprehension and modification tasks with class diagrams. We use an eye-tracker to register saccades and fixations, the latter representing the focus of the developers' attention. Collected data show that the Visitor pattern plays a role in maintenance tasks: class diagrams with its canonical representation requires less efforts from developers.
    [bibtex-key = Jeanmart09-ESEM-VisitorImpact]


  5. Foutse Khomh, Massimiliano Di Penta, and Yann-Gaël Guéhéneuc. An Exploratory Study of the Impact of Code Smells on Software Change-proneness. In Giuliano Antoniol and Andy Zaidman, editors, Proceedings of the 16th Working Conference on Reverse Engineering (WCRE), October 2009. IEEE Computer Society Press. Note: 10 pages. [Text ] [Slides ] Keyword(s): Code and design smells, WCRE.
    Abstract:
    Code smells are poor implementation choices, thought to make object-orien\-ted systems hard to maintain. In this study, we investigate if classes with code smells are more change-prone than classes without smells. Specifically, we test the general hypothesis: classes with code smells are not more change prone than other classes. We detect umberofsmells{} code smells in 9 releases of Azureus and in 13 releases of Eclipse, and study the relation between classes with these code smells and class change-proneness. We show that, in almost all releases of Azureus and Eclipse, classes with code smells are more change-prone than others, and that specific smells are more correlated than others to change-proneness. These results justify \emph{a posteriori} previous work on the specification and detection of code smells and could help focusing quality assurance and testing activities.
    [bibtex-key = Khomh09-WCRE-CodeSmellsChanges]


  6. Foutse Khomh, Yann-Gaël Guéhéneuc, and Giuliano Antoniol. Playing Roles in Design Patterns: An Empirical Descriptive and Analytic Study. In Kostas Kontogiannis and Tao Xie, editors, Proceedings of the 25th International Conference on Software Maintenance (ICSM), September 2009. IEEE Computer Society Press. Note: 10 pages. [Text ] [Slides ] Keyword(s): Design patterns, ICSM.
    Abstract:
    This work presents a descriptive and analytic study of classes playing zero, one, or two roles in six different design patterns (and combinations thereof). First, we answer three research questions showing that (1) playing roles in design patterns is not a all-or-nothing characteristic of classes and that there are significant differences among the (2) internal and (3) external characteristics of classes playing zero, one, or two roles. Second, we revisit a previous work on design patterns and changeability and show that its results were, in a great part, due to classes playing two roles. Third, we exemplify the use of the study results to provide a ranking of the occurrences of the design patterns identified in a program. The ranking allows developers to balance precision and recall as they see fit.
    [bibtex-key = Khomh09-ICSM-DPRoles]


  7. Foutse Khomh, Stéphane Vaucher, Yann-Gaël Guéhéneuc, and Houari Sahraoui. A Bayesian Approach for the Detection of Code and Design Smells. In Choi Byoung-ju, editor, Proceedings of the 9th International Conference on Quality Software (QSIC), August 2009. IEEE Computer Society Press. Note: 10 pages. [Text ] [Slides ] Keyword(s): Code and design smells, QSIC.
    Abstract:
    The presence of code and design smells can have a severe impact on the quality of a program. Consequently, their detection and correction have drawn the attention of both researchers and practitioners who have proposed various approaches to detect code and design smells in programs. However, none of these approaches handle the inherent uncertainty of the detection process. We propose a Bayesian approach to manage this uncertainty. First, we present a systematic process to convert existing state-of-the-art detection rules into a probabilistic model. We illustrate this process by generating a model to detect occurrences of the Blob antipattern. Second, we present results of the validation of the model: we built this model on two open-source programs, \product{GanttProject v1.10.2} and \product{Xerces v2.7.0}, and measured its accuracy. Third, we compare our model with another approach to show that it returns the same candidate classes while ordering them to minimise the quality analysts' effort. Finally, we show that when past detection results are available, our model can be calibrated using machine learning techniques to offer an improved, context-specific detection.
    [bibtex-key = Khomh09-QSIC-BayesianDD]


  8. Stéphane Vaucher, Foutse Khomh, Naouel Moha, and Yann-Gaël Guéhéneuc. Prevention and Cure of Software Defects: Lessons from the Study of God Classes. In Giuliano Antoniol and Andy Zaidman, editors, Proceedings of the 16th Working Conference on Reverse Engineering (WCRE), October 2009. IEEE Computer Society Press. Note: 10 pages. [Text ] [Slides ] Keyword(s): Code and design smells, Quality models, WCRE.
    Abstract:
    ``God class'' is a term used to describe certain types of large classes which ``know too much or do too much". Often a God class(\GC{}) is created by accident as incremental functionality is added to a central class over the course of several versions. \GC{}s are generally thought to be examples of bad code that should be detected and removed to ensure software quality. However, in some cases, a \GC{} is created by design as the best solution to a particular problem because, \eg{} the problem is not easily decomposable or strong requirements on efficiency are imposed. In this paper we study, in two open-source systems, the ``life cycle" of \GC{}s: how they arise, how prevalent are they, and whether they remain or are they removed as the systems evolve over time through a number of versions. We show how to detect the degree of ``godliness" in classes automatically. Then we show that by identifying the evolution of ``godliness" we can distinguish between those that are so by design (good code) from those that occurred by accident (bad code). This methodology will allow software quality teams to implement prevention and correction mechanisms.
    [bibtex-key = Vaucher09-WCRE-CurePreventionSmells]


  9. Foutse Khomh, Massimiliano Di Penta, Yann-Gaël Guéhéneuc, and Guiliano Antoniol. An Exploratory Study of the Impact of Antipatterns on Software Changeability. Technical report EPM-RT-2009-02, École Polytechnique de Montréal, April 2009. Note: 15 pages. [Text ] Keyword(s): Code and design smells, Evolution patterns.
    Abstract:
    Antipatterns are poor design choices that make object-orien\-ted systems hard to maintain by developers. In this study, we investigate if classes that participate in antipatterns are more change-prone than classes that do not. Specifically, we test the general hypothesis: classes belonging to antipatterns are not more likely than other classes to undergo chan\-ges, to be impacted when fixing issues posted in issue-tracking systems, and in particular to unhandled excep\-tions-related issues---a crucial problem for any software system. We detect 11 antipatterns in 13 releases of Eclipse and study the relations between classes involved in these antipatterns and classes change-, issue-, and unhandled ex\-ception-proneness. We show that, in almost all releases of Eclipse, classes with antipatterns are more change-, issue-, and un\-handled-exception-prone than others. These results justify previous work on the specification and detection of antipatterns and could help focusing quality assurance and testing activities.
    [bibtex-key = Khomh09-TR-AntipatternsChangeability]


  10. Foutse Khomh, Yann-Gaël Guéhéneuc, and Guiliano Antoniol. An Empirical Descriptive and Analytic Study of Playing Roles in Design Patterns. Technical report EPM-RT-2009-03, École Polytechnique de Montréal, April 2009. Note: 15 pages. [Text ] Keyword(s): Design patterns, Evolution patterns.
    Abstract:
    This work presents a descriptive and analytic study of classes playing zero, one, or two roles in six different design patterns (and combinations thereof). First, we answer three research questions showing that (1) playing roles in design patterns is not a all-or-nothing characteristic of classes and that there are significant differences among the (2) internal and (3) external characteristics of classes playing zero, one, or two roles. Second, we revisit a previous work on design patterns and changeability and show that its results were, in a great part, due to classes playing two roles. Third, we exemplify the use of the study results to provide a ranking of the occurrences of the design patterns identified in a program. The ranking allows developers to balance precision and recall as they see fit.
    [bibtex-key = Khomh09-TR-DesignPatternsRoles]


  11. Foutse Khomh, Naouel Moha, and Yann-Gaël Guéhéneuc. DEQUALITE : méthode de construction de modèles de qualité prenant en compte la conception des systèmes. Technical report EPM-RT-2009-04, École Polytechnique de Montréal, avril 2009. Note: 31 pages. [Text ] Keyword(s): Quality models.
    Abstract:
    La plupart des mod\`eles de qualit\'e pr\'esent\'es dans la litt\'erature ou utilis\'es dans l’industrie pour \'evaluer les syst\`emes par objets utilisent des m\'etriques de classes (nombre de m\'ethodes d’une classe par exemple) ou des m\'etriques de relations entre classes (couplage entre deux classes par exemple) pour mesurer les attributs internes des syst\`emes. Cependant, la qualit\'e des syst\`emes par objets ne d\'epend pas uniquement de la structure de leurs classes mais aussi de la fa\c con dont celles-ci sont organis\'ees, c’est-\`a-dire de leur conception. Nous proposons DEQUALITE, une m\'ethode de construction de mod\`eles de qualit\'e permettant de mesurer la qualit\'e des syst\`emes par objets en prenant en compte non seulement les attributs internes du syst\`eme mais aussi sa conception. Notre m\'ethode utilise une approche par apprentissage. Elle s’appuie sur une \'etude des patrons de conception pour prendre en compte la conception des syst\`emes. Notre m\'ethode permet aussi de combiner des mod\`eles de qualit\'e afin d’augmenter la capacit\'e de pr\'ediction. Nous illustrons notre m\'ethode sur un ensemble de syst\`emes implantant des patrons de conception et sur le mod\`ele de qualit\'e QMOOD de Bansiya. Nous discutons les avantages et les inconv\'enients de cette m\'ethode et proc\'edons \`a la validation d’un mod\`ele de qualit\'e r\'esultant sur un ensemble de syst\`emes. Nous terminons par une discussion sur les avantages et limitations de l’utilisation des patrons de conception pour la construction de mod\`eles de qualit\'e.
    [bibtex-key = Khomh09-TR-DEQUALITE]


2008
  1. Khashayar Khosravi and Yann-Gaël Guéhéneuc. On Issues with Software Quality Models, chapter 11, pages 218--235. ICFAI University Press, January 2008. Note: 28 pages. [Text ] Keyword(s): Quality models, Design patterns, SQM.
    Abstract:
    Software metrics and quality models play a pivotal role in measurement of software quality. A number of well-known quality models and software metrics are used to build quality software both in industry and in academia. However, during our research on measuring software quality using design patterns, we faced many issues related to existing software metrics and quality models. In this position paper, we discuss some of these issues and present our approach to software quality assessment.
    [bibtex-key = Khosravi08-SQM-IssuesQualityModels]


  2. Yann-Gaël Guéhéneuc and Giuliano Antoniol. DeMIMA: A Multi-layered Framework for Design Pattern Identification. Transactions on Software Engineering (TSE), 34(5):667--684, September 2008. Note: 18 pages. [Text ] Keyword(s): Design patterns, TSE.
    Abstract:
    Design patterns are important in object-oriented programming because they offer design motifs, elegant solutions to recurrent design problems, which improve the quality of software systems. Design motifs facilitate system maintenance by helping to understand design and implementation. However, after implementation, design motifs are spread throughout the source code and are thus not directly available to maintainers. We present DeMIMA, an approach to identify semi-automatically micro-architectures that are similar to design motifs in source code and to ensure the traceability of these micro-architectures between implementation and design. DeMIMA consists of three layers: two layers to recover an abstract model of the source code, including binary class relationships, and a third layer to identify design patterns in the abstract model. We apply DeMIMA to five open-source systems and, on average, we observe 34\% precision for the considered 12 design motifs. Through the use of explanation-based constraint programming, DeMIMA ensures 100\% recall on the five systems. We also apply DeMIMA on 33 industrial components.
    [bibtex-key = Gueheneuc07-TSE-MultiLayeredFramework]


  3. Giuliano Antoniol, Kamel Ayari, Massimiliano Di Penta, Foutse Khomh, and Yann-Gaël Guéhéneuc. Is It a Bug or an Enhancement? A Text-based Approach to Classify Change Requests. In Mark Vigder and Marsha Chechik, editors, Proceedings of the 18th IBM Centers for Advanced Studies Conference (CASCON), October 2008. ACM Press. Note: 15 pages. [Text ] [Slides ] Keyword(s): Evolution patterns, CASCON.
    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. This paper investigates whether the text of the issues posted in bug tracking systems is enough to classify them into corrective maintenance and other kinds of activities. We show that alternating decision trees, naive Bayes classifiers, and logistic regression can be used to accurately distinguish bugs from other kinds of issues. Results from empirical studies performed on issues for Mozilla, Eclipse, and JBoss indicate that issues can be classified with between 77\% and 82\% of correct decisions.
    [bibtex-key = Antoniol08-CASCON-ClassificationofChangeReq]


  4. Giuliano Antoniol, Jane Huffman Hayes, Yann-Gaël Guéhéneuc, and Massimiliano Di Penta. Reuse or Rewrite: Combining Textual, Static, and Dynamic Analyses to Assess the Cost of Keeping a System Up-to-date. In Hong Mei and Kenny Wong, editors, Proceedings of the 24th International Conference on Software Maintenance (ICSM), September--October 2008. IEEE Computer Society Press. Note: 10 pages. [Text ] [Slides ] Keyword(s): Features and requirements, ICSM.
    Abstract:
    Undocumented software systems are a common challenge for developers performing maintenance and/or reuse. The challenge is two-fold: (1) when no comments or documentation exist, it is difficult for developers to understand how a system works; (2) when no requirements exist, it is difficult to know what the system actually does. We present a method, named ReORe (Reuse or Rewrite) that assists developers in recovering requirements for a competitor system and in deciding if they should reuse parts of their existing system or rewrite it from scratch. Our method requires source code and executable for the system and assumes that requirements are preliminarily recovered. We apply ReORe to Lynx, a Web browser written in C. We provide evidence of ReORe accuracy: 56\% for validation based on textual and static analysis and 94\% for the final validation using dynamic analysis.
    [bibtex-key = Antoniol08-ICSM-ReORe]


  5. Simon Denier and Yann-Gaël Guéhéneuc. Mendel: A Model, Metrics, and Rules to Understand Class Hierarchies. In René Krikhaar and Ralf Lämmel, editors, Proceedings of the 16th International Conference on Program Comprehension (ICPC), June 2008. IEEE Computer Society Press. Note: 10 pages. [Text ] [Slides ] Keyword(s): Understanding program comprehension, ICPC.
    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. Thus, we provide the programmer with insight on how inheritance is used in a program. We illustrate our approach on \JHotDraw{} and validate it further on three other programs: ArgoUML, Azureus, and Log4J. We also show that our model can describe existing rules, such as micro patterns.
    [bibtex-key = Denier08-ICPC-Mendel]


  6. Massimiliano Di Penta, Luigi Cerulo, Yann-Gaël Guéhéneuc, and Giuliano Antoniol. An Empirical Study of the Relationships between Design Pattern Roles and Class Change Proneness. In Hong Mei and Kenny Wong, editors, Proceedings of the 24th International Conference on Software Maintenance (ICSM), September--October 2008. IEEE Computer Society Press. Note: 10 pages. [Text ] [Slides ] Keyword(s): Design patterns, ICSM.
    Abstract:
    Analyzing the change-proneness of design patterns and the kinds of changes occurring to classes playing role(s) in some design pattern(s) during software evolution poses the basis for guidelines to help developers who have to choose, apply or maintain design patterns. Building on previous work, this paper shifts the focus from design patterns as wholes to the finer-grain level of design pattern roles. It presents an empirical study to understand whether there are roles that are more change-prone than others and whether there are changes that are more likely to occur to certain roles. It relies on data extracted from the source code repositories of three different systems (JHotDraw, Xerces, and Eclipse-JDT) and from 12 design patterns.
    [bibtex-key = DiPenta08-ICSM-DPRoles]


  7. Marc Eaddy, Alfred V. Aho, Giuliano Antoniol, and Yann-Gaël Guéhéneuc. Cerberus: Tracing Requirements to Source Code Using Information Retrieval, Dynamic Analysis, and Program Analysis. In René Krikhaar and Ralf Lämmel, editors, Proceedings of the 16th International Conference on Program Comprehension (ICPC), June 2008. IEEE Computer Society Press. Note: 10 pages. [Text ] [Slides ] Keyword(s): Features and requirements, ICPC.
    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. We developed Cerberus, a potent hybrid technique for concern location that combines information retrieval, execution tracing, and prune dependency analysis. We used Cerberus to trace the 360 requirements of RHINO, a 32,134 line Java program that implements the ECMAScript international standard. In our experiment, prune dependency analysis boosted the recall of information retrieval by 155\% and execution tracing by 104\%. Moreover, we show that our combined technique outperformed the other techniques when run individually or in pairs.
    [bibtex-key = Eaddy08-ICPC-Cerberus]


  8. Adnane Ghannem, Salima Hassaine, Yann-Gaël Guéhéneuc, and Sylvie Hamel. L'analyse de logiciels, phylogénie et histoire. In Mireille Blay-Fornarino, editor, Actes du 14e colloque Langages et Modèles à Objets (LMO), mars 2008. Éditions Cépaduès. Note: Poster. 2 pages. [Text ] [Slides ] Keyword(s): Evolution patterns, LMO.
    Abstract:
    La maintenance des logiciels de grande taille est une activit\'e co\^uteuse, car leur \'evolution incontr\^ol\'ee compromet leur compr\'ehension et modification. Une \'etude de leur \'evolution pourrait r\'eduire les co\^uts. Notre travail a pour objectif de proposer des techniques d'analyse de l'\'evolution (historique et phylog\'enie), en adaptant des algorithmes de bioinformatique.
    [bibtex-key = Ghannem08-LMO-AnalyseLogiciels]


  9. Jane Huffman Hayes, Giuliano Antoniol, and Yann-Gaël Guéhéneuc. Prereqir: Recovering Pre-Requirements via Cluster Analysis. In Andy Zaidman, Massimilano Di Penta, and Ahmed Hassan, editors, Proceedings of the 15th Working Conference on Reverse Engineering (WCRE), pages 165--174, October 2008. IEEE Computer Society Press. Note: 10 pages. [Text ] [Slides ] Keyword(s): Features and requirements, WCRE.
    Abstract:
    High-level software artifacts, such as requirements, domain-specific requirements, and so on, are an important source of information that is often neglected during the reverse- and re-engineering processes. We posit that domain specific pre-requirements information (PRI) can be obtained by eliciting the stakeholders' understanding of generic systems or domains. We discuss the semi-automatic recovery of domain-specific PRI that can then be used during reverse- and re-engineering, for example, to recover traceability links or to assess the degree of obsolescence of a system with respect to competing systems and the clients' expectations. We present a method using partition around medoids and agglomerative clustering for obtaining, structuring, analyzing, and labeling textual PRI from a group of diverse stakeholders. We validate our method using PRI for the development of a generic Web browser provided by 22 different stakeholders. We show that, for a similarity threshold of about 0.36, about 55\% of the PRI were common to two or more stakeholders and 42\% were outliers. We automatically label the common and outlier PRI (82\% correctly labeled), and obtain 74\% accuracy for the similarity threshold of 0.36 (78\% for a threshold of 0.5). We assess the recall and precision of the method, and compare the labeled PRI to a generic Web browser requirements specification.
    [bibtex-key = Hayes08-WCRE-PREREQIR]


  10. Foutse Khomh and Yann-Gaël Guéhéneuc. Do Design Patterns Impact Software Quality Positively?. In Christos Tjortjis and Andreas Winter, editors, Proceedings of the 12th Conference on Software Maintenance and Reengineering (CSMR), April 2008. IEEE Computer Society Press. Note: Short Paper. 5 pages. [Text ] [Slides ] Keyword(s): Quality models, CSMR.
    Abstract:
    We present an empirical study of the impact of design patterns on quality attributes in the context of software maintenance and evolution. Our first hypothesis verifies software engineering lore: design patterns impact software quality positively. We show that, contrary to popular beliefs, design patterns \emph{in practice} impact negatively several quality attributes, thus providing concrete evidence against common lore. We then study design patterns and object-oriented best practices by formulating a second hypothesis on the impact of these principles on quality. We show that results for some design patterns cannot be explained and conclude on the need for further studies on the relation between design patterns and object-oriented best practices. Thus, we bring further evidence that design patterns should be used with caution during development because they may actually impede maintenance and evolution.
    [bibtex-key = Khomh08-CSMR-DPQuality]


  11. Naouel Moha, Yann-Gaël Guéhéneuc, Anne-Françoise Le Meur, and Laurence Duchien. A Domain Analysis to Specify Design Defects and Generate Detection Algorithms. In José Fiadeiro and Paola Inverardi, editors, Proceedings of the 11th international conference on Fundamental Approaches to Software Engineering (FASE), March-April 2008. Springer-Verlag. Note: 15 pages. [Text ] [Slides ] Keyword(s): Code and design smells, FASE.
    Abstract:
    Quality experts often need to identify in software systems design defects, which are recurring design problems, that hinder the development and maintenance. Consequently, several design defect detection approaches and tools have been proposed in the literature. However, we are not aware of any approach that defines and reify the process of generating detection algorithms from the existing textual descriptions of defects. In this paper, we introduce an approach to automate the generation of detection algorithms from specifications written using a domain-specific language. The domain-specific is defined from a thorough domain analysis. We specify several design defects, generate automatically detection algorithms using templates, and validate the generated detection algorithms in terms of precision and recall on \ygg@product{Xerces} v2.7.0, an open-source object-oriented system.
    [bibtex-key = Moha08-FASE-DDDomainAnalysis]


  12. Naouel Moha, Amine Mohamed Rouane Hacene, Petko Valtchev, and Yann-Gaël Guéhéneuc. Refactorings of Design Defects using Relational Concept Analysis. In Raoul Medina and Sergei Obiedkov, editors, Proceedings of the 4th International Conference on Formal Concept Analysis (ICFCA), February 2008. Springer-Verlag. Note: 18 pages. [Text ] [Slides ] Keyword(s): Code and design smells, ICFCA.
    Abstract:
    Software engineers often need to identify and correct design defects, \ie{} recurring design problems that hinder development and maintenance by making programs harder to comprehend and--or evolve. While detection of design defects is an actively researched area, their correction---mainly a manual and time-consuming activity --- is yet to be extensively investigated for automation. In this paper, we propose an automated approach for suggesting defect-correcting refactorings using relational concept analysis (RCA). The added value of RCA consists in exploiting the links between formal objects which abound in a software re-engineering context. We validated our approach on instances of the extit{Blob} design defect taken from four different open-source programs.
    [bibtex-key = Moha08-ICFCA-RefactoringsDesignDefects]


  13. Naouel Moha, Foutse Khomh, and Yann-Gaël Guéhéneuc. Génération automatique d'algorithmes de détection des défauts de conception. In Mireille Blay-Fornarino, editor, Actes du 14e colloque Langages et Modèles à Objets (LMO), mars 2008. Éditions Cépaduès. Note: 13 pages. [Text ] [Slides ] Keyword(s): Code and design smells, LMO.
    Abstract:
    Les d\'efauts de conception sont des probl\`emes r\'ecurrents de conception qui diminuent la qualit\'e des programmes et donc freinent leur d\'eveloppement et maintenance. Plusieurs approches outill\'ees de d\'etection des d\'efauts ont \'et\'e propos\'ees dans la litt\'erature mais, \`a notre connaissance, elles utilisent toutes des algorithmes de d\'etection ad hoc, ce qui rend difficile leur g\'en\'eralisation \`a d'autres d\'efauts, et elles sont bas\'ees principalement sur des m\'etriques, qui ne rendent pas compte de certaines caract\'eristiques importantes des syst\`emes analys\'es, telle leur architecture. Dans cet article, nous d\'eveloppons notre approche bas\'ee sur un m\'eta-mod\`ele des d\'efauts de conception en pr\'esentant une g\'en\'eration automatique des algorithmes de d\'etection \`a partir de gabarits. Nous pr\'esentons aussi les performances de la g\'en\'eration et \'evaluons les algorithmes g\'en\'er\'es en terme de pr\'ecision et de rappel. Nous fournissons ainsi des moyens concrets pour automatiser la g\'en\'eration des algorithmes de d\'etection et donc de d\'etecter de nouveaux d\'efauts tout en prenant en compte toutes les caract\'eristiques des syst\`emes.
    [bibtex-key = Moha08-LMO-DefautConception]


  14. Simon Denier, Foutse Khomh, and Yann-Gaël Guéhéneuc. Reverse-Engineering the Literature on Design Patterns and Reverse-Engineering. Technical report EPM-RT-2008-09, DGIGL, École Polytechnique Montréal, October 2008. Note: 18 pages. [Text ] Keyword(s): Understanding program comprehension.
    Abstract:
    Since their inception in 1994, design patterns have been the subject of many papers. In the reverse-engineering community, several authors have proposed approaches to consider design patterns during reverse- and re-engineering. However, it has been recently put forward in the community that it is difficult to compare previous approaches due to the diversity of vocabulary and the lack of a general framework to map and relate these approaches. Consequently, we study 59 papers related to design patterns in the software engineering community at large (1) to identify and define common terms related to design patterns, (2) to identify recurring themes in the papers, and (3) to further characterise approaches for design pattern detection along several categories. Recurring themes allow us to provide the portrait of the ``typical" paper on design patterns while catagories draw the portrait of the ``typical" approach in design pattern detection. We propose to the community to use a fix vocabulary, to diversify the approaches, and to build a common benchmark to assess the reverse engineering of design patterns.
    [bibtex-key = Denier08-TR-DPStateOfTheArt]


  15. Foutse Khomh and Yann-Gael Guéhéneuc. An Empirical Study of Design Patterns and Software Quality. Technical report 1315, University of Montreal, january 2008. Note: 44 pages. [Text ] Keyword(s): Quality models, Design patterns.
    Abstract:
    We present an empirical study of the impact of design patterns on quality attributes in the context of software maintenance and evolution. Our first hypothesis verifies software engineering lore: design patterns impact software quality positively. We show that, contrary to popular beliefs, design patterns in practice impact negatively several quality attributes, thus providing concrete evidence against common lore. We then study design patterns and object-oriented best practices by formulating a second hypothesis on the impact of these principles on quality. We show that results for some design patterns cannot be explained and conclude on the need for further studies on the relation between design patterns and object-oriented best practices. Thus, we bring further evidence that design patterns should be used with caution during development because they may actually impede maintenance and evolution.
    [bibtex-key = Khomh08-TR-EmpStudyDPQuality]


  16. Naouel Moha and Yann-Gaël Guéhéneuc. Ptidej and DECOR: Identification of Design Patterns and Design Defects, February 2008. Note: SATToSE: Seminar on Advanced Tools and Techniques for Software Evolution, Waulsort, Belgium.Keyword(s): Code and design smells, SATToSE. [bibtex-key = Moha08-Demo-SATToSE]


2007
  1. Denys Poshyvanyk, Yann-Gaël Guéhéneuc, Andrian Marcus, Giuliano Antoniol, and Václav Rajlich. Feature Location using Probabilistic Ranking of Methods based on Execution Scenarios and Information Retrieval. Transactions on Software Engineering (TSE), 33(6):420--432, June 2007. Note: 14 pages. [Text ] Keyword(s): Features and requirements, TSE.
    Abstract:
    This paper recasts the problem of feature location in source code as a decision-making problem in the presence of uncertainty. The solution to the problem is formulated as a combination of expert opinions. The experts in this case are represented by two existing techniques for feature location: Scenario-based Probabilistic Ranking of events and an Information Retrieval-based technique that uses Latent Semantic Indexing. The combination of these two methods is empirically evaluated through several case studies. The case studies use the source code of the Mozilla web browser and the Eclipse integrated development environment. The results show that the combined technique significantly improves the effectiveness of feature location when compared to each of the techniques used independently.
    [bibtex-key = Poshyvanyk07-TSE-Promesir]


  2. Giuliano Antoniol, Yann-Gaël Guéhéneuc, Ettore Merlo, and Paolo Tonella. Mining the Lexicon Used by Programmers during Software Evolution. In Ladan Tahvildari and Gerardo Canfora, editors, Proceedings of the 23rd International Conference on Software Maintenance (ICSM), October 2007. IEEE Computer Society Press. Note: 10 pages. [Text ] [Slides ] Keyword(s): Evolution patterns, ICSM.
    Abstract:
    Identifiers represent an important source of information for programmers understanding and maintaining a system. Self-documenting identifiers reduce the time and effort necessary to obtain the level of understanding appropriate for the task at hand. While the role of the lexicon in program comprehension has long been recognized, only a few works have studied the quality and enhancement of the identifiers and no works have studied the evolution of the lexicon. In this paper, we characterize the evolution of program identifiers in terms of stability metrics and occurrences of renaming. We assess whether an evolution process similar to the one occurring for the program structure exists for identifiers. We report data and results about the evolution of three large systems, for which several releases are available. We have found evidence that the evolution of the lexicon is more limited and constrained than the evolution of the structure. We argue that the different evolution results from several factors including the lack of advanced tool support for lexicon construction, documentation, and evolution. Finally, we suggest the existence of rules on the co-evolution of structure and lexicon of software systems.
    [bibtex-key = Antoniol07-ICSM-LexiconEvolution]


  3. José Côté, Pilar Ramirez Garcia, Gaston Godin, and Yann-Gaël Guéhéneuc. Gérer sa médication antirétrovirale avec une assistance en ligne... une approche en cours d'évaluation. In Bernard Bégaud, Pavel Hamet, André Jacques, and Vittorio A. Sironi, editors, Actes du 2e Congrès international sur la chaîne des médicaments, Octobre 2007. Groupe d'étude sur l'interdisciplinarité et les représentations sociales. [Text ] Keyword(s): VIHTAVIE, CICM. [bibtex-key = Cote07-CICM-GereMedicationAntiretrovirale]


  4. Yann-Gaël Guéhéneuc. PMARt: Pattern-like Micro Architecture Repository. In Michael Weiss, Aliaksandr Birukou, and Paolo Giorgini, editors, Proceedings of the 1st EuroPLoP Focus Group on Pattern Repositories, July 2007. Note: 3 pages. [Text ] Keyword(s): Design patterns, EPFPR.
    Abstract:
    We introduce PMARt{}, a repository of pattern-like micro-architetcures. The purpose of PMARt{} is to serve as baseline to assess the precision and recall of pattern identification tools. Indeed, several approaches have been proposed to identify occurrences of design patterns, yet few have been independently validated for precision and recall for lack of known occurrences. We hope that PMARt{} can be shared and enriched by researchers interested in design pattern identification.
    [bibtex-key = Gueheneuc07-EPFPR-PMARt]


  5. Yann-Gaël Guéhéneuc and Rabih Mustapha. A Simple Recommender System for Design Patterns. In Michael Weiss, Aliaksandr Birukou, and Paolo Giorgini, editors, Proceedings of the 1st EuroPLoP Focus Group on Pattern Repositories, July 2007. Note: 2 pages. [Text ] Keyword(s): Design patterns, EPFPR.
    Abstract:
    Since its introduction in computer science, the concept of pattern has flourished. Several conferences and workshops focus on writing and disseminating patterns. Consequently, a large number of patterns exist and it is sometimes difficult to find the right patterns and to choose among many candidate, when solving a given problem. In this paper, we introduce a simple recommender system to help user in choosing among the 23 design patterns from the GoF. We detail its implementation and discuss its application to other patterns.
    [bibtex-key = Gueheneuc07-EPFPR-Recommander]


  6. Foutse Khomh and Yann-Gaël Guéhéneuc. Perception and Reality: What are Design Patterns Good For?. In Fernando Brito e Abreu, Coral Calero, Yann-Gaël Guéhéneuc, Christian Lange, Michele Lanza, and Houari A. Sahraoui, editors, Proceedings of the 11th ECOOP workshop on Quantitative Approaches in Object-Oriented Software Engineering (QAOOSE), July--August 2007. Springer-Verlag. Note: 7 pages. [Text ] [Slides ] Keyword(s): Quality models, Design patterns, QAOOSE.
    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). We perform a Null hypothesis test and we conclude that, contrary to popular beliefs, design patterns do not always improve reusability and understandability, but that they do improve expandability.
    [bibtex-key = Khomh07-QAOOSE-DPQuality]


  7. Naouel Moha, Yann-Gaël Guéhéneuc, Laurence Duchien, and Anne-Françoise Le Meur. Discussion on the Results of the Detection of Design Defects. In Serge Demeyer, Yann-Gaël Guéhéneuc, Christian Lange, Kim Mens, Roel Wuyts, and Stéphane Ducasse, editors, Proceedings of the 8th ECOOP workshop on Object-Oriented Reengineering (WOOR), July--August 2007. Springer-Verlag. Note: 6 pages. [Text ] Keyword(s): Code and design smells, WOOR.
    Abstract:
    Software engineers often need to identify in their systems ``poor" design choices---design defects---that hinder the development and maintenance, as opportunities of improvements and as a measure of the quality of their systems. However, the detection of design defects is difficult because of the lack of specifications and tools. We propose DECOR, a method to specify design defects systematically and to generate automatically detection algorithms. With this method, software engineers analyse and specify design defects at a high-level of abstraction using a unified vocabulary and a dedicated language for generating detection algorithms. To illustrate our method, in this paper, we specify 4 well-known design defects, the antipatterns Blob, Functional Decomposition, Spaghetti Code, and Swiss Army Knife and their 15 underlying code smells and we generate automatically their detection algorithms. We apply and validate the detection algorithms in terms of precision and recall and discuss the precision of these algorithms on 11 open-source object-oriented systems.
    [bibtex-key = Moha07-WOOR-DesignDefects]


  8. Janice Ka-Yee Ng and Yann-Gaël Guéhéneuc. Identification of Behavioral and Creational Design Patterns through Dynamic Analysis. In Andy Zaidman, Abdelwahab Hamou-Lhadj, and Orla Greevy, editors, Proceedings of the 3rd International Workshop on Program Comprehension through Dynamic Analysis (PCODA), pages 34--42, October 2007. Delft University of Technology. Note: TUD-SERG-2007-022. 9 pages. [Text ] Keyword(s): Design patterns, PCODA.
    Abstract:
    Design patterns are considered to be a simple and elegant way to solve problems in object-oriented software systems, because their application leads to a well-structured object-oriented design, and hence, are considered to ease software comprehension and maintenance. However, due to the complexity of large object-oriented software systems nowadays, it is impossible to recover manually the design patterns applied during the design and implementation of a system, which, in turn, impedes its comprehension. In the past few years, the structure and organization among classes were the predominant means of identifying design patterns in object-oriented software systems. In this paper, we show how to describe behavioral and creational design patterns as collaborations among objects and how these representations allow the identification of behavioral and creational design patterns using dynamic analysis and constraint programming.
    [bibtex-key = KaYeeNg07-PCODA-DynamicDPDetection]


  9. Yann-Gaël Guéhéneuc. Design Pattern Identification in Ptidej, March 2007. Note: Tool demo at GRASCOMP Graduate School in Computing Science 2007 (COMP013). [Text ] Keyword(s): Design patterns, GRASCOMP.
    Abstract:
    The Ptidej (Pattern Trace Identification, Detection, and Enhancement in Java) project aims at developing a tool suite to evaluate and to enhance the quality of object-oriented programs, promoting the use of patterns, at language-, design-, or architectural-level.
    [bibtex-key = Gueheneuc07-Demo-GRASCOMP]


  10. Yann-Gaël Guéhéneuc. Ptidej - A Tool Suite, May 2007. Note: Tool demo at the 5th World's Best Technologies Showcase. [Text ] Keyword(s): Design patterns, Code and design smells, WBT Showcase.
    Abstract:
    The Ptidej (Pattern Trace Identification, Detection, and Enhancement in Java) project aims at developing a tool suite to evaluate and to enhance the quality of object-oriented programs, promoting the use of patterns, at language-, design-, or architectural-level.
    [bibtex-key = Gueheneuc07-Demo-WBTShowcase]


  11. Yann-Gaël Guéhéneuc. Ptidej: A Flexible Reverse Engineering Tool Suite, October 2007. Note: Tool demo at the 23rd International Conference on Software Maintenance.Keyword(s): Design patterns, ICSM.
    Abstract:
    The Ptidej{} project started in 2001 to study the automated identification of design patterns. Since then, it has evolved into a complete reverse-engineering tool suite that includes several identification algorithms for idioms, micro-patterns, design patterns, and design defects (code smells and antipatterns). It is a flexible tool suite that attempts to ease as much as possible the development of new identification algorithms. In this demonstration, we first present the key features of the tool suite user interface and the various identification algorithms. We then discuss the architecture and design choices of the tool suite and lesson learned in developing a reverse-engineering environment.
    [bibtex-key = Gueheneuc07-Demo-ICSM]


  12. Naouel Moha and Yann-Gaël Guéhéneuc. Ptidej and DECOR: Identification of Design Patterns and Design Defects, October 2007. Note: Tool demo at the 21st International Conference on Object-Oriented Programming, Systems, Languages and Applications.Keyword(s): Code and design smells, OOPSLA.
    Abstract:
    The Ptidej{} project started in 2001 to study code generation from and identification of patterns. Since then, it has evolved into a complete reverse-engineering tool suite that includes several identification algorithms. It is a flexible tool suite that attempts to ease as much as possible the development of new identification and analysis algorithms. Recently, the module DECOR{} has been added to Ptidej{} and allows the detection of design defects, which are recurring design problems. In this demonstration, we particularly focus on the creation and use of identification algorithms for design patterns and defects.
    [bibtex-key = Moha07-Demo-OOPSLA]


  13. Naouel Moha and Yann-Gaël Guéhéneuc. Ptidej and DECOR: Identification of Design Patterns and Design Defects, November 2007. Note: Tool demo at the 22nd International Conference on Automated Software Engineering.Keyword(s): Code and design smells, ASE.
    Abstract:
    The Ptidej{} project started in 2001 to study code generation from and identification of patterns. Since then, it has evolved into a complete reverse-engineering tool suite that includes several identification algorithms. It is a flexible tool suite that attempts to ease as much as possible the development of new identification and analysis algorithms. Recently, the module DECOR{} has been added to Ptidej{} and allows the detection of design defects, which are recurring design problems. In this demonstration, we particularly focus on the creation and use of identification algorithms for design patterns and defects.
    [bibtex-key = Moha07-Demo-ASE]


2006
  1. Yann-Gaël Guéhéneuc, Jean-Yves Guyomarc'h, Khashayar Khosravi, and Houari Sahraoui. Design Patterns as Laws of Quality, chapter 5, pages 105--142. Idea Group, January 2006. Note: 35 pages. [Text ] Keyword(s): Quality models, Design patterns, OODK.
    Abstract:
    This chapter is a complete coverage of our current work on software quality models and on design pattern identification. In this chapter, we explore the idea of facts in science in relation with software quality models. We show how design patterns can be used as facts to devise a quality model and we describe the processes of building and of applying such a quality model.
    [bibtex-key = Gueheneuc05-OODK-DesignPatternLaws]


  2. Giuliano Antoniol and Yann-Gaël Guéhéneuc. Feature Identification: An Epidemiological Metaphor. Transactions on Software Engineering (TSE), 32(9):627--641, September 2006. Note: 15 pages. [Text ] Keyword(s): Features and requirements, TSE.
    Abstract:
    Feature identification is a technique to identify the source code constructs activated when exercising one of the features of a program. We propose new statistical analyses of static and dynamic data to accurately identify features in large multi-threaded object-oriented programs. We draw an inspiration from epidemiology to improve previous approaches to feature identification and develop an epidemiological metaphor. We build our metaphor on our previous approach to feature identification, in which we use processor emulation, knowledge-based filtering, probabilistic ranking, and meta-modelling. We carry out three case studies to assess the usefulness of our metaphor, using the ``save a bookmark" feature of Web browsers as illustration. In the first case study, we compare our approach with three previous approaches (a naive approach, a concept analysis-based approach, and our previous probabilistic approach) in identifying the feature in \ygg@product{Mozilla}, a large, real-life, multi-threaded object-oriented program. In the second case study, we compare the implementation of the feature in the \ygg@product{Firefox} and \ygg@product{Mozilla} Web browsers. In the third case study, we identify the same feature in two more Web browsers, Chimera (in \C) and ICEBrowser (in Java), and another feature in \ygg@product{JHotDraw} and \ygg@product{Xfig}, to highlight the generalisability of our metaphor.
    [bibtex-key = Antoniol06-TSE-FeatureIdentification]


  3. Salah Bouktif, Yann-Gaël Guéhéneuc, and Giuliano Antoniol. Extracting Change-patterns from CVS Repositories. In Susan Elliott Sim and Massimiliano Di Penta, editors, Proceedings of the 13th Working Conference on Reverse Engineering (WCRE), pages 221--230, October 2006. IEEE Computer Society Press. Note: 10 pages. [Text ] [Slides ] Keyword(s): Evolution patterns, WCRE.
    Abstract:
    Often, the only sources of information about the evolution of software systems are the systems themselves and their histories. Version control repositories contain information on several thousand of files and on millions of changes. We propose an approach based on dynamic time warping to discover change-patterns, which, for example, describe files that change together almost all the time. We define the Synchrony change-pattern to answer the question: given a software system and one file under modification, what others files must be changed? We have applied our approach on PADL{}, a software system developed in Java, and on Mozilla. Interesting results are achieved even when the discovered groups of co-changing files are compared with these provided by experts.
    [bibtex-key = Bouktif06-WCRE-MiningCVS]


  4. José Côté, Pilar Ramirez Garcia, Yann-Gaël Guéhéneuc, Xintao Wang, and Gaston Godin. Web support for person living with HIV for the immediate management of the treatment. In Gaston Godin, Jean Guy Baril, and Jean Pierre Routy, editors, Proceedings of the 15th annual Canadian Conference on HIV/Aids Research, May 2006. Pulsus Group. [Text ] Keyword(s): VIHTAVIE, CAHR.
    Abstract:
    Objective: Demonstration of a Web application designed to equip and support persons living with HIV for the immediate and direct management of their daily antiretorviral treatment. ewline Method: This Web application is based on a comprehensive analysis of the predictors of adherence identified in a longitudinal study, on information collected in the field, and on explanatory and predictive models of health behaviour. ewline Results: The program consists of interactive sessions which enable the individual to develop and consolidate skills necessary for handling taking their medication. These skills include self-motivation and self-observation (basic skills), identification and management of secondary effects (specific skills) and problem-solving, control of emotions and social skills (transferable skills). The sessions help the user gain a sense of self-sufficiency by integrating verbal encouragement and physiological response and generating a sense of being in control. Based on the 'tailoring' approach, these interventions are customized to the users, according to the characteristics of their therapy, secondary effects they feel, and the difficulties or obstacles they experience. The interactive system has been conceived in such a way that repeat applications and re-visits are possible, to suit the needs of the user. In effect, this Web application is like having a vocal 'virtual health professional', who behaves like a peer and acts as a model in providing support to the user for managing taking their medication. ewline Conclusion: This Web application is a interactive tool with a triple interface. It is responsive and flexible and is designed to adapt to needs of the individual user. We will carry out a randomized, controlled trial to evaluate its efficacy in optimizing adherence and influencing virological and immunological markers.
    [bibtex-key = Cote06-WebSupportVIH]


  5. Yann-Gaël Guéhéneuc. Taupe: Towards Understanding Program Comprehension. In Hakan Erdogmus and Eleni Stroulia, editors, Proceedings of the 16th IBM Centers for Advanced Studies Conference (CASCON), pages 1--13, October 2006. ACM Press. Note: 13 pages. [Text ] [Slides ] Keyword(s): Understanding program comprehension, CASCON.
    Abstract:
    Program comprehension is a very important activity during the development and the maintenance of programs. This activity has been actively studied in the past decades to present software engineers with the most accurate and---hopefully---most useful pieces of information on the organisation, algorithms, executions, evolution, and documentation of a program. Yet, only few work tried \emph{to understand concretely how software engineers obtain and use this information}. Software engineers mainly use \emph{sight} to obtain information about a program, usually from source code or class diagrams. Therefore, we use eye-tracking to collect data about the use of class diagrams by software engineers during program comprehension. We introduce a new visualisation technique to aggregate and to present the collected data. We also report the results and surprising insights gained from two case studies.
    [bibtex-key = Gueheneuc06-CASCON-Taupe]


  6. Yann-Gaël Guéhéneuc, Kim Mens, and Roel Wuyts. A Comparative Framework for Design Recovery Tools. In Giuseppe Antonio di Lucca and Nicolas Gold, editors, Proceedings of the 10th Conference on Software Maintenance and Reengineering (CSMR), pages 121--130, March 2006. IEEE Computer Society Press. Note: 10 pages. [Text ] [Slides ] Keyword(s): Design patterns, CSMR.
    Abstract:
    While many commercial and academic design recovery tools have been proposed over the years, assessing their relevance and comparing them is difficult due to the lack of a well-defined, comprehensive, and common framework. In this paper, we introduce such a common comparative framework. The framework builds upon our own experience and extends existing comparative frameworks. We illustrate the comparative framework on two specific design recovery tools.
    [bibtex-key = Gueheneuc06-CSMR-REToolsTaxonomy]


  7. Olivier Kaczor, Yann-Gaël Guéhéneuc, and Sylvie Hamel. Efficient Identification of Design Patterns with Bit-vector Algorithm. In Giuseppe Antonio di Lucca and Nicolas Gold, editors, Proceedings of the 10th Conference on Software Maintenance and Reengineering (CSMR), pages 173--182, March 2006. IEEE Computer Society Press. Note: 10 pages. [Text ] [Slides ] Keyword(s): Design patterns, CSMR.
    Abstract:
    Design patterns are important in software maintenance because they help in designing, in understanding, and in re-engineering programs. The identification of occurrences of a design pattern consists in identifying, in a program, classes which structure and organisation match---strictly or approximately---the structure and organisation of classes as suggested by the design pattern. We express the problem of design pattern identification with operations on finite sets of bit-vectors. We use the inherent parallelism of bit-wise operations to derive an efficient bit-vector algorithm that finds exact and approximate occurrences of design patterns in a program. We apply our algorithm on three small-to-medium size programs, \JHotDraw{}, \ygg@product{Juzzle}, and \ygg@product{QuickUML}, with the \ygg@pattern{Abstract Factory} and \ygg@pattern{Composite} design patterns and compare its performance and results with two existing constraint-based approaches.
    [bibtex-key = Kaczor06-CSMR-EfficientIdentification]


  8. Naouel Moha, Saliha Bouden, and Yann-Gaël Guéhéneuc. Correction of High-Level Design Defects with Refactorings. In Serge Demeyer, Stéphane Ducasse, Yann-Gaël Guéhéneuc, Kim Mens, and Roel Wuyts, editors, Proceedings of the 7th ECOOP workshop on Object-Oriented Reengineering (WOOR), July 2006. Note: 4 pages. [Text ] Keyword(s): Code and design smells, WOOR.
    Abstract:
    We define design defects as ``poor" design solutions that hinder the maintenance of programs. Thus, their detection and correction are important to improve the maintainability and reduce the cost of maintenance. The detection of design defects has been actively investigated by the community. However, their correction still remains a problem to solve. We propose a first method to correct these defects systematically using refactorings. Then, we introduce some challenges that our community must meet.
    [bibtex-key = Moha06-WOOR-Correction]


  9. Naouel Moha, Yann-Gaël Guéhéneuc, and Pierre Leduc. Automatic Generation of Detection Algorithms for Design Defects. In Sebastian Uchitel and Steve Easterbrook, editors, Proceedings of the 21st Conference on Automated Software Engineering (ASE), pages 297--300, September 2006. IEEE Computer Society Press. Note: Short paper. 4 pages. [Text ] [Slides ] Keyword(s): Code and design smells, ASE.
    Abstract:
    Maintenance is recognised as the most difficult and expansive activity of the software development process. Numerous techniques and processes have been proposed to ease the maintenance of software. In particular, several authors published design defects formalising ``bad" solutions to recurring design problems (e.g., anti-patterns, code smells). We propose a language and a framework to express design defects synthetically and to generate detection algorithms automatically. We show that this language is sufficient to describe some design defects and to generate detection algorithms, which have a good precision. We validate the generated algorithms on several programs.
    [bibtex-key = Moha06-ASE-P-DDMethod]


  10. Naouel Moha, Duc-Loc Huynh, and Yann-Gaël Guéhéneuc. Une taxonomie et un métamodèle pour la détection des défauts de conception. In Roger Rousseau, editor, Actes du 12e colloque Langages et Modèles à Objets (LMO), pages 201--216, mars 2006. Hermès Science Publications. Note: 16 pages. [Text ] [Slides ] Keyword(s): Code and design smells, LMO.
    Abstract:
    Les d\'efauts de conception sont \`a rapprocher des patrons de conception qui sont aujourd'hui largement utilis\'es~: les patrons de conception proposent de ``bonnes'' solutions \`a des probl\`emes r\'ecurrents dans les architectures \`a objets, tandis que les d\'efauts de conception sont de ``mauvaises'' solutions. Cependant, contrairement aux patrons, les d\'efauts de conception n'ont pas de repr\'esentation pr\'ecise et structur\'ee et existent seulement sous la forme de descriptions textuelles sujettes \`a interpr\'etation, qui ne permettent pas leur d\'etection et leur correction pr\'ecise et efficace. Nous proposons une m\'ethodologie pour repr\'esenter les d\'efauts de conception bas\'ee sur un m\'etamod\`ele \`a partir d'une taxonomie des d\'efauts. Nous appliquons et validons cette m\'ethodologie sur un ensemble de d\'efauts de conception, tels le Blob et le Swiss Army Knife.
    [bibtex-key = Moha06-LMO-DefautConception]


  11. Naouel Moha, Jihene Rezgui, Yann-Gaël Guéhéneuc, Petko Valtchev, and Ghizlane El Boussaidi. Using FCA to Suggest Refactorings to Correct Design Defects. In Sadok Ben Yahia and Engelbert Mephu Nguifo, editors, Proceedings of the 4th International Conference on Concept Lattices and their Applications, pages 297--302, September 2006. IEEE Computer Society Press. Note: Short paper. 6 pages. [Text ] [Slides ] Keyword(s): Code and design smells, CLA.
    Abstract:
    Design defects are poor design choices resulting in a hard-to- maintain software, hence their detection and correction are key steps of a disciplined software process aimed at yielding high-quality software artifacts. While modern structure- and metric-based techniques enable precise detection of design defects, the correction of the discovered defects, e.g., by means of refactorings, remains a manual, hence error-prone, activity. As many of the refactorings amount to re-distributing class members over a (possibly extended) set of classes, formal concept analysis (FCA) has been successfully applied in the past as a formal framework for refactoring exploration. Here we propose a novel approach for defect removal in object-oriented programs that combines the effectiveness of metrics with the theoretical strength of FCA. A case study of a specific defect, the extit{Blob}, drawn from the Azureus project illustrates our approach.
    [bibtex-key = Moha06-CLA-RefactoringSuggestion]


  12. Denys Poshyvanyk, Yann-Gaël Guéhéneuc, Andrian Marcus, Giuliano Antoniol, and Václav Rajlich. Combining Probabilistic Ranking and Latent Semantic Indexing for Feature Identification. In Jurgen Ebert and Panos Linos, editors, Proceedings of the 14th International Conference on Program Comprehension (ICPC), pages 137--148, June 2006. IEEE Computer Society Press. Note: Best paper. 10 pages. [Text ] [Slides ] Keyword(s): Features and requirements, ICPC.
    Abstract:
    The paper recasts the problem of feature location in source code as a decision-making problem in the presence of uncertainty. The main contribution consists in the combination of two existing techniques for feature location in source code. Both techniques provide a set of ranked facts from the software, as result to the feature identification problem. One of the techniques is based on a Scenario Based Probabilistic ranking of events observed while executing a program under given scenarios. The other technique is defined as an information retrieval task, based on the Latent Semantic Indexing of the source code. We show the viability and effectiveness of the combined technique with two case studies. A first case study is a replication of feature identification in Mozilla, which allows us to directly compare the results with previously published data. The other case study is a bug location problem in Mozilla. The results show that the combined technique improves feature identification significantly with respect to each technique used independently.
    [bibtex-key = Poshyvanyk06-ICPC-LSIFeature]


  13. Naouel Moha and Yann-Gaël Guéhéneuc. DECOR and Ptidej, October 2006. Note: Tool demo at the 16th IBM Centers for Advanced Studies Conference. [Text ] Keyword(s): Code and design smells, Design patterns, CASCON.
    Abstract:
    We demonstrate the use of the Decor method and Ptidej tool suite on real case studies to specify, detect, and correct design defects. Design defects are problems that slow down and increase the cost of programs, because they make program understanding and change difficult. Targeted audience includes academics and industrial software developers, managers, and quality-insurance people.
    [bibtex-key = Moha06-Demo-CASCON]


2005
  1. Serge Demeyer, Kim Mens, Roel Wuyts, Yann-Gaël Guéhéneuc, Andy Zaidman, Neil Walkinshaw, Ademar Aguiar, and Stéphane Ducasse, editors. Report of the 6th international Workshop on Object-Oriented Reengineering (WOOR), July 2005. Springer-Verlag. Note: 12 pages. [Text ] [bibtex-key = WOOR05]


  2. Giuliano Antoniol and Yann-Gaël Guéhéneuc. Feature Identification: A Novel Approach and a Case Study. In Tibor Gyimóthy and Vaclav Rajlich, editors, Proceedings of the 21st International Conference on Software Maintenance (ICSM), pages 357--366, September 2005. IEEE Computer Society Press. Note: Best paper. 10 pages. [Text ] [Slides ] Keyword(s): Features and requirements, ICSM.
    Abstract:
    Feature identification is a well-known technique to identify subsets of a program source code activated when exercising a functionality. Several approaches have been proposed to identify features. We present an approach to feature identification and comparison for large object-oriented multi-threaded programs using both static and dynamic data. We use processor emulation, knowledge filtering, and probabilistic ranking to overcome the difficulties of collecting dynamic data, i.e., imprecision and noise. We use model transformations to compare and to visualise identified features. We compare our approach with a naive approach and a concept analysis-based approach using a case study on a real-life large object-oriented multi-threaded program, \ygg@product{Mozilla}, to show the advantages of our approach. We also use the case study to compare processor emulation with statistical profiling.
    [bibtex-key = Antoniol05-ICSM-FeatureIdentification]


  3. Giuliano Antoniol, Yann-Gaël Guéhéneuc, Ettore Merlo, and Houari Sahraoui. Software Evolution: The Need for Empirical Evidence. In Paolo Tonella, editor, Proceedings of the 1st ICSM workshop on Empirical Studies in Reverse Engineering (WESRE), September 2005. IEEE Computer Society Press. Note: 2 pages. [Text ] Keyword(s): Evolution patterns, WESRE.
    Abstract:
    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 humanintens ive 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. As a software system is enhanced, modified, and adapted to new requirements, its code becomes increasingly complex, often drifting away from its original design. The current state-of-the-art in software evolution offers only short-term solutions to software change and evolution focused on software maintenance and defect repair, in which only the source code evolves, while the architecture, design, and---more generally---the documentation are not updated.
    [bibtex-key = Antoniol05-WESRE-NeedEmpiricalEvidence]


  4. Giuliano Antoniol, Ettore Merlo, Yann-Gaël Guéhéneuc, and Houari Sahraoui. Feature Traceability in Object Oriented Software. In Jonathan I. Maletic, Giuliano Antonio, Jane Cleland-Huang, and Jane Huffman Hayes, editors, Proceedings of the 3rd ASE workshop on Traceability in Emerging Forms of Software Engineering (TEFSE), pages 73--78, November 2005. ACM Press. Note: 6 pages. [Text ] [Slides ] Keyword(s): Features and requirements, TEFSE.
    Abstract:
    Open source and industrial software very often lack up-to- date documentation on where and how user observable functionalities are implemented. This lack of documentation is particularly hindering for large software. Moreover, as with any software artifacts, user observable functionalities evolve and are modified through software evolution activities. Modifications of one functionality sometimes has unwanted and unexpected side effects on other functionalities, causing these functionalities to fail or to malfunction. In this position paper, we support the idea that a traceability mapping between user observable functionalities and source code constituents (such as classes, methods\ldots) implementing the functionalities is essential to reduce software evolution effort. We outline an approach to recover and to study the evolution of features---subset of a software constituents---responsible to implement a functionality.
    [bibtex-key = Antoniol05-TEFSE-FeatureTraceability]


  5. Jean-Yves Guyomarc'h and Yann-Gaël Guéhéneuc. On the Impact of Aspect-Oriented Programming on Object-Oriented Metrics. In Fernando Brito e Abreu, Coral Calero, Michele Lanza, Geert Poels, and Houari A. Sahraoui, editors, Proceedings of the 9th ECOOP workshop on Quantitative Approaches in Object-Oriented Software Engineering (QAOOSE), pages 42--47, July 2005. Springer-Verlag. Note: 6 pages. [Text ] [Slides ] Keyword(s): Quality models, QAOOSE.
    Abstract:
    Aspect-oriented programming is a new paradigm designed to fulfill the limitations of object-oriented programming regarding separation of concerns. The advent of a new paradigm requires software engineers to define new metrics and quality models to measure the quality of programs in this paradigm. The close relationship of aspect-oriented programming and object-oriented languages drives us to wonder about the impact of this new paradigm over object-oriented languages, and especially over object metrics. In this position paper, we attempt to present an approach to study and to understand the impact of aspect-oriented programming on object-oriented metrics.
    [bibtex-key = Guyomarch05-QAOOSE-AspectQuality]


  6. Yann-Gaël Guéhéneuc. Ptidej: Promoting Patterns with Patterns. In Mohamed E. Fayad, editor, Proceedings of the 1st ECOOP workshop on Building a System using Patterns, July 2005. Springer-Verlag. Note: 9 pages. [Text ] Keyword(s): Design patterns, BSUP.
    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.
    [bibtex-key = Gueheneuc05-BSUP-Ptidej]


  7. Yann-Gaël Guéhéneuc, Stefan Monnier, and Giuliano Antoniol. Evaluating the Use of Design Patterns during Program Comprehension -- Experimental Setting. In Giuliano Antoniol and Yann-Gaël Guéhéneuc, editors, Proceedings of the 1st ICSM workshop in Design Pattern Theory and Practice (IWDPTP), September 2005. IEEE Computer Society Press. Note: In the pre-proceedings. 6 pages. [Text ] Keyword(s): Understanding program comprehension, IWDPTP.
    Abstract:
    Many claims exist in the literature on the usefulness of design patterns for program comprehension. However, no experimental studies exist to confirm or to infirm these claims, partially due to the lack of appropriate techniques to define and to assess the benefits of design patterns. We present an experimental setting, based on eye-tracking techniques, to assess the benefits of design patterns during program comprehension and a first illustrative experiment. This experimental setting and experiment are but a first step towards a comprehensive understanding of the use of design patterns during program comprehension.
    [bibtex-key = Gueheneuc05-IWDPTP-ExperimentalSetting]


  8. Yann-Gaël Guéhéneuc and Houari Sahraoui. Des signatures numériques pour améliorer la recherche structurelle de patrons. In Marianne Huchard, Stéphane Ducasse, and Oscar Nierstrasz, editors, Actes du 11e colloque Langages et Modèles à Objets (LMO), pages 97--112, mars 2005. Hermès Science Publications. Note: 16 pages. [Text ] [Slides ] Keyword(s): Design patterns, LMO.
    Abstract:
    Les patrons de conception orient\'es-objets d\'ecrivent de bonnes solutions \`a des probl\`emes r\'ecurrents de conception des programmes. Les solutions propos\'ees sont des motifs de conception que les concepteurs introduisent dans l'architecture de leurs programmes. Il est important d'identifier, pendant la maintenance, les motifs de conception utilis\'es dans l'architecture d'un programme pour comprendre les probl\`emes de conception r\'esolus et faire des modifications pertinentes au programme. L'identification de micro-architectures similaires \`a des motifs de conception est difficile \`a cause du large espace de recherche, \ie{} les nombreuses combinaisons de classes possibles. Nous proposons une \'etude exp\'erimentale des classes jouant un r\^ole dans des motifs de conception avec des m\'etriques et un algorithme d'apprentissage pour associer des signatures num\'eriques aux r\^oles dans les motifs de conception. Une signature num\'erique est un ensemble de valeurs de m\'etriques qui caract\'erise les classes jouant un r\^ole dans un motif de conception. Nous montrons que les signatures num\'eriques permettent de r\'eduire efficacement l'espace de recherche des micro-architectures similaires \`a des motifs de conception sur l'exemple du patron de conception Composite et du programme \JHotDraw.
    [bibtex-key = Gueheneuc05-LMO-SignaturesNumeriques]


  9. Yann-Gaël Guéhéneuc and Tewfik Ziadi. Automated Reverse-Engineering of UML v2.0 Dynamic Models. In Serge Demeyer, Stéphane Ducasse, Kim Mens, and Roel Wuyts, editors, Proceedings of the 6th ECOOP workshop on Object-Oriented Reengineering (WOOR), July 2005. Springer-Verlag. Note: 5 pages. [Text ] Keyword(s): Design patterns, WOOR.
    Abstract:
    In this position paper, we advocate the automated reverse-engineering of UML{} v2.0 dynamic models, \ie{} sequence diagrams and statecharts, to perform high-level analyses, such as conformance checking and pattern identification. Several approaches exist to reverse-engineer UML dynamic models; However, to our best knowledge, none of these approaches consider reverse-engineering UML v2.0 dynamic models and performing high-level analyses with these models. We present our approach to UML v2.0 dynamic models reverse-engineering and sketch some use of these models. We conclude by a discussion on some issues related to the models, their reverse-engineering, and their use.
    [bibtex-key = Gueheneuc05-WOOR-SequenceDiagrams]


  10. Khashayar Khosravi and Yann-Gaël Guéhéneuc. Open Issues with Quality Models. In Fernando Brito e Abreu, Coral Calero, Michele Lanza, Geert Poels, and Houari A. Sahraoui, editors, Proceedings of the 9th ECOOP workshop on Quantitative Approaches in Object-Oriented Software Engineering (QAOOSE), July 2005. Springer-Verlag. Note: 14 pages. [Text ] [Slides ] Keyword(s): Quality models, Design patterns, QAOOSE.
    Abstract:
    Software metrics and quality models play a pivotal role in measurement of software quality. A number of well-known quality models and software metrics are used to build quality software both in industry and in academia. However, during our research on measuring software quality using design patterns, we faced many issues related to existing software metrics and quality models. In this position paper, we discuss some of these issues and present our approach to software quality assessment.
    [bibtex-key = Khosravi05-QAOOSE-QualityIssues]


  11. Naouel Moha and Yann-Gaël Guéhéneuc. On the Automatic Detection and Correction of Design Defects. In Serge Demeyer, Kim Mens, Roel Wuyts, and Stéphane Ducasse, editors, Proceedings of the 6th ECOOP workshop on Object-Oriented Reengineering (WOOR), July 2005. Springer-Verlag. Note: 7 pages. [Text ] [Slides ] Keyword(s): Code and design smells, WOOR.
    Abstract:
    Design defects, antipatterns, code smells are software defects at the architectural level that must be detected and corrected to improve software quality. Automatic detection and correction of these software architectural defects, which suffer of a lack of tools, are important to ease the maintenance of objectoriented architectures and thus to reduce the cost of maintenance. A clear understanding of the different types of software architectural defects defects and a classification of these defects is necessary before proposing any techniques related to their detection or correction. We introduce a first classification and summarise existing techniques. Then, we introduce some challenges that our community must meet.
    [bibtex-key = Moha05-WOOR-DesignDefects]


  12. Yann-Gaël Guéhéneuc. A Theory of Program Comprehension -- Joining Vision Science and Program Comprehension. Technical report 1267, University of Montreal, December 2005. Note: 26 pages. [Text ] Keyword(s): Understanding program comprehension.
    Abstract:
    There exists an extensive literature on vision science, on the one hand, and on program comprehension, on the other hand. However, these two domains of research have been so far rather disjoint. Indeed, several cognitive theories have been proposed to explain program comprehension. These theories explain the processes taking place in the software engineers' minds when they understand programs. They explain how software engineers \emph{process} available information to perform their tasks but not how software engineers \emph{acquire} this information. Vision science provides explanations on the processes used by people to acquire visual information from their environment. Joining vision science and program comprehension provides a more comprehensive theoretical framework to explain facts on program comprehension, to predict new facts, and to frame experiments. We join theories in vision science and in program comprehension; the resulting theory is consistent with facts on program comprehension and helps in predicting new facts, in devising experiments, and in putting certain program comprehension concepts in perspective.
    [bibtex-key = Gueheneuc05-TR-VisionComprehension]


  13. Yann-Gaël Guéhéneuc, Jean-Yves Guyomarc'h, Duc-Loc Huynh, Olivier Kaczor, Naouel Moha, and Samah Rached. Ptidej - A Tool Suite, October 2005. Note: Tool demo at the 15th IBM Centers for Advanced Studies Conference. [Text ] Keyword(s): Design patterns, CASCON.
    Abstract:
    The Ptidej (Pattern Trace Identification, Detection, and Enhancement in Java) project aims at developing a tool suite to evaluate and to enhance the quality of object-oriented programs, promoting the use of patterns, at language-, design-, or architectural-level.
    [bibtex-key = Gueheneuc05-Demo-CASCON]


2004
  1. Yann-Gaël Guéhéneuc. A Reverse Engineering Tool for Precise Class Diagrams. In Janice Singer and Hanan Lutfiyya, editors, Proceedings of the 14th IBM Centers for Advanced Studies Conference (CASCON), pages 28--41, October 2004. ACM Press. Note: 14 pages. [Text ] [Slides ] Keyword(s): Binary class relations, CASCON.
    Abstract:
    Developers use class diagrams to des\-cribe the architecture of their programs intensively. Class diagrams represent the structure and global behaviour of programs. They show the programs classes and interfaces and their relationships of inheritance, instantiation, use, association, aggregation and composition. Class diagrams could provide useful data during programs maintenance. However, they often are obsolete and imprecise: They do not reflect the \emph{real} implementation and behaviour of programs. We propose a reverse-engineering tool suite, Ptidej{}, to build precise class diagrams from Java{} programs, with respect to their implementation and behaviour. We describe static and dynamic models of Java{} programs and algorithms to analyse these models and to build class diagrams. In particular, we detail algorithms to infer use, association, aggregation, and composition relationships, because these relationships do not have precise definitions. We show that class diagrams obtained semi-automatically are similar to those obtained manually and more precise than those provided usually.
    [bibtex-key = Gueheneuc04-CASCON-PreciseClassDiagrams]


  2. Yann-Gaël Guéhéneuc. A Systematic Study of UML Class Diagram Constituents for their Abstract and Precise Recovery. In Doo-Hwan Bae and William C. Chu, editors, Proceedings of the 11th Asia-Pacific Software Engineering Conference (APSEC), pages 265--274, November-December 2004. IEEE Computer Society Press. Note: 10 pages. [Text ] [Slides ] Keyword(s): Binary class relations, APSEC.
    Abstract:
    Existing reverse-engineering tools use algorithms based on vague and verbose definitions of UML{} constituents to recover class diagrams from source code. Thus, reverse-engineered class diagrams are neither abstract nor precise representations of source code and are of little interest for software engineers. We propose a exhaustive study of class diagram constituents with respect to their recovery from \Cpp{}, Java{}, and \Smalltalk{} source code. Finally, we suggest a road-map to abstract and precise reverse-engineering. We exemplify our study by developing a tool to reverse-engineer Java{} programs in UML{} class diagrams abstractly and precisely. Such a reverse-engineering tool produces class diagrams that help software engineers in better understanding programs.
    [bibtex-key = Gueheneuc04-APSEC-SystematicUML]


  3. Yann-Gaël Guéhéneuc. Abstract and Precise Recovery of UML Class Diagram Constituents. In Mark Harman and Bogdan Korel, editors, Proceedings of the 20th International Conference and Software Maintenance (ICSM), pages 523, September 2004. IEEE Computer Society Press. Note: Poster. 1 page. [Text ] Keyword(s): Binary class relations, ICSM.
    Abstract:
    Existing reverse-engineering tools use algorithms based on vague and verbose definitions of UML{} constituents to recover class diagrams from source code. Thus, reverse-engineered class diagrams are neither abstract nor precise representations of source code and are of little interest for software engineers. We propose a exhaustive study of class diagrams constituents with respect to their recovery from \Cpp{}, Java{}, and \Smalltalk{} source code. Finally, we suggest a road-map to abstract and precise reverse-engineering.
    [bibtex-key = Gueheneuc04-ICSM-P-UMLRecovery]


  4. Yann-Gaël Guéhéneuc and Hervé Albin-Amiot. Recovering Binary Class Relationships: Putting Icing on the UML Cake. In Doug C. Schmidt, editor, Proceedings of the 19th Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), pages 301--314, October 2004. ACM Press. Note: 14 pages. [Text ] [Slides ] Keyword(s): Binary class relations, OOPSLA.
    Abstract:
    A discontinuity exists between object-oriented modeling and programming languages. This discontinuity arises from ambiguous concepts in modeling languages and a lack of corresponding concepts in programming languages. It is particularly acute for binary class relation\-ships---association, aggregation, and composition. It hinders the traceability between software implementation and design, thus hampering software analysis. We propose consensual definitions of the binary class relationships with four minimal properties---exclusivity, invocation site, lifetime, multiplicity. We describe algorithms to detect automatically the properties in source code and apply these on several frameworks. Thus, we bridge the gap between implementation and design for the binary class relationships, easing software analysis.
    [bibtex-key = Gueheneuc04-OOPSLA-RecoveringBCR]


  5. Yann-Gaël Guéhéneuc, Houari Sahraoui, and Farouk Zaidi. Fingerprinting Design Patterns. In Eleni Stroulia and Andrea de Lucia, editors, Proceedings of the 11th Working Conference on Reverse Engineering (WCRE), pages 172--181, November 2004. IEEE Computer Society Press. Note: 10 pages. [Text ] [Slides ] Keyword(s): Design patterns, WCRE.
    Abstract:
    Design patterns describe \emph{good} solutions to common and recurring problems in program design. The solutions are \emph{design motifs} which software engineers imitate and introduce in the architecture of their program. It is important to identify the design motifs used in a program architecture to understand solved design problems and to make informed changes to the program. The identification of \emph{micro-architectures} similar to design motifs is difficult because of the large search space, \ie{} the many possible combinations of classes. We propose an experimental study of classes playing roles in design motifs using metrics and a machine learning algorithm to \emph{fingerprint} design motifs roles. Fingerprints are sets of metric values characterising classes playing a given role. We devise fingerprints experimentally using a repository of micro-architectures similar to design motifs. We show that fingerprints help in reducing the search space of micro-architectures similar to design motifs efficiently using the \ygg@pattern{Composite} design motif and the \JHotDraw{} framework.
    [bibtex-key = Gueheneuc04-WCRE-ClassFingerprinting]


  6. Khashayar Khosravi and Yann-Gaël Guéhéneuc. A Quality Model for Design Patterns. Technical report 1249, University of Montreal, September 2004. Note: 94 pages. [Text ] Keyword(s): Quality models, Design patterns.
    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 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. The objective of this technical report is to introduce a quality model and metrics that help in assessing the quality characteristics of design patterns and in concluding on design patterns quality. We begin with a summary of definitions on quality and related concepts and by introducing the most common and standard quality models. Then, we define characteristics of the models in details and present the metrics used to measure programs. Some of the most common characteristics of quality models introduced are used to develop a quality model to assess and measure the quality characteristics that design patterns claim to possess.
    [bibtex-key = Khosravi04-TR-DPQualityModel]


  7. Yann-Gaël Guéhéneuc. PMARt, since November 2004. Note: A database of occurrences of patterns in object-oriented programs. [Text ] Keyword(s): Design patterns. [bibtex-key = PMARt]


2003
  1. Yann-Gaël Guéhéneuc. Un cadre pour la traçabilité des motifs de conception. PhD thesis, École des Mines de Nantes et Université de Nantes, juin 2003. Note: 350 pages. [Text ] [Slides ] Keyword(s): Design patterns, Binary class relations.
    Abstract:
    Les patrons de conception sont importants en g\'enie logiciel \`a objets car ils contribuent \`a la qualit\'e des programmes. Ils proposent des solutions \'el\'egantes \`a des probl\`emes r\'ecurrents de conception, des motifs utilis\'es pendant l'implan\-tation. \`A~l'usage, ces motifs de conception sont diss\'emin\'es dans le code source et ne sont plus explicites lors de la maintenance~; pourtant, ils aideraient \`a comprendre l'implantation et la conception des programmes, assurant leur qualit\'e. Ce m\'emoire propose des mod\`eles et des algorithmes pour garantir la tra\c cabilit\'e des motifs de conception entre les phases d'implantation et de r\'etroconception des programmes par l'identification semi-automatique des micro-architectures similaires \`a ces motifs dans le code source. La m\'etamod\'elisation est utilis\'ee pour d\'ecrire les motifs de conception et les programmes Java{}. Elle am\`ene \`a expliciter certaines relations interclasses (association, agr\'e\-gation et composition) offertes par les langages de conception comme UML{} et \`a pr\'eciser leurs propri\'et\'es (dur\'ee de vie, exclusivit\'e, multiplicit\'e et site d'invocation) pour les identifier avec des algorithmes d'analyses statiques et dynamiques. Elle conduit aussi \`a traduire les motifs en syst\`emes de contraintes et \`a identifier les micro-architectures similaires, formes compl\`etes et approch\'ees, par la r\'esolution de probl\`emes de satisfaction de contraintes. La programmation par contraintes avec explications permet de guider la r\'esolution et d'expliquer les micro-architectures identifi\'ees. La suite d'outils Ptidej{} est une implantation des mod\`eles et des algorithmes propos\'es. Elle est int\'egr\'ee \`a l'environnement \Eclipse{} de d\'eveloppement en Java{}. Elle inclut le m\'etamod\`ele PADL{}, d\'eriv\'e du m\'etamod\`ele \PDL{}~; des outils d'analyses statiques et dynamiques, \Introspector{} et Caffeine{}~; et un solveur de contraintes, PtidejSolver{}, d\'eriv\'e du solveur de contraintes avec explications de r\'ef\'erence \PaLM{}.
    [bibtex-key = Gueheneuc03-PhD]


  2. Andrés Farìas and Yann-Gaël Guéhéneuc. On the Coherence of Component Protocols. Electronic Notes in Theoretical Computer Science (ENTCS), 82(5), April 2003. Note: 12 pages. [Text ]
    Abstract:
    Component-based programming promises to ease the construction of large-scale applications. The construction of applications using components relies on the notion of interfaces. However, the notion of interfaces provided by current component models is restricted: In particular, it does not include behavioral information to define the protocols of the components: Sequences of service requests. The lack of behavioral information limits our trust in components: Security, reuse, and quality relate directly on this missing information. In this paper, we consider the problem of verifying if a component implementation respects the protocol specified during its design. First, we define a notion of coherence between protocols and an algorithm to verify the coherence between two protocols. Then, we describe an algorithm to extract the protocol of a component from its source code. Finally, we present a tool that enables the static verification and enforcement of the notion of coherence.
    [bibtex-key = Farias03-ENTCS-CoherenceProtocols]


  3. Yann-Gaël Guéhéneuc and Hervé Albin-Amiot. A Pragmatic Study of Binary Class Relationships. In John Grundy and John Penix, editors, Proceedings of the 18th Conference on Automated Software Engineering (ASE), pages 277--280, September 2003. IEEE Computer Society Press. Note: Short paper. 4 pages. [Text ] [Slides ] Keyword(s): Binary class relations, ASE.
    Abstract:
    A discontinuity exists between modeling and object-oriented programming languages. This discontinuity is a consequence of ambiguous notions in modeling languages and lack of corresponding notions in object-oriented programming languages. It hinders the transition between software implementation and design and hampers software maintenance. This discontinuity is particularly acute for binary class relationships, such as the association, aggregation, and composition relationships. We present a solution to bridge the discontinuity between implementation and design for the binary class relationships: We propose consensual definitions of the binary class relationships in terms of four properties (exclusivity, invocation site, lifetime, multiplicity). We describe algorithms to detect these properties in Java{} source code.
    [bibtex-key = Gueheneuc03-ASE-P-AAC]


  4. Yann-Gaël Guéhéneuc, Hervé Albin-Amiot, and Pierre Cointe. PatternsBox--Ptidej, intégration de deux outils de conception et de rétro-conception à Eclipse. In Jacques Malenfant, editor, Journée GDR ALP-OCM, février 2003. Note: 6 pages. [Text ] Keyword(s): Design patterns, GDR ALP-OCM.
    Abstract:
    Nous nous int{\'e}ressons aux phases de conception et de maintenance de programmes {\`a} objets. Nous pensons que l'utilisation des motifs (tels les motifs de conception de~\cite{GoF94-Patterns}) facilite, d'une part, la conception et la documentation~\cite{AlbinAmiot03-PhD} et, d'autre part, la compr{\'e}hension et l'am{\'e}lioration~\cite{Gueheneuc03-PhD} de ces programmes. Nous avons d{\'e}velopp{\'e} {\`a} l'occasion de nos travaux de th{\`e}se de doctorat, \PatternsBox{}~\cite{AlbinAmiot03-PhD} et Ptidej{}~\cite{Gueheneuc03-PhD}, deux outils de conception et de maintenance bas{\'e}s sur les motifs. \PatternsBox{} permet (i) d'appliquer les solutions recommand{\'e}es par un ensemble de motifs de conception et (ii) d'identifier dans l'architecture d'un programme {\`a} objets les solutions compl{\`e}tes correspondant {\`a} des motifs donn{\'e}s. Ptidej{} permet (i) d'identifier des solutions {\`a} des motifs donn{\'e}s et leurs variantes et~(ii) d'identifier des d{\'e}fauts de conception dans l'architecture du programme. Ces deux outils pr{\'e}sentent un int{\'e}r{\^e}t pour les d{\'e}veloppeurs essentiellement lorsqu'ils sont int{\'e}gr{\'e}s avec les outils utilis{\'e}s habituellement pendant les phases de conception et de maintenance. C'est pourquoi nous les avons int{\'e}gr{\'e}s {\`a} des environnements de d{\'e}veloppements int{\'e}gr{\'e}s (EDI). Dans cet article, et apr{\`e}s avoir pr{\'e}sent{\'e} l'EDI d'\ygg@company{OTI~/ IBM} \Eclipse{}~\cite{OTI01-Eclipse}, nous d{\'e}crivons notre premi{\`e}re exp{\'e}rience relative {\`a} l'int{\'e}\-gration de Ptidej{} avec \Eclipse{}, puis nos projets quant {\`a} l'int{\'e}gration de \PatternsBox{}.
    [bibtex-key = Gueheneuc03-GDRALPOCM-PtidejEclipse]


  5. Aline Lúcia Baroni, Yann-Gaël Guéhéneuc, and Hervé Albin-Amiot. Design Patterns Formalization. Technical report 03/03/INFO, Computer Science Department, École des Mines de Nantes, June 2003. Note: 59 pages. [Text ] Keyword(s): Design patterns.
    Abstract:
    Design patterns were introduced in software engineering as an effective mean of disseminating solutions to problems repeatedly encountered in object oriented programming and since their emergence, they have been widely accepted and adopted by software practitioners. Design patterns contribution covers the definition, the design and the documentation of class libraries and frameworks, offering elegant and reusable solutions to design problems, and consequently increasing productivity and development quality. Each design pattern lets some aspects of the system structure vary independently of other aspects, thereby making the system more robust to a particular kind of change. The majority of publications in the pattern field focuses on micro-architectures; i.e., intentionally abstract description of generic aspects of software systems. Despite this abstractness, the academic community recognizes that a better understanding of design patterns by means of systematic investigation is essential. Reflective tasks in this direction include comparative analyses of design patterns, proposals for precise means of specification, attempts for tools, analysis of relationships among patterns, and other discussions. However, few works offer methods of precise specification of design patterns, resulting in lack of formalism. In this sense, patterns remain empirical and manually applied. According to, manual application is tedious and error prone. Precise specification can improve the application of design patterns as well as the analysis of relationships among them and tools in support of their application. Very little progress has been made towards better understanding of the micro-architectures dictated by design patterns. This report tries to capture the ''essence'' of patterns, showing the importance of researches able to illuminate how design patterns are essentially structured.
    [bibtex-key = Baroni03-TR-DPFormalization]


2002
  1. Hervé Albin-Amiot, Pierre Cointe, and Yann-Gaël Guéhéneuc. Un méta-modèle pour coupler application et détection des design patterns. In Michel Dao and Marianne Huchard, editors, Actes du 8e colloque Langages et Modèles à Objets (LMO), volume 8, numéro 1-2/2002 of RSTI -- L'objet, pages 41--58, janvier 2002. Hermès Science Publications. Note: 18 pages. [Text ] [Slides ] Keyword(s): Design patterns, LMO.
    Abstract:
    Les design patterns (ou patrons de conception) sont reconnus comme une des bonnes techniques du g\'enie logiciel \`a objets. Cette technique am\'eliore le cycle de vie du logiciel en facilitant la conception, la documentation, la maintenance et la r\'etro-conception. Peu d'environnements de d\'eveloppement int\'egr\'es (EDIs) sont \`a la fois outill\'es pour inciter l'utilisateur \`a appliquer un catalogue de patterns et pour l'aider \`a am\'eliorer ses programmes en y extrayant automatiquement des micro-architectures correspondant \`a celles de patterns. Ce papier pr\'esente une partie de nos travaux visant \`a outiller l'EDI Visual Age pour Java en lui adjoignant un catalogue recensant l'ensemble des patterns du GoF et deux assistants d\'edi\'es \`a l'application et \`a la d\'etection de patterns. Nous proposons un m\'eta-mod\`ele permettant de d\'ecrire ces diff\'erents patterns, de les manipuler, de les synth\'etiser et de les reconna\^{\i}tre dans des programmes existants. Nous discutons les limites de ce m\'eta-mod\`ele apparues apr\`es exp\'erimentation et sugg\'erons comment l'am\'eliorer pour prendre en charge l'aspect intentionnel des patterns et supporter la reconnaissance de micro-architectures voisines de celles de patterns d\'ej\`a r\'epertori\'es.
    [bibtex-key = AlbinAmiot02-LMO-MetaModele]


  2. Hervé Albin-Amiot, Pierre Cointe, and Yann-Gaël Guéhéneuc. Un méta-modèle pour coupler application et détection des design patterns. In Anne-Marie Kempf, editor, Journée sur le projet COM, février 2002. [Slides ] Keyword(s): Design patterns, JCOM. [bibtex-key = AlbinAmiot02-JCOM-Couple]


  3. Andrés Farìas, Yann-Gaël Guéhéneuc, and Mario Südholt. Integrating Behavioral Protocols in Enterprise Java Beans. In Kenneth Baclawski and Haim Kilov, editors, Proceedings of the 11th OOPSLA workshop on Behavioral Semantics: Serving the Customer, pages 80--89, October 2002. College of Computer Science, Northeastern University. Note: 10 pages. [Text ] [Slides ]
    Abstract:
    Behavioral protocols have been proposed to enhance component-based systems by including sequencing constraints on component interactions in component interfaces. However, no existing component-based models provide support for behavioral protocols. In this paper, we discuss the integration of behavioral protocol in Sun's Enterprise JavaBeans (EJB) component model in three steps. First, we introduce the notion of coherence between behavioral protocols and component source code. Second, we discuss of the relations of behavioral protocols to the different interface-related concepts in EJB components (remote interface, deployment descriptor...). Third, we describe possibilities of automatic enforcement of behavioral protocols by means of automated extraction of protocols from components and verification of the notion of coherence against expected behavioral protocols.
    [bibtex-key = Farias02-WBS-ProtocolsEJB]


  4. Yann-Gaël Guéhéneuc. Three Musketeers to the Rescue -- Meta-Modelling, Logic Programming, and Explanation-based Constraint Programming for Pattern Description and Detection. In Kris De Volder, Kim Mens, Tom Mens, and Roel Wuyts, editors, Proceedings of the 1st ASE workshop on Declarative Meta-Prorgramming, September 2002. Computer Science Department, University of British Columbia. Note: 8 pages. [Text ] [Slides ] Keyword(s): Design patterns, WDMP.
    Abstract:
    Software maintenance is a costly and tedious phase in the software development process Woods98-ConstraintRecovery. During this phase, a maintainer needs both to understand and to modify a program source code. Therefore, the maintainer must obtain a representation of the program that accurately reflects its structure and its behavior. Then, the maintainer must find those places in the program that require modification. Finally, the maintainer must perform changes that improve the program behavior and do not introduce further defects. In our research work, we focus on the maintainer's first and second tasks: The obtention of an accurate representation of the program structure and behavior, and the detection of places to improve. We propose a set of software engineering tools, for the structural and dynamic representation of Java program, and for the (semi-) automated detection of design patterns and design defects. Design patterns and design defects are related: A group of classes which micro-architecture is similar (but not identical) to a design pattern corresponds to a possible design defect
    [bibtex-key = Gueheneuc02-WDMP-ThreeMusketeers]


  5. Yann-Gaël Guéhéneuc, Rémi Douence, and Narendra Jussien. No Java Without Caffeine -- A Tool for Dynamic Analysis of Java Programs. In Wolfgang Emmerich and Dave Wile, editors, Proceedings of the 17th Conference on Automated Software Engineering (ASE), pages 117--126, September 2002. IEEE Computer Society Press. Note: 10 pages. [Text ] [Slides ] Keyword(s): Binary class relations, ASE.
    Abstract:
    To understand the behavior of a program, a maintainer reads some code, asks a question about this code, conjectures an answer, and searches the code and the documentation for confirmation of her conjecture. However, the confirmation of the conjecture can be error-prone and time-consuming because the maintainer has only static information at her disposal. She would benefit from dynamic information. In this paper, we present Caffeine{}, an assistant that helps the maintainer in checking her conjecture about the behavior of a Java{} program. Our assistant is a dynamic analysis tool that uses the Java{} platform debug architecture to generate a trace, \ie{} an execution history, and a \Prolog{} engine to perform queries over the trace. We present a usage scenario based on the n-queens problem, and two real-life examples based on the Singleton design pattern and on the composition relationship.
    [bibtex-key = Gueheneuc02-ASE-Caffeine]


  6. Yann-Gaël Guéhéneuc, Hervé Albin-Amiot, Rémi Douence, and Pierre Cointe. Bridging the Gap Between Modeling and Programming Languages. Technical report 02/09/INFO, Computer Science Department, École des Mines de Nantes, July 2002. Note: 56 pages. [Text ] Keyword(s): Binary class relations.
    Abstract:
    A discontinuity exists between modeling languages and ob\-ject-oriented programming languages. This discontinuity is a consequence of ambiguous notions in modeling languages and lack of corresponding notions in object-oriented programming languages. It hinders the transition between a software design and its implementation, and vice versa. Thus, it hampers the implementation and the maintenance processes. This discontinuity is particularly acute for binary class relationships, which describe, at the design level, notions such as association, aggregation, and composition. From the current state of the art, we propose synthetic definitions for the binary class relationships at the design level and corresponding definitions at the implementation level. We express the latter definitions in terms of common properties. We present algorithms to synthesize code for these properties and to detect these properties in code. These algorithms allow us to generate and to detect binary class relationships. We verify the detection algorithms on several well-known frameworks. The definitions and algorithms bring continuity between modeling languages and object-oriented programming languages.
    [bibtex-key = Gueheneuc02-TR-GapLanguages]


  7. Yann-Gaël Guéhéneuc, Rémi Douence, and Narendra Jussien. No Java Without Caffeine -- A Tool for Dynamic Analysis of Java Programs. Technical report 02/07/INFO, Computer Science Department, École des Mines de Nantes, May 2002. Note: 16 pages. [Text ] Keyword(s): Binary class relations.
    Abstract:
    To understand the behavior of a program, a maintainer reads some code, asks a question about this code, conjectures an answer, and searches the code and the documentation for confirmation of her conjecture. However, the confirmation of the conjecture can be error-prone and time-consuming because the maintainer only has static information at her disposal. She would benefit from dynamic information. In this paper, we present Caffeine{}, an assistant that helps the maintainer in checking her conjecture about the behavior of a Java{} program. Our assistant is a dynamic analysis tool that uses the Java{} platform debug architecture to generate a trace, \ie{} an execution history, and a \Prolog{} engine to perform queries over the trace. We present a usage scenario based on the n-queens problem, and two examples based on the Singleton design pattern and on the composition relationship.
    [bibtex-key = Gueheneuc02-TR-Caffeine]


  8. Yann-Gaël Guéhéneuc. Caffeine, since May 2002. Note: A tool to analyse Java programs dynamically. [Text ] Keyword(s): Design patterns. [bibtex-key = Caffeine]


2001
  1. Hervé Albin-Amiot, Pierre Cointe, Yann-Gaël Guéhéneuc, and Narendra Jussien. Instantiating and Detecting Design Patterns: Putting Bits and Pieces Together. In Debra Richardson, Martin Feather, and Michael Goedicke, editors, Proceedings of the 16th Conference on Automated Software Engineering (ASE), pages 166--173, November 2001. IEEE Computer Society Press. Note: 8 pages. [Text ] [Slides ] Keyword(s): Design patterns, ASE.
    Abstract:
    Design patterns ease designing, understanding, and re-engineering software. Achieving a well-designed piece of software requires a deep understanding and a good practice of design patterns. Understanding existing software relies on the ability to identify architectural forms resulting of the implementation of design patterns. Maintaining software involves spotting places that can be improved by using better design decisions, like those advocated by design patterns. Nevertheless, there is a lack of tools automating the use of design patterns to achieve well-designed pieces of software, to identify recurrent architectural forms, and to maintain software. In this paper, we present a set of tools and techniques to help OO software practitioners design, understand, and re-engineer a piece of software, using design-patterns. A first prototype tool, PatternsBox, provides assistance in designing the architecture of a new piece of software, while a second prototype tool, Ptidej, identifies design patterns used in an existing one. These tools, in combination, support maintenance by highlighting defects in an existing design, and by suggesting and applying corrections based on widely-accepted design patterns solutions.
    [bibtex-key = AlbinAmiot01-ASE-BitsPieces]


  2. Hervé Albin-Amiot and Yann-Gaël Guéhéneuc. Design Patterns Application: Pure-generative Approach vs. Conservative-generative Approach. In Krzysztof Czarnecki, editor, Proceedings of the 1st OOPSLA workshop on Generative Programming, October 2001. ACM Press. Note: 3 pages. [Text ] Keyword(s): Design patterns, GP.
    Abstract:
    For our discussion we summarize software developments in two kinds: Development of large applications (such as accounting application or billing systems); and, development of large framework (such as window system [SunAWT] or networking system [Zweig90]). In one hand, when developing large applications, the developers need to abstract the functional and non-functional requirements of the application. They must be particularly careful with the specifications of the business rules and policies of the application, while the language and the code implementing the application are not really important. On the other hand, when developing large frameworks, the developers need to abstract the potential extension and implementations of the framework. They must be particularly careful with the architecture, the design, and the implementation of the framework, which is, at least, as important as the functionalities provided. In this position paper, we present two tools that help the developers in implementing large applications and large frameworks, using design patterns. Scriptor [Scriptor] (Section 2) is an industrial-strength application generator. Developers use it to generate large applications from scripts stating their functional and non-functional requirements. PatternsBox [PatternsBox] (Section 3) is an academic conservative application generator. Developers use it to implement design patterns in existing applications. PatternsBox modifies or creates only the required code artifacts (class, interface, fields, methods) to implement the design patterns, leaving the rest of the code untouched.
    [bibtex-key = AlbinAmiot01-WGP-Generative]


  3. Hervé Albin-Amiot and Yann-Gaël Guéhéneuc. Design Patterns: A Round-Trip. In Gilles Ardourel, Michael Haupt, Jose Luis Herrero Agustin, Rainer Ruggaber, and Charles Suscheck, editors, Proceedings of the 11th ECOOP workshop for Ph.D. Students in Object-Oriented Systems, June 2001. Note: 10 pages. [Text ] [Slides ] Keyword(s): Design patterns, PHDOOS.
    Abstract:
    Design patterns are of major interest to increase software quality and abstraction level. However, design patterns are difficult to choose, to apply, and to recover. We propose a set of tools to use design patterns in a round-trip fashion. We define a meta-model to describe design patterns. This meta-model is specifically oriented towards design patterns instantiation and detection. We develop a source-to-source transformation engine to modify the source code to comply with design patterns descriptions. Meanwhile, we use an explanation-based constraint solver to detect design patterns in source code from their descriptions. With these tools, we hope to offer a mean to apply and to recover design patterns without overhead for the developers.
    [bibtex-key = AlbinAmiot01-WPHDOOS-RoundTrip]


  4. Hervé Albin-Amiot and Yann-Gaël Guéhéneuc. Meta-Modeling Design Patterns: Application to Pattern Detection and Code Synthesis. In Pim van den Broek, Pavel Hruby, Motoshi Saeki, Gerson Sunyé, and Bedir Tekinerdogan, editors, Proceedings of the 1st ECOOP workshop on Automating Object-Oriented Software Development Methods, October 2001. Centre for Telematics and Information Technology, University of Twente. Note: TR-CTIT-01-35. 8 pages. [Text ] [Slides ] Keyword(s): Design patterns.
    Abstract:
    Design Patterns have been quickly adopted by the object-oriented community, in particular since the publication of ``Design Patterns: Elements of Reusable Object-Oriented Software". They offer elegant and reusable solutions to recurring problems of design. Their use increases productivity and development quality. However, these solutions, at the boundary of programming languages and design models, suffer from a lack of formalism. For this reason, their application remains empirical and manually performed. This position paper presents how a meta-model can be used to obtain a representation of design patterns and how this representation allows both automatic code generation and design patterns detection.
    [bibtex-key = AlbinAmiot01-WAOOSDM-MetaModel]


  5. Yann-Gaël Guéhéneuc and Hervé Albin-Amiot. Using Design Patterns and Constraints to Automate the Detection and Correction of Inter-Class Design Defects. In Quioyun Li, Richard Riehle, Gilda Pour, and Bertrand Meyer, editors, Proceedings of the 39th Conference on the Technology of Object-Oriented Languages and Systems (TOOLS USA), pages 296--305, July 2001. IEEE Computer Society Press. Note: 10 pages. [Text ] [Slides ] Keyword(s): Code and design smells, TOOLS USA.
    Abstract:
    Developing code free of defects is a major concern for the object-oriented software community. In this paper, we classify design defects as those within classes ( extit{intra-class}), those among classes ( extit{inter-classes}), and those of semantic nature ( extit{behavioral}). Then, we introduce guidelines to automate the detection and correction of inter-class design defects: We assume that design patterns embody good architectural solutions and that a group of entities with organization similar, but not equal, to a design pattern represents an inter-class design defect. Thus, the transformation of such a group of entities, such that its organization complies exactly with a design pattern, corresponds to the correction of an inter-class design defect. We use a meta-model to describe design patterns and we exploit the descriptions to infer sets of detection and transformation rules. A constraints solver with explanations uses the descriptions and rules to recognize groups of entities with organizations similar to the described design patterns. A transformation engine modifies the source code to comply with the recognized distorted design patterns. We apply these guidelines on the \ygg@pattern{Composite} pattern using \ygg@product{Ptidej}, our prototype tool that integrates the complete guidelines.
    [bibtex-key = Gueheneuc01-TOOLSUSA-DesignDefects]


  6. Yann-Gaël Guéhéneuc and Narendra Jussien. Quelques explications pour les patrons -- Une application de la PPC avec explications pour l'identification de patrons de conception. In Bertrand Neveu, editor, Actes des 7e Journées Nationales sur la résolution de Problèmes NP-Complets (JNPC), pages 111--122, juin 2001. ONERA. Note: 12 pages. [Text ] [Slides ] Keyword(s): Design patterns, JNPC.
    Abstract:
    Les patrons de conception d\'ecrivent des micro-architectures qui r\'esolvent des probl\`emes architecturaux r\'ecurrents. Il est important d'identifier ces micro-archi\-tectures lors de la maintenance des programmes orient\'es objets. Mais ces micro-architectures apparaissent souvent sous des formes d\'egrad\'ees dans le code source. Nous pr\'esentons une application de la programmation par contraintes avec explications pour l'identification de ces micro-architectures d\'egrad\'ees.
    [bibtex-key = Gueheneuc01-JNPC-Explications]


  7. Yann-Gaël Guéhéneuc and Narendra Jussien. Using Explanations for Design-Patterns Identification. In Christian Bessière, editor, Proceedings of the 1st IJCAI Workshop on Modeling and Solving Problems with Constraints, pages 57--64, August 2001. AAAI Press. Note: 8 pages. [Text ] [Slides ] Keyword(s): Design patterns, WMSPC.
    Abstract:
    Design-patterns describe micro-architectures that solve recurrent architectural problems in objec-oriented programming languages. It is important to identify these micro-architectures during the maintenant of objec-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.
    [bibtex-key = Gueheneuc01-WMSPC-Explanations]


  8. Yann-Gaël Guéhéneuc. Ptidej, since July 2001. Note: A tool suite to evaluate and to enhance the quality of object-oriented programs. [Text ] [bibtex-key = Ptidej]


1999
  1. Yann-Gaël Guéhéneuc. PADL, since July 1999. Note: A meta-model (and parsers) to represent and to manipulate object-oriented programs and design motifs. [Text ] [bibtex-key = PADL]


1998
  1. Yann-Gaël Guéhéneuc. Syntax-error Recovery in Interactive Environments. Master's thesis, École des Mines de Nantes et Université de Nantes, septembre 1998. Note: (Diplôme d'études approfondies). [bibtex-key = Gueheneuc98-DEA]



This document was translated from BibTEX by bibtex2html