114 research outputs found

    Static Detection of Design Patterns in Class Diagrams

    Get PDF
    Contains fulltext : 218659.pdf (Publisher’s version ) (Open Access)CSERC '1

    Feature Detection in Ajax-enabled Web Applications

    Get PDF
    Abstract-In this paper we propose a method for reverse engineering the features of Ajax-enabled web applications. The method first collects instances of the DOM trees underlying the application web pages, using a state-of-the-art crawling framework. Then, it clusters these instances into groups, corresponding to distinct features of the application. The contribution of this paper lies in the novel DOM-tree similarity metric of the clustering step, which makes a distinction between simple and composite structural changes. We have evaluated our method on three real web applications. In all three cases, the proposed distance metric leads to a number of clusters that is closer to the actual number of features and classifies web page instances into these feature-specific clusters more accurately than other traditional distance metrics. We therefore conclude that it is a reliable distance metric for reverse engineering the features of Ajax-enabled web applications

    A multidimensional empirical study on refactoring activity

    Get PDF
    Abstract In this paper we present an empirical study on the refactoring activity in three well-known projects. We have studied five research questions that explore the different types of refactorings applied to different types of sources, the individual contribution of team members on refactoring activities, the alignment of refactoring activity with release dates and testing periods, and the motivation behind the applied refactorings. The studied projects have a history of 12, 7, and 6 years, respectively. We have found that there is very little variation in the types of refactorings applied on test code, since the majority of the refactorings focus on the reorganization and renaming of classes. Additionally, we have identified that the refactoring decision making and application is often performed by individual refactoring "managers". We have found a strong alignment between refactoring activity and release dates. Moreover, we found that the development teams apply a considerable amount of refactorings during testing periods. Finally, we have also found that in addition to code smell resolution the main drivers for applying refactorings are the introduction of extension points, and the resolution of backward compatibility issues

    Identification of Extract Method Refactoring Opportunities

    No full text
    Extract Method has been recognized as one of the most important refactorings, since it decomposes large methods and can be used in combination with other refactorings for fixing a variety of design problems. However, existing tools and methodologies support extraction of methods based on a set of statements selected by the user in the original method. The goal of the proposed methodology is to automatically identify Extract Method refactoring opportunities and present them as suggestions to the designer of an objectoriented system. The suggested refactorings adhere to three principles: the extracted code should contain the complete computation of a given variable declared in the original method, the behavior of the program should be preserved after the application of the refactoring, and the extracted code should not be excessively duplicated in the original method. The proposed approach is based on the union of static slices that result from the application of a block-based slicing technique. The soundness of the identified refactoring opportunities has been evaluated by an independent designer on the system that he developed

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

    No full text
    Maintenance has gained the most important role in the life cycle of a software product, since it occupies the largest percentage of software development costs. This can be attributed to the fact that a software product should constantly evolve by providing new features, error corrections, performance improvements, and integration of novel technologies in order to remain competitive and diachronically successful. Despite the major importance of software maintenance, the effort being invested by software companies on preventive maintenance (i.e., improvement of design quality in order to increase maintainability) is very limited (lower than 5% of total maintenance costs). This fact indicates that there is a clear need for methods and tools that can be used by the software industry in order to support preventive maintenance, since the manual and human-driven inspection of source code requires tremendous effort and leads to long-term benefits that do not add immediate value to the software product. To this end, this work aims at developing methods and techniques that provide a concrete solution for major design problems whose remedy improves design quality and facilitates increased maintainability. The developed methods face the problem of improving the design quality of an object-oriented system by means of identifying refactoring opportunities which resolve bad smells existing in source code. This refactoring-oriented approach has the ability to produce refactoring solutions which are feasible and behavior preserving by examining a set of preconditions that should apply, pre-evaluate the impact of the identified refactoring opportunities on certain aspects of design quality and provide a ranking of the refactoring solutions allowing the prioritization of maintenance effort on parts of the program that would benefit the most. Therefore, it can be claimed that this work provides the most adequate support for the refactoring process which constitutes a major part of preventive maintenanc
    corecore