Sculptor – MDA personalizzato
E’ da poco che sono venuto a conscenza del progetto Sculptor, che rappresenta , secondo me, un modo diverso di programmare. Da tempo si parla tanto dell’approccio MDA e come questo possa influire sul processo di sviluppo, riducendo il ruolo dei real-programmer, ma questo è solo un mio modesto parere. Pare, infatti, che i tempi della noiosa programmazione di codice di infrastruttura stiano sparendo, almeno nelle applicazioni nuove, ossie quelle per le quali non si ha bisogno di mettere mano a codice già scritto, anche diverso tempo fa. Con l’introduzione di XText /Xpand come standard de-facto all’interno della versione di Eclipse per “modellatori”, la programmazione generativa o metaprogrammazione è stata finalmente esportata ai settori dell’industria di massa. Ovviamente siamo ancora lontani dalla nascita di un primo tool per la costruzione di DSL facilmente modificabili, ma XText /Xpand è senz’altro uno di quegli strumenti che non devono per forza essere usati dall’intero team, ma possono essere considerati come uno coltellino svizzero in tasca alla singola persona (un coltellino molto potente, a mio modo di vedere, da far invidia a McGyver
) Se da un lato abbiamo l’accoppiata : Papyrus o Topcased più Acceleo, dall’altra abbiamo EMF o XText + XPand. Secondo me una scelta non esclude l’altra, ma a volte un semplice profilo UML non basta per generare codice di qualità, o quantomeno tutto il codice generabile. Inoltre, avere uno strumento per UML che non riesce ancora bene a validare i vincoli OCL definiti nel profilo pone maggior lavoro di validazione da parte del generatore. Un modello fatto male non serve a nessuno, meglio avere del codice fatto male a questo punto!
Sculptor è creato proprio usando XText ed Xpand e fornisce un framework che può essere facilmente customizzato, sia dal punto di vista del metamodello ( la grammatica XText) sia dalla tipologia di codice generato. Il lavoro per customizzare il generatore può essere anche abbastanza oneroso, ma vi assicuro che la vita sarà più semplice quando vi cambiano i requisiti all’ultimo secondo. Tutto questo è vero se , comunque, si avrà una certa accortezza nel separare il codice generato da quello scritto a mano. Eh si!! Avete capito bene, non tutto è generabile, a meno che non vi leghiate ad una particolare piattaforma o codice (vedasi WEBML), ma anche in quel caso potrebbero esserci degli elementi del vostro modello non previsti nel PIM di webml.
In un successivo post (speriamo di averne il tempo
), cercherò di spiegarvi come customizzare Sculptor con del codice vostro e come magari estendere la sua grammatica. Per concludere vi dico che non è assolutamente necessario usare XText per la vostra metamodellazione, ma potete usare un qualsiasi linguaggio che sia in grando di interfacciarsi con EMF, ad esempio Java, Groovy, Scala o Python ( di cui Groovy e Scala sono ottimi per essere estesi per creare dei DSL agganciati al vostro modello ecore).
