Nesne yönelimli yazılımlarda karşıt kalıpların belirlenmesi
Antipattern detection in object oriented software
- Tez No: 432186
- Danışmanlar: YRD. DOÇ. DR. YUNUS EMRE SELÇUK
- Tez Türü: Yüksek Lisans
- Konular: Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrol, Computer Engineering and Computer Science and Control
- Anahtar Kelimeler: Belirtilmemiş.
- Yıl: 2016
- Dil: Türkçe
- Üniversite: Yıldız Teknik Üniversitesi
- Enstitü: Fen Bilimleri Enstitüsü
- Ana Bilim Dalı: Bilgisayar Mühendisliği Ana Bilim Dalı
- Bilim Dalı: Belirtilmemiş.
- Sayfa Sayısı: 58
Özet
Kalıplar tasarımı geliştirmek ve bunun sonucunda sürdürülebilirliği, yeniden kullanılabilirliği ve tersine mühendisliği iyileştirmek için kullanılan önemli tekniklerdir. Nesne yönelimli yazılımlarda yaygın olarak meydana gelen problemlere karşı yeniden kullanılabilir olan genel çözümlere ise tasarım kalıpları denmektedir. Tasarım kalıpları yaygın problemleri çözmek için kullanabilecek biçimselleştirilmiş üstün yöntemler şeklindedir. Karşıt kalıplar ise tekrar eden bir probleme karşı yaygın olarak uygulanan, tasarım kalıbı olarak düşünülen fakat aksine genellikle verimsiz ve riskli çözümlerdir. Bazı çalışmalar göstermiştir ki, karşıt kalıpların kullanılması yazılım sistemlerinin sürdürülebilirliği üzerinde olumsuz etkilere sahiptir. Kod kokusu (kötü koku) zayıf tasarım ve geliştirmenin ve daha derin bir problemin semptomlarıdır. Bazı durumlarda bu semptomlar yazılım geliştiricilerin önemli yamalar geliştirirken acele etmelerinden ya da yerinde olmayan tercihler vermelerinden kaynaklanır. Kod kokuları kodun anlaşılabilirliğini düşürür, aynı zamanda hata ve değişim meyillidirler. Bu yüzden kod kokularının tespit edilmesi ve gerektiği zaman da düzeltme işlemlerinin planlanıp uygulanması gerekmektedir. Kod kokuları aynı zamanda karşıt kalıpların belirtileri olarak da karşımıza çıkmaktadır. Bir karşıt kalıp, bir ya da daha fazla kod kokusunun bir araya gelmesinden, ya da bazı kod metriklerinin belirli sınırları aşmasından meydana gelebilmektedir. Bu çalışma, Java nesne yönelimli programlama dilinde yazılmış projeleri analiz ederek, bazı kod kokuları ve metrik değerlerinin hesaplanmasını ve bu değerlerin referans aralıklarda olup olmamasına göre karşıt kalıp içeren sınıfların tespit edilmesini amaçlamaktadır. Karşıt kalıp tespitinde metrik tabanlı analizin yanında kod üzerinde bazı kokuların varlığını gösteren bazı kurallara dayalı doğrulamalar da yapılmaktadır. Varlığının tespit edilmesi amaçlanan karşıt kalıplar Blob, Swiss Army Knife ve Lava Flow karşıt kalıplarıdır. Bu karşıt kalıpların tespit edilmesi için projenin kaynak kod dosyalarını ve binary dosyalarını girdi olarak alan otomatik bir yaklaşım kullanılmaktadır. Sınıflar kendi içlerinde ve birbirleriyle etkileşimli olarak analiz edilip bazı metrikler çıkarılmaktadır. Baz alınan projelerin hesaplanan metrik değerleri üzerinde aykırı değer filtrelemesi yapıldıktan sonra ortaya çıkan ortalamalar ile referans değerler oluşmaktadır. Bu referans değerlerin dışında olan sınıflar potansiyel karşıt kalıp olarak tespit edilmektedir. Apache'nin 3 projesi ve büyük bir havayolu şirketinin 3 projesi referans projeler olarak analiz edilmiş ve filtrelenmiş ortalama değerleri baz alınmıştır. Ayrıca incelenen projenin filtrelenmiş ortalama değerleri ve yaygın olarak bilinen bazı metriklerin kabul edilen sınır değerleri de göz önünde bulundurulmuştur. Karşıt kalıp olarak veya normal olarak işaretlenen sınıflar kontrol edilerek geliştirilen yazılımın ürettiği sonuçların doğruluğu hesaplanmaya çalışılmıştır.
Özet (Çeviri)
Patterns are significant techniques which improve design and consequently enhance maintainability, reusability and reengineering. Design patterns are common solutions that can be reused against generally occurring problems. Design patterns are used as efficient techniques to common problems. Antipatterns are inefficient and risky solutions which are used against recurring problems, considering that they are design patterns. Some studies have shown that using antipatterns has some negative effects on maintainability of software systems. Code smells (bad smell) are symptoms of weak design and development or a deeper problem. Sometimes these symptoms are caused from developers who try to finish their tasks as immediate as possible and making wrong decisions. Code smells decreases the understandability of code and they generally are error and change prone. Thus code smells need to be detected carefully and refactored if necessary. At the same time one or more code smells can be symptoms of an antipattern. An antipattern can show up by existence of some code smells or some code metrics which exceed the threshold values that are determined previously. This study aims to detect antipatterns by calculating some code smells and metric values in projects that were written in Java object oriented programming language. Also some validations are used to detect code smells on the source code depending on some rules. Inspected antipatterns in our study are Blob, Swiss Army Knife and Lava Flow. An automated approach which takes source code files and binary files as input to detect antipatterns. Classes are analyzed by their own source codes and comparatively with each others. After outlier filtering is applied on some reference projects, averages of metric values show our reference value ranges to detect antipatterns. Classes which are out of these ranges are determined as potential antipatterns. 3 projects of Apache and 3 projects of one of the biggest airline companies are analyzed as our reference projects and filtered average values are used to determine thresholds. Also subject project and accepted values of some known metrics in literature were considered to determine thresholds. Classes that are marked as antipatterns or regular were controlled and accuracy results were tried obtain.
Benzer Tezler
- Temsilden simülasyona: mimarlıkta yapı enformasyon modelleme etkisi
From representation to simulation: Building information modelling effect on architecture
FUNDA TAN
Doktora
Türkçe
2019
Mimarlıkİstanbul Teknik ÜniversitesiMimarlık Ana Bilim Dalı
DOÇ. DR. NURBİN PAKER KAHVECİOĞLU
- Predictive error compensated wavelet neural networks framework for time series prediction
Zaman serisi tahmini için hata tazminli dalgacık dönüşümlü sinir ağları çerçeve yazılımı
SERKAN MACİT
Yüksek Lisans
İngilizce
2024
Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrolİstanbul Teknik ÜniversitesiBilgisayar Mühendisliği Ana Bilim Dalı
PROF. DR. BURAK BERK ÜSTÜNDAĞ
- An investigation into the building information modeling applications in the construction project management
İnşaat proje yönetimi aşamalarında yapı bilgi modellemesi kullanımı üzerine bir inceleme
İMGE KIVIRCIK
Yüksek Lisans
İngilizce
2016
Mimarlıkİstanbul Teknik ÜniversitesiMimarlık Ana Bilim Dalı
DOÇ. DR. BEGÜM SERTYEŞİLIŞIK
- Size and effort estimation based on correlations between problem and solution domain measures for object oriented software
Nesne tabanlı yazılımlar için problem ve çözüm alanı ölçüleri arasındaki ilişkiye dayalı büyüklük ve efor tahmini
TÜLİN ERÇELEBİ AYYILDIZ
Doktora
İngilizce
2015
Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve KontrolOrta Doğu Teknik ÜniversitesiBilişim Sistemleri Ana Bilim Dalı
DOÇ. DR. ALTAN KOÇYİĞİT
- Nesne yönelimli yazılım ölçütlerinin uzun ömürlü yazılımlarda hata oranlarını gösterme düzeyinin belirlenmesi
Determining the level of indicating bug rates in long-lived software based on object-oriented software metrics
ÖZGE ESEN ÇOLAK
Yüksek Lisans
Türkçe
2024
Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve KontrolYıldız Teknik ÜniversitesiBilgisayar Mühendisliği Ana Bilim Dalı
DR. ÖĞR. ÜYESİ YUNUS EMRE SELÇUK