Geri Dön

Nesne yönelimli yazılımlarda karşıt kalıpların belirlenmesi

Antipattern detection in object oriented software

  1. Tez No: 432186
  2. Yazar: MEHMED TAHA ARAS
  3. Danışmanlar: YRD. DOÇ. DR. YUNUS EMRE SELÇUK
  4. Tez Türü: Yüksek Lisans
  5. Konular: Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrol, Computer Engineering and Computer Science and Control
  6. Anahtar Kelimeler: Belirtilmemiş.
  7. Yıl: 2016
  8. Dil: Türkçe
  9. Üniversite: Yıldız Teknik Üniversitesi
  10. Enstitü: Fen Bilimleri Enstitüsü
  11. Ana Bilim Dalı: Bilgisayar Mühendisliği Ana Bilim Dalı
  12. Bilim Dalı: Belirtilmemiş.
  13. 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

  1. 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

    Türkçe

    2019

    Mimarlıkİstanbul Teknik Üniversitesi

    Mimarlık Ana Bilim Dalı

    DOÇ. DR. NURBİN PAKER KAHVECİOĞLU

  2. 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

    İngilizce

    2024

    Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrolİstanbul Teknik Üniversitesi

    Bilgisayar Mühendisliği Ana Bilim Dalı

    PROF. DR. BURAK BERK ÜSTÜNDAĞ

  3. 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

    İngilizce

    2016

    Mimarlıkİstanbul Teknik Üniversitesi

    Mimarlık Ana Bilim Dalı

    DOÇ. DR. BEGÜM SERTYEŞİLIŞIK

  4. 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

    İngilizce

    2015

    Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve KontrolOrta Doğu Teknik Üniversitesi

    Bilişim Sistemleri Ana Bilim Dalı

    DOÇ. DR. ALTAN KOÇYİĞİT

  5. 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

    Türkçe

    2024

    Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve KontrolYıldız Teknik Üniversitesi

    Bilgisayar Mühendisliği Ana Bilim Dalı

    DR. ÖĞR. ÜYESİ YUNUS EMRE SELÇUK