Model güdümlü yazılım geliştirme teknikleri, son yıllarda yazılım geliştirme süreçlerine kattığı soyutlama ve hız sayesinde adından söz ettiren önemli konulardan biri haline gelmiştir. Yazılım ihtiyaçlarını belirlemek ve ona özgü doğru çözümler üretmek ile platforma uygun kod geliştirmek arasında köprü olma özelliğini taşıyan MDD yöntemleri sayesinde kod yazmak artık farklı bir boyut kazanacak...
Model Nedir?
Model, bir sistemin temel davranışlarının detaylardan arındırılarak anlaşılabilir bir şekilde ifade edilmesidir. Her sistem birtakım alt bileşenlerden, işlevlerden ve durumlardan oluşmaktadır. Sistem içerisindeki bu yapıların birbirleri olan ilişkileri, karmaşık işlevleri sistemin tümünün görünümünü zorlaştırmaktadır. Sistemin başka sistemlerle olan ilişkilerini anlayabilmek ve bu ilişkileri kontrol edebilmek için davranışlarının ve temel özelliklerinin çok iyi anlaşılması gerekmektedir. Sistemin daha iyi anlaşılabilmesi ise iyi modelleme yaparak mümkün olmaktadır. İyi modelleme, sistemin temel özelliklerinin ve işlevlerinin birtakım görsel yapılarla gösterilmesi ile sağlanabilir. Kısaca model, sistemin bir görüntüsüdür ve minimum ifadesidir.
Herhangi bir sistemin modeli, o sistem hakkındaki minimum bilgiyi içermektedir. Bu nedenle, modeller başka sistemler içerisinde "alt model"ler olarak kullanılabilir. Elde edilen sistemi de yine modellemek mümkündür. Bu sayede sistemin detaylarından çok, dış dünya ile ilişkisine, davranışına odaklanılmış olur. Bu ise sistem tasarımını hızlandırır.
Model Güdümlü Yazılım Geliştirme
Model güdümlü yazılım geliştirme, yazılım geliştirme sürecinin modeller üzerinden yürütülmesi esasına dayanmaktadır. (MDSD-Seminar) Klasik yazılım geliştirme sürecinden farklı olarak modeller kullanılarak daha soyut bir bakış açısı kazandırılmış ve otomatik kod üretimi ile süreç hızlandırılmıştır. Model güdümlü yazılım geliştirme metodolojileri, OMG (Object Manegement Group) tarafından belirlenen birtakım standartlarla belirlenmiştir. OMG, tüm bu standartları MDA (Model Driven Architecture) adı altında birleştirmiştir. MDA yazılım geliştirme süreçleri, OOP teknikleri üzerine kurulan modelleme yöntemleri ile kod dünyası ile sistem arasında bir soyutlama sağlamıştır. Bu soyutlama sayesinde sistem tasarımı üzerinde çalışanların çözüm uzayı (kod uzayı) yerine problem uzayında yoğunlaşmaları sağlanmıştır. Böylelikle sorunlar daha iyi anlaşılabilir ve daha etkili çözümler üretilebilir hale gelinmiştir.
Temel Kavramlar
Domain: Üzerinde çalışılan alan olarak tanımlanabilir. Örneğin; herhangi bir amaca yönelik tasarlanmış bir ürün domain olarak kabul edilebilir (çamaşır makinesi, buzdolabı vs. gibi ürünlerin elektronik kontrol yazılımları domain olarak ele alınabilir) ya da bir Web sitesinin üzerinde çalışacağı Web server olabilir.
Model: Bir domain üzerinde tanımlı herhangi bir işlevin, özelliğin veya girdinin en temel ifadesidir. Örneğin; buzdolabı için sıcaklık sensörü ya da soğutma algoritması, modellenip aynı domain üzerinde yeni bir sistem tasarımı için alt model olarak kullanılabilir ya da bir Web sitesinde bir kullanıcı giriş ekranı için model tanımlanabilir.
Dönüşüm Bilgi Tabanı: Model ile gerçek dünya (ki söz konusu olan kod uzayı) arasındaki ilişkiyi tanımlayan bilgi kümesidir. Modelden koda ve koddan modele dönüşümler bu bilgi tabanı kullanılarak gerçekleştirilir. Dönüşüm bilgi tabanı, "domain expert" denilen alan uzmanları tarafından bir defalık oluşturulurlar.
PSM (Platform Spesific Model): Uygulanacak platforma uygun modeldir. Söz konusu yaklaşımda, ilgili ürün için yazılmış kontrol kodu platforma özgü model olarak tanımlanabilir. Söz konusu platform değiştiği durumda PSM ve DBT (Dönüşüm Bilgi Tabanı) değişeceği açıktır.
PIM (Platform Independent Model): Platformdan bağımsız modeldir. Sistemin davranışını gösteren, platformdan bağımsız, soyutlama düzeyi yüksek modeldir. Sistem (kontrol yazılımı) tasarımcılarının, problem odaklı çözüm üretmelerine olanak sağlayan ortamı sunar. Bu modeller sayesinde sistem, platformdan bağımsız olarak sadece problem uzayı üzerinde tanımlanır ve problem çözümüne daha da gerçekçi bir yaklaşım sunar.
Model - Kod Dönüşümleri: Model güdümlü geliştirme tekniklerinin vazgeçilmez yapıları dönüşüm yapılarıdır. Bu yapılar kod ile model arasında ilişkiyi (DBT) kullanarak modelden kod elde etmeyi sağlarken yazılım geliştirme sürecini hızlandırmaktadır.
Nasıl Yapılır?
Model güdümlü yazılım geliştirmenin temelinde UML yatmaktadır. OOP yöntemleri ile beraber gelişen UML, sonrasında MDD/A yöntemlerinin gelişmesine önayak olmuştur. Model güdümlü yazılım geliştirmenin ilk adımı meta model oluşturmaktır. Meta model, modelin modelidir. Bir yazılım uygulamasını modeller ile gerçeklemek için öncelikle o modellerin nasıl olacağını (şekil biçim) ve DBT ile bağlantılarının nasıl belirleneceğini ve daha birçok ayrıntıyı meta modelleme yaparak oluşturmak gerekir. Bunun için en bilinen araçlardan birisi Eclipse'dir. EMF (Eclipse Modeling Framework) sayesinde meta modelleme ve model güdümlü geliştirme ile modelden koda dönüşüm işlemleri yapılabilir. Konuyla ilgili detaylı bilgiyi, uygulamaları aşağıdaki linkten edinebilirsiniz:
http://www.eclipse.org/modeling/emf/
Şekilde MDD yöntemi ile bir yazılım geliştirme ekranı görülmekte. Eclipse modelleme araçları ile modeller oluşturulduktan sonra otomatik olarak kod elde edilebilmektedir. Bu sayede yazılım daha üst seviyeden geliştirilerek problemler üzerinde yoğunlaşma sağlanır ve daha net çözümler üretilir.
Bunun dışında IBM Rational Rhapsody, MDD üzerine eğilen diğer bir geliştirme ortamıdır.
http://www-01.ibm.com/software/awdtools/rhapsody/
MDD yöntemlerinin ilerleyen yıllarda daha önemli noktalara gelebileceğini düşünüyorum.
Başka bir yazıda görüşmek dileğiyle, esenlikler...
Kaynaklar :
-
"Java Card yazılımlarının model güdümlü geliştirilmesi", Hidayet Burak
SARITAŞ