47 research outputs found

    An overview of Mirjam and WeaveC

    Get PDF
    In this chapter, we elaborate on the design of an industrial-strength aspectoriented programming language and weaver for large-scale software development. First, we present an analysis on the requirements of a general purpose aspect-oriented language that can handle crosscutting concerns in ASML software. We also outline a strategy on working with aspects in large-scale software development processes. In our design, we both re-use existing aspect-oriented language abstractions and propose new ones to address the issues that we identified in our analysis. The quality of the code ensured by the realized language and weaver has a positive impact both on maintenance effort and lead-time in the first line software development process. As evidence, we present a short evaluation of the language and weaver as applied today in the software development process of ASML

    Διερεύνηση ιστορικών δεδομένων αναφορικά με προβλήματα σχεδίασης σε αντικειμενοστρεφή συστήματα λογισμικού

    Get PDF
    Διπλωματική εργασία--Πανεπιστήμιο Μακεδονίας, Θεσσαλονίκη, 2010.Τα προβλήματα σχεδίασης, σε αντίθεση με τα πρότυπα, αποτελούν συμπτώματα κακής ποιότητας της σχεδίασης ενός συστήματος λογισμικού και στην Τεχνολογία Λογισμικού εμφανίζονται υπό διαφορετικά ονόματα αλλά και οπτική γωνία θεώρησης. Ο εντοπισμός και εξάλειψη τους, δηλαδή η εφαρμογή της ευρέως γνωστής διαδικασίας της αναδόμησης, είναι μείζονος σημασίας εφόσον οδηγεί σε πηγαίο κώδικα του συστήματος που είναι πιο εύκολος στην κατανόηση, την τροποποίηση, την επαναχρησιμοποίηση και τον έλεγχο. Η παρούσα διπλωματική εργασία διερευνά την εξέλιξη των προβλημάτων σχεδίασης, αξιοποιώντας εργαλεία-CASE tools που υποστηρίζουν τον αυτόματο εντοπισμό τους, σε πολλαπλές διαδοχικές γενιές επιλεγμένων έργων λογισμικού ανοιχτού κώδικα, υλοποιημένα στη γλώσσα προγραμματισμού Java. Η αξιολόγηση των ευρημάτων, αναμένεται να παράσχει σημαντικές πληροφορίες και να απαντήσει σε αρκετά ερωτήματα όπως για παράδειγμα: α) εάν ο αριθμός των προβλημάτων σχεδίασης αυξάνεται με τη πάροδο των γενεών ενός έργου β) εάν τα προβλήματα σχεδίασης εξαλείφονται λόγω κατάλληλων στοχευόμενων ανθρώπινων παρεμβάσεων κάθε φορά γ) εάν τα προβλήματα σχεδίασης εμφανίζονται κατά την εξέλιξη των σχετικών τμημάτων του πηγαίου κώδικα ή ενυπάρχουν ήδη από τη στιγμή της εισαγωγής τους στο σύστημα, και δ) κατά πόσο συχνά εκτελούνται οι κατάλληλες ενέργειες αναδόμησης από τους σχεδιαστές των υπό εξέταση συστημάτων λογισμικού ανοιχτού κώδικα για την εξάλειψη των εντοπιζόμενων προβλημάτων σχεδίασης. Σε αντίθεση με προηγούμενες ερευνητικές προσεγγίσεις που έχουν διερευνήσει την εφαρμογή των αναδομήσεων κατά τη διάρκεια εξέλιξης ενός έργου λογισμικού, στα πλαίσια της παρούσας διπλωματικής εργασίας, θα επιχειρηθεί η εξέταση του θέματος από την οπτική γωνία των ίδιων των προβλημάτων σχεδίασης διαχωρίζοντας τις σκόπιμες ενέργειες αναδόμησης από τις ακούσιες ενέργειες αφαίρεσης των προβλημάτων που προκύπτουν λόγω της διορθωτικής ή της προσαρμοστικής συντήρησης του συστήματος λογισμικού. Η εμπειρική μελέτη πραγματοποιείται εξετάζοντας δυο έργα λογισμικού ανοιχτού κώδικα αναζητώντας τέσσερα προβλήματα σχεδίασης που θεωρούνται τα περισσότερο σημαντικά μεταξύ των προβλημάτων που εμφανίζονται σε έργα λογισμικού μεγάλης κλίμακας μιας και σχετίζονται με τη διανομή της λειτουργικότητας μεταξύ των κλάσεων και των μεθόδων του συστήματος. Επιπλέον, η εξάλειψή αυτών επιτυγχάνεται κατόπιν στοχευόμενων ενεργειών από πλευράς των σχεδιαστών

    Pattern-based refactoring in model-driven engineering

    Full text link
    L’ingénierie dirigée par les modèles (IDM) est un paradigme du génie logiciel qui utilise les modèles comme concepts de premier ordre à partir desquels la validation, le code, les tests et la documentation sont dérivés. Ce paradigme met en jeu divers artefacts tels que les modèles, les méta-modèles ou les programmes de transformation des modèles. Dans un contexte industriel, ces artefacts sont de plus en plus complexes. En particulier, leur maintenance demande beaucoup de temps et de ressources. Afin de réduire la complexité des artefacts et le coût de leur maintenance, de nombreux chercheurs se sont intéressés au refactoring de ces artefacts pour améliorer leur qualité. Dans cette thèse, nous proposons d’étudier le refactoring dans l’IDM dans sa globalité, par son application à ces différents artefacts. Dans un premier temps, nous utilisons des patrons de conception spécifiques, comme une connaissance a priori, appliqués aux transformations de modèles comme un véhicule pour le refactoring. Nous procédons d’abord par une phase de détection des patrons de conception avec différentes formes et différents niveaux de complétude. Les occurrences détectées forment ainsi des opportunités de refactoring qui seront exploitées pour aboutir à des formes plus souhaitables et/ou plus complètes de ces patrons de conceptions. Dans le cas d’absence de connaissance a priori, comme les patrons de conception, nous proposons une approche basée sur la programmation génétique, pour apprendre des règles de transformations, capables de détecter des opportunités de refactoring et de les corriger. Comme alternative à la connaissance disponible a priori, l’approche utilise des exemples de paires d’artefacts d’avant et d’après le refactoring, pour ainsi apprendre les règles de refactoring. Nous illustrons cette approche sur le refactoring de modèles.Model-Driven Engineering (MDE) is a software engineering paradigm that uses models as first-class concepts from which validation, code, testing, and documentation are derived. This paradigm involves various artifacts such as models, meta-models, or model transformation programs. In an industrial context, these artifacts are increasingly complex. In particular, their maintenance is time and resources consuming. In order to reduce the complexity of artifacts and the cost of their maintenance, many researchers have been interested in refactoring these artifacts to improve their quality. In this thesis, we propose to study refactoring in MDE holistically, by its application to these different artifacts. First, we use specific design patterns, as an example of prior knowledge, applied to model transformations to enable refactoring. We first proceed with a detecting phase of design patterns, with different forms and levels of completeness. The detected occurrences thus form refactoring opportunities that will be exploited to implement more desirable and/or more complete forms of these design patterns. In the absence of prior knowledge, such as design patterns, we propose an approach based on genetic programming, to learn transformation rules, capable of detecting refactoring opportunities and correcting them. As an alternative to prior knowledge, our approach uses examples of pairs of artifacts before and after refactoring, in order to learn refactoring rules. We illustrate this approach on model refactoring

    On the Use of Process Trails to Understand Software Development

    Full text link

    Toward an Understanding of Software Code Cloning as a Development Practice

    Get PDF
    Code cloning is the practice of duplicating existing source code for use elsewhere within a software system. Within the research community, conventional wisdom has asserted that code cloning is generally a bad practice, and that code clones should be removed or refactored where possible. While there is significant anecdotal evidence that code cloning can lead to a variety of maintenance headaches --- such as code bloat, duplication of bugs, and inconsistent bug fixing --- there has been little empirical study on the frequency, severity, and costs of code cloning with respect to software maintenance. This dissertation seeks to improve our understanding of code cloning as a common development practice through the study of several widely adopted, medium-sized open source software systems. We have explored the motivations behind the use of code cloning as a development practice by addressing several fundamental questions: For what reasons do developers choose to clone code? Are there distinct identifiable patterns of cloning? What are the possible short- and long-term term risks of cloning? What management strategies are appropriate for the maintenance and evolution of clones? When is the ``cure'' (refactoring) likely to cause more harm than the ``disease'' (cloning)? There are three major research contributions of this dissertation. First, we propose a set of requirements for an effective clone analysis tool based on our experiences in clone analysis of large software systems. These requirements are demonstrated in an example implementation which we used to perform the case studies prior to and included in this thesis. Second, we present an annotated catalogue of common code cloning patterns that we observed in our studies. Third, we present an empirical study of the relative frequencies and likely harmfulness of instances of these cloning patterns as observed in two medium-sized open source software systems, the Apache web server and the Gnumeric spreadsheet application. In summary, it appears that code cloning is often used as a principled engineering technique for a variety of reasons, and that as many as 71% of the clones in our study could be considered to have a positive impact on the maintainability of the software system. These results suggest that the conventional wisdom that code clones are generally harmful to the quality of a software system has been proven wrong
    corecore