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
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
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
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
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
On the Feasibility of Transfer-learning Code Smells using Deep Learning
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
- âŠ