Upload
moesha
View
85
Download
0
Embed Size (px)
DESCRIPTION
Kaynak Kod Benzerliği Ve Klon Kod Tespit Araçları. Zeki ÖZEN İstanbul Üniversitesi Enformatik Bölümü Doç. Dr. Sevinç GÜLSEÇEN İstanbul Üniversitesi Fen Fakültesi Matematik Bölümü. 02 Şubat, 2012. Sunum İçeriği. Kaynak kod Kaynak kodun hukuki statüsü Kaynak Kod İntihali Klon kod - PowerPoint PPT Presentation
Citation preview
Zeki ÖZENİstanbul Üniversitesi Enformatik Bölümü
Doç. Dr. Sevinç GÜLSEÇENİstanbul Üniversitesi Fen Fakültesi Matematik Bölümü
Kaynak Kod Benzerliği Ve Klon Kod Tespit Araçları
02 Şubat, 2012
Sunum İçeriği
• Kaynak kod• Kaynak kodun hukuki statüsü• Kaynak Kod İntihali
Klon kod
• Kaynak kod intihalini ve klon kodu tespit eden araçlar
Kaynak Kod Bilgisayar programının programcı tarafından bir
programlama diliyle yazılan formuna kaynak kod denir (Yadav, 2008).
Kaynak kod düz metin şeklinde ve bir programlama diliyle yazılmış ve o dile ait komutlar, ifadeler ve bunların komut setlerini barındıran yazılımın bir biçimidir (LINFO, 2006).
Başka bir çalışmada kaynak kod, bir veya daha fazla programlama diliyle bilgisayarda yazılmış ve makine diliyle alakasız olarak bilgisayara verilen kodlar olarak tanımlanmıştır (Davidson, 2003).
Kaynak Kod
Bir bilgisayar programının bilgisayarda çalıştırılmaya hazır (derlenmeden önceki) durumdan önceki aşamasına kaynak kod, sonraki aşamasına ise amaç kod da denilmektedir (TechTerms).
Programlama dilinin tanımından yola çıkarak
kaynak kodu, programlama dillerinden biriyle ve istenilen amaca uygun olarak o dilin gramer yapısı ve komutları kullanılarak yazılan komutlar bütünü olarak tanımlamak da mümkündür.
FİKRÎ MÜLKİYET AÇISINDAN BİLGİSAYAR PROGRAMI VE KAYNAK KOD
• Türkiye’de Bilgisayar Programlarını Koruyan Kanun
• Türkiye’de bilgisayar programları 5846 sayılı FSEK ile korunma altına alınmıştır. “Bilgisayar programı” kelimesinin FSEK’e girmesi ve bilgisayar programlarının birer eser olduklarının kabulü ülkemizde 07.06.1995 tarihli 4110 sayılı kanun değişikliği ile gerçekleşmiştir.
• Bilgisayar programları ülkemizde patent kanunları ile korunmamaktadır.
FİKRÎ MÜLKİYET AÇISINDAN BİLGİSAYAR PROGRAMI VE KAYNAK KOD
• Fikir ve Sanat Eserleri Kanunu• Eser Kavramı• FSEK ile koruma altına alınacak şeyin bir eser
olması gerekmektedir.
• Fikri hukuk açısından eser “kişinin sadece fikri faaliyet sonucu ortaya koyduğu ve hukukî bakımdan değer ifade eden neticeler” şeklinde tanımlanır.
FİKRÎ MÜLKİYET AÇISINDAN BİLGİSAYAR PROGRAMI VE KAYNAK KOD
• Fikir ve Sanat Eserleri Kanunu• Eser Kavramı• Her fikri ürün eser değildir fakat her fikir ve sanat
eseri birer fikri üründür.
• FSEK’in m. 1-B/ a bendinde eserin tanımı şöyledir:• “Sahibinin hususiyetini taşıyan ve ilim ve edebiyat,
musikî, güzel sanatlar veya sinema eserleri olarak sayılan her nevi fikir ve sanat mahsullerini ifade eder”
• Bu kategorilere ek olarak FSEK m. 8’de • “Bir işlenmenin ve derlemenin sahibi, asıl eser
sahibinin hakları mahfuz kalmak şartıyla onu işleyendir.”
FİKRÎ MÜLKİYET AÇISINDAN BİLGİSAYAR PROGRAMI VE KAYNAK KOD
• Bilgisayar Programlarının Eser Niteliği• Bilgisayar programları, FSEK m. 2/I’de “Herhangi
bir şekilde dil ve yazı ile ifade olunan eserler ve her biçim altında ifade edilen bilgisayar programları ve bir sonraki aşamada program sonucu doğurması koşuluyla bunların hazırlık tasarımları” ifadeleriyle ilim ve edebiyat eserleri kategorisinde eser kapsamına dâhil edilmiştir.
• FSEK, m. 1/B g bendinde bilgisayar programını; “Bilgisayar programı: Bir bilgisayar sisteminin özel bir işlem veya görev yapmasını sağlayacak bir şekilde düzene konulmuş bilgisayar emir dizgesini ve bu emir dizgesinin oluşum ve gelişimini sağlayacak hazırlık çalışmalarını… ifade eder.” ile tanımlamıştır.
FİKRÎ MÜLKİYET AÇISINDAN BİLGİSAYAR PROGRAMI VE KAYNAK KOD
• Bilgisayar Programı Unsurlarının Eser Niteliği• FSEK m. 13/II • “Eser sahibine tanınan hak ve salahiyetler eserin bütününe
ve parçalarına şamildir.” demektedir.
FİKRÎ MÜLKİYET AÇISINDAN BİLGİSAYAR PROGRAMI VE KAYNAK KOD
• Bilgisayar Programı Unsurlarının Eser Niteliği• Kaynak kod
• Kaynak kodlar FSEK m. 2/I’de “her biçim altında ifade edilen bilgisayar programları” ifadeleri ile koruma altındadır.
• TRIPS anlaşması da m. 10/I. bendinde “Kaynak veya nesne kodundaki bilgisayar programları Bern Sözleşmesi (1971) kapsamında edebi eserler olarak korunacaktır.”
• WIPO Telif Hakları Andlaşması’nın m. 4 “Bilgisayar programları, Bern Sözleşmesi’nin 2 nci maddesi anlamında edebiyat eseri olarak korunur. Öngörülen koruma, hangi koşul ya da biçimle ifade edilirse edilsin bilgisayar programlarına uygulanacaktır.” denilerek
KAYNAK KOD İNTİHALİ
• İntihal• İntihal (plagiarism) başkasının bir fikri faaliyet ile ürettiği
edebi bir metnin, bir işin tamamının veya bir kısmının olduğu gibi veya üzerinde sahibine ait hususiyet barındırmayacak miktarda değişikliklerle kendisininmiş gibi sunulması, eser sahibine atıf yapılmadan kullanılması anlamına gelmektedir.
• FSEK ayrıca m. 67’de de intihalden bahsetmektedir:• “… maddelerde sayılan hallerde yanlış veya kifayetsiz
kaynak tasrih edilmiş veyahut hiç kaynak gösterilmemişse ikinci fıkra hükmü uygulanır.”
• İntihal sonucu meydana getirilen ürünler eser olarak korunmazlar (Gökyayla, 2009).
KAYNAK KOD İNTİHALİ
• İntihal sadece akademik çevrede işlenen bir suç değildir. Diğer edebiyat ve güzel sanat dallarında ve sanayinin her alanında intihal vakalarına rastlanmaktadır. Bu intihal türlerinden biri de kaynak kodun intihal edilmesidir.
• Bilgisayar programının kaynak kodu diğer metin türlerinden farklıdır. Kaynak kod edebi metinlere göre daha kurallı bir yapıya sahiptir ve kaynak kod intihalini tespit etmek daha fazla dikkat gerektirir (Konecki ve diğ., 2009).
• Kaynak kod intihali, kaynak kod dosyalarının veya kaynak kod kısımlarının asıl eser sahibinin izni olmaksızın aynen kopyalanarak veya değiştirilerek başka bir yazılım üretmek amacıyla kullanılmasıdır.
KAYNAK KOD İNTİHALİ
• Kaynak kod intihalinin gerçekleşmesine yol açan birçok neden olmakla birlikte en bilinen yöntem kod klonlama olarak da adlandırılan kaynak kodun dosyalar arasında kopyalanmasıdır.
Kod Klonlama• Başka bir kodun bir kısmının veya
tamamının kopyalanması yoluyla meydana gelen koda klon kod (clone code) veya klon denir.
KAYNAK KOD İNTİHALİ
Kaynak Kod Klonlama yöntemleri
•İsim değişikliği (değişken, fonksiyon isimleri vs)•Kod bloklarını tekrar sıralama•Kodu farklı biçimde ifade etme•Kaynak kodu farklı bir programlama diline çevirme•Kaynak koda düzmece kod ekleme/silme•Karma kaynak kod kullanma (Kaynak kodun hem çalıntı kod bölümlerini içermesi hem de çalıntı olmayan bağımsız olarak yazılmış kaynak kodları içermesi durumudur.)
KAYNAK KOD İNTİHALİ
Açık Kaynak Kodlu yazılımlarda kodun kullanımı
•Açık kaynak kod yazılımlarda kodun kullanılmasının serbest olması, o yazılımların istenildiği gibi kullanılacağı anlamına gelmemektedir. Açık kaynak yazılımın lisans şartlarının ihlali intihale veya yazılım telif haklarının çiğnenmesine yol açabilir.
Yazılımlarla
lisans
yayımlanmak
zorundadır
Değiştirilen
kaynak kod
yayımlanmak
zorundadır
Yazılımların
lisans tipi
değiştirilebilir
GPL v2
BSD
KAYNAK KOD İNTİHALİ
Program Adı Satır Sayısı (bin) Klon kod Oranı (%)
Linux kernel 4.365 15
Java Development Kit (JDK)
1.4.2
2.418 8
JDK 1.3.0 570 9
Process-Control System 400 12
JHotDraw 7.0.7 71 19
JavaGenes 0.7.68 45 10
Bazı yazılımlarda klon kod bulunma yüzdesi (TAIRAS, 2010).
KAYNAK KOD BENZERLİĞİ VE KLON KOD TESPİT ARAÇLARI
1. MOSS2. JPlag3. Sherlock4. SIM5. Simian6. CPD7. Duplo8. Plaggie
KAYNAK KOD BENZERLİĞİ VE KLON KOD TESPİT ARAÇLARI
• Yazılım mühendisliğinde kaynak kod karşılaştırma yapılmasının esas amacı kopyalanmış
kod kısımlarını belirlemek ve onları tek bir fonksiyon altında birleştirmektir (Jafar, 2007;
Lozano ve diğ., 2007). Bununla birlikte programı anlama, kaynak kod kalite analizi,
yazılım gelişimi analizi, kod sıkıştırma, virüs algılama ve hata algılama gibi alanlarda da
kaynak kod karşılaştırılması yapılmaktadır (Roy ve diğ., 2009).
• Akademide ise öğrenci ödevlerinde kopya/intihal tespiti, araştırmacıların makalelerinde
kaynak kod intihali tespiti, öğrencilere verilen programlama ödevlerinin kaynak kodlarında
benzerlik araştırması gibi alanlarda
• Hukuksal boyutta ise telif hakkı ihlalinin tespiti, ticarî sır hırsızlığının ve patent ihlalinin
önlenmesi amacıyla
KAYNAK KOD BENZERLİĞİ VE KLON KOD TESPİT ARAÇLARI
• MOSS İlk geliştirilen ve en popüler araçlardan biri 1994 senesinde geliştirilmeye başlanıyor http://theory.stanford.edu/~aiken/moss/ adresinden
indirilebilir Kullanımı ücretsiz fakat üyelik gerektirmekte En fazla dilde karşılaştırma yapan araçlardan biri Karşılaştırma işlemini kendi sunucusunda yapmakta Sonuçları kendi bünyesinde görüntülemekte Kullanım için sitesinden edinilen perl gönderim betiği gerekli Konsoldan parametre alarak kullanılmakta
Karşılaştırma sonuçları html sayfasında görüntülemekte Karşılaştırmaya ilişkin benzerlik oranı vermekte Benzerlik gösteren kısımları listelemekte
KAYNAK KOD BENZERLİĞİ VE KLON KOD TESPİT ARAÇLARI
• JPlag Güvenilir sonuçlar veren araçlardan biri https://www.ipd.uni-karlsruhe.de/JPlag adresinden
indirilebilir Kullanımı ücretsiz fakat üyelik gerektirmekte Karşılaştırma işlemini kendi sunucusunda yapmakta Sonuçları kullanıcının bilgisayarına geri göndermekte Grafik arayüzden kullanılmakta
Karşılaştırma sonuçları html sayfasında görüntülemekte Karşılaştırmaya ilişkin benzerlik oranı vermekte Benzerlik gösteren kısımları listelemekte
KAYNAK KOD BENZERLİĞİ VE KLON KOD TESPİT ARAÇLARI
• Sherlock Açık kaynak https://www.ipd.uni-karlsruhe.de/JPlag adresinden
indirilebilir Konsoldan parametre alarak kullanılmakta
C, C++, Java, Pascal, HTML ve metin dosyaları arasındaki benzerlik oranlarını vermekte
Karşılaştırmaya ilişkin benzerlik oranı vermekte Karşılaştırma sonuçlarını bir dosyaya aktarabilmekte
KAYNAK KOD BENZERLİĞİ VE KLON KOD TESPİT ARAÇLARI
• SIM ftp://ftp.cs.vu.nl/pub/dick/similarity_tester/ adresinden
indirilebilir Konsoldan parametre alarak kullanılmakta
C, Java, Pascal, Modula-2, Lisp, Miranda ve metin dosyaları arasındaki benzerlik oranlarını vermekte
Karşılaştırmaya ilişkin benzerlik oranı vermekte Karşılaştırma sonuçlarını bir dosyaya aktarabilmekte
KAYNAK KOD BENZERLİĞİ VE KLON KOD TESPİT ARAÇLARI
• Simian http://www.harukizaemon.com/simian/get_it_now.html
adresinden indirilebilir Kişisel kullanım ücretsiz Konsoldan parametre alarak kullanılmakta
Java, C, Objective-C, C++, C#, JavaScript (ECMAScript), COBOL, ABAP, Ruby, Lisp, SQL, Visual Basic, Groovy kaynak kod dosyaları arasındaki benzerlik oranlarını vermekte
Karşılaştırmaya ilişkin benzerlik oranı vermekte Karşılaştırma sonuçlarını bir dosyaya aktarabilmekte
KAYNAK KOD BENZERLİĞİ VE KLON KOD TESPİT ARAÇLARI
• CPD http://pmd.sourceforge.net/cpd.jnlp adresinden
çalıştırılabilir Açık kaynak kod Grafik Arayüzden kullanılmakta
C, C++, C#, Java, JSP, Ruby, Fortran, PHP ve seçilen uzantıya sahip dosyalar arasındaki benzerlik oranlarını vermekte
Karşılaştırmaya ilişkin benzerlik oranı vermekte Eclipse, NetBeans, JDeveloper, JEdit, BlueJ ve IntelliJ IDEA
gibi birçok IDE’ye eklenti olarak da kurulabilmekte
KAYNAK KOD BENZERLİĞİ VE KLON KOD TESPİT ARAÇLARI
• Duplo http://pmd.sourceforge.net/cpd.jnlp adresinden
çalıştırılabilir Açık kaynak kod Konsoldan kullanılmakta
C, C++, C#, Java ve VB.NET kaynak kod dosyaları arasındaki karşılaştırma yapabilmekte
Karşılaştırmaya ilişkin benzerlik oranı vermiyor. Sadece kod blokları arasındaki kopyalanmış satırları gösteriyor.
KAYNAK KOD BENZERLİĞİ VE KLON KOD TESPİT ARAÇLARI
• Plaggie http://www.cs.hut.fi/Software/Plaggie/download.html
adresinden indirilebilir.
http://plaggie2.googlecode.com/svn/trunk/ fork edilmiş başka bir plaggie
Konsoldan veya Eclipse üzerinden kullanılmakta
Sadece Java kaynak kod dosyaları arasındaki benzerlik oranlarını vermekte
Karşılaştırma sonuçlarını html sayfası olarak sunmakta.
teşekkür ederim…
Araş. Gör. Zeki ÖZEN