48 research outputs found

    The role of coordination analysis in software integration projects

    Get PDF
    Available for individual study only.What sort of component coordination strategies emerge in a software integration process? How can such strategies be discovered and further analysed? How close are they to the coordination component of the envisaged architectural model which was supposed to guide the integration process? This paper introduces a framework in which such questions can be discussed and illustrates its use by describing part of a real case-study. The approach is based on a methodology which enables semi-automatic discovery of coordination patterns from source code, combining generalized slicing techniques and graph manipulationThis research was partially supported by Fct in the context of the Mondrian project, under contract PTDC/EIA-CCO/108302/200

    Search based software engineering: Trends, techniques and applications

    Get PDF
    © ACM, 2012. This is the author's version of the work. It is posted here by permission of ACM for your personal use. Not for redistribution. The definitive version is available from the link below.In the past five years there has been a dramatic increase in work on Search-Based Software Engineering (SBSE), an approach to Software Engineering (SE) in which Search-Based Optimization (SBO) algorithms are used to address problems in SE. SBSE has been applied to problems throughout the SE lifecycle, from requirements and project planning to maintenance and reengineering. The approach is attractive because it offers a suite of adaptive automated and semiautomated solutions in situations typified by large complex problem spaces with multiple competing and conflicting objectives. This article provides a review and classification of literature on SBSE. The work identifies research trends and relationships between the techniques applied and the applications to which they have been applied and highlights gaps in the literature and avenues for further research.EPSRC and E

    Extracting UML Class Diagrams from Object-Oriented Fortran: ForUML

    Get PDF
    Many scientists who implement computational science and engineering software have adopted the object-oriented (OO) Fortran paradigm. One of the challenges faced by OO Fortran developers is the inability to obtain high level software design descriptions of existing applications. Knowledge of the overall software design is not only valuable in the absence of documentation, it can also serve to assist developers with accomplishing different tasks during the software development process, especially maintenance and refactoring. The software engineering community commonly uses reverse engineering techniques to deal with this challenge. A number of reverse engineering-based tools have been proposed, but few of them can be applied to OO Fortran applications. In this paper, we propose a software tool to extract unified modeling language (UML) class diagrams from Fortran code. The UML class diagram facilitates the developers' ability to examine the entities and their relationships in the software system. The extracted diagrams enhance software maintenance and evolution. The experiments carried out to evaluate the proposed tool show its accuracy and a few of the limitations

    The Impact of API Change- and Fault-Proneness on the User Ratings of Android Apps

    Get PDF
    The mobile apps market is one of the fastest growing areas in the information technology. In digging their market share, developers must pay attention to building robust and reliable apps. In fact, users easily get frustrated by repeated failures, crashes, and other bugs; hence, they abandon some apps in favor of their competition. In this paper we investigate how the fault-and change-proneness of APIs used by Android apps relates to their success estimated as the average rating provided by the users to those apps. First, in a study conducted on 5,848 (free) apps, we analyzed how the ratings that an app had received correlated with the fault-and change-proneness of the APIs such app relied upon. After that, we surveyed 45 professional Android developers to assess (i) to what extent developers experienced problems when using APIs, and (ii) how much they felt these problems could be the cause for unfavorable user ratings. The results of our studies indicate that apps having high user ratings use APIs that are less fault-and change-prone than the APIs used by low rated apps. Also, most of the interviewed Android developers observed, in their development experience, a direct relationship between problems experienced with the adopted APIs and the users\u27 ratings that their apps received

    Mining Version Histories for Detecting Code Smells

    Get PDF
    Code smells are symptoms of poor design and implementation choices that may hinder code comprehension, and possibly increase change-and fault-proneness. While most of the detection techniques just rely on structural information, many code smells are intrinsically characterized by how code elements change over time. In this paper, we propose Historical Information for Smell deTection (HIST), an approach exploiting change history information to detect instances of five different code smells, namely Divergent Change, Shotgun Surgery, Parallel Inheritance, Blob, and Feature Envy. We evaluate HIST in two empirical studies. The first, conducted on 20 open source projects, aimed at assessing the accuracy of HIST in detecting instances of the code smells mentioned above. The results indicate that the precision of HIST ranges between 72 and 86 percent, and its recall ranges between 58 and 100 percent. Also, results of the first study indicate that HIST is able to identify code smells that cannot be identified by competitive approaches solely based on code analysis of a single system\u27s snapshot. Then, we conducted a second study aimed at investigating to what extent the code smells detected by HIST (and by competitive code analysis techniques) reflect developers\u27 perception of poor design and implementation choices. We involved 12 developers of four open source projects that recognized more than 75 percent of the code smell instances identified by HIST as actual design/implementation problems

    pBWT: Achieving succinct data structures for parameterized pattern matching and related problems

    Get PDF
    The fields of succinct data structures and compressed text indexing have seen quite a bit of progress over the last two decades. An important achievement, primarily using techniques based on the Burrows-Wheeler Transform (BWT), was obtaining the full functionality of the suffix tree in the optimal number of bits. A crucial property that allows the use of BWT for designing compressed indexes is order-preserving suffix links. Specifically, the relative order between two suffixes in the subtree of an internal node is same as that of the suffixes obtained by truncating the furst character of the two suffixes. Unfortunately, in many variants of the text-indexing problem, for e.g., parameterized pattern matching, 2D pattern matching, and order-isomorphic pattern matching, this property does not hold. Consequently, the compressed indexes based on BWT do not directly apply. Furthermore, a compressed index for any of these variants has been elusive throughout the advancement of the field of succinct data structures. We achieve a positive breakthrough on one such problem, namely the Parameterized Pattern Matching problem. Let T be a text that contains n characters from an alphabet , which is the union of two disjoint sets: containing static characters (s-characters) and containing parameterized characters (p-characters). A pattern P (also over ) matches an equal-length substring S of T i the s-characters match exactly, and there exists a one-to-one function that renames the p-characters in S to that in P. The task is to find the starting positions (occurrences) of all such substrings S. Previous index [Baker, STOC 1993], known as Parameterized Suffix Tree, requires (n log n) bits of space, and can find all occ occurrences in time O(jPj log +occ), where = jj. We introduce an n log +O(n)-bit index with O(jPj log +occlog n log ) query time. At the core, lies a new BWT-like transform, which we call the Parame- terized Burrows-Wheeler Transform (pBWT). The techniques are extended to obtain a succinct index for the Parameterized Dictionary Matching problem of Idury and Schaer [CPM, 1994]

    Mining Version Histories for Detecting Code Smells

    Get PDF
    Code smells are symptoms of poor design and implementation choices that may hinder code comprehension, and possibly increase change-and fault-proneness. While most of the detection techniques just rely on structural information, many code smells are intrinsically characterized by how code elements change over time. In this paper, we propose Historical Information for Smell deTection (HIST), an approach exploiting change history information to detect instances of five different code smells, namely Divergent Change, Shotgun Surgery, Parallel Inheritance, Blob, and Feature Envy. We evaluate HIST in two empirical studies. The first, conducted on 20 open source projects, aimed at assessing the accuracy of HIST in detecting instances of the code smells mentioned above. The results indicate that the precision of HIST ranges between 72 and 86 percent, and its recall ranges between 58 and 100 percent. Also, results of the first study indicate that HIST is able to identify code smells that cannot be identified by competitive approaches solely based on code analysis of a single system\u27s snapshot. Then, we conducted a second study aimed at investigating to what extent the code smells detected by HIST (and by competitive code analysis techniques) reflect developers\u27 perception of poor design and implementation choices. We involved 12 developers of four open source projects that recognized more than 75 percent of the code smell instances identified by HIST as actual design/implementation problems

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

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

    Synergizing specification miners through model fissions and fusions

    Get PDF
    Abstract—Software systems are often developed and released without formal specifications. For those systems that are formally specified, developers have to continuously maintain and update the specifications or have them fall out of date. To deal with the absence of formal specifications, researchers have proposed tech-niques to infer the missing specifications of an implementation in a variety of forms, such as finite state automaton (FSA). Despite the progress in this area, the efficacy of the proposed specification miners needs to improve if these miners are to be adopted. We propose SpecForge, a new specification mining approach that synergizes many existing specification miners. SpecForge decomposes FSAs that are inferred by existing miners into simple constraints, through a process we refer to as model fission. It then filters the outlier constraints and fuses the constraints back together into a single FSA (i.e., model fusion). We have evaluated SpecForge on execution traces of 10 programs, which includes 5 programs from DaCapo benchmark, to infer behavioral models of 13 library classes. Our results show that SpecForge achieves an average precision, recall and F-measure of 90.57%, 54.58%, and 64.21 % respectively. SpecForge outperforms the best performing baseline by 13.75 % in terms of F-measure
    corecore