Veri tabanından raporlama yapmayı ve ERP geliştirmeyi kolaylaştıracak ölçeklenebilir programlama dili
Scalable programming language that will ease database reporting and ERP development
Yazar: AYTEKİN AKKUŞ
Danışman: DR. ÖĞR. ÜYESİ ABDULLAH ERDAL TÜMER
Necmettin Erbakan Üniversitesi / Fen Bilimleri Enstitüsü / Bilgisayar Mühendisliği Ana Bilim Dalı
Derece: Yüksek Lisans, 2020
Konu: Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrol = Computer Engineering and Computer Science and Control
Dizin: ERP =   ; Programlama dilleri = Programming languages ; Raporlama = Reporting ; SQL = Structured query language

Özet:
Son 20 yıl içerisinde üretim teknolojilerin hızla yaygınlaşması endüstriyel üretim ekosisteminde çalışan işletmelerin gündelik hayatındaki rekabet seviyesini ürün dışı unsurlara taşıdı. Özellikle teknolojinin desteği sayesinde birbirine çok benzer ürün üretim kabiliyetine sahip olan işletmelerin rekabette öne çıkabilmesi için üretim süreçlerinde mükemmellik ve müşteriyi etkin yönetme ihtiyacı doğdu. Bu ise işletmelerin günlük dünyasında hızla ürettikleri verilerin saklanması, yorumlanması ve raporlanmasını elzem duruma getirdi. Rekabette öne çıkmak isteyen işletmeler söz konusunu raporlamaları hızlı ve kullanıcı dostu ara yüzlerle almak istemektedir. Bu amaçla piyasada çeşitli ürünler bulunmaktadır. Bu ürünlerden en önemlileri Microsoft şirketinin LINQ to SQL teknolojisi ile Java temelli JOOQ kütüphaneleridir. Bu ürünler veri tabanı ile çalışmayı kolaylaştıracak bütünleşik SQL kullanımına olanak vermektedir.
Yukarıda dile getirilen bu ürünler, veri tabanı ile bütünleşmiş derleme yapamamakta, raporlama özgü yapıları (search-option, ekran ara yüzleri için varyant tanımlayabilme) desteklememektedir. Aynı zamanda bu ürünler SQL ifadelerini çalışma zamanında derleme metodu ile çalıştırmakta, çalışma zamanı olarak da Java ve C# dillerini kullanmaktadır.
Bu tez çalışmasında yukarıda bahsedilen ürünlerin eksiklikleri dikkate alınarak, Veri tabanından raporlama yapmayı ve ERP geliştirmeyi kolaylaştıracak ölçeklenebilir bir programlama dili geliştirilmiştir. Veri tabanı raporlama dilini geliştirmek için C ve C++ dilleri kullanılmıştır. 
Veri tabanı raporlama dili, çalışma zamanında C dili kullanmakta aynı zamanda SQL ifadeleri derlenmiş olarak çalıştırılmaktadır bu da alternatiflerine göre daha hızlı çalışmasına olanak sağlamaktadır.      Veri tabanı raporlama dili, veri tabanı ile bütünleşik derleme yapabilmekte, böylece veri tabanında değişiklik yapılması durumunda harcanan süre oldukça azalmaktadır. 
Veri tabanı raporlama dili, derleyici, çalışma zamanı, hata ayıklayıcı ve geliştirme ortamı olmak üzere dört ana bileşenden oluşmaktadır. 
Derleyici, dile ait özellikler kullanılarak oluşturulan kaynak dosyayı alarak çalışma zamanının kullanılabileceği formata dönüştürür. Çalışma zamanı, veri tipi bilgilerinin program içinde saklanması ve bu verilerin genel fonksiyonlar tarafından kullanılması ile derleyici tarafından oluşturulan dosyayı çalıştırarak kullanıcıya istenilen hizmetin verilmesini sağlar.
Veri tabanı raporlama dilini geliştirmek amacıyla derleyici de model tanıma yöntemi kullanılmıştır. Model Tanıma yöntemi sayesinde kaynak dosyalardaki veri ayrıştırılarak derleyicideki ilgili fonksiyonların çağrılması sağlanmaktadır. 
Veri tabanı raporlama dilini geliştirmek amacıyla çalışma zamanında da genel fonksiyonlar kullanılmıştır. Genel fonksiyonlar, birçok farklı durum için çalışabilen ve C++ dilinde bulunan şablon (template) programlamanın daha esnek ve gelişmiş bir versiyonudur. Genel fonksiyonlar sayesinde derleyici tarafından oluşturabilecek her türlü kodun çalışması sağlanmaktadır.
Yukarıda dile getirilen bu ürünler, veri tabanı ile bütünleşmiş derleme yapamamakta, raporlama özgü yapıları (search-option, ekran ara yüzleri için varyant tanımlayabilme) desteklememektedir. Aynı zamanda bu ürünler SQL ifadelerini çalışma zamanında derleme metodu ile çalıştırmakta, çalışma zamanı olarak da Java ve C# dillerini kullanmaktadır.
Bu tez çalışmasında yukarıda bahsedilen ürünlerin eksiklikleri dikkate alınarak, Veri tabanından raporlama yapmayı ve ERP geliştirmeyi kolaylaştıracak ölçeklenebilir bir programlama dili geliştirilmiştir. Veri tabanı raporlama dilini geliştirmek için C ve C++ dilleri kullanılmıştır. 
Veri tabanı raporlama dili, çalışma zamanında C dili kullanmakta aynı zamanda SQL ifadeleri derlenmiş olarak çalıştırılmaktadır bu da alternatiflerine göre daha hızlı çalışmasına olanak sağlamaktadır.      Veri tabanı raporlama dili, veri tabanı ile bütünleşik derleme yapabilmekte, böylece veri tabanında değişiklik yapılması durumunda harcanan süre oldukça azalmaktadır. 
Veri tabanı raporlama dili, derleyici, çalışma zamanı, hata ayıklayıcı ve geliştirme ortamı olmak üzere dört ana bileşenden oluşmaktadır. 
Derleyici, dile ait özellikler kullanılarak oluşturulan kaynak dosyayı alarak çalışma zamanının kullanılabileceği formata dönüştürür. Çalışma zamanı, veri tipi bilgilerinin program içinde saklanması ve bu verilerin genel fonksiyonlar tarafından kullanılması ile derleyici tarafından oluşturulan dosyayı çalıştırarak kullanıcıya istenilen hizmetin verilmesini sağlar. Hata Ayıklayıcı, derleyici ile oluşturulan kodun adım adım test edilmesini sağlamaktadır böylece kodda oluşabilecek hatalar test edilerek ilgili düzeltmeler yapılabilmektedir. Geliştirme ortamı, kullanıcının proje dosyalarını yükleyerek, projeleri derlemesini, çalıştırmasını ve projedeki hataları ayıklayabilmesini sağlayan ara yüze verilen isimdir.
Veri tabanı raporlama dilini geliştirmek amacıyla derleyici de model tanıma yöntemi kullanılmıştır. Model Tanıma yöntemi sayesinde kaynak dosyalardaki veri ayrıştırılarak derleyicideki ilgili fonksiyonların çağrılması sağlanmaktadır. 
Veri tabanı raporlama dilini geliştirmek amacıyla çalışma zamanında da genel fonksiyonlar kullanılmıştır. Genel fonksiyonlar, birçok farklı durum için çalışabilen ve C++ dilinde bulunan şablon (template) programlamanın daha esnek ve gelişmiş bir versiyonudur. Genel fonksiyonlar sayesinde derleyici tarafından oluşturabilecek her türlü kodun çalışması sağlanmaktadır.

Abstract:
In the last two decades years, the rapid spread of production technologies has brought the level of competition of the enterprises working in the industrial production ecosystem to the non-product factors. Especially, thanks to the support of technology, the necessity to excel in the production processes and the effective management of the customers become so important to stand out in the competition for enterprises with very similar product production capabilities. This made it necessary to store, interpret and report the data quickly that enterprises produced in their businesses. Businesses that tries to stand out in the competition want to receive reports with fast and user-friendly interfaces. For this purpose there are various products in the market. The most important of these products are Microsoft's LINQ to SQL technology and Java based JOOQ libraries. These products allow the use of an integrated SQL that makes it easier to work with the database.
These products, which are mentioned above, does not have database-integrated compilation and do not support reporting-specific structures (search-option, variant for screen interfaces). At the same time, these products run SQL statements with runtime compilation and use Java and C # as their runtime.
In this thesis, considering the deficiencies of the above mentioned products, a scalable programming language has been developed to facilitate reporting from the database and ERP development. C and C ++ languages were used to develop the database reporting language.
The database reporting language uses C language at run time and SQL statements are run as compiled, which allows it to run faster than its alternatives. The database reporting language uses database-integrated compilation so that the time spent during database changes decreases considerably.
The database reporting language consists of four main components: namely compiler, runtime, debugger and development environment.
The compiler converts the source file created by using language properties to the format in which the runtime can use of. The runtime provides the user the desired service by running the file created by the compiler which stores the data type information in the program. The runtime uses generic functions to run the files created by compiler. 
In order to develop the database reporting language, model recognition method was used in the compiler By means of Model Recognition method, data in the source files can be parsed and corresponding functions of a specific statement in the compiler are called.
Generic functions were used at runtime of the database reporting language. General functions are a more flexible and advanced version of template programming in C++ that can work in many different situations. By means of generic functions, any code that is generated by the compiler can be run by the runtime.
These products, which are mentioned above, does not have database-integrated compilation and do not support reporting-specific structures (search-option, variant for screen interfaces). At the same time, these products run SQL statements with runtime compilation and use Java and C # as their runtime.
In this thesis, considering the deficiencies of the above mentioned products, a scalable programming language has been developed to facilitate reporting from the database and ERP development. C and C ++ languages were used to develop the database reporting language.
The database reporting language uses C language at run time and SQL statements are run as compiled, which allows it to run faster than its alternatives. The database reporting language uses database-integrated compilation so that the time spent during database changes decreases considerably.
The database reporting language consists of four main components: namely compiler, runtime, debugger and development environment.
The compiler converts the source file created by using language properties to the format in which the runtime can use of. The runtime provides the user the desired service by running the file created by the compiler which stores the data type information in the program. The runtime uses generic functions to run the files created by compiler. The debugger enables the compiler-generated code to be tested step-by-step so that any errors that may occur in the code can be tested and the corresponding corrections can be made. The development environment is the name given to the interface that allows the user to compile, run, and debug the project by uploading project files.
In order to develop the database reporting language, model recognition method was used in the compiler By means of Model Recognition method, data in the source files can be parsed and corresponding functions of a specific statement in the compiler are called.
Generic functions were used at runtime of the database reporting language. General functions are a more flexible and advanced version of template programming in C++ that can work in many different situations. By means of generic functions, any code that is generated by the compiler can be run by the runtime.