UBI 622 ÇOK-ETMENLİ SİSTEMLER MODEL GÜDÜMLÜ YAZILIM GELİŞTİRME Doç. Dr. Geylani KARDAŞ geylani.kardas@ege.edu.tr
İçerik Model Güdümlü Geliştirme Model Güdümlü Mimari Model Güdümlü Mimari Teknolojileri Model Güdümlü Mimari’de Model İlişkileri Model Dönüşümü
Model Güdümlü Geliştirme Yazılım mühendisliğinde şu anki standart: Nesne yönelimli yaklaşım Uygulama ihtiyaçlarının UML ile modellenmesi UML modelleri temel alarak geliştiricilerin kodlama yapması Çalıştırma ortamı manuel kurulduğundan iş ve IT tanımlamaları arasında boşluk var Yazılım kodları UML modellerinin ihtiyaçlarını tam olarak karşılayamıyor. Boşluk problemi: Gidermesi zahmetli ve pahalı Kalite kaybı Geliştiricilerin yetenek ve alan bilgisi eksikliği Problemi eksik ya da yanlış yorumlamaları Geliştiricilerin doğal olarak hata yapmaya eğilimli olmaları
Model Güdümlü Geliştirme Çözüm önerisi: Model Güdümlü Geliştirme (“Model Driven Development – MDD”) Yazılım geliştirme kod merkezli değil model merkezli Modeller “sadece resim” olmak yerine MDD’de sürecin birinci sınıf ana ürünleri (“first class development artifacts”) Farklı soyutlama seviyelerindeki modelleri kullanarak yazılım geliştirmedeki karmaşıklığı azaltmayı hedeflemektedir. Bir sistemin farklı kısımları manuel programlanmak yerine uygun bir modelleme dili kullanılarak belirtilir.
Model Güdümlü Geliştirme MDD: Bünyesinde üstmodellerin (“metamodel”) tanımlanmasını ve bu üstmodeller arasında model dönüşümlerinin sağlanarak gerçek sistem modellerinin soyuttan somuta doğru elde edilmesini barındırır. Model dönüşümü, farklı soyut seviyelerdeki modellerin otomatik eşlenmesi için bir veya daha fazla kaynak modelini girdi olarak alır ve gerekli bir dizi dönüşüm kuralına bağlı olarak yine bir veya daha fazla hedef modelini çıktı olarak ortaya koyar. Derleyicilerden bu yana yazılım mühendisliğindeki ilk gerçek atılım (Selic, 2003)
Model Güdümlü Geliştirme Prensipler, Standartlar, Araçlar (Hahn, 2007):
Model Güdümlü Mimari Model Güdümlü Mimari (“Model Driven Architecture - MDA”): MDD’nin özelleştirilmesi ve somutlaştırılması için OMG’nin (“Object Management Group”) bir önerisi Yazılım modellerinin çalıştırılabilir bileşenlere ve uygulamalara dönüştürülerek yazılım sistemlerinin geliştirilmesi amaçlanmaktadır. MDA, dağıtık bir uygulamanın teknolojisinden çok fonksiyonelliği ve davranışı üzerine yoğunlaşır. Böylece yeni bir teknoloji gündeme geldiğinde uygulamanın ya da sistemin fonksiyonelliği ve davranışlarının tekrar tekrar modellenmesine gerek yoktur. MDA’de modeller geliştirim sürecine model dönüşüm zincirlerinden yazılım kodlarının üretilmesine kadar her safhada entegre olmuş durumdadırlar.
Model Güdümlü Mimari OMG MDA (OMG, 2003): MDA provides an open, vendor-neutral approach to the challenge of interoperability, building upon and leveraging the value of OMG's established modeling standards: Unified Modeling Language (UML); Meta-Object Facility (MOF); and Common Warehouse Meta-model (CWM). Platform-independent Application descriptions built using these modeling standards can be realized using any major open or proprietary platform, including CORBA (Common Object Request Broker Architecture), Java, .NET, XMI/XML, and Web-based platforms.
Model Güdümlü Mimari MDA’de 3 temel soyutlama seviyesi: CIM: Programlama Bağımsız Model (“Computation Independent Model – CIM”) Platform Bağımsız Model (“Platform Independent Model – PIM”) Platforma Özgü Model (“Platform Specific Model – PSM”) Soyutlama seviyelerinin en altında da kaynak kod CIM: Sistemin ortamı ve sistemin özel ihtiyaçlarına yoğunlaşır. Programlama bağımsız bir bakış açısı sunar. Yapısal detayları ve hedef uygulama platformlarına yönelik detayları içermez. Bir CIM bazen bir iş alanı modelini (“domain model”) ve bu iş alanında yer alan kavramlara ait bir sözlüğü temsil eder.
Model Güdümlü Mimari PIM: PSM: Platform bağımsız bakış açısı platforma özgü detayları göz önüne almaksızın bir sistemin işlevselliğine yoğunlaşır. Bir PIM platform bağımsızlığı sergilerken aynı zamanda benzer tipteki birçok farklı platform tarafından da kullanılabilmeye uygundur. Bir sistemin davranışlarını platform bağımsız bir şekilde tanımlayacak bilgileri içerir. PSM: Gerçek platform uygulamasının detaylarını barındırmaktadır. PIM’deki tanımlamalar ve sistemin belli bir platformda nasıl ifade edileceği detaylarını birleştirir. Özel platform karakteristiklerini de göz önüne alarak bir PIM’i yeniden şekillendirir.
Model Güdümlü Mimari MDA’ya dayalı yazılım geliştirme süreci ve model dönüşümleri:
Model Güdümlü Mimari MDA’ya dayalı yazılım geliştirme süreci ve model dönüşümleri: CIM, PIM ve PSM’lerin dayandığı üstmodeller sırasıyla CIMM (“Computation Independent Metamodel”), PIMM (“Platform Independent Metamodel”) ve PSMM (“Platform Specific Metamodel”) Model dönüşüm deseni: Bir kaynak modelin (km) bir hedef modeline (hm) dönüşümü Dönüşüm bir model dönüşüm dilinde yazılmış dönüşüm tanımlarına göre yürütülmektedir. Kaynak model, hedef model ve dönüşüm tanımı sırasıyla KÜM (Kaynak Üstmodeli), HÜM (Hedef Üstmodeli) ve DÜM’e (Dönüşüm Üstmodeli) uymaktadır. D1, D2 ve D2’ ile ifade edilen MDA dönüşümlerinde kaynak ve hedef modeller yerine göre CIMM, PIMM ve çeşitli PSMM’lerin üstmodellerine uymaktadırlar. Modelden modele dönüşümlerden sonra sıradaki ve son adım: Platformlara ait PSMM’leri kullanarak modelden yazılım koduna dönüşümleri gerçekleştirmek (D3 ve D3’) ve gerçek sistem uygulamalarını hayata geçirmek
Model Güdümlü Mimari MDA’nin Vaat Ettikleri (Hahn, 2007): Daha hızlı uygulama (“Faster implementation”) Daha iyi kod kalitesi (“Better quality of code”) Daha kolay bakım (“Easier maintenance”) Çevik geliştirim (“Agile development”) Daha çok yeniden kullanılabilirlik (“Greater reusability”) Esneklik / Genişletilebilirlik (“Flexibility / Extensibility”)
Model Güdümlü Mimari Daha hızlı uygulama (Hahn, 2007): Herhangi bir uygulamada yazılım kodunun ne kadarı manuel kodlanmalı? MDA ile geliştiriciler özel (“custom”) kodlamaya yoğunlaşabilir. Daha çok üretkenlik
Model Güdümlü Mimari Daha iyi kod kalitesi (Hahn, 2007): Otomatik üretilen kod test ve hata ayıklamaya daha az ihtiyaç duyar. Modelin kendisi test araçları üretebilir. Örneğin “Object Contraint Language – OCL” ile tanımlanmış kısıtlar kullanılarak Daha temiz ve tutarlı Yüksek kalite Dönüşümler tasarım desenlerini içerebilir. Otomatik üretilen kodlar daha iyi bir mimariye sahip
Model Güdümlü Mimari Daha kolay bakım (Hahn, 2007): Bakım: “Total Cost of Ownership”’in büyük bir kısmı Uygulamalar iş ve teknolojideki değişikliklere duyarlı olmalı Bakım işlemlerinin zorluğu Örneğin aşağıdakileri gerçekleştirmek için ne kadar iş yapmak gerek?: Bir nesne sınıfına yeni özellik eklemek Bir “use case” değiştiğinde sistemi yeniden düzenlemek (“refactor”) Dış kaynakları entegre etmek Farklı bir teknolojiye sistemi taşımak “More model-driven code = less manual refactoring”
Model Güdümlü Mimari Çevik geliştirim (Hahn, 2007): Çevik metodolojinin yararları: Somut ve çalışan yazılımlar elde etme İş ve IT çalışanları arasında yakın iletişimin kurulması İhtiyaçlardaki değişimlere esnek tepkilerin verilmesi MDA’nin çevik geliştirimi desteklemesi: İyi çalışan ve mimarisi iyi kurulmuş yazılımların çabuk ve sürekli üretilebilmesi Değişimleri yazılım koduna çabuk yansıtması
Model Güdümlü Mimari Daha çok yeniden kullanılabilirlik (Hahn, 2007): Tasarım desenleri model seviyesinde uygulanabilir. Örneğin: İş alanı sınıflarını yapılandırmada Standart görevler için bileşenleri yapılandırmada İş alanı modelleri kütüphanelerde saklanabilir. Yeni uygulamalarda yeniden kullanılabilir. İş ve teknik mimariler ayrı ayrı saklanabilir. Esneklik / Genişletilebilirlik (Hahn, 2007): MDA dönüşümleri kara kutu değil Başka ürünleri elde etmek için modifiye edilebilir ya da genişletilebilirler.
Model Güdümlü Mimari Teknolojileri MDA’in dayandığı teknolojiler: Unified Modeling Language (UML) Yazılım sistemlerinin tanımlanması ve tasarlanması için “de facto” endüstri standardı Meta Object Facility (MOF) MDA’de kullanılan standart modelleme ve değişim yapılarını sağlar. Yapılar UML modelleme yapıların bir alt kümesi Model/Üstveri değişimi ve birlikte işlerliği için bir temel oluşturur. XML Metadata Interchange (XMI) Modellerin yapısal bir metinsel formda gösterimini sağlar. UML modelleri ve MOF üstmodellerinin farklı modelleme araçları arasında kullanılabilmesi XMI kullanımı ile mümkündür. MOF Query/View/Transformation (QVT) Bir MOF üstmodeline göre hazırlanmış modellerin sorgulanması ve dönüşümü için standart bir dil tanımı sağlar.
Model Güdümlü Mimari Teknolojileri Eclipse Modelleme Çerçevesi (“Eclipse Modeling Framework – EMF”): Bir Java çerçevesi ve kod üretici MOF tanımlarının gelişmiş bir gerçekleştirimi Modelleri etkin, doğru ve kolaylıkla özelleştirilebilir Java kodlarına çevirir. Java, XML ve bir kısım UML’in birleşimi XMI yapısında standart model serileştirme sağlar. EMF modellerinin “Ecore” kullanılarak temsili Ecore: MOF benzeri bir üstmodel Ecore aynı zamanda bir EMF modeli, böylelikle kendisinin de üstmodeli Aslında EMF MOF tanımlamalarının gerçek bir uygulaması olmak amacıyla hayata geçirildi ancak zaman geçtikçe bir dizi araç seti sunan bir yapı haline büründü. EMF, MOF API’sinin çekirdek altkümesinin bir Java gerçekleştirimi olarak kabul edilebilir. MOF benzeri olan EMF üstmodeli bir karışıklığa neden olmamak için Ecore adını almıştır.
Model Güdümlü Mimari Teknolojileri MDA uyumlu Eclipse teknolojileri Eclipse Modeling Framework (EMF) Yapısal bir veri modelini temel alan yazılım araçlarının ve diğer uygulamaların oluşturulması için bir modelleme çerçevesi ve otomatik kod üretme ortamı http://www.eclipse.org/emf/ Eclipse Graphical Editing Framework (GEF) Bir uygulama modeline dayalı olarak zengin bir grafiksel editör geliştirmeyi sağlar. http://www.eclipse.org/gef/ Eclipse Graphical Modeling Framework (GMF) EMF ve GEF’e dayalı olarak grafiksel editörlerin geliştirilmesi için bir altyapı sağlar. http://www.eclipse.org/gmf/ Atlas Transformation Language (ATL) ATL projesi MDD için bir model dönüşüm dili, model dönüşümü sağlayan bir araç ve Eclipse platformuna dayalı entegre bir geliştirme ortamı sunar. http://www.eclipse.org/m2m/atl/
MDA Model İlişkileri Sistem modelleme için MDA’in tanımladığı üstmodel hiyerarşisi (Hahn, 2007): Bir sistem M1 seviyesindeki bir model ile tanımlanır. Bir model modelleme yapılarının tanımlandığı ve M2 seviyesindeki yer alan bir üstmodele uyar. Bir üstmodelin kendisi M3 seviyesinde yer alan ortak bir üst-üstmodelde tanımlanır.
MDA Model İlişkileri Sistem modelleme için MDA’in tanımladığı üstmodel hiyerarşisine bir örnek (Hahn, 2007): This figure illustrates an example of the metamodel hierarchy. A MOF metamodel describes two concepts Association and Class with source and destination relationships. In the relational metamodel we use the MOF modeling constructs to define Table, Column and Type as classes and relationships between these classes using the Association construct. In the relational model we used the constructs defined in the relational metamodel to describe a database table for a Book (which is the System that we are describing).
Model Dönüşümü Model Dönüşümü: Model güdümlü yazılım geliştirmenin kalbi ve ruhu (Sendall and Kozaczynski, 2003) Üstmodellerin tanımlanması MDD için gereklidir ancak yeterli değildir. MDD sürecinin asıl ürünleri olan hedef modellerinin elde edilmesi için bu üstmodeller arasında dönüşümlerin tanımlanması ve uygulanması gerekmektedir. Model Dönüşümü (“Model Transformation”): Bir dizi modelin başka bir dizi modele ya da kendi üzerlerine eşlenmesi Model Eşleme (“Model Mapping”): Kaynak ve hedef üstmodellerin elemanları arasındaki uygunluk veya benzerlik Model elemanları arasındaki uygunluk birebir, n’e bir, bire n veya n’e n şekillerinde olabilir.
Model Dönüşümü a ve b ile adlandırılan iki farklı ortama ait üstmodel ve modeller sırasıyla MMa, MMb, Ma ve Mb olmak üzere f: a ve b arasında tanımlanan eşleme fonksiyonu Mb f(MMa, MMb, Ma) Model eşleme bir dönüşüme ait girdi ve çıktı modellerinin üstmodelleri arasında tanımlanır. MDD süreçlerinin “tasarım aşaması”’nda gerçekleştirilir. Üstmodel varlıkları arasındaki eşlemeler model dönüşümü için kullanılan kuralları tanımlamaktadırlar. Kurallara dayalı olarak model dönüşümleri MDD süreçlerinin “çalışma zamanı”’nda gerçekleştirilir.
Model Dönüşümü Model eşleme ve model dönüşümü: Farklı soyutlama seviyelerinde model eşlemeleri: Modellerin yer aldığı soyutlama seviyelerinin birbirine göre konumu bu modeller arasındaki eşlemelerin niteliğini belirlemektedir. Aynı soyutlama seviyesindeki modeller arasında yatay eşlemeler gerçekleştirilebilirken farklı soyutlama seviyelerindeki modeller arasında ise dikey eşlemeler gerçekleştirilir.
Model Dönüşümü MDA Picture (Hahn, 2007):
Model Dönüşümü Üstmodel varlık eşlemeleri tamamlandıktan sonra bu eşlemeler ve ilgili dönüşüm kısıtlarının biçimsel bir gösteriminin yapılması ve otomatik olarak model örnekleri üzerinde uygulanması yerine getirilmelidir. MDD için model dönüşümlerinin yazılım ortamlarında biçimsel gösterimini gerçekleştirmek ve uygulanmasını sağlamak amacıyla model dönüşüm dillerinin kullanılmasına ihtiyaç duyulmaktadır. ATL: ATLAS INRIA & LINA araştırma grubunun geliştirdiği ve MDA çalışmalarında oldukça sık kullanılan bir model dönüşüm dili Hem bir dönüşüm üstmodeli olarak hem de metinsel somut bir sözdizim olarak tanımlanmıştır. MDA çerçevesinde genel dönüşümlerin gerçekleştirilmesini sağlamaktadır. Dünyada şu an için en çok kullanılan yazılım geliştirme ortamlarından biri olan Eclipse Açık Geliştirme Platformu için ATL bir eklenti (“plug-in”) sunmaktadır (http://www.eclipse.org/m2m/atl/).
Model Dönüşümü ATL’e dayalı model dönüşümlerinin genel görünümü (ATLAS Group, 2006): MMM (Metametamodel): Ecore MMa (Kaynak metamodeli) Ma (Kaynak model) MMt (Dönüşüm metamodeli): ATL Mt (Dönüşüm modeli): ATL ile yazılan dönüşüm kuralları MMb (Hedef metamodeli) Mb (Hedef model)
Model Dönüşümü Bir ATL dönüşüm yapısı aşağıdaki elemanların birleşiminden oluşmaktadır (ATLAS Group, 2006): Dönüşümle ile ilgili bazı özelliklerin tanımlandığı bir başlık kısmı Varolan bazı ATL kütüphanelerinin kullanılmasını sağlayan seçimlik bir ithal (“import”) kısmı Java programlama dili yordamlarının ATL eşleniği olarak kabul edilebilecek bir dizi yardımcı kural Kaynak modellerden hedef modellerin nasıl elde edileceğini tanımlayan bir dizi dönüşüm kuralı Model dönüşümlerinin uygulanması sırasında kullanılan tüm üstmodellerin üst-üstmodeli (“meta-metamodel”) bir MOF varyantı olan Ecore’dur. Dönüşümlerin üstmodeli ATL’dir. ATL üstmodeline uyan dönüşüm kuralları hazırlanmaktadır. ATL yardımcı kuralları bir ATL dönüşümünün farklı noktalarından çağrılabilecek ATL kodlarının tanımlanmasını mümkün kılmaktadırlar. Öte yandan asıl ATL kuralları gerektiğinde bu yardımcı kuralları da kullanarak kaynak model elemanından hedef model eleman(lar)ının üretilmesini gerçekleştirirler. Her ATL kuralının “from” adı verilen kısmında hangi kaynak model elemanının dönüşümde yer alacağı belirtilirken “to” kısmında bu kaynak model elemanının eşlendiği ve dönüşüm sonucunda ilgili örneklerinin oluşturulacağı hedef üstmodeli elemanı belirtilmektedir. İlgili dönüşüm kısıtları da göz önüne alınarak kaynak model elemanından hedef model elemanının oluşturulması sağlanmaktadır.
Model Dönüşümü ATL’in model dönüşüm motorunu kullanmak amacıyla kaynak ve hedef üstmodellerinin EMF kodlamalarının (“encoding”) hazırlanması ve Ecore dosyalarında saklanması gerekmektedir. EMF model ve üstmodel kodlama için “.ecore” adı verilen kendi dosya biçimini sağlamaktadır. Kernel MetaMetaModel (KM3) (Jouault and Bezivin, 2006): Ecore üstmodellerinin EMF kullanılarak elle düzenlenmesi oldukça güç bir iş KM3, Üstmodel düzenlemeyi Java programlama diline benzer bir sözdizimle kolaylaştırmaktadır. ADT’de (“ATL Development Tools”) KM3 desteği Bir KM3 üstmodeli düzenlendikten sonra ADT’ye entegre edilmiş enjektörler kullanılarak Ecore biçimine otomatik olarak çevrilebilir. Böylece model dönüşümleri için kaynak ve hedef üstmodellerinin ilgili yazılım ortamı için hazırlanmaları tamamlanmış olmaktadır.
Model Dönüşümü Örnek bir ATL model dönüşümü: Families to Persons (http://www.eclipse.org/m2m/atl/doc/ATLUseCase_Families2Persons.pdf)
Kaynaklar ATLAS Group (2006) “ATL User Manual”, available at: http://www.eclipse.org/m2m/atl/doc/ATL_User_Manual[v0.7].pdf Hahn, C. (2007) “Model-Driven Architecture, Metamodelling & Model Transformations”, Slides from the Agent-oriented Software Engineering course, DFKI GmbH, available at: http://www-ags.dfki.uni-sb.de/~kuf/AOSE/Slides/MDA_AOSE_2806.pps Jouault, F. and Bezivin, J. (2006) “KM3: A DSL for Metamodel Specification”, Lecture Notes in Computer Science, Vol. 4037, pp. 171-185. OMG (2003) “Model Driven Architecture”, available at: http://www.omg.org/mda/ Selic, B. (2003) “The Pragmatics of Model-Driven Development”, IEEE Software, Vol. 20, Issue 5, pp. 19-25. Sendall, S. and Kozaczynski, W. (2003) “Model Transformation: The Heart and Soul of Model-Driven Software Development”, IEEE Software, Vol. 20, Issue 5, pp. 42-45.