Design patterns and code smells. Relationships and impact on selected software quality metrics
[ 1 ] Instytut Informatyki, Wydział Informatyki i Telekomunikacji, Politechnika Poznańska | [ D ] doktorant
[ 1 ] Instytut Informatyki, Wydział Informatyki i Telekomunikacji, Politechnika Poznańska | [ P ] pracownik
[ 1 ] Instytut Informatyki, Wydział Informatyki i Telekomunikacji, Politechnika Poznańska | [ P ] pracownik
PL Wzorce projektowe i przykre zapachy w kodzie programu. Wzajemne związki i wpływ na wybrane metryki jakości oprogramowania
angielski
- design patterns
- code smells
- defects
- changeability
- wzorce projektowe
- przykre zapachy
- defekty
- zmienność kodu
EN Design patterns are recommended generic solutions to common design problems. They have a complex relationship with various code quality characteristics. While several papers reported the positive impact of patterns on maintainability, changeability, and defects, other papers provided opposite conclusions, lessened the patterns effect or related their impact with various contextual factors. In this work, we investigate the relationship between design patterns and code smells and study the effect of code smells as a confounding variable in the patterns relationship with changeability and defects. We start by analyzing two medium-size, mature Java systems with the aim of investigating if the existence of design patterns impacts the presence of code smells and examine how the association between the two phenomena evolve over time. After that, we used non-parametric statistical tests to explore the relationship between design patterns and changeability, and to measure the impact of code smells on this relationship with regards to 13 design patterns and 9 code smells in three medium-size, long-evolving open-source Java systems. Finally, we inspect the link between patterns and defects and capture the difference in the impact on defects between pattern classes with/without smells in 10 Java systems from the PROMISE dataset. The results show that design pattern classes are more immune to code smells than other classes. However, the strength of this immunity varies between different patterns. Our results also suggest that the evolution of pattern classes through different releases of the same system slightly decreases their association with smells. Furthermore, our analysis concluded that code smells is a valid contextual factor that affects the relationship between design patterns with regards to both defects and changeability as in one hand, smelly patterns tend to receive smaller, but more frequent changes than other classes, and on the other hand, smelly pattern classes are positively associated with defects and also attract more defects than both non-pattern and non-smelly-pattern classes.
PL Wzorce projektowe stanowią polecane ogólne rozwiązania typowych problemów związanych z projektowaniem oprogramowania. Użycie wzorców wpływa na różne właściwości i charakterystyki kodu źródłowego. O ile wiele prac wskazuje na pozytywny związek z wzorców z pielęgnowalnością, zmiennością oprogramowania oraz gęstością defektów, o tyle część wyników prowadzi do odmiennych, czasem nawet przeciwnych wniosków: wpływ wzorców okazuje się dużo słabszy lub powiązany z rozmaitymi czynnikami kontekstowymi. W tej pracy podjęto temat związku pomiędzy wzorcami projektowymi oraz tzw. przykrymi zapachami w kodzie programów, oraz zbadano wpływ tych zależności na zmienność kodu oraz jego gęstość defektów w nim zawartych. Na początku pracy przedstawiono wyniki analizy dwóch średniej wielkości, dojrzałych systemów napisanych w języku Java pod kątem związków pomiędzy klasami uczestniczącymi we wzorcach projektowych oraz obarczonych przykrymi zapachami, a także ewolucji tych związków w czasie. Następnie, za pomocą nieparametrycznych testów statystycznych, przeprowadzono badanie wzajemnego wpływu wzorców oraz przykrych zapachów na zmienność oprogramowania w trzech podobnych systemach. Wreszcie, badanie związku tych zjawisk z gęstością defektów, wykorzystując istniejące dane ze zbioru PROMISE. Wyniki wskazują, że klasy uczestniczące na wzorce projektowe rzadziej są obciążone przykrymi zapachami niż pozostałe klasy, jednak związek ten zmienia się w zależności od konkretnego wzorca. Obserwacje dotyczące zmian tego związku w czasie pokazują także, że w toku ewolucji udział przykrych zapachów w klasach pełniących role we wzorcach nieznacznie spada. Ponadto, wykonana analiza pozwala na stwierdzenie, że obecność przykrych zapachów jest czynnikiem wpływającym na zmienność kodu i gęstość defektów w we wzorcach projektowych. Klasy obarczone zapachami są zmieniane częściej, jednak same zmiany są mniejsze niż w przypadku innych klas, natomiast klasy wzorców posiadające przykre zapachy posiadają błędy częściej i w większej liczbie zarówno niż klasy nieuczestniczące we wzorcach, jak i klasy uczestniczące we wzorcach, ale pozbawione zapachów.
88
nauki o komputerach i informatyka
informatyka
DrOIN 2142
publiczny
Foutse Khomh
Montréal, Canada
08.09.2021
angielski
publiczny
Michał Śmiałek
Warszawa, Poland
12.07.2021
angielski
publiczny
rozprawa doktorska
Poznań, Polska
01.10.2021
Rada Dyscypliny Informatyka Techniczna i Telekomunikacja Politechniki Poznańskiej
doktor nauk inżynieryjno-technicznych w dyscyplinie: informatyka techniczna i telekomunikacja