Çok Katmanlı Veritabanı Uygulamaları çin Esnek Bir Vb.Net Kodu Üreticisi: Code Generator



Benzer belgeler
WEB SERVS TABANLI GELTRLEN MOBL UYGULAMALAR: ODTÜ MOBL ÖRENC LER BLG SSTEM (MOBS)

Femsoft, kolay kullanımı ve genileyebilen esnek yapısı ile ilerinizi çok kolaylatıracak!

Arş.Gör.Muhammet Çağrı Gencer Bilgisayar Mühendisliği KTO Karatay Üniversitesi 2015

Femsoft, kolay kullanımı ve genileyebilen esnek yapısı ile ilerinizi çok kolaylatıracak!

SAKLI YORDAM (Stored Procedure) Sibel Somyürek

LINQ Language Integrated Query Dille Bütünleştirilmiş Sorgu Bir Veri Tabanı Tablosundan Veri Gösterme

BLG4134 Görsel Programlama III. Öğr. Grv. Aybike ŞİMŞEK

-- işareti tek satırlık açıklamalarda kullanılır. Açıklama olarak yazılan satırın önüne konulması yeterlidir.

2-Veritabanı Yönetim Sistemleri/ Temel Kavramlar

AOSB 2017 EĞİTİM PROGRAMI

8 Oracle da tablo yapısı içinde otomatik artan kolon yoktur. (identity kolon

BİL-142 Bilgisayar Programlama II

TESİ. indeks. söylenebilir?? bir ilişkidir d) Hiçbiri. veya somutlaştırılmış. düzeyidir? sağlayabilir? sına. d) Hepsi. olabilir? c) Verilerin d) Hepsi

Veritabanında Saklı Yordamlar: Bir Veritabanı Tasarımı ve Web Uygulaması

MOBİL UYGULAMA GELİŞTİRME

Command Nesnelerini Kullanarak Tablolarda Değişiklik Yapmak:

Veritabanı İşlemleri

Sorgudan elde edilen değerin değişkenlere aktarılmasını sağlar. Sorgudan tek satır dönmesi gerekir. Çok satır dönerse hata verir.

Data Programming SQL Language. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

Üst Düzey Programlama

VERİ TABANI ve YÖNETİMİ

İngilizce'de Relational Database Management System (RDBMS) olarak ifade edilir.

DENİZ HARP OKULU BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

=A1+A2-A3, =A1*A2/A3,

PostgreSQL ve PL/pgSQL

Oracle da kullanılan veri tipleri:

DAO İLE SQL KOMUTLARI. Sql komutlarını artık veri tabanında kullanmaktan başka çaremiz yok arkadaşlar. Şimdi bu sql derslerimize başlayalım.

Her Select Case bloğu, mutlaka End Select ile bitmek zorundadır.

Sorgudan elde edilen değerin değişkenlere aktarılmasını sağlar. Sorgudan tek satır dönmesi gerekir, aksi durumda hata olur.

KULLANICI TANIMLI FONKSİYONLAR

Tavsiye Edilen Önhazırlık Temel SQL Server 2000 bilgisi edinmek.

Basit Mimari, Katmanlı Mimari ve doğrudan çalıştırma olarak üçe ayrılır.

EL PARMAKLARINA DEERLER VEREREK KOLAY YOLDAN ÇARPMA ÖRETM YÖNTEMYLE ZHN ENGELL ÖRENCLERE ÇARPIM TABLOSU ÖRETM UYGULAMASI

Fonksiyonlar istenilen deger tipinde dönüs yapabilir. INT, VARCHAR deger döndürebileceğiniz gibi bir tablo da döndürebilirsiniz.

BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

DSİ kapsamında oluşturulan dağınık durumdaki verilerinin düzenlenmesi, yeniden tasarlanarak tek bir coğrafi veri tabanı ortamında toplanması,

VERİ TABANI ve YÖNETİMİ

ORACLE DA KÜRSÖRLER. Gerekli sistem değişkenleri

Kullanıcı tanımlı fonksiyonlar SQL2000 ile gelen özelliklerden biridir. Fonksiyonlar tek bir değer veya tablo döndürmek için kullanılır.

ASP.NET CLASS KULLANARAK VERİTABANI İŞLEMLERİ

Diziler İndisli Değişkenler

SQL e Giriş. Uzm. Murat YAZICI

Veri Tabanı SQL Server ve Management Studio kurulum linkleri:

C#.Net & Linq (Language Integrated Query)

PostgreSQL ve PL/pgSQL

VERİTABANI & VERİTABANI YÖNETİMİ

Swing ve JDBC ile Database Erişimi

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

Veritabanı sistemlerinde veri bütünlüğünü sağlayabilmek için CONSTRAINTS olarak adlandırılan bazı zorlayıcı ifadeler kullanılabilir.

Veritabanında Saklı Yordamlar: Bir Veritabanı Tasarımı ve Web Uygulaması

Vakum teknolojisi. Sistem kılavuzu

cofaso ile farkı yaşayın Şubat

Veritabanına Uygulanması

BAYİLERİMİZE ÖZEL. 13 Ağustos İlgili Modül/ler : Genel. İlgili Versiyon/lar : ETA:SQL, ETA:V.8-SQL

SQL PROGRAMLAMA. Bir batch, bir arada bulunan bir dizi SQL deyimidir. Batch ayıracı GO deyimidir.

«BM364» Veritabanı Uygulamaları

C Sharp /Veri tabanı işlemleri

Veritabanı Tasarımı. Kullanıcı Erişimini Kontrol Etme

Demetleme Yönteminin Y 3-Katmanlı Mimari Yapı ile Gerçeklenmesi. eklenmesi. KalacakYer.com

Turquaz. Açık kodlu muhasebe yazılımı Turquaz Proje Grubu

BYS. T.C. Ulatırma Bakanlıı Biliim Belge Yönetim Sistemi Çözümü

Yukarıdaki fonksiyonun anlamı: Bulunulan hücreye, B2 hücresinden B17 hücresine kadar olan hücreleri toplam ve yaz.

#$% &'#(# Konular. Bits of Information. Binary Özellikler Superimposed Coding Signature Formation Deerlendirme

YAPISAL SORGULAMA DİLİ (SQL)

BDB Enformatik Servisleri Mayıs 2006

KULLANICI TANIMLI FONKSİYONLAR (Devam)

Öğr. Gör. Cansu AYVAZ GÜVEN VERİTABANI-II. Değişken Tanımlama Ve Akış Kontrol Deyimleri

VERİ TABANI UYGULAMALARI

Nebim Winner - İş Zekası Halojen Kurumsal Sürüm

VeriTabanı Uygulamaları

İLERİ VERİTABANI SİSTEMLERİ SUAT ÜSTKAN

ÜNİTE NESNE TABANLI PROGRAMLAMA I. Uzm. Orhan ÇELİKER VERİTABANI SORGULARI İÇİNDEKİLER HEDEFLER

SQL TRIGGERS (Tetikleyiciler)

JetSMS Direct Çözümü

OTOBÜS İŞLETMESİ OTOMASYONU. Otobüs işletmesi Otomasyonu hazırlanırken takip edilen Yazılım Geliştirme Süreçleri yukarıda gösterilmiştir.

Tavsiye Edilen Önhazırlık Temel veritabanı kavramlar hakkında bilgi sahibi olmak. Hedefler Temel veritabanı güvenlik işlemlerini gerçekleştirebilmek

Laboratuvar 2 Tek Kayıt Fonksiyonları

Durum Yönetimi. Olan sayfalar ekleyelim. BasitSayac.aspx

Bileen Yönelimli Yazılım Gelitirme çin Süreç Modeli

5 SQL- Yapısal Sorgulama Dili. Veritabanı 1

tarafından hazırlanan bu iyeri yönetmelii tüm irket çalıanları için geçerlidir.

SQL veri tabalarına erişmek ve onları kullanmak için geliştirilmiş bir lisandır.

Facade (Cephe) Tasarım Şablonu KurumsalJava.com

SQL Komutları (2) Uzm. Murat YAZICI

STORED PROCEDURE LER (Saklı Yordamlar)

Veritabanı Yönetim Sistemleri (PL/pgSQL - SQL Procedural Language)

TRIGGER. Trigger lar, tablo üzerinde tanımlanabilen ve bu tablo üzerinde bir işlem gerçekleştiğinde tetiklenen programlama ögeleridir.

Microsoft SQL Server 2008 Oracle Mysql (Ücretsiz) (Uygulamalarımızda bunu kullanacağız) Access

VERİTABANI. SQL (Structured Query Language)

VB de Veri Türleri 1

Bölüm 1: Veritabanı Yönetim Sistemlerine Giriş

VERİ TABANI YÖNETİM SİSTEMLERİ II. 5. SQL PROGRAMLAMADA CURSOR (İMLEÇ) ve TRIGGERS (TETİKLEMELER)

CENG 302 Yazılım Mühendisliği Yazılım Mimarisi - Devam. Alper UĞUR

GÜZ YY. - MKT103 - GÖRSEL PROGRAMLAMA DERSİ - ARA SINAVI

Kepware Veritabanı Ürünleri. Teknolojiye Genel Bir Bakış

Veritabanı. Ders 2 VERİTABANI

Kullanım kılavuzunuz ESET MOBILE ANTIVIRUS

ASP.NET Web Uygulamalarında Güvenlik

Cahit GÜNGÖR Hacettepe Üniversitesi Bilişim Enstitüsü. Sorumluluk Zinciri. Kod Üretme (Code Generation)

Vbnet Vbne access bağ ba lant lan ı t s ı ı s, ekleme, güncelleme,,silme

Transkript:

Çok Katmanlı Veritabanı Uygulamaları çin Esnek Bir Vb.Net Kodu Üreticisi: Code Generator 1 Mustafa YILDIZ, 2 Orhan KARAHASAN, 3 Selahattin KURU 1 Teknopazar A.., ITU Ayazaa Kampüsü, ARI Teknokent No:9, 34469 Maslak, stanbul 2,3 Iık Üniversitesi, Enformatik Uygulama ve Aratırma Merkezi Büyükdere Caddesi, 34398 Maslak, stanbul 1 mustafa.yildiz@is.net.tr, 2 orhan@isikun.edu.tr, 3 kuru@isikun.edu.tr Özet Birçok yazılım mühendislii uzmanının kaynak kodun okunabilirliini, yönetilebilirliini ve tekrar kullanılabilirliini belirgin biçimde artırdıı savı ile savunduu, destekledii ve önerdii çok katmanlı yazılım mimarisi yakın zamanda Microsoft firması tarafından da biçimsel bir mimari önerisi ile desteklenmitir. Bu mimariye göre yazılım, kullanıcı arayüzleri seviyesinden itibaren veritabanı seviyesine kadar çok sayıda mantıksal katmana ayrılmı ve saklanmı yordam (stored procedure) kullanımı tevik edilmitir. Bu çalımada, önerilen bu çok katmanlı mimari dorultusunda veritabanı katmanı, veri eriim katmanı, i varlıkları katmanı ve i mantıı katmanı olmak üzere dört farklı katmana ait kaynak kodlarını büyük ölçüde otomatik olarak üreten bir kod üreticisi gelitirilmitir. Bu bildiride önerilen mimarinin detaylarına, gelitirilen kod üreticisinin özelliklerine ve kod üreticisinin verimini ortaya koyan bazı ölçüm sonuçlarına deinilmektedir. Abstract Many software engineering experts supports and recommends the use of n-tier architecture due to its significant contributions to the readability, maintainability and reusability of the source code. Recently Microsoft declared a formal architecture description on the use of n- tier architecture clearly dividing the code into logical layers from presentation tier to data access tier and encouraging the use of stored procedures. In this work a code generator tool was developed which produces code for database layer, data access layer, business entities layer and business logic layer. This paper reports the details of the tool and results of some measurements regarding the efficiency of the tool. 1. Giri Bu bildiri çok katmanlı mimariye uygun olarak gelitirilen veritabanı uygulamalarının veritabanı katmanı, veri eriim katmanı, i varlıkları katmanı ve i mantıı katmanına ait kaynak kodları belirli bir oranda otomatik olarak üreten esnek bir kod üreticisini tanıtmaktadır.[1] Gelitirilen kod üreticisi araç, Microsoft firmasının önerdii çok katmanlı mimari standartlarına uygun olarak çalımaktadır ve orta büyüklükte bir veritabanı uygulaması yeniden mühendislii projesinde denenmitir. Proje tek katmanlı olarak gelitirilmi olan internet tabanlı bir finans uygulamasının çok katmanlı olarak yeniden yazılmasını içermektedir. Bildiride Microsoft tarafından önerilen çok katmanlı mimari anlatılacak ardından kod üretici aracın ilevleri kod ürettii katmanlar üzerinden açıklanacaktır. Aracın verimi çeitli katmanlardaki toplam kod uzunluuna karın otomatik olarak üretilen kod miktarları verileri ile desteklenmitir. Bu Çalıma Iık Üniversitesi, Enformatik Uygulama ve Aratırma Merkezi nde yapılmı olup Mustafa Yıldız çalıma sırasında bu merkeze balı olarak çalımaktaydı.

veriled detaylı ekilde sonuç bölümünde verilmitir. Gelitirilmi olan araç internet üzerinden eriilebilir durumdadır ve açık kaynak kodlu olarak daıtılması planlanmaktadır. 2. Microsoft Tarafından Önerilen Çok Katmanlı Mimari Bu bölümde anlatılacak olan mimari Microsoft un önerdii ve örnek uygulamalarla açıkladıı çok katmanlı mimari olup, bu mimarinin esasları ve faydaları üzerinde durulacaktır.[2] Microsoft un önerdii uygulama mimarisinde yandaki ekilde de görülecei üzere yedi farklı bileen yer almaktadır. Bunlar sırasıyla aaıda verilmitir. Sunum Katmanı Bileenleri: Hemen hemen tüm yazılım ürünleri kullanıcılara bazı bilgileri vermek, bazı bilgileri almak üzere arayüzler salamak durumundadırlar. Örnein bir e-ticaret sisteminde, müteriler ürünleri görebilmekte, deiik filtrelere göre arama yapabilmekte yada seçtii ürünlerden sipari oluturup müteri temsilcilerine gönderebilmektedirler. Sunum katmanı bileenleri genellikle web sayfaları, windows formları eklinde olmakta ve kullanıcıya bazı bilgiler vermekte, yada doruluunu kontrol ettikleri bilgileri dier katmanlara ulatırmaktadırlar. Kullanıcı lem Bileenleri: Çou kez kullanıcıların takip edecekleri ilem sırası önceden belirlenmitir. Örnein, e- ticaret uygulamasında ürünler belirli kategorilere ayrılmı ve belli bir ürüne eriebilmek için bir kategori seçilmesi ardından ürünün seçilmesi gerekiyor olabilir. Benzer ekilde müteri bir satınalma yapmak istediinde takip etmesi gereken ilemler bellidir. Öncelikle ürün bilgileri girilir ardından ödeme bilgileri ve en son da adres bilgileri eklinde olabilir. Farklı kullanıcı ilem bileenleri kullanarak kullanıcı etkileimlerinin senkronizasyonuna yardımcı olunabilir. Bu sayade ilem akı ve durum yönetimi daha kolay olacak ve ilem bileenleri birden fazla kullanıcı arayüzü tarafından kullanılabilecektir. Süreçleri Bileenleri: Kullanıcı ilem bileenleri tarafından bilgi toplandıktan sonra, veri i süreçlerinde kullanılmaktadır. Bu katman bileenleri, belirli bir düzene göre takip edilmesi gereken ilemleri yapmak için kullanılırlar. Örnein, e-ticaret sisteminde gerekli bilgiler alındıktan sonra system toplam sipari miktarını hesaplamak, kredi kartı bilgilerini dorulamak, kredi kartından para çekme ilemlerini gerçekletirmek, ve ürünlerin gönderilmesini planlamak durumundadır. Tüm bu ilerin takibi süreçleri Bileenleri tarafından yapılır. Bileenleri: Bir iin birden fazla basamakta yapılmasına bakılmaksızın, uygulamalar i kurallarını uygulayan ve i görevlerini yerine getiren bileenlere ihtiyaç duyarlar. Örnein e-ticaret uygulamasında, bir sipariin deerini hesaplayan bir bileene ihtiyaç vardır. Veri Eriim Katmanı: Çou uygulamalar ve servisler i süreçlerinde belirli bir yerde duran veriye erimek ihtiyacındadırlar. Örnein, bir e-ticaret uygulamasında, ürün bilgilerine erimek ve bu bilgileri müterilere iletmek durumundadırlar. Veri eriim katmanının ayrı olması bakım ve

configürasyon kolaylıı getirmektedir. Ayrıca, veritabanı yönetim sisteminin deimesi bu sayede dier katmanlarda deiiklik olmadan kolaylıkla veri eriim katmanının deitirilmesi yoluyla uygulama kolaylıkla deiiklie adapte edilebilmektedir. Varlıkları Bileenleri: Çou uygulamalar bileenler arasında veri iletiimi ihtiyacı hissederler. Örnein, e-ticaret uygulamasında ürün listesi veri eriim bileenlerinden sunum katmanı bileenlerine gönderilmektedir. Genellikle gerçek dünyadan bazı varlıkları temsil etmektedirler (örnein sipari, ürün gibi). Uygulamalarda kullanılan i varlıkları genellikle veri yapıları; verikümeleri(dataset), veri okuyucuları (datareaders) eklinde olabilecei gibi gerçek hayatta varlıkları temsil eden sınıflar da olabilmektedir. Güvenlik, letiim ve Operasyonel Yönetim Bileenleri: Uygulamalar genellikle istisna kotarım yönetimi(exception handling management) bileenleri, kullanıcı yetkilendirmesi ve dier servisler yada uygulamalarla iletiim bileenleri kullanabilmektedir. Bunlara örnek olarak gelitirilmi bir ifreleme sisteminin uygulamada kullanılması gösterilebilir. Örnek uygulama gelitirilirken bu katmanlardan bazılarına ihtiyaç duyulmamıtır. süreçleri bileeni bunlardan birisidir. Uygulamada takip edilmesi gereken, belirli bir düzende bir çok ilemin ardarda geldii bir hal sözkonusu olmadıı için kod uygulama bu katmana ait kod içermemektedir. 3. Kod Üreticisi Kod üreticisi veritabanı katmanı, veri eriim katmanı, i varlıkları katmanı ve i mantıı katmanı olmak üzere dört katman için kaynak kodlarının büyük bölümünü üretmektedir. Bu bölümde, kod üreticisinin ilevleri kodunu ürettii katmanların herbiri için ayrı ayrı anlatılacaktır. Veritabanı Katmanı Önceki bölümde de deinildii üzere, veritabanı katmanı, veritabanı tablolarındaki veriyi çeitli ekillerde sorgulayan, yeni kayıtlar ekleyen, varolan kayıtları güncelleyen ve kayıtları silen saklanmı yordamları bünyesinde barındırır. Bu saklanmı yordamların büyük bölümü belirli bir ablona uyan ve kendisi ile ilgili tablonun sütunlarına ve bu sütunların tipine göre deien bir yapı arzeder. INSERT, UPDATE, DELETE ve SELECT ilevlerini gerçekletiren yordamlara ait ablonlar u ekildedir.!"#$!"%&!"#$!"%' "((#(#"!! )!"#$%&!"#$%'* +, )!"#$%&!"#$%'* (("((#(#-!"#$!"%&!"#$!"%' (#!"#$-!"#$%&!"#$-!"#$%'./ "0!"#$-(#

,, (#,1./ "0!"#$-(#,, (#,21./ "0!"#$-(# Yukarıdaki ablonların da açık bir biçimde ortaya koyduu üzere veritabanı katmanında bulunan saklanmı yordamlar ilgili oldukları tabloların sütun isimleri ve sütun tiplerine balı olarak farklılık göstermekle beraber ortak bir ablonu paylamaları münasebetiyle otomatik olarak üretilmeye elverilidirler. Tabloların sütun isimleri ve sütun tipleri Microsoft SQL Server 2000 veritabanı yönetim sisteminde bulunan sistem tabloları sorgulanarak elde edilebilir. Bu bilgi dier birçok veritabanı yönetim sisteminde de eriilebilir bir ekilde saklanmaktadır. Veri Eriim Katmanı Veri eriim katmanı, veritabanı katmanında bulunan saklanmı yordamları kullanan sınıflar ile bu sınıflara ait yordamlardan oluur. Veritabanı katmanına benzer ekilde bu sınıf ve yordamlar ilikili oldukları tabloların sütun isimleri ve tiplerine balı olarak farklılık gösterse de ortak bir yapı ve ablona sahiptir. Bu ortak ablon yine INSERT, DELETE, UPDATE ve SELECT yordamları için aaıda ifade edilmitir. Bir i varlıı nesnesi kabul eden ve tabloya ekleyen yordamdır. Sonuç olarak ekledii kaydın anahtar deerini döndürür Public Function Insert<<tablo adı>>(byval Obj<<tablo adı>> As <<tablo adı>>info) As Integer <<Veritabanı Eriim Komutları>> mycommand.commandtext = "sproc_insert_<<tablo adı>>" mycommand.parameters.add("@<<sütun adı>>",<<sütun adı>>).direction = ParameterDirection.Input [mycommand.parameters.add("@<<sütun adı>>",<<sütun adı>>).direction = ParameterDirection.Input] mycommand.parameters.add("@insertedrecordid", 1).Direction = ParameterDirection.Output mycommand.executenonquery() Return CInt(mycommand.Parameters("@InsertedRecordID").Value) Bir i varlıı nesnesi kabul eden ve tablodaki kaydı güncelleye yordamdır. Sonuç olarak doru/yanlı deeri döndürür Public Function Update<<tablo adı>>(byval Obj<<tablo adı>> As <<tablo adı>>info) As Boolean <<Veritabanı Eriim Komutları>> mycommand.commandtext = "sproc_update_<<tablo adı>>" mycommand.parameters.add("@<<sütun adı>>",<<sütun adı>>).direction = ParameterDirection.Input

[mycommand.parameters.add("@<<sütun adı>>",<<sütun adı>>).direction = ParameterDirection.Input] mycommand.executenonquery() Bir i varlıı nesnesi kabul eden ve tablodaki kaydı silen yordamdır. Sonuç olarak doru/yanlı deeri döndürür Public Function Delete<<tablo adı>>(byval Obj<<tablo adı>> As <<tablo adı>>info) As Boolean <<Veritabanı Eriim Komutları>> mycommand.commandtext = "sproc_delete_<<tablo adı>>" mycommand.parameters.add("@<<anahtar sütun>>",<<anahtar sütun>>).direction = ParameterDirection.Input mycommand.executenonquery() Tablonun anahtar sütunu için tamsayı bir deer kabul eden ve tablodaki bu kaydın deerlerini bir i nesnesine yükleyen yordamdır. Sonuç olarak yüklü i nesnesini döndürür Public Function Select<<tablo adı>>(byval RecordID As Integer) As Obj<<tablo adı>> <<Veritabanı Eriim Komutları>> mycommand.commandtext = "sproc_select_<<tablo adı>>" mycommand.parameters.add("@<<anahtar sütun>>",<<anahtar sütun>>).direction = ParameterDirection.Input myreader = mycommand.executenonquery() If myreader.read Then If not isdbnull(myreader("<<sütun adı>>")) Then Obj<<tablo adı>>.<<sütun adı>> = myreader("<<sütun adı>>") Else Obj<<tablo adı>>.<<sütun adı>> = 0 End If End If Veritabanı katmanına benzer ekilde veri eriim katmanının kaynak kodları belirli bir ablona uygun olmaları nedeniyle otomatik olarak üretilmeye elverilidir. Bu katmanda üretilen kodlar bir alt katman olan veritabanı katmanının da bu araç ile otomatik olarak üretildiini, bir programcı tarafından üretildi ise de en azından üreticinin standartlarına uygun olarak üretildiini kati olarak kabul eder. Varlıkları Katmanı Önceki bölümde de detaylı olarak anlatıldıı üzere bu katmanda i varlıklarının herbiri için bir sınıf bulunmaktadır. varlıkları veritabanı tasarımında veritabanı tabloları olarak büyük ölçüde ifade edildiinden bu katmandaki sınıfların büyük kısmı veritabanı tablolarıyla birebir ilikilidir ve bu tür sınıfların tümü ortak bir ablona sahiptir. varlıı sınıflarının ortak ablonu aaıda ifade edilmitir. Public Class <<tablo adı>>info #Region "class variables" Private _<<sütun adı>> As ConvertType(<<sütun tipi>>) [Private _<<sütun adı>> As ConvertType(<<sütun tipi>>)] #End Region #Region "properties"

Public Property <<sütun adı>>() As ConvertType(<<sütun tipi>>) Get Return _<<sütun adı>> End Get Set(ByVal Value As ConvertType(<<sütun tipi>>)) _<<sütun adı>> = Value End Set End Property #End Region End Class Dikkat edilirse bu sınıf, veritabanı tablosunda bulunan sütunların herbiri için özel (private) bir sınıf deikeni ve bu deikene eriim imkanı veren özellik yordamlarını (properties) içerir. Veritabanı sütunlarının tipleri (int, varchar, char, datetime, vb.) ile VB kodlarındaki deiken tiplerinin isimleri birebir aynı olmadıından ConvertType isimli bir tip ismi eletirme ilevi kullanılmıtır. Mantıı Katmanı Bu katmanda i mantıını ortaya koyan çok çeitli sınıflar bulunmaktadır. Bu sınıfların çeitlilii bu katmanda gelitirilecek olan sınıfların belirli oranda programcılar tarafından kodlanmasını gerektirse de her sınıfta bulunması gereken ve bir alt katman olan veri eriim katmanındaki yordamlar ile iletien temel yordamlar yine ortak bir ablonu paylaır ve kod üreticisi yardımıyla otomatik olarak üretilebilir. Bu yordamlar yine temel SELECT, INSERT, UPDATE ve DELETE ilevlerine ait yordamlardır. Public Shared Function Update<<tablo ismi>>(byval Obj<<tablo ismi>> As <<tablo ismi>>info) As Boolean Dim Obj<<tablo ismi>>dal As New <<tablo ismi>>dal Update<<tablo ismi>> = Obj<<tablo ismi>>dal.update<<tablo ismi>>(obj<<tablo ismi>>) Obj<<tablo ismi>>dal = Nothing Public Shared Function Delete<<tablo ismi>>(byval Obj<<tablo ismi>> As <<tablo ismi>>info) As Boolean Dim Obj<<tablo ismi>>dal As New <<tablo ismi>>dal Delete<<tablo ismi>> = Obj<<tablo ismi>>dal.delete<<tablo ismi>>(obj<<tablo ismi>>) Obj<<tablo ismi>>dal = Nothing Public Shared Function Select<<tablo ismi>>(byval RecordID As Integer) As Obj<<tablo ismi>>info Dim Obj<<tablo ismi>>dal As New <<tablo ismi>>dal Select<<tablo ismi>> = Obj<<tablo ismi>>dal.select<<tablo ismi>>(recordid) Obj<<tablo ismi>>dal = Nothing Public Shared Function Insert<<tablo ismi>>(byval Obj<<tablo ismi>> As <<tablo ismi>>info) As Integer Dim Obj<<tablo ismi>>dal As New <<tablo ismi>>dal Insert<<tablo ismi>> = Obj<<tablo ismi>>dal.insert<<tablo ismi>>(obj<<tablo ismi>>) Obj<<tablo ismi>>dal = Nothing

ablonlarda da açıkça görüldüü gibi bu katmandaki sınıflarda bulunması gereken yordamlardan dördünün kodu otomatik olarak üretilmeye elverilidir. lave levler Kod üreticisinin önemli özelliklerinden biri de aracın oldukça esnek olması ve kullanıcıların birtakım ayarlamaları aracın arayüzlerinden kolaylıkla yapabilmesidir. Kullanıcı, üretilecek kodun temsili ile ilgili ayarlamalar yapabilmektedir. 4. Sonuç Saklanmı yordamlara veya dier katmanlardaki sınıf ve yordamlara ilikin üretilmi olan kodun veritabanına veya bilgisayarın diskine yazılması sırasında izlenecek olan kurallar kullanıcı tarafından belirlenebilmektedir. Kullanıcı balanılacak veritabanına ilikin eriim bilgilerini de yine aracın arayüzlerinden belirleyebilmektedir. Araç, u an için yalnızca Microsoft SQL Server 2000 veritabanı yönetim sistemi ile çalımaktadır. Bu çalımada çok katmanlı mimariye uygun olarak gelitirilen veritabanı uygulamaları için kullanılabilecek esnek bir VB.NET kodu üreticisi olan Code Generator aracı gelitirilmitir. Gelitirilen araç bir finans uygulamasının yeniden mühendisliini içeren bir projede denenmitir. Yeniden mühendislii yapılan finans uygulaması, bir firmanın Hazine ilemlerini gerçekletirdii internet tabanlı ve orta büyüklükte bir veritabanı uygulamasıdır. Yeniden mühendislik tek katmanlı olarak VB.NET ile gelitirilmi olan bu uygulamanın çok katmanlı mimari kullanılarak yeniden gelitirilmesini içermektedir. Uygulamanın gereksinimleri halihazırda gelitirilmi olan yazılımın kullanıcı arayüzleri ile tamamıyla ortaya konmutur. Proje kapsamında gelitirilen uygulamaya ait kaynak kodu uzunlukları aaıdaki tabloda katmanlara ayrılmı olarak verilmitir. 3 34,5)"$*!"!3"$ 67 89"$:$3"$ ;< 89+$=$3"$ ;< +(93"$ >< +("$3"$ ;?, ;;6 Aaıdaki tabloda ise her bir katmandaki kodun kod üreticisi ile otomatik olarak üretilen miktarı ile bu miktarı toplam kod uzunluuna oranı verilmitir. 3 83@8, 3 @8, 3, 4,5)"$* 3!"!3"$ A BA 89"$:$3"$ C B66 89+$=$3"$ ;< B;AA +(93"$ >? B<C +("$3"$ ;6 BD6, C; B7?

Yukarıdaki göstergelerde de görüldüü gibi kod üreticisi gelitirilmi olan toplam kodun 61 bin satırını yani yarısından fazlasını otomatik olarak üretmitir. 61 bin satır kodun kabaca 8 adam/hafta lık bir programcı emeine denk geldii düünülürse aracın kullanılmasının projedeki verime katkısı daha net bir biçimde ortaya çıkmaktadır. Kod üreticisine http://irdc.isikun.edu.tr/code_generator adresinden eriilebilmektedir. Aracın açık kaynak kodlu olarak paylaılması da düünelmektedir. 5. Referanslar [1] Code Generator, http://irdc.isikun.edu.tr/code_generator [2] Application Architecture for.net: Designing Applications and Services, http:// msdn.microsoft.com/library/en-us/dnbda/html/distapp.asp