27
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

Zeki ÖZEN İstanbul Üniversitesi Enformatik Bölümü

  • 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

Page 1: Zeki ÖZEN İstanbul Üniversitesi Enformatik Bölümü

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

Page 2: Zeki ÖZEN İstanbul Üniversitesi Enformatik Bölümü

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

Page 3: Zeki ÖZEN İstanbul Üniversitesi Enformatik Bölümü

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

Page 4: Zeki ÖZEN İstanbul Üniversitesi Enformatik Bölümü

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.

Page 5: Zeki ÖZEN İstanbul Üniversitesi Enformatik Bölümü

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.

Page 6: Zeki ÖZEN İstanbul Üniversitesi Enformatik Bölümü

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.

Page 7: Zeki ÖZEN İstanbul Üniversitesi Enformatik Bölümü

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

Page 8: Zeki ÖZEN İstanbul Üniversitesi Enformatik Bölümü

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.

Page 9: Zeki ÖZEN İstanbul Üniversitesi Enformatik Bölümü

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.

Page 10: Zeki ÖZEN İstanbul Üniversitesi Enformatik Bölümü

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

Page 11: Zeki ÖZEN İstanbul Üniversitesi Enformatik Bölümü

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

Page 12: Zeki ÖZEN İstanbul Üniversitesi Enformatik Bölümü

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.

Page 13: Zeki ÖZEN İstanbul Üniversitesi Enformatik Bölümü

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.

 

Page 14: Zeki ÖZEN İstanbul Üniversitesi Enformatik Bölümü

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

Page 15: Zeki ÖZEN İstanbul Üniversitesi Enformatik Bölümü

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

Page 16: Zeki ÖZEN İstanbul Üniversitesi Enformatik Bölümü

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

Page 17: Zeki ÖZEN İstanbul Üniversitesi Enformatik Bölümü

KAYNAK KOD BENZERLİĞİ VE KLON KOD TESPİT ARAÇLARI

1. MOSS2. JPlag3. Sherlock4. SIM5. Simian6. CPD7. Duplo8. Plaggie

Page 18: Zeki ÖZEN İstanbul Üniversitesi Enformatik Bölümü

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

Page 19: Zeki ÖZEN İstanbul Üniversitesi Enformatik Bölümü

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

Page 20: Zeki ÖZEN İstanbul Üniversitesi Enformatik Bölümü

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

Page 21: Zeki ÖZEN İstanbul Üniversitesi Enformatik Bölümü

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

Page 22: Zeki ÖZEN İstanbul Üniversitesi Enformatik Bölümü

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

Page 23: Zeki ÖZEN İstanbul Üniversitesi Enformatik Bölümü

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

Page 24: Zeki ÖZEN İstanbul Üniversitesi Enformatik Bölümü

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

Page 25: Zeki ÖZEN İstanbul Üniversitesi Enformatik Bölümü

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.

Page 26: Zeki ÖZEN İstanbul Üniversitesi Enformatik Bölümü

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.

Page 27: Zeki ÖZEN İstanbul Üniversitesi Enformatik Bölümü

teşekkür ederim…

Araş. Gör. Zeki ÖZEN