Yazılım Depolarının Analizi ile Tasarım Kod Uyumluluğunun Araştırılması

Benzer belgeler
BÖLÜM 1 YAZILIM TASARIMINA GİRİŞ YZM211 YAZILIM TASARIMI. Yrd. Doç. Dr. Volkan TUNALI Mühendislik ve Doğa Bilimleri Fakültesi / Maltepe Üniversitesi

SÜREÇ YÖNETİMİ VE SÜREÇ İYİLEŞTİRME H.Ömer Gülseren > ogulseren@gmail.com

Deprem Yönetmeliklerindeki Burulma Düzensizliği Koşulları

PORTFÖY ÜRETİM ŞİRKETLERİNİN OLUŞTURULMASI VE ELEKTRİK ÜRETİM ANONİM ŞİRKETİNİN YENİDEN YAPILANDIRILMASI. Sefer BÜTÜN. EÜAŞ Genel Müdürü ÖZET:

ÇUKUROVA'DA OKALİPTÜS YETİŞTİRİCİLİĞİ VE İDARE SÜRELERİNİN HESAPLANMASI

ÖLÇÜ TRANSFORMATÖRLERİNİN KALİBRASYONU VE DİKKAT EDİLMESİ GEREKEN HUSUSLAR

1 OCAK 31 ARALIK 2009 ARASI ODAMIZ FUAR TEŞVİKLERİNİN ANALİZİ

MAKÜ YAZ OKULU YARDIM DOKÜMANI 1. Yaz Okulu Ön Hazırlık İşlemleri (Yaz Dönemi Oidb tarafından aktifleştirildikten sonra) Son aktif ders kodlarının

Bilişim Sistemleri. Modelleme, Analiz ve Tasarım. Yrd. Doç. Dr. Alper GÖKSU

ELEKTRİK ÜRETİM SANTRALLERİNDE KAPASİTE ARTIRIMI VE LİSANS TADİLİ

VEZNE PROGRAMINDA POSTA ÜCRETİ İLE İLGİLİ YAPILAN DÜZENLEMELER (Vezne Sürüm: )

Analiz aşaması sıralayıcı olurusa proje yapımında daha kolay ilerlemek mümkün olacaktır.

VAKIF MENKUL KIYMET YATIRIM ORTAKLIĞI A.Ş. (ESKİ UNVANI İLE VAKIF B TİPİ MENKUL KIYMETLER YATIRIM ORTAKLIĞI A.Ş. )

KİTAP İNCELEMESİ. Matematiksel Kavram Yanılgıları ve Çözüm Önerileri. Tamer KUTLUCA 1. Editörler. Mehmet Fatih ÖZMANTAR Erhan BİNGÖLBALİ Hatice AKKOÇ

BÖLÜM 7 BİLGİSAYAR UYGULAMALARI - 1

İSTANBUL ( ). İDARE MAHKEMESİ BAŞKANLIĞI NA GÖNDERİLMEK ÜZERE ANKARA İDARE MAHKEMESİ BAŞKANLIĞI NA. : TMMOB Şehir Plancıları Odası (İstanbul Şubesi)

ULUSLARARASI BİLGİ TEKNOLOJİLERİ SEMPOZYUMU

1 OCAK - 31 ARALIK 2015 HESAP DÖNEMİNE AİT PERFORMANS SUNUŞ RAPORU (Tüm tutarlar, aksi belirtilmedikçe Türk Lirası ( TL ) cinsinden ifade edilmiştir.

Temel Bilgisayar Programlama

İŞ SAĞLIĞI VE GÜVENLİĞİ UYGULAMALARI

Veri Toplama Yöntemleri. Prof.Dr.Besti Üstün

Özelge: 4632 sayılı Kanunun Geçici 1. maddesi kapsamında vakıf/sandıklardan bireysel emeklilik sistemine yapılan aktarımlarda vergilendirme hk.

ANKARA EMEKLİLİK A.Ş GELİR AMAÇLI ULUSLARARASI BORÇLANMA ARAÇLARI EMEKLİLİK YATIRIM FONU ÜÇÜNCÜ 3 AYLIK RAPOR

İnşaat Firmalarının Maliyet ve Süre Belirleme Yöntemleri Üzerine Bir Alan Çalışması

İSTANBUL TİCARET ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BİLGİSAYAR SİSTEMLERİ LABORATUARI YÜZEY DOLDURMA TEKNİKLERİ

BİREYSEL SES EĞİTİMİ ALAN ÖĞRENCİLERİN GELENEKSEL MÜZİKLERİMİZİN DERSTEKİ KULLANIMINA İLİŞKİN GÖRÜŞ VE BEKLENTİLERİ

Araştırma Notu 15/177

VERGİ SİRKÜLERİ NO: 2012/82

T.C NECMETTĠN ERBAKAN ÜNĠVERSĠTESĠ Yapı Ġşleri ve Teknik Daire Başkanlığı GÖREV TANIM FORMU

JET MOTORLARININ YARI-DĐNAMĐK BENZETĐŞĐMĐ ve UÇUŞ ŞARTLARINA UYGULANMASI

Ç.Ü. GÜZEL SANATLAR FAKÜLTESİ İÇ MİMARLIK BÖLÜMÜ GÜZ YARIYILI İÇM PROJE 5 & DİPLOMA PROJESİ

1.3. NİTEL ARAŞTIRMA YÖNTEMLERİ GİRİŞ NİTEL ARAŞTIRMALARDA GEÇERLİK VE GÜVENİRLİK SORUNLARI... 2

Evrak Ekle. Kurum İçi Giden Evrak Ekleme. Kırmızı renker; doldurulması zorunlu alanları ifade etmektedir. İleri Geri tarihli işlem yapılamamaktadır.

Park Elektrik Üretim Madencilik Sanayi ve Ticaret A.Ş. Sayfa No: 1

KAHRAMANMARAŞ SÜTÇÜ İMAM ÜNİVERSİTESİ BİLİMSEL DERGİLER YÖNERGESİ BİRİNCİ BÖLÜM Amaç, Kapsam, Dayanak ve Tanımlar

KAVRAMLAR. Büyüme ve Gelişme. Büyüme. Büyüme ile Gelişme birbirlerinden farklı kavramlardır.

ŞİKAYET NO : /364 KARAR TARİH : 16/01/2014 RET KARARI ŞİKAYETÇİ :...,

BIM BUILDING INFORMATION MODELING YAPI BİLGİ MODELİ

EĞİTİM BİLİMİNE GİRİŞ 1. Ders- Eğitimin Temel Kavramları. Yrd. Doç. Dr. Melike YİĞİT KOYUNKAYA

B05.11 Faaliyet Alanı

BİLGİSAYAR PROGRAMLARI YARDIMIYLA ŞEV DURAYLILIK ANALİZLERİ * Software Aided Slope Stability Analysis*

DENEY 2: PROTOBOARD TANITIMI VE DEVRE KURMA

Türkiye Esnaf ve Sanatkarları Konfederasyonu Genel Başkanı olarak şahsım ve kuruluşum adına hepinizi saygılarımla selamlıyorum.

GYODER SEKTÖR BULUŞMASI 28 MAYIS 2013 İSTANBUL DR. VAHDETTİN ERTAŞ SERMAYE PİYASASI KURULU BAŞKANI KONUŞMA METNİ

YÜKSEKÖĞRETİM KURUMLARI ENGELLİLER DANIŞMA VE KOORDİNASYON YÖNETMELİĞİ (1) BİRİNCİ BÖLÜM. Amaç, Kapsam, Dayanak ve Tanımlar

Başbakanlık (Hazine Müsteşarlığı) tan:

Türkiye Ekonomi Politikaları Araştırma Vakfı Değerlendirme Notu Sayfa1

DEĞERLENDİRME NOTU: Mehmet Buğra AHLATCI Mevlana Kalkınma Ajansı, Araştırma Etüt ve Planlama Birimi Uzmanı, Sosyolog

MÜDEK 01 Mayıs Eyl 2016

İZMİR KÂTİP ÇELEBİ ÜNİVERSİTESİ ENGELSİZ ÜNİVERSİTE KOORDİNATÖRLÜĞÜ VE ENGELLİ ÖĞRENCİ BİRİMİ ÇALIŞMA USUL VE ESASLARI BİRİNCİ BÖLÜM

DÜNYA EKONOMİK FORUMU KÜRESEL CİNSİYET AYRIMI RAPORU, Hazırlayanlar. Ricardo Hausmann, Harvard Üniversitesi

İSTANBUL KEMERBURGAZ ÜNİVERSİTESİ ÖNLİSANS VE LİSANS PROGRAMLARI ARASINDA YATAY GEÇİŞ YÖNERGESİ. BİRİNCİ BÖLÜM Amaç, Kapsam, Dayanak ve Tanımlar

LG BİREYSEL AKILLI TELEFON KAMPANYA TAAHHÜTNAMESİ

HAYALi ihracatln BOYUTLARI

WCDMA HABERLEŞMESİNDE PASİF DAĞITILMIŞ ANTEN SİSTEMLERİ KULLANILARAK BİNA İÇİ HÜCRE PLANLAMA. Ferhat Yumuşak 1, Aktül Kavas 1, Betül Altınok 2

SOSYAL-EĞİTİM-BEŞERİ BİLİMLER

BLACKBERRY BİREYSEL AKILLI TELEFON KAMPANYA TAAHHÜTNAMESİ

Milli Gelir Büyümesinin Perde Arkası

Topoloji değişik ağ teknolojilerinin yapısını ve çalışma şekillerini anlamada başlangıç noktasıdır.

5510 sayılı SGK kanunu hakkında duyurular

Öğretim Tasarımında ASSURE Modeli The Heinich, Molenda, Russell and Smaldino Model

SİRKÜLER. 1.5-Adi ortaklığın malları, ortaklığın iştirak halinde mülkiyet konusu varlıklarıdır.

AvivaSA Emeklilik ve Hayat. Fiyat Tespit Raporu Görüşü. Şirket Hakkında Özet Bilgi: Halka Arz Hakkında Özet Bilgi:

Otizm lilerin eğitim hakkı var mıdır? Nedir ve nasıl olmalıdır?

Taş, Yaman ve Kayran. Altan KAYRAN. ÖZET

2008 YILI MERKEZİ YÖNETİM BÜTÇESİ ÖN DEĞERLENDİRME NOTU

Şekil 3-1: "ÇED İzni Alanı"nın ve "Proje Alanı"nın Yeri... 4

: 3218 Sayılı Serbest Bölgeler Kanunu Genel Tebliği (Seri No: 1) nde Değişiklik Yapılmasına Dair Tebliğ (Seri No: 3) yayımlandı.

ÖĞRENME FAALĠYETĠ GELĠġMĠġ ÖZELLĠKLER


Mikrodenetleyici Tabanlı, Otomatik Kontrollü Çöp Kamyonu Tasarımı

TMS 33 HİSSE BAŞINA KAZANÇ. GÜNCELLEMELER ve YÜRÜRLÜK TARİHLERİ

2. Söz konusu koruma amaçlı imar planı üst ölçek plana aykırı hususlar içermektedir.

Danışma Kurulu Tüzüğü

26 Ağustos 2010 tarih ve sayılı Resmi Gazete de yayınlanmıştır

TARİFE YÖNETMELİĞİ. BİRİNCİ BÖLÜM Amaç, Kapsam, Dayanak, Tanımlar ve İlkeler

10. Performans yönetimi ve bütçeleme bağlantıları

TEKNİK RESİM. Ders Notları: Mehmet Çevik Dokuz Eylül Üniversitesi. Görünüşler - 1

KURUYEMİŞ SEKTÖR RAPORU

BİR KOJENERASYON TESİSİSİN İLERİ EKSERGOÇEVRESEL ANALİZİ

Tasarım ve Planlama Eğitimi Neden Diğer Bilim Alanlarındaki Eğitime Benzemiyor?

SOSYAL ŞİDDET. Süheyla Nur ERÇİN

İngilizce Öğretmenlerinin Bilgisayar Beceri, Kullanım ve Pedagojik İçerik Bilgi Özdeğerlendirmeleri: e-inset NET. Betül Arap 1 Fidel Çakmak 2

MUŞ ALPARSLAN ÜNİVERSİTESİ UZAKTAN EĞİTİM UYGULAMA VE ARAŞTIRMA MERKEZİ YÖNETMELİĞİ

BİLGİ TEKNOLOJİLERİ VE İLETİŞİM KURULU KARARI

SİRKÜLER 2013/23. : Vadesi Gelmemiş İleri Tarihli Çeklere Senetler Gibi Reeskont Uygulanabilecek

Yakıt Özelliklerinin Doğrulanması. Teknik Rapor. No.: 942/

ÖZEL İLETİŞİM VERGİSİ GENEL TEBLİĞİ (SERİ NO: 14) BİRİNCİ BÖLÜM Amaç, Kapsam ve Dayanak

1. Mesaj Tipi ve Mesaj Fonksiyonu Bazında Bildirim Mail Adresi Tanımlama Đşlemleri


REFORM EYLEM GRUBU BİRİNCİ TOPLANTISI BASIN BİLDİRİSİ ANKARA, 8 KASIM 2014

Çizelgeleme. Üretim Planlama ve Kontrol 2 Pamukkale Üniversitesi Endüstri Mühendisliği Bölümü. Üretim Planlama ve Kontrol 2

ÇEVRE KORUMA TEMEL ALAN KODU: 85

17-19 EYLÜL 2010 TARİHLERİ ARASINDA MEHMET AKİF ERSOY ÜNİVERSİTESİN DE YAPILAN ADIM ÜNİVERSİTELERİ İDARİ GRUP TOPLANTI KARARLARI

BİT ini Kullanarak Bilgiye Ulaşma ve Biçimlendirme (web tarayıcıları, eklentiler, arama motorları, ansiklopediler, çevrimiçi kütüphaneler ve sanal

TEŞVİK SİSTEMİNDE TARIM YATIRIMLARI VE KONYA

TÜRKİYE SERMAYE PİYASALARINDA MERKEZİ KARŞI TARAF UYGULAMASI 13 MAYIS 2013 İSTANBUL DR. VAHDETTİN ERTAŞ SERMAYE PİYASASI KURULU BAŞKANI KONUŞMA METNİ

1.Temel Kavramlar 2. ÆÍlemler

Yıllarca bu konuda çalışan görüntü işleme uzmanlarının önerisi. Artık ArcGIS ile entegre

28 Mayıs 2016 tarihli ve sayılı Resmî Gazetede yayınlanmıştır. KURUL KARARI. Karar No : Karar Tarihi : 13/05/2016

Transkript:

Yazılım Depolarının Analizi ile Tasarım Kod Uyumluluğunun Araştırılması Kadriye ÖZBAġ ÇAĞLAYAN 1, Ali H. DOĞRU 2 1 TÜBĠTAK-BĠLGEM Yazılım Teknolojileri AraĢtırma Enstitüsü, ANKARA 2 ODTÜ Bilgisayar Mühendisliği Bölümü, ANKARA kadriye.caglayan@tubitak.gov.tr dogru@ceng.metu.edu.tr Özet. Yazılım projelerinde analiz aģamasında tanımlanan probleme çözüm üretme aģaması olan tasarım, geliģtiriciler tarafından yazılımı gerçekleģtirmek üzere yürütülen kodlama sürecine girdi sağlar. Yazılım geliģtirilirken ya da güncellenirken, kod ve tasarımın uyumlu olarak idamesi uzun vadeli bir yatırımdır ve idame ettirilebilir bir proje sonucunu doğurur. Ancak gerçek hayatta tecrübesizlik, bilgi eksikliği ya da tasarımın atıl kalmıģ olması gibi sebeplerle geliģtiricilerin tasarımla tam olarak tutarlı kod gerçekleģtiremediği durumlar ya- Ģanabilmektedir. Tasarım ile uyumsuzluk ise kalite açısından tahmin edilemez bir kod oluģmasına sebep olur. Tasarım ile kod arasındaki uyumluluğun kontrol edilmesi faydalı ancak iģ gücü yoğun bir iģlemdir. Uyumluluğun kontrolü amacı ile yazılım depolarının analizinin yapılması, tersine mühendislik ve manuel kontrol süreçlerinde karģılaģılan güçlüklerin üstesinden gelinmesini sağlayacak ve zamanda yazılım geliģtirme / idame süreçlerinin yöneticilerine değerli bilgiler sunacaktır. Bu çalıģmada kod tasarım arasında uyumluluğun belirlenmesi amacı ile yazılım depolarının analiz edilmesi için geliģtirilen yaklaģım ile bu yaklaģımın örnek bir sürüm üzerinde uygulaması anlatılmaktadır. 1 Giriş Yazılım geliģtirme projelerinde, analiz aģamasında belirlenen soruna çözüm tasarım aģamasında oluģturulduğundan ötürü, tasarım oldukça önemli bir aģamadır. Tasarım aģamasında alternatifler arasından en iyi tasarım seçimi ile birlikte çözüm kararları da alınır. Tasarımda belirlenen çözüm ve tasarım bileģenler, daha sonraki aģamada bir ve daha fazla geliģtirici tarafından yürütülen kodlama aģaması ile gerçekleģtirilerek tasarım kaynak koduna dönüģtürülür. Bu nedenle, üretilen kaynak kodunun çözümü tanımlayan tasarım ile uyumlu olması beklenir. Tasarım, yazılım geliģtirilirken ya da bakımı yapılırken üretilen yazılımın karma- Ģıklığını azaltmaya yardımcı bir unsurdur. Kaynak kodu ve tasarım arasında uyumluluğu korumak yüksek kaliteli ve sürdürülebilir bir proje için uzun vadeli bir yatırım-

dır. Ancak gerçek hayatta tecrübesizlik, bilgi eksikliği ya da yazılımın yaģlanması sonucu tasarımın atıl kalmıģ olması [1] gibi sebeplerle geliģtiricilerin tasarımla tam olarak tutarlı kod gerçekleģtiremediği durumlar yaģanabilmektedir. Bazı araģtırmacılar bu sorunları tasarım ilkelerine uyulmamasına [2] ve tasarım kalıplarının kullanılmamasına [3] dayandırır; özellikle de yazılım geliģtirme ve bakım aģamalarında bu konuların dikkate alınması konusuna vurgu yapar [4]. Tasarım ile uyumsuzluk ise kalite açısından tahmin edilemez bir kod oluģmasına sebep olur. Tasarım ile kod arasındaki uyumluluğun kontrol edilmesi faydalı ancak iģ gücü yoğun bir iģlemdir. Çünkü bu iģlem kodun tersine mühendislik yaklaģımı ile tasarıma dönüģtürülmesini ve hedeflenen tasarım ile manuel olarak uyumluluğunun kontrol edilmesini gerektirir. Kod tasarım uyumluluğunun kontrolü amacı ile yazılım ürünlerinin saklandığı yazılım depolarında analizler yapılması, tersine mühendislik ve manuel kontrol süreçlerinde karģılaģılan güçlüklerin üstesinden gelinmesini sağlayacaktır. Benzer Ģekilde, kod tasarım arasındaki uyumluluğun incelenmesi, yazılım geliģtirme / idame süreçlerinin yöneticilerine değerli bilgiler sunacaktır. Bu çalıģmada, tasarım ve kod uyum düzeylerini analiz etmek yazılım deposu analiz yöntemi ve kısmen metin madenciliği teknikleri kullanılması hedeflenmektedir. Makalenin geri kalan kısmı Ģu Ģekilde düzenlenmiģtir: 2. bölümde ilgili literatür gözden geçirilmiģtir. 3. bölümde tasarım-kod uyumluluğu analizi için izlenen yöntem açıklanmaktadır. 4. bölümde tasarım-kod uyumluluğunu değerlendirmek için yapılan örnek analiz çalıģmasının sonuçları sunulmuģtur. Son bölümde ise bu çalıģmanın sonuçları ve gelecek çalıģmalar özetlenmiģtir. 2 İlgili Çalışmalar Yazılım mühendisliği araģtırmacıları, yazılımın geliģimi ve değiģimi bağlamında yazılım depolarından iliģkileri ve eğilimleri ortaya çıkarmak için geniģ bir yelpazede farklı yaklaģımlar geliģtirdiler. Yazılım depolarından yapısal kaynak kodu değiģiminin tespit edilmesi için geliģtirilen bir araç [5]'te verilmiģtir. Söz konusu araç ile parametre / değiģken / metot ekleme / kaldırma; bir değiģkenin / metodun gizlenmesi / açılması / isim değiģikliği; gizlemek / açmak / yeniden adlandırma; özniteliğin / metodun / sınıfın yerinin değiģtirilmesi; süper sınıf / arayüz / sınıf bilgisinin çıkartılması gibi deği- Ģim türleri tespit edilebilmektedir. Kaynak kodu ile birlikte test kodunun değiģiminin eģgüdümü, bir projenin sürümleri için kod kapsama oranları ve test / kaynak kodlarının boyutları incelenerek tespit edilmiģtir [6]. Levenshtein mesafesi algoritması ile bilgi çekme teknikleri (Vektör Uzayı Modeli) birleģtirerek CVS depolarındaki kaynak kodları analiz edilmiģ, kod satırı düzeyinde değiģiklikleri tespit etme yöntemi tanımlanmıģtır [7]. Kodlama ve tasarım arasındaki uyumluluk kontrolleri ile ilgili olarak literatürde geçen eserler arasında yer alan Yazılım Yansıma Modeli [8] tekniği ile projenin bir iģ ürününün (örneğin, tasarım modeli), bir baģka iģ ürünü (örneğin, kaynak kodları) ile uyumlu ya da uyumsuz olduğu noktaları özetleyerek yazılım mühendislerine yardımcı olmayı hedeflemektedir.

Kullanım durumları ile kaynak kodları arasındaki izlenebilirlik iliģkilerinin otomatik olarak kurulabilmesine ya da hatalı olarak kurulmuģ izlenebilirlik iliģkilerinin tespit edilmesine yönelik olarak bir çözüm sunmak üzere geliģtirilen LeanArt aracı, geliģtirici tarafından örnek olarak kurulan izlenebilirlik iliģkilerinden derlenen bilgilerle diğer izlenebilirlik iliģkilerini tahmin etmeye çalıģır [9]. LeanArt otomatik öğrenme yöntemi olan Çok Stratejili Öğrenme YaklaĢımı (Multistrategy Learning Approach) ile geliģtirilmiģ olup kullanım durumu adları ile kod elemanları isimleri arasında birebir uyum olmasa da izlenebilirlik iliģkilerini tespit edebilmeyi hedeflemektedir. Nesne-yönelimli tasarımın ilgili kaynak kodu ile uyumunu kontrol etmek için Düzenleme Mesafesi nin hesaplanması ve maksimum eģleģme algoritmasından faydalanan bir yöntem [10] de sunulmuģtur. Bu yöntemde C++ kaynak kodlarından mevcut tasarım çıkartılır ve gerçek tasarım ile karģılaģtırılarak tutarsızlıklar bulunur. Önerilen yöntemin çıktısı, her eģleģen sınıf için benzerlik ölçütleri ve eģleģmeyen sınıflar kümesi Ģeklinde sunulmaktadır. UML modellerinin yapısal farklılaģmalarını tespit etmeye yönelik olarak önerilen UMLDiff algoritması baz alınarak nesne yönelimli yazılım sistemlerinin değiģimini analiz eden bir yöntemde [11] ise tasarım değiģimlerinin analizi, kaynak kodunun ardıģık olarak bir dizi anlık durumunu girdi alarak gerçekleģtirilir. 3 Kod-Tasarım Uyumluluğu Analizi Yaklaşımı Bu çalıģmada, artırımlı yinelemeli yaģam döngüsü kullanılan ve toplamda 5 farklı sürüm yayınlanan bir projede ilk (v1.0) ve son sürümünden (v4.1) elde edilen veriler analiz edilmiģtir. Artırımlı yinelemeli yaģam döngüsünün her bir yinelemesinde sisteme yeni özellikler eklenir ve mevcut özellikler kullanıcı geri bildirimleri doğrultusunda iyileģtirilir. Her yineleme analiz, tasarım, kodlama ve sistem testleri aģamalarından oluģur ve projenin iģ ürünleri her yinelemede bu aģamalarında sonunda dayanaklandırılır. Bu çalıģmada, tasarım aģaması sonunda dayanaklandırılan tasarım modelinden elde edilen veriler ile ve sistem testlerinin sonunda dayanaklandırılan kaynak kodundan elde edilen veriler kullanılmıģtır. Söz konusu veriler Enterprise Architect aracı ile UML 2.1 notasyonu kullanılarak oluģturulmuģ tasarım modeli ve Java programlama dili kullanılarak geliģtirilmiģ kaynak kodlardan elde edilmiģtir. Veriler elde edilirken, öncelikle tasarım modelinden sınıf tanımlarını içeren kod Enterprise Architect aracı kullanılarak üretilmiģ, tasarımdan üretilen kodda ve gerçekte geliģtirilen kodda yer alan sınıf tanımları, bu çalıģma kapsamında geliģtirilen bir metin ayrıģtırıcı kullanılarak çıkartılmıģtır. Bu makale kapsamında tasarım ve kod arasında uyum incelenirken, tasarımda sadece statik özelliklerin modellendiği sınıf tanımları ve kalıtım (inheritance) ve gerçekleģtirim (implementation) iliģkileri dikkate alınmıģtır. Bu bağlamda yazarlar, dinamik özelliklerin modellendiği sıralama (sequence) ve aktivite diyagramları gibi tanımların yanı sıra birlik (association) ve birleģtirme (composition) iliģkilerinin de incelenmesinin çalıģmada sunulan yaklaģımı zenginleģtireceğini ve sonuçları daha iyileģtireceğini

değerlendirmekle birlikte söz konusu incelemeleri ileriki aģamalarda yapılacak çalıģmalara bırakmıģlardır. Tasarım ve sistem testleri dayanaklarından çıkartılan sınıf tanımlarını içeren ham veri iģlenerek, sınıf tanımları aģağıdaki öznitelikleri içerecek Ģekilde yapısal bir duruma getirilmiģtir: Adı (String) - Sınıfın adı EriĢimTürü (Sayısal) public / private / protected sınıf SınıfMı (Sayısal) - class veya interface olduğu SoyutMu (Sayısal) - soyut bir sınıf / arayüzü olup olmadığı FinalMi (Sayısal) - final bir sınıf / arayüzü olup olmadığı Extends (0.. n) (String) - Sınıf tarafından extend edilen sınıflar Implements (0.. n) (String) - Sınıf tarafından implement edilen sınıflar Kodda yer alan bir sınıf tanımı ile tasarımda yer alan bir sınıf tanımının tam olarak eģleģme karģılaģtırması, yukarıda listelenen özniteliklerin tümü karģılaģtırılarak yapılmakta ve yalnızca tüm öznitelikler aynı ise kod ve tasarım sınıfları uyumlu olarak kabul edilmektedir. Özniteliklerden herhangi birisi kod ve tasarımda aynı değilse, kod ve tasarım sınıfları uyumsuz kabul edilmiģtir. Veri analizleri RapidMiner (Text Processing özelliği ile) kullanılarak yapılmıģtır. 4 Uyumluluk Analizi Sonuçları ve Tartışma Veri analizinde ilk adım olarak, tasarım ve kodda yer alan sınıfların sayıları tespit edilmiģ, bu sınıflardan sınıf isimleri birebir eģleģen sınıf sayıları belirlenmiģtir. Kod ve tasarım arasında uyumu irdelemek amacı ile tam olarak eģleģen sınıf tanımları bulunmuģtur. 3. Bölüm de de açıklandığı gibi, tam olarak eģleģme analizi yukarıda belirtilen özniteliklerin tamamında eģleģme kontrolü yapar; yani sınıflar tüm özniteliklerinin eģleģmesi durumunda uyumlu, aksi takdirde uyumsuz olarak sayılır. Tablo 1. Sürümlere Göre Tasarım ve Kod Ölçümleri Proje Ölçümleri Sürüm v1.0 Sürüm v4.1 Tasarımdaki Sınıf Sayısı 337 1144 Koddaki Sınıf Sayısı 2344 3118 Tasarım ve Kodda Aynı Ġsimli Sınıfların Sayısı 108 845 Tasarım ve Kodda Aynı Ġsimli Sınıfların Yüzdesi 53 74 Tasarım ve Kodda Tam Olarak EĢleĢen Sınıfların Sayısı 95 336 Tasarım ve Kodda Tam Olarak EĢleĢen Sınıfların Yüzdesi 4 11 Tasarım Kalıpları ile Uyumlu Kod Sınıflarının Sayısı 771 2279 Tasarım Kalıpları ile Uyumlu Kod Sınıflarının Yüzdesi 33 73 Tablo 1 de yer alan ölçüm sonuçları incelendiğinde, sınıf isimleri açısından tasarım ve kodlama arasında ~% 50 - % 75 arası birebir uyum söz konusudur. Tasarım ve kod

arasında tam olarak (tüm öznitelikleri birebir) eģleģen sınıf tanımlarına bakıldığında ise çok daha düģük seviyelerde eģleģme olduğu görülmektedir (~% 4 - % 11). Bu sonuçlar ile ilgili proje ekibi ile yapılan görüģmeler üzerine, tasarımda birbirini tekrarlayan durumlar için tek bir örnek kalıba yer verildiği, bu tasarım kalıbına karģılık kodda pek çok sınıf bulunabildiği anlaģılmıģtır (örneğin, tüm XXXView sınıfları IProjectView sınıfını implement etmelidir kalıbı tasarımda bir kez belirtilir ancak bu kalıp ile uyumlu olarak kodda 75+ XXXView sınıfı mevcuttur). Bu tespitin ardından, bahsi geçen tasarım kalıplarını temsil etmek üzere düzenli ifadeler (örneğin, sınıf adı *View Ģeklinde geçiyorsa bu sınıf tanımının devamında implements IProjectView ifadesi de geçmelidir kuralını ayrıģtıran kurallar) tanımlanarak tasarım kalıbı ile örtüģen sınıf tanımları tespit edilmiģtir. Bu düzenli ifadeler, öncelikle tara- Ģım tanımında kontrol edilmiģ, tasarımda bu kurala uygun bir sınıf tanımı varsa kodda kurala uyan tüm sınıflar tasarım ile uyumlu sayılmıģtır. Söz konusu iyileģtirmenin ardından tasarım ve kod sınıfları arasındaki eģleģme oranları öenmli ölçüde artmıģtır (% 33 - % 73). Tablo 1'de verilen sonuçların da özetlediği gibi kod ve tasarım arasındaki uyum düzeyleri proje ilerledikçe yükselmektedir. Bu sonuçlar arkasındaki nedenlerinden biri, iģ kuralı kontrolü, uyarı ve hata mesajı sınıfları gibi birbirine çok benzer ancak son derece basit tanımı olan sınıflar kodda mevcut olmakla birlikte tasarımda mevcut değildir (ilk sürümdeki sınıfların yaklaģık olarak % 40 ı bu tür sınıflardır). Diğer bir neden de bir sınıfın tasarımdaki tanımına ilave olarak bir baģka sınıfı da extend etmesi gibi durumlarda uyumun yok sayılması, sadece tam uyuma odaklanılması ve kısmi uyumun herhangi bir Ģekilde sayılmamasıdır. 5 Sonuçlar ve Gelecek Çalışmalar Bu makalede, tasarım ve kod arasındaki uyumluluğu belirlemek için yazılım depolarında yer alan tasarım modeli ve kaynak kodlarının eģleģme analizi için bir yaklaģım sunulmuģtur. Sınıf tanımları arasındaki tam eģleme ve sonrasında düzenli ifadeler kullanılarak tasarım kalıpları ile kod arasında eģleģme durumları incelenmiģtir. Tasarım kalıplarının dikkate alındığı durumda tasarım ve kod arasındaki uyum düzeylerinin oldukça iyileģtiği görülmüģtür. Daha sonraki aģamalarda yapılacak çalıģmalarda tam uyuma ek olarak kısmi uyumun da dikkate alınmasına yer verilebilir. Düzenli ifadeler tanımlayarak tasarım kalıplarına uyumu incelemek yerine bu kalıpların veri madenciliği / metin madenciliği teknikleri ile tespit edilmesi de çalıģmanın önemli bir açılımı olacaktır. Ayrıca, tasarım modeli ve kaynak kodların eģleģme analizlerinde sıralama (sequence) ve aktivite diyagramları gibi dinamik modelin yanı sıra birlik (association) ve birleģtirme (composition) iliģkilerinin de incelenmesi çalıģma sonuçlarının doğruluğunu artıracaktır. Kaynaklar 1. Parnas D.L.: "Software aging," 16th Int. Conf. on Software Engineering, Soronto, Italy (1994) 279-287

2. Martin R. C.: Agile software development: principles, patterns and practices, Prentice Hall, (2003) 3. Gamma E., Helm R., Johnson R., Vlissides J.: Design patterns: elements of reusable objectoriented software, Addison Wesley (1995) 4. Chatzigeorgiou A., Manakos A.: Investigating the evolution of bad smells in object-oriented code, 7th International Conference on the Quality of Information and Communications Technology (2010) 5. Gerlec C., Krajnc A., Heričko M., Božnik J.: Mining source code changes from software repositories, 7th Central and Eastern European Software Engineering Conference in Russia (2011) 6. Zaidman A., Rompaey B. van, Demeyer S., van, Deursen A.: Mining Software Repositories to Study Co-Evolution of Production & Test Code, 1st International Conference on Software Testing, Verification, and Validation (2008) 7. Canfora G., Cerulo L., Di Penta M.: Identifying Changed Source Code Lines from Version Repositories, 4th International Workshop on Mining Software Repositories (2007) 8.Murphy G. C., Notkin D., Sullivan K. J.: Software Reflexion Models: Bridging the Gap between Design and Implementation, IEEE Transactions on Software Engineering, Cilt No 27, 364-380 (2001) 9. Grechanik M., McKinley K., Perry D.: Recovering And Using Use-Case-Diagram-To- Source-Code Traceability Links, 6th Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering (2007) 10.Antoniol G., Potrich A., Tonella P., Fiutem R.: Evolving object oriented design to improve code traceability, 7th International Workshop on Program Comprehension (1999) 11.Xing Z., Stroulia E.: Analyzing the Evolutionary History of the Logical Design of Object- Oriented Software, IEEE Journal on Software Engineering (2005) 850-868