6 research outputs found

    Rule-based quality heuristics formalization and identification

    Full text link
    Mémoire numérisé par la Division de la gestion de documents et des archives de l'Université de Montréal

    An Empirical Assessment of the Software Design Pattern Concept

    Get PDF
    Context: The publication of the milestone textbook on design patterns by the ‘Gang of Four’ (GoF) in 1995, introduced a set of 23 design patterns that are largely concerned with improving the practices and products of software development. However, there has been no comprehensive assessment of the effectiveness of design patterns, nor is there any evidence about any claims and factors that are made for pattern reuse in software development. Aims: The aims of this thesis are to assess the design patterns systematically in a sequence of studies, and to identify the claims and factors to determine how well they reflect experiences of pattern reuse in practice. Method: This thesis describes four studies: a document survey to identify claims for patterns, a mapping study to identify empirical studies about patterns, an online survey, and a narrative synthesis. The mapping study and the online survey together provide quite comprehensive and thorough evidence for the narrative synthesis. In the narrative synthesis, we check whether there is any consistency or not in the evidence about specific patterns, and also to see how the claims and factors influence pattern reuse. Results: The mapping study found 20 primary studies, and the online survey had 206 usable responses. In the 20 primary study of the mapping study 17 design patterns were examined. In the online survey 175 respondents considered patterns were useful, and 155 respondents reported on patterns that they considered not to be useful. Conclusion: From the synthesis results, the specific patterns Composite and Observer are evaluated as being generally useful, but the Visitor and Singleton patterns, while useful, have possible negative aspects. And also four of the claims and the effect of one factor are demonstrated to be generally true. But the others are either unsupported or have no effect

    Détection, Explications et Restructuration de défauts de conception : les patrons abîmés.

    Get PDF
    Models driven engineering considers models first class entities for the software development. The models driven processes must be able to take into account the know-how of experts, generally expressed in terms of analysis, architectural of design patterns. To choose the right pattern and to ensure its correct integration within a model constitute curbs with the systematic use of the good design practices. In order to reduce these tasks, we propose an approach based on the automatic inspection of models. In the same manner that there are code review activities aiming at checking the absence of bad coding practices in a program, we have tooled a design review activity identifying, explaining and correcting the bad design practices in a model. A spoiled pattern is comparable with a design pattern, its instantiations solving the same types of problems, but with a different and certainly improvable architecture. Experiments were carried out in order to collect spoiled patterns, allowing us to propose a catalog of bad practices, complementary to the GoF catalog. The detection of the instantiations of spoiled patterns in a UML model is related with a wide graph homomorphism. Graphs UML having typed vertexes, detection is based on local and global structural properties allowing the solving of this NP-Complete problem by successive filtering. Thus, this algorithm is able to detect all the possible instantiations of a spoiled pattern, by managing moreover prohibited and optional edges. The model fragment semantics is given by its intent which is validated by the designer. The intent of the detected fragments and the benefit of a replacement by the adequate pattern are deduced by requests on an ontology conceived for this purpose. The transformation of the fragments into instantiations of design pattern is carried out thanks to model refactoring automatically deduced from the structural differences between a spoiled pattern and an design pattern.L'ingénierie des modèles considère les modèles comme des entités de première classe pour le développement logiciel. Les processus dirigés par les modèles se doivent d'être capables de prendre en compte le savoir-faire d'experts, généralement exprimé en termes de patrons, qu'ils soient d'analyse, de conception ou d'architecture. Choisir le bon patron et assurer sa bonne intégration au sein d'une modélisation constitue des freins à l'utilisation systématique des bonnes pratiques de conception. Afin d'alléger ces tâches, nous proposons une approche basée sur l'inspection automatique des modèles. De la même manière qu'il existe des revues de code visant à vérifier l'absence de mauvaises pratiques de codage dans un programme, nous avons outillé une activité de revue de conception identifiant, expliquant et corrigeant les mauvaises pratiques de conception dans un modèle. Un patron abîmé est comparable à un patron de conception, ses contextualisations résolvant les mêmes types de problèmes, mais avec une architecture différente et certainement améliorable. Des expérimentations ont été menées afin de collecter des patrons abîmés, nous amenant à proposer un catalogue de mauvaises pratiques, complémentaire au catalogue du GoF. La détection des contextualisations de patrons abîmés dans un modèle UML est apparentée à un morphisme de graphe étendu. Les graphes UML ayant des sommets typés, la détection s'appuie sur des particularités structurelles locales et globales permettant de résoudre ce problème NP-Complet par des filtrages successifs. Cet algorithme est ainsi capable de détecter toutes les contextualisations possibles d'un patron abîmé, en gérant de plus les arcs interdits et facultatifs. La sémantique d'un fragment de modèle est donnée par son intention et celle-ci est validée par le concepteur. L'intention des fragments détectés et les bénéfices d'un remplacement par le patron adéquat sont déduits par des requêtes sur une ontologie conçue à cet effet. La transformation des fragments en contextualisations de patrons de conception est réalisée grâce à des restructurations de modèles déduites automatiquement des différences structurelles entre un patron abîmé et un patron de conception

    eine graphbasierte Sprache zur Spezifikation komplexer Suchmuster für die statische Quelltextanalyse

    Get PDF
    Das Ziel dieser Arbeit ist die Darstellung einer graphbasierten Sprache für die Beschreibung komplexer Suchmuster zur Quelltextanalyse. Der Fokus liegt auf der Möglichkeit einer modularisierten Musterspezifikation, so dass der Nutzer komplexe Muster über die Kombination einzelner Module erstellen kann. Die Sprachsyntax basiert sowohl auf dem Abstrakten Syntaxbaum, als auch auf Elementen der Graphtypen Kontrollabhängigkeitsgraph und Datenabhängigkeitsgraph. Somit kann in einer Musterspezifikation die Graphrepräsentation von Java Syntaxelementen mit abstrakteren Abhängigkeitsbeziehungen kombiniert werden

    Specifying Reuse Interfaces for Task-Oriented Framework Specialization

    Get PDF
    Reuse of existing carefully designed and tested software improves the quality of new software systems and reduces their development costs. Object-oriented frameworks provide an established means for software reuse on the levels of both architectural design and concrete implementation. Unfortunately, due to frame-works complexity that typically results from their flexibility and overall abstract nature, there are severe problems in using frameworks. Patterns are generally accepted as a convenient way of documenting frameworks and their reuse interfaces. In this thesis it is argued, however, that mere static documentation is not enough to solve the problems related to framework usage. Instead, proper interactive assistance tools are needed in order to enable system-atic framework-based software production. This thesis shows how patterns that document a framework s reuse interface can be represented as dependency graphs, and how dynamic lists of programming tasks can be generated from those graphs to assist the process of using a framework to build an application. This approach to framework specialization combines the ideas of framework cookbooks and task-oriented user interfaces. Tasks provide assistance in (1) cre-ating new code that complies with the framework reuse interface specification, (2) assuring the consistency between existing code and the specification, and (3) adjusting existing code to meet the terms of the specification. Besides illustrating how task-orientation can be applied in the context of using frameworks, this thesis describes a systematic methodology for modeling any framework reuse interface in terms of software patterns based on dependency graphs. The methodology shows how framework-specific reuse interface specifi-cations can be derived from a library of existing reusable pattern hierarchies. Since the methodology focuses on reusing patterns, it also alleviates the recog-nized problem of framework reuse interface specification becoming complicated and unmanageable for frameworks of realistic size. The ideas and methods proposed in this thesis have been tested through imple-menting a framework specialization tool called JavaFrames. JavaFrames uses role-based patterns that specify a reuse interface of a framework to guide frame-work specialization in a task-oriented manner. This thesis reports the results of cases studies in which JavaFrames and the hierarchical framework reuse inter-face modeling methodology were applied to the Struts web application frame-work and the JHotDraw drawing editor framework
    corecore