Veritabanlarının Tersine Mühendisliği ile Web Servislerinin Otomasyonu
Web service automation by database reverse engineering
Yazar: MEHMET RAŞİD GENCOSMANOĞLU
Danışman: DR. YUNUS EMRE SELÇUK
Yıldız Teknik Üniversitesi / Fen Bilimleri Enstitüsü / Bilgisayar Mühendisliği Ana Bilim Dalı / Bilgisayar Mühendisliği Bilim Dalı
Derece: Yüksek Lisans, 2019
Konu: Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrol = Computer Engineering and Computer Science and Control
Dizin: Bilgisayar yazılımları = Computer softwares ; Nesneye dayalı yazılım = Object oriented software ; Sistem otomasyonu = System automation

Özet:
Günümüzde birçok şirketin veritabanında bulunan verilerini REST tabanlı web servisleri aracılığıyla üçüncü şahıs firmaların kullanımına açması oldukça yaygın bir yaklaşımdır. REST(Representational State Transfer), istemci ile sunucu arasında hızlı ve kolay iletişimi sağlayan HTTP tabanlı bir web servis mimarisidir. Bu sebeple birçok IOT ve mobil uygulamada bu mimari tercih edilmektedir. Veritabanları için RESTful servislerin hızlı bir şekilde geliştirilmesini sağlayan birçok yazılım
kütüphanesi mevcut olsa da verinin yapısında meydana gelen bir değişim geliştirilen web servisini geçersiz kılabileceği gibi yeni bir geliştirme eforuna neden olacaktır. Bununla birlikte farklı geliştiriciler tarafından geliştirilen birbirine benzeyen servislerin olması (Örn : CRUD: Create, Read, Delete, Update işlemleri) bir standarda uyulmasını zor hale getirmektedir. Yazılım otomasyonu perspektifinden bakıldığında bir veritabanının REST tabanlı web servislerine dönüştürülmesi
otomatize edilmesi gereken bir süreçtir. Bu sayede diğer otomasyon uygulamalarında olduğu gibi birim iş için gereken efor azalabileceği gibi ortaya çıkan ürünün kalitesinin de artma potansiyeli olacaktır. Veritabanlarından web servisleri üreten önceki çalışmalar ve araçlar otomasyonu belli bir seviyeye kadar sağlasa da bu çalışmaların çoğu halihazırda varolan bir veritabanı için çözüm
üretmemektedir. Ayrıca önceki çalışmalarda veritabanında meydana gelen değişimlere duyarlı bir yapı bulunmadığından yeni geliştirme eforu gerekebilmektedir. Tez çalışmasında önceki çalışmaların eksik ve iyileştirilebilir yönlerini de ele alarak kendi yaklaşımımızla web servislerini otomatize bir şekilde üretmeyi hedefledik. Bu bağlamda tersine mühendislik ve kod üretimi yöntemleri
ile veritabanından REST uyumlu web servislerini otomatize bir şekilde üreten, değişimlere duyarlı APIGEN isimli yeni bir araç geliştirdik.

Abstract:
Nowadays, it is a common approach for companies to expose their data that exist in a database through RESTful APIs for variety of clients. REST (Representational State Transfer) is an HTTP-based web service architecture that enables quick and easy communication between client and server. For this reason, REST has started to take a place as a preferred approach in IoT and mobile applications. Although there are many libraries that provide rapid development of RESTful web services with various programming languages, any subsequent modification to the data source requires a new development effort and rewriting the boilerplate code. Any changes that occur
in a relational database table is a good. Moreover, the fact that there are similar services (i.e. CRUD: Create-Read-Update-Delete operations) written by different developers makes it difficult to comply with the standards and best practices. In terms of software automation, exposing a database to the world with RESTful architecture is a process that needs to be automated. Also every automated process has the potential to reduce effort and improve quality. While existing tools provide automation to a certain extent, most of these tools don't have a solution for an entire
database schema and extra development effort is required when a customization is needed. Besides, in previous studies, there is a possibility for services generated by automation process to lose their validity when any modification happens to database. In this paper, while discussing the improvable aspects of previous works, we will be presenting our approach with a tool named APIGEN (API Generator) converting a database into RESTful services in an automated manner.