Refactoring tekniklerinin yazılım iç kalite ölçütlerine etkilerinin araştırılması
Investigating the impact of refactoring techniques on internal quality attributes of software
Yazar: TUĞBA METİN TORTOP
Danışman: DR. ÖĞR. ÜYESİ YUNUS EMRE SELÇUK
Yıldız Teknik Üniversitesi / Fen Bilimleri Enstitüsü / Bilgisayar Mühendisliği Ana Bilim Dalı / Bilgisayar Mühendisliği Bilim Dalı
Derece: Yüksek Lisans, 2024
Konu: Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrol = Computer Engineering and Computer Science and Control

Özet:
Refactoring, mevcut kodun dış davranışını etkilemeksizin iç yapısını değiştirerek tasarımı iyileştirme sürecidir ve iç kalite özelliklerini iyileştirerek yazılım kalitesini artırması beklenir. Literatürde refactoringin yazılım kalitesi üzerindeki etkisini farklı açılardan inceleyen birçok çalışma mevcuttur ancak nesne yönelimli yazılım sistemlerinde bu tür çalışmalar hem kısıtlıdır hem de birbirleri ile çelişkili sonuçlar üretmişlerdir. Belirlenen durumu iyileştirmek amacıyla bu çalışmada Github repolarından elde edilen 12 açık kaynak kodlu, aktif ve popüler Java tabanlı projenin commit geçmişleri analiz edilmiştir. Toplam 5.948 committe tespit edilen 59.031 refactoring işlemi arasından, çalışmada odaklanılan 22 tür refactoring tekniğinin dağıldığı 10.954 işleme ait bir örneklem elde edilmiş, refactoringin yazılımın iç kalitesi üzerindeki etkisi Chidamber ve Kemerer metrikleri ölçümlenerek değerlendirilmiştir. Refactoringlerin tespiti ve metrik ölçüm işlemlerinin koordineli ve programatik yürüyebilmesi için çalışma kapsamında otomatik bir analiz yazılımı geliştirilmiştir. Bulguların hem yüzdesel etkileri incelenmiş hem de metrikler üzerinde etkili olan refactoringler için Wilcoxon İşaretli Sıralar Testi uygulanarak istatistiksel anlamlılıkları değerlendirilmiştir. Elde edilen bulgulara göre, bazı refactoringler metriklerde iyileşme ya da kötüleşmeye sebep olurken, bazıları metrikler üzerinde etkisizdir. Move and Inline Method tekniğinin iç kalite metriklerini istatistiksel anlamlılık derecesinde en fazla iyileştiren, Replace Variable with Field tekniğinin en fazla kötüleştiren refactoringler olduğu saptanmıştır. Gerçekleşen etkilerin ise en çok WMC ve RFC ölçütlerinde olduğu saptanmıştır. Yapılan bu çalışmada, refactoring tekniklerinin yazılımın iç kalite ölçütlerine etkisine yönelik matematiksel ve istatistiksel bulgular paylaşılmış, literatürdeki çalışmalara ait tutarsız sonuçların nedenlerine yönelik tespitler yapılmış ayrıca araştırmacılar, yazılım geliştiricileri ve şirketler için faydalı olabilecek öneriler paylaşılmıştır.

Abstract:
Refactoring is the process of improving the design by changing the internal structure of existing code without affecting its external behavior and is expected to improve software quality by improving internal quality attributes. Refactoring is highly important for improving software quality and minimizing maintenance costs. Although there are numerous studies investigating the impact of refactoring on software quality, it is understood that new studies are needed due to the limited number of studies exploring object-oriented software systems, and contradictory findings of the existing ones. For this purpose, in this study, the commit histories of 12 open source, active and popular Java-based projects obtained from Github repositories have been analyzed. Out of 59.031 refactoring operations identified in 5.948 refactored commits, a sample of 10.954 operations covering 22 refactoring techniques focused on in this study was extracted. The impacts of selected refactoring techniques on the internal quality attributes were assessed by measuring Chidamber & Kemerer metrics. Also, an automatic analysis software was developed to carry out the refactoring detection and metric measurement processes programmatically. Both the percentage effects of the findings and their statistical significance were evaluated by applying the Wilcoxon signed-rank test. According to the findings, some metrics were not affected by refactorings while others improved or worsened. In terms of statistical significance, Move and Inline Method technique improved internal quality metrics the most, while Replace Variable with Field worsened them the most. Impacts were mostly observed in WMC and RFC metrics. This study contains mathematical and statistical findings for the impact of refactoring techniques on internal quality metrics of software, identifies the reasons for the contradictory results in existing studies and provides some recommendations that could be useful for researchers, software developers and software companies.