Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateC
C sharpCalculatoareCorel drawDot netExcelFox pro
FrontpageHardwareHtmlInternetJavaLinux
MatlabMs dosPascalPhpPower pointRetele calculatoare
SqlTutorialsWebdesignWindowsWordXml

Limbaje de Modelare Specifice unui Domeniu

calculatoare



+ Font mai mare | - Font mai mic



Limbaje de Modelare Specifice unui Domeniu

Lucrarea prezinta un studiu de caz privind utilizarea Limbajelor de Modelare Specifice unui Domeniu (Domain Specific Modeling Languages - DSL) la realizarea aplicatiilor informatice. Studiul nu se limiteaza la simpla utilizare a unor limbaje de modelare adecvate problemei ce trebuie rezolvata. Specificarea limbajelor de modelare (atat sintaxa abstracta cat si cea concreta) precum si specificarea sabloanelor utilizate la generarea automata a codului sunt prezentate. Validarea limbajelor de modelare construite se realizeaza prin rezolvarea propriu-zisa a problemei. Cadrul utilizat pentru specificarea limbajelor de modelare este Microsoft DSL Tools. In final sunt descrise concluziile rezultate in urma experientei realizate atat in ceea ce priveste avantajele obtinute, cat si a pretului ce trebuie platit (efortului ce trebuie depus).



Introducere

Producatorii de soft manifesta in ultima vreme un interes din ce in ce mai mare pentru folosirea limbajelor de modelare specifice unui domeniu (Domain Specific Modeling Languages -DSML). In mod deosebit in cazul proiectele mari, dar nu numai, exista convingerea ca folosind aceasta tehnologie vor fi reduse considerabil costurile de productie, iar utilizarea modelarii pe scara larga va scadea considerabil timpul de realizare a aplicatiilor. Aceasta tehnologie este cunoscuta sub numele de 'software factory'. Un DSML este un limbaj creat special pentru un anumit domeniu, limbaj care opereaza cu termeni si concepte specifice respectivului domeniu.

Ideea limbajelor specifice unui domeniu nu este complet noua. HTML si Sql sunt exemple bine-cunoscute. Mai putin cunoscuta este ideea de a creea DSML proprii, in care sa se defineasca conceptele specifice problemelor dintr-un anumit domeniu. Aceasta abordare este sprijinita de instrumentele DSML care permit o definire rapida a unor limbaje specifice unui anumit domeniu; in general limbajele sunt specificate atat grafic cat si textual. Conceptele cu care opereaza DSML sunt consacrate in domeniul problemei - astfel exista posibilitatea eliminarii erorilor care pot aparea la transformarea lor intr-un limbaj de programare. Folosirea conceptelor specifice domeniului problemei face ca modelele sa fie mult mai usor de inteles chiar si de persoanele care nu au o pregatire in domeniul informaticii. Un alt avantaj major il constituie faptul ca un model care inglobeaza toate conceptele importante specifice domeniului este foarte usor de implementat in alte tehnologii sau in versiuni diferite ale aceleiasi tehnologii.

Modalitati de abordare in definirea DSML-urilor- EMF, DSL Microsoft, XMF

Cei mai importanti actori din domeniul Software Engineering si-au manifestat interesul pentru utilizarea DSML, propunand prin intermediul diferitelor proiecte solutii. In primul rand, dorim sa mentionam OMG care, la sfarsitul anilor 2001 au lansat conceptul de MDA ca filosofie de construire a softului, care utilizeaza extensiv modelarea. MDA se bazeaza pe o arhitectura organizata pe 4 nivele de abstractizare. La cel mai inalt nivel, M3 este definit meta-metamodelul (limbajul ce specifica conceptele necesare pentru specificarea oricarui limbaj de modelare), cel mai scazut nivel, M0 este populat cu obiectele aplicatiei utilizator, instante ale aplicatiei descrise la M1. Limbajele de modelare (DSML) sunt specificate la nivelul M2, ca instantieri ale M3.

Limbajele de modelare pot fi clasificate in 2: limbaje generale de modelare si limbaje de modelare specifice unui anumit domeniu.

UML 2.X reprezinta cel mai cunoscut limbaj din prima categorie. Conceptele limbajului pot fi extinse prin intermediul unui mecanism special conceput - lightweight extension mechanism

Cea de a doua categorie cuprinde asa-numitele DSML. Instrumentele CASE care sprijina definirea DSML se bazeaza pe diferite abordari. Cele mai cunoscute instrumente din aceasta categorie sunt: EMF si oAW (promovate in cadrul proiectului Eclipse sustinut in principal de IBM), XMF promovat din acest an de Ceteva, Microsoft DSL si MetaEdit+ promovate de Metaware.

XMF (Executable Modeling Framework) este un limbaj din familia Language Oriented Programming - (LOP), usor de extins, care permite construirea dinamica de DSL-uri care pot fi folosite independent sau intretesute cu alte DSL-uri - vezi [1] si [3].

EMF (Eclipse Modeling Framework) reprezinta un cadru (framework) si un generator de cod care permite crearea de limbaje de modelare sau aplicatii ce au la baza un model. Acesta, poate fi specificat in XMI (XML Metadata Interchange) sau importat din unele instrtumente case (de ex. din Rational Rose in format mdl).

Domain-Specific Language Tool [2], [4], [5] este un proiect inceput in 2002-2003 de Microsoft. Instrumentul permite definirea unor limbaje de modelare specifice unui domeniu, oferind utilizatorului posibilitatea instantierii unor meta-metalimbaje diferite.

Utilizarea Microsoft Domain-Specific Language Tool la specificarea limbajelor de modelare

In continuare, vom face o scurta prezentare a Microsoft Domain-Specific Language Tool. Meta-metalimbajul ales de noi este Minimal Language. Aceasta deoarece el este cel mai general si in acelasi timp sugestiv pentru specificarea conceptelor limbajelor problemei noastre

Figura 1 - Diagrama de clase corespunzatore unor concepte definite in ShopDSL

Pentru a modela aplicatia de tip comert electronic pe care ne-am propus sa o realizam, au fost specificate 2 limbaje de modelare diferite. Unul pentru descrierea propriu-zisa a problemei ShopDSL, celalalt, pentru descrierea interfetei cu utilizatorul UIDSL. Conceptele care formeaza primul limbaj sunt: Comanda, Produs, Producator, Lista Produse , Lista Producator. Pe langa proprietatea nume acestea mai au si o serie de proprietati care pot fi adaugate in functie de cerinte. Relatiile dintre aceste concepte sunt urmatoarele: o lista de producatori/produse poate contine mai multi producatori/produse, un producator poate avea mai multe liste de produse, produsele si producatorii pot avea unul sau mai multe attribute, iar un produs sau mai multe produse pot forma o comanda.

Dupa cum se poate vedea in Figura 1, fiecare concept al limbajului de modelare are asociata o reprezentare grafica adecvata (vezi partea dreapta a figurii 1 - diagram elements). Reamintim ca specificarea limbajelor de modelare a fost realizata la nivelul M2 (metamodels).

Formele ce pot fi utilizate pentru reprezentarea conceptelor de modelare sunt:

Geometry Shape aceasta reprezentand forma concreta pe care o va avea o clasa a domeniului aceasta putand avea decoratori care sa precizeze ce proprietate sau proprietati ale clasei sa fie prezente pe forma. Formele pe care le poate avea o clasa sunt: cerc, dreptunghi, elipsa si dreptunghi rotunjit.

Compartment Shape - o forma ce contine mai multe compartimente permitand astfel includerea mai multor clase ale domeniului intr-o singura forma

Image Shape se poate folosi atunci cand modul cel mai sugestiv de a reprezenta o clasa a domeniului este o imagine

Connector reprezinta forma pe care o va avea o relatie dintre doua clase ale modelului

Diagram Element Map face legatura intre un element din Abstract Syntax si Concrete Syntax

In cadrul Domain-Specific Language Tool Abstract Syntax este despartit de Concrete Syntax printr-o linie verticala nefiind permisa pozitionarea unui element din Abstract Syntax in spatiul destinat Concrete Syntax sau invers.

Utilizarea limbajelor de modelare ShopDSL - UIDSL la specificarea aplicatiei propriu-zise

Microsoft DSL ofera sprijin atat pentru specificarea limbajelor de modelare, aspect prezentat in sectiunea precedenta, cat si pentru utilizarea lor la descrierea problemei, asa cum se poate vedea in Figura 2 si in Figura 3 unde sunt prezentate atat solutia problemei cat si specificarea interfetei cu utilizatorul.

Fig.2 reprezinta un model descris cu ajutorul unui limbaj de modelare specific unui domeniu in cazul nostru ShopDsl.

Pentru elementele din Concrete Syntax se creaza un toolbox in care acestea pot fi adaugate(nu este obligatoriu ca toate elementele din Concrete Syntax sa apara in toolbox) nu neaparat sub numele cu care au fost definite in meta-metamodel.

O noutate pentru acest model o reprezinta formele incuibate (o forma in interiorul altei forme) acest lucru pana la noua versiune a Domain Specific Language Tool nu era permis in mod implicit. Pentru a putea obtine acest efect, era nevoie de implementarea a doua clase partiale si crearea de relatii suplimentare in cadrul meta-metamodelului.

Pentru a creste gradul de abstractizare nu am folosit caracteristici predefinite pentru Producer si Product astfel incat ele pot avea orice caracteristici necesare pentru un anume tip de magazin.

Figura 2 - reprezentarea solutiei problemei cu ajutorul ShopDSL

Daca am fi folosit acelasi DSL pentru a descrie si interfata grafica am fi incalcat denumirea de limbaj de modelare specific unui domeniu, interfata a fost modelata folosind UIDSL.

Figura 3 Model interfetei cu utilizatorul, specificat in UIDSL

In cadrul acestui model, paginile reprezinta ferestrele aplicatiei iar attributele ce apar in partea de jos a formelor vor aparea pe ferestre sub forma de controale avand numele din forma iar tipul poate fi selectat intre :button, listbox, label, textbox. Un astfel de model si folosirea sabloanelor de cod genereaza cate o fereastra pentru fiecare pagina de pe diagrama. Modul de parcurgere a ferestrelor este cel indicat prin sageti, permitand si intoarcerea la pagina anterioara. Controalele de tip lista sunt populate cu elementele din baza de date creata in ShopDSL. Aceste controale au un atribut de tip 'BindingType' care precizeaza cu ce tip de element din ShopDSL trebuie sa fie populata lista. Butoanele de tip Add sau Remove permit stergerea sau adaugarea de noi inregistrari in baza de date.

Tehnologia de generare a codului

Formalismul folosit pentru generarea codului TextTemplatingFileGenerator presupune specificarea sablonului pentru fiecare concept de model. In figura 4 este prezentat sablonul de generare a claselor si atributelor pentru fiecare producator si codul corespunzator generat in C#.

<#@ template inherits='Microsoft.VisualStudio.TextTemplating.VSHost.ModelingTextTransformation' hostspecific='True'#>

<#@ ShopDsl processor='ShopDslDirectiveProcessor' requires='fileName='ShopDslExample.shp'' #>

<#@ import namespace='System.Collections' #>

<#@ output extension='.cs' #>

using System;

using System.Data;

namespace <#= this.ShopModel #>

#>

}

<# }

}

}#> }

Figura 4 - Sablon pentru specificare generarii codului pentru conceptul Producator

using System;

using System.Data;

namespace Company.ShopDsl.ShopModel

public class Producer2

}

Figura 5 - Codul generat pentru producatorii Producer1, respectiv Producer2

Microsoft DSL ofera suport si pentru specificarea sabloanelor de generare a codui pentru:

crearea bazei de date si a tabelelor pentru fiecare tip de produs sau de producator

inserarea si stergerea din baza de date a unui produs sau a unui producator

Concluzii

Abstract Syntax permite specificarea precisa a limbajelor atat prin intermediul diagramelor de clasa, cat si prin intermediul constrangerilor asociate elementelor de model. Aceste sunt asemanatoare celor specificate in OCL dar nu au fost folosite inca din cauza lipsei de timp.

Folosirea tehnologiei DSL duce la diminuarea importanta a timpului de realizare pentru aplicatiile din domeniul pentru care a fost creat limbajul, dar in egala masura si pentru aplicatii din domenii asemanatoare. In consecinta, rezulta scaderea costului de productie.

Calitatea si lizibilitatea codului generat cresc datorita folosirii sabloanelor.

Utilizarea DSL-urilor muta greutatea pe umerii celor care specifica conceptele DSL precum si sabloanele utilizare la generarea codului.

Numarul avantajelor obtinute prin folosirea DSML este mult mai mare decat cel al dezavantajelor. O mare parte a dezavantajelor se datoreaza faptului ca aceasta tehnologie se afla abia la inceput.

7. Bibliografie:

[1] T. Clark, P. Sammut, J. Willans. Superlanguages: Imple-menting Languages and Applications with XMF. FirstEdition 2008. Available at https://www.ceteva.com.

[2] S. Cook, G. Jones, S. Kent, A. C. Wills: Domain Specific Development with Visual Studio DSL Tools, SUA, 2007

T. Clark, P Sammut, J. Willans. Applied MetaModelling:A Foundation for Language Driven Development. SecondEdition 2008. Available from https://www.ceteva.com.

[4] S. Kent, Exploring the new Domain-Specific Language (DSL) Tools, https://channel9.msdn.com/Showpost.aspx?postid=246477

[5] MSDN Library Domain-Specific Language Tools  https://msdn.microsoft.com/en-us/library/bb126235.aspx



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 1981
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved