Kaynak kod benzerliklerinin tespitine yönelik bir paralel web uygulamasının geliştirilmesi
Development of a parallel web application for source code similarity detection
Yazar: UĞUR KILIÇ
Danışman: YRD. DOÇ. DR. DENİZ DAL
Atatürk Üniversitesi / Fen Bilimleri Enstitüsü / Bilgisayar Mühendisliği Ana Bilim Dalı
Derece: Yüksek Lisans, 2015
Konu: Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrol = Computer Engineering and Computer Science and Control
Dizin: Paralel bilgisayarlar = Parallel computers

Özet:
Kaynak kodları arasındaki benzerliklerin tespiti birçok alanda önem arz etmektedir. Endüstriyel uygulamalarda, örneğin geniş ölçekli yazılım projelerinde, kaynak kodlarının aynen veya kısmi değişiklikler yapılarak yeniden kullanılmasına sıklıkla rastlanılmaktadır. Bu ise yazılımın okunabilirliğini azaltmakta ve bakımını zorlaştırmaktadır. Oysaki bu durumun önüne yazılımın yeniden yapılandırılması aşamasında kaynak kod benzerlik tespit yazılımları kullanılarak geçilebilir. Bu sayede kaynak kod dosyaları arasındaki kopyalanmış kod blokları tespit edilebilir, bu kod blokları sadeleştirilebilir ve tek bir fonksiyon altında toplanabilir. Eğitim alanındaki, özellikle programlama derslerine kayıtlı öğrenciler arasında yaygın olarak rastlanan kaynak kod paylaşımı da tespiti önemli bir başka sorundur. Şüphesiz ki bu durum öğretim kalitesini düşürmekte ve değerlendirme aşamasında haksızlıklara neden olmaktadır. Yukarıdaki paragrafta bahsedilen hususların motive ettiği bu tez kapsamında C/C++ ile yazılan kaynak kodlarının benzerliklerini tespit edecek paralel bir web uygulaması geliştirilmiştir. Bu amaçla Greedy String Tiling algoritması C# programlama dili ve çoklu iş parçacıkları sayesinde paralelleştirilmiştir. Söz konusu uygulama hem ulusal hem de uluslarası eğitim kurumları tarafından basit bir üyelik işlemi sonrasında ücretsiz kullanılmak üzere paylaşıma açılmıştır.

Abstract:
Source code similarity detection is very important in many fields. In industrial applications, for example in large-scale software projects, reusing a complete or a partially changed source code over and over is encountered frequently. This reduces the readability and makes the maintenance more difficult. However, this situation can be prevented and be bypassed at the restructuring stage using a source code similarity detection software. In this way, the copied code blocks inside a source code can be determined and simplified. Moreover, they can be grouped under a single functional unit. In education, it is also an another important issue to identify the source code sharing especially commonly encountered among the students enrolled in programming courses. Certainly, this reduces the quality of teaching and leads to injustice in the evaluation. Motivated by the facts mentioned in the preceding paragraph, a parallel web application is developed for detecting the source code similarities written in C/C++ within the scope of this thesis. For this purpose, Greedy String Tiling Algorithm is parallelized using C# programming language with multi-threading. The application is shared with both national and international educational institutions and can be used free of charge after a simple registration process.