1 / 27

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

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

moesha
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

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

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

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

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

  7. FİKRÎ MÜLKİYET AÇISINDAN BİLGİSAYAR PROGRAMI VE KAYNAK KOD • Fikir ve Sanat Eserleri Kanunu • Eser Kavramı • Her fikrî ürün eser değildir fakat her fikir ve sanat eseri birer fikrî ü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.”

  8. 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 eserlerikategorisinde 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.

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

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

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

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

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

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

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

  16. KAYNAK KOD İNTİHALİ Bazı yazılımlarda klon kod bulunma yüzdesi (TAIRAS, 2010).

  17. KAYNAK KOD BENZERLİĞİ VE KLON KOD TESPİT ARAÇLARI • MOSS • JPlag • Sherlock • SIM • Simian • CPD • Duplo • Plaggie

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

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

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

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

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

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

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

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

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

  27. teşekkür ederim… Araş. Gör. Zeki ÖZEN

More Related