75 research outputs found

    Hatékony rendszer-szintƱ hatåsanalízis módszerek és alkalmazåsuk a szoftverfejlesztés folyamatåban = Efficient whole-system impact analysis methods with applications in software development

    Get PDF
    Szoftver hatĂĄsanalĂ­zis sorĂĄn a rendszer megvĂĄltoztatĂĄsĂĄnak következmĂ©nyeit becsĂŒljĂŒk, melynek fontos alkalmazĂĄsai vannak pĂ©ldĂĄul a vĂĄltoztatĂĄs-propagĂĄlĂĄs, költsĂ©gbecslĂ©s, szoftverminƑsĂ©g Ă©s tesztelĂ©s terĂŒletĂ©n. A kutatĂĄs sorĂĄn olyan hatĂĄsanalĂ­zis mĂłdszereket dolgoztunk ki, melyek hatĂ©konyan Ă©s sikeresen alkalmazhatĂłk nagymĂ©retƱ Ă©s heterogĂ©n architektĂșrĂĄjĂș, valĂłs alkalmazĂĄsok esetĂ©ben is. A korĂĄbban rendelkezĂ©sre ĂĄllĂł mĂłdszerek csak korlĂĄtozott mĂ©retben Ă©s környezetekben voltak kĂ©pesek eredmĂ©nyt szolgĂĄltatni. A meglĂ©vƑ statikus Ă©s dinamikus programszeletelĂ©s Ă©s fĂŒggƑsĂ©g elemzĂ©si algoritmusok tovĂĄbbfejlesztĂ©se mellett szĂĄmos kapcsolĂłdĂł terĂŒleten Ă©rtĂŒnk el eredmĂ©nyeket Ășgy, mint fĂŒggƑsĂ©gek metrikĂĄkkal törtĂ©nƑ vizsgĂĄlata, fogalmi csatolĂĄs kutatĂĄsa, minƑsĂ©gi modellek, hiba- Ă©s produktivitĂĄs elƑrejelzĂ©s. Ezen terĂŒleteknek a mĂłdszerek gyakorlatban törtĂ©nƑ alkalmazĂĄsĂĄban van jelentƑsĂ©ge. SpeciĂĄlis technolĂłgiĂĄkra koncentrĂĄlva ĂșjszerƱ eredmĂ©nyek szĂŒlettek, pĂ©ldĂĄul adatbĂĄzis rendszerek vagy alacsony szintƱ nyelvek esetĂ©ben. A hatĂĄsanalĂ­zis mĂłdszerek alkalmazĂĄsai terĂ©n kidolgoztunk ĂșjszerƱ mĂłdszereket a tesztelĂ©s optimalizĂĄlĂĄsa, teszt lefedettsĂ©g mĂ©rĂ©s, -priorizĂĄlĂĄs Ă©s vĂĄltozĂĄs propagĂĄlĂĄs terĂŒleteken. A kidolgozott mĂłdszerek alapjĂĄt kĂ©peztĂ©k tovĂĄbbi projekteknek, melyek sorĂĄn szoftvertermĂ©keket is kiegĂ©szĂ­tettek mĂłdszereink alapjĂĄn. | During software change impact analysis, we assess the consequences of changes made to a software system, which has important applications in, for instance, change propagation, cost estimation, software quality and testing. We developed impact analysis methods that can be effectively and efficiently used for large and heterogeneous real life applications as well. Previously available methods could provide results only in limited environments and for systems of limited size. Apart from the enhancements developed for the existing static and dynamic slicing and dependence analysis algorithms, we achieved results in different related areas such as investigation of dependences based on metrics, conceptual coupling, quality models and prediction of defects and productivity. These areas mostly support the application of the methods in practice. We have contributions in the fields of different special technologies, for instance, dependences in database systems or analysis of low level languages. Regarding the applications of impact analysis, we developed novel methods for test optimization, test coverage measurement and prioritization, and change propagation. The developed methods provided basis for further projects, also for extension of certain software products

    Detailed Overview of Software Smells

    Get PDF
    This document provides an overview of literature concerning software smells covering various dimensions of smells along with their corresponding references

    Exploring the eradication of code smells: An empirical and theoretical perspective

    Get PDF
    This article has been made available through the Brunel Open Access Publishing Fund - Copyright @ 2010 Hindawi Publishing CorporationCode smells reflect code decay, and, as such, developers should seek to eradicate such smells through application of “deodorant” in the form of one or more refactorings. However, a relative lack of studies exploring code smells either theoretically or empirically when compared with literature on refactoring suggests that there are reasons why smell eradication is neither being applied in anger, nor the subject of significant research. In this paper, we present three studies as supporting evidence for this stance. The first is an analysis of a set of five, open-source Java systems in which we show very little tendency for smells to be eradicated by developers; the second is an empirical study of a subsystem of a proprietary, C# web-based application where practical problems arise in smell identification and the third, a theoretical enumeration of smell-related refactorings to suggest why smells may be left alone from an effort perspective. Key findings of the study were that first, smells requiring application of simple refactorings were eradicated in favour of smells requiring more complex refactorings; second, a wide range of conflicts and anomalies soon emerged when trying to identify smelly code; an interesting result with respect to comment lines was also observed. Finally, perceived (estimated) effort to eradicate a smell may be a key factor in explaining why smell eradication is avoided by developers. The study thus highlights the need for a clearer research strategy on the issue of code smells and all aspects of their identification and measurement.The research in this paper was supported by a grant from the UK Engineering and Physical Sciences Research Council (EPSRC) (Grant no: EP/G031126/1

    Scheduling Refactoring Opportunities Using Computational Search

    Full text link
    Maintaining a high-level code quality can be extremely expensive since time and monetary pressures force programmers to neglect improving the quality of their source code. Refactoring is an extremely important solution to reduce and manage the growing complexity of software systems. Developers often need to make trade-offs between code quality, available resources and delivering a product on time, and such management support is beyond the scope and capability of existing refactoring engines. The problem of finding the optimal sequence in which the refactoring opportunities, such as bad smells, should be ordered is rarely studied. Due to the large number of possible scheduling solutions to explore, software engineers cannot manually find an optimal sequence of refactoring opportunities that may reduce the effort and time required to efficiently improve the quality of software systems. In this paper, we use bi-level multi-objective optimization to the refactoring opportunities management problem. The upper level generates a population of solutions where each solution is defined as an ordered list of code smells to fix which maximize the benefits in terms of quality improvements and minimize the cost in terms of number of refactorings to apply. The lower level finds the best sequence of refactorings that fixes the maximum number of code smells with a minimum number of refactorings for each solution (code smells sequence) in the upper level. The statistical analysis of our experiments over 30 runs on 6 open source systems and 1 industrial project shows a significant reduction in effort and better improvements of quality when compared to state-of-art bad smells prioritization techniques. The manual evaluation performed by software engineers also confirms the relevance of our refactoring opportunities scheduling solutions.Master of ScienceComputer Science, College of Engineering and Computer ScienceUniversity of Michigan-Dearbornhttp://deepblue.lib.umich.edu/bitstream/2027.42/136063/1/Scheduling Refactoring Opportunities Using Computational Search.pd

    Refactoring = Substitution + Rewriting: Towards Generic, Language-Independent Refactorings

    Get PDF

    On the Feasibility of Transfer-learning Code Smells using Deep Learning

    Full text link
    Context: A substantial amount of work has been done to detect smells in source code using metrics-based and heuristics-based methods. Machine learning methods have been recently applied to detect source code smells; however, the current practices are considered far from mature. Objective: First, explore the feasibility of applying deep learning models to detect smells without extensive feature engineering, just by feeding the source code in tokenized form. Second, investigate the possibility of applying transfer-learning in the context of deep learning models for smell detection. Method: We use existing metric-based state-of-the-art methods for detecting three implementation smells and one design smell in C# code. Using these results as the annotated gold standard, we train smell detection models on three different deep learning architectures. These architectures use Convolution Neural Networks (CNNs) of one or two dimensions, or Recurrent Neural Networks (RNNs) as their principal hidden layers. For the first objective of our study, we perform training and evaluation on C# samples, whereas for the second objective, we train the models from C# code and evaluate the models over Java code samples. We perform the experiments with various combinations of hyper-parameters for each model. Results: We find it feasible to detect smells using deep learning methods. Our comparative experiments find that there is no clearly superior method between CNN-1D and CNN-2D. We also observe that performance of the deep learning models is smell-specific. Our transfer-learning experiments show that transfer-learning is definitely feasible for implementation smells with performance comparable to that of direct-learning. This work opens up a new paradigm to detect code smells by transfer-learning especially for the programming languages where the comprehensive code smell detection tools are not available
    • 

    corecore