top of page

DSL - Domain Specific Language

  • Writer: Sevdanur GENC
    Sevdanur GENC
  • Mar 26, 2012
  • 3 min read

Merhabalar yeni bir yazi serisine daha baslarken, bu seri icerisinde Domain Specific Language (DSL) hakkinda nelerden bahsedecegimize kisaca deginmek istiyorum. 1. Bolum'de ; Domain-Specific Languages tanimi, nasil kullanildigi ve bunlarla ilgili uygulamalar, Dahili ve Harici DSL uygulamalari, Bu ic ve dis DSL'ler arasinda ki secimlerin nasil yapilmasi gerektigi, Alternatif modeller, kod uretimi ve dil kullanimlari hakkinda bilgiler verecegim. 2. Bolum'de ; Semantic Modeller, Sembol tablolari, Degiskenler, Builder'lar ve macro'lardan bahsedecegiz. 3. Bolum'de ; Harici DSL'leri detayli incelerken 4. Bolum'de ; Dahili DSL'leri detayli incelemis olacagiz. 5. Bolum'de ; Alternatif Modelleri incelerken, 6. Bolum'de ; Kod Uretimi'ni inceliyor olacagiz. Simdi dilerseniz Domain-Specific Language konusuna giris yapalim...

Domain Specific Language (DSL) ;

Domain Specific Language yani DSL, aslinda var olan bir calisma alaninin sorunlarini bir nevi standart bazi kelimeleri kullanarak cozumler olusturmaya yarayan bir dildir. Bu standarlarin teknolojiler uzerinde kullanilmasi, tabiki her zaman tam sonuclar vermeyecektir, yeterli olmayacaktir. Bu calismalara ek olarak mutlaka yol gosterici de olsa yuksek seviyeli modellere ihtiyac duyacagiz. Mesela her sorun bir modelle ifade edilebilir, bu modeller kullanilarak cozumlere ulasilabilir ve sonuc olarak calismalari hangi platforma yonlendirilecegine karar verilebilir. Kisacasi yazilim mimarisi domain mimarisi ile benzer yapilardadir da diyebilir. Dikkat etmemiz gereken nokta ise; bu mimari icerisinde tum sisteme ait modeller, dsl tanimlamalar, farkli platformlar ve aralarinda donusumleri cok daha fazla goz onune alinmaktadir.

Model Donusumleri ;

Hazirlanan modeller arasinda donusumleri gerceklestirebiliriz. Bunun icin, donusumleri gerceklestirecek model ve modeller arasi donusum isini yapacak ve yeterli bilgi tabanina sahip modellere de ihtiyac duyulacaktir. Bu donusumler tek yonlu veya cift yonlu olabilir. Tek yonlu model donusumlerinde, yapilan eylemler sonucunda ilk kaynak modele geri donus olmayacaktir ve ancak cift yonlu model donusumler kullanilarak her iki yonde de yanit verecektir. Bazen bu cift yonlu yapilarda yardimci olmayabilir durumda olacaktir, o zaman da modelin izin verdigi kapasite degisken ifadeleri kullanabilecegiz. Bu degisken isimleri, normalde calistigimiz ortamda ki ifadelerden tamamen farkli olacak ve donusum islemleri tamamlandiginda yani hedef modele ulasildiginda ciddi bir sekilde anlam kazanabilecek ifadeler olacaktir. Ve tum bunlari iyi bir sekilde planladigimizda Reverse Engineering yontemi ile geri donus yapabilecegiz.

Modelden Kod Uretmek ;

Kullandigimiz modelleri daha yuksek seviyelerde kullanacagimiz icin artik isin icerisine de yazilimi katmamiz biraz daha kolay olacaktir. Haliyle kodlarimizi olusturabilmemiz icin de modellerimize ihtiyac duyacagiz. Tabiki de normal yazilim olustururken modellere illa ki ihtiyac yoktur, fakat elimizde modeller varsa bunlardan kodlari olusturmamiz daha stratejik bir sekilde calismamizi saglayacaktir. Arastirmami yaparken soyle bir ornek karsima cikti, paylasmak isterim... "Modelden kod donusumu yapilirken, kodlarimiiz ozellestirmemiz %5 ve %15 arasinda olmasi gerekir." Aslinda bu ifade ile, yazilim uzerine teknolojilerin gelismesi daha hizli bir sekilde ilerledigi icin, makro ifadelerin veya derleyicilerin daha kolay anlasilabilir olmasi dusunulememis. Haliyle bu yeni dilin cevrim sonrasinda ki guvenirliligide dusuncelerde hep muallakta kalmis. Yillar gectikce de derleyicilerin guclendirilmesi sayesinde uretilen kodlarin sorunsuz bir sekilde calismaya baslamis, ayni zamanda guvenirlilik hakkinda ki akillarinda kalan sorulara kullanilan daha ileri seviye dillerle cevap bulmuslardi. Gunumuzde de belki bu cekinceler gerceklesebilir, o zaman da modellerden kodlarin uretilmesi durumunda; test kodlarinun kullanimina tesvikte edinilebilir. Yani test kodlari ile olusturulan kodlar kontrol altina alindiginda calisma alanlarina gore tasarlanan DSL'lerin kaliteside kontrol edilmis olur.

DSL'lerin Kullanim Alanlari ; 

DSL'leri bir uygulama olarak gelistirebilirsiniz, sablonlari halinde DSL modellerinizi metin dosyalari seklinde olusturup okuyabilirz. DSL'de olusturulan projeleri ayni platformdan kurulu baska bir bilgisayara ekleyip ordanda erisebilirsiniz. Uygulamalarimi Visual Studio ortaminda yapacagim icin, menu komutlari ve kullanici arayuzu ile calismalarimizda yeterli olabilecegini dusunuyorum. Kisacasi bize sunulan Domain-Specific Language Tools'dan faydalanarak modellerimizi olusturabilecegiz.

                Yukarida gordugumuz model, DSL'de kullanacagimiz ve ilerleyen konularda da bahsedecegimiz The State Machine Model hakkinda bir on izlenim alabilmeniz icin ornek gosterebilirim.

                    Yukarida ki gordugumuz temsili goruntu ise Eclipse ortaminda olusturulmus bir DSL modeldir.

                              Ve gordugunuz gibi en son ekran goruntusude Visual Studio'da hazirlanmis bir model'i temsil etmektedir. Ilerleyen makalelerde geriye kalan diger DSL

konulara deginmis olacagiz. Keyifli Calismalar Dilerim...  

Recent Posts

See All
C# Dependency Injection

Dependency Injection (DI) aslinda bir tasarım şablonu olarak bilinmektedir ve genel amacı nesneler arasında bulunan bağımlılıkları azaltarak kullandığı İnterface'ler sayesinde implement edilen içerikl

 
 
 
Windows Azure Nedir?

Windows Azure, hizmet yönetim ortamlarını ve servislerini barındırarak geliştirilmiş bulut teknolojilerinin oluştuğu bir işletim sistemi gibi düşünülebilir. Windows azure, Microsoft veri merkezleri

 
 
 
Navigation - Navigasyon

Kullanıcıların Metro Style uygulamalarında kolay bir şekilde kullanabilmeleri ve sayfalar arası geçişleri daha sezgizel bir şekilde yapabilmeleri için geliştirilmiş bir yöntemdir. Bu özellik sayesinde

 
 
 

Comments


©2035 by Sevdanur Genc. Powered and secured by Wix

bottom of page