Incremental validation of UML models using EMF-IncQuery

Last week we created in the university a nice demo application to demonstrate the validation capabilities of our EMF-IncQuery framework. The application was presented on the conference ECMFA 2011 as a tutorial.

EMF-IncQuery provides an incrementally evaluated model query framework: as the underlying EMF model is changed, the query results are re-evaluated, and are instantly returned when needed. Queries are formulated using the pattern language of the VIATRA2 transformation system, and the Java code necessary to execute queries are generated.

In our demo application we extended the Papyrus UML editor with on-the-fly validation of well-formedness constraints. During editing we check for non-local constraints (e.g. a Behaviour must have the same number of parameters as the corresponding operation); display the results in the editor and in the problems view; we try to provide and remove these error markers without saving or manual need to start validation.

Basically, the constraint validators are generated from specially annotated VIATRA2 patterns; the generation is currently somewhat specific to the Papyrus editor, but can be extended to support most EMF-based editors easily.

A screencast of the demo is presented below. It is important to note, that the Papyrus editor was not modified in any way, and the framework generated all Java code used during validation. More details about the demo application, such as source code, tutorial slides, can be found on the homepage of the application.

(If the embedded video does not show – e.g. in a feed reader – you could watch it on on Youtube)

Számítógép használat másképpen

A héten bukkant fel a neten egy videó, R. Clayton Millertől 10/GUI címmel. Röviden bemutat egy koncepciót arról, hogyan lehetne használni a jövő számítógépeit.

Azok kedvéért, akik még nem látták, itt a videó:

Először is szeretném leszögezni, hogy a koncepció alapvetően tetszik. Konzisztens, motorikus reflexekre épít a felület használata (az gyorsan tanulható), az asztalra kirakott néhány widget koncepció az, ami nekem a KDE4-ben is nagyon tetszett, stb.

Az kérdéses, hogy a 2D helyett 1D ablakelhelyezés mennyire használható. Átlátni bizonyosan könnyebb, ugyanakkor kérdés, mit csinál akkor, ha egyszerre sok ablakot/alkalmazást szeretnék egyszerre használni. Megvan a kockázata, hogy arra nem annyira jól használható.

További lehetséges probléma, hogy mennyire lehet finom műveleteket végezni úgy, hogy a többi ujjunk bezavar(hat). Ez persze csak finomhangolása a rendszernek, mindez megtörténhet a mostani billentyűzet + egér/touchpad/trackpoint kombinációkkal, vagy a touchscreenekkel is.

Amit meg végképp nem látok, hogy a rendszer hogyan működne adatcentrikus alkalmazásokkal. Amikből van egy pár: különböző űrlapok kitöltése, megjelenítése, adattáblák áttekintése gyakori feladat a különböző enterprise alkalmazásokban. Persze, ezt is lehet jobban és rosszabbul csinálni, de ha egy rendszer használatához minden meglevő alkalmazást át kell írni, akkor sokáig élni fog a régi… Látjuk ezt IE6 kapcsán is, de ez most off volt. 😀

Mindenesetre ötletnek jó a folytatást tekintve – sőt, szerves folytatása az eddigi trendeknek. Kérdés, hogy mi lesz belőle, ha ténylegesen bekerül a mindennapokba.

Update: amit kihagytam az előző értékelésből.

A legtöbb interakciónál nem használjuk az ujjainkat külön-külön, hanem csak valami közös, motorikus reflex alakul ki. Persze, vannak esetek, amikor kivételek vannak, de ez ritkaság. Sokan nem tudnak 10 ujjal gépelni, kevesen zongorázak/hegedülnek/játszanak hangszeren, ami efféle problémákat vet fel.Megtanulható, de nem mindenki veszi rá a fáradtságot.

Persze az egy interakciós pont sávszélessége kérdéses, de ha jobban belegondolunk, amikor papírra írunk, akkor is egy pont az interakció, mégis egész gyorsan tudnak egyesek írni.

Kapcsolódó probléma, hogy mi történik, ha úgy próbálok többujjas gesztusokat végrehajtani, hogy az ujjaim különböző ablakok felett vannak?

És a legvégső problémám a rendszerrel: az emberek többsége nem képes egyszerre több mindent végezni – és itt a többujjas gesztusokat muszáj egyszerre csinálni. Nem biztos, hogy könnyű.

Most a frissítés hatására a kritikák abszolút túlsúlyba kerültek a pozitív tartalom mellett, ezért fontosnak tartom még egyszer megjegyezni, hogy szerintem érdekes koncepció, esetleg ki is próbálnám, ha lenne rá lehetőségem. De amire biztosan jó, az az, hogy végiggondoljuk, mire jó, és levonjuk a konzekvenciákat.

Projektbemutató videóval

Úgy néz ki, egyelőre Balage Debug Visualisation projektje még fut egy darabig, nem ért véget azzal, hogy megkapta rá a jegyét. Nemrég volt egy újabb release, most pedig én egy régi ígéretemnek tettem eleget, és készítettem hozzá egy bemutató videót.

A videó nagyon egyszerű: megmutatom, hogy egy komplex debug eljárás esetén (hiszen egy másik Eclipse példányban futtatott plugin projektet tesztelek vele) hogyan használható ez a plugin.

Mindenesetre jöjjön a lényeg:

Úgy néz ki, egyelőre Balage Debug Visualisation projektje még fut egy darabig, nem ért véget azzal, hogy megkapta rá a jegyét. Nemrég volt egy újabb release, most pedig én egy régi ígéretemnek tettem eleget, és készítettem hozzá egy bemutató videót.

A videó nagyon egyszerű: megmutatom, hogy egy komplex debug eljárás esetén (hiszen egy másik Eclipse példányban futtatott plugin projektet tesztelek vele) hogyan használható ez a plugin.

Mindenesetre jöjjön a lényeg:

Megfelelő igény esetén esetleg arról is fogok beszélni, hogy hogyan készült a videó – most csak annyit mondanék róla, hogy teljesen nyílt szoftverek felhasználásával készült – eltekintve a youtube felületén hozzáadott annotációktól.

Ami viszont vicces volt, hogy feltölteni macerás: a fájl lassan töltődik fel, és időnként megszakadt közben a net – ebben az esetben pedig az AJAX-os feltöltő script végtelen ciklusba került, és nem töltött fel semmit, de nem is vette észre, hogy vége a dalnak. Talán majd egyszer ezt is javítják (vagy nekem javul meg a netem 😀 ).