metaDepth – un nuevo framework para el modelado multi nivel

Mis buenos amigos Esther Guerra y Juan de Lara nos visitaron la semana pasada en Nantes para explicar transformaciones de grafos a los alumnos del MDE diploma . Durante su visita aprovecharon para presentarme su última herramienta : metaDepth , un nuevo framework para el modelado multi-nivel.

La principal característica de metaDepth es su capacidad para manejar un número arbitrario de meta-niveles. Esto la hace especialmente útil para definir lenguajes multi-nivel. Es decir, en lugar de seguir la típica estructura en tres niveles (modelo/metamodelo/metametamodelo, como por ejemplo es el caso de UML donde tenemos los modelos UML, el metamodelo de UML y MOF), los diseñadores pueden decidir usar cualquier número de metaniveles en su lenguaje, y aún más importante, pueden definir lenguajes que mezclen estos diferentes niveles. Como explican en su página web , un buen ejemplo es la relación entre clases y objetos en el lenguaje UML. Los object diagrams pueden verse como instancia de los class diagrams. Por lo tanto la combinación class+objects diagrams se puede considerar como un lenguaje multi-nivel, y puede definirse como tal usando un metamodelo único en MetaDepth. Comparado con la antinatural solución en el UML estándar (donde los objetos se definen al mismo nivel que las clases de las que son instancia, lo que obliga a introducir una serie de metaclases articiales como InstanceSpecification, Slot, InstanceValue,… ), la solución que permite metaDepth es mucho más simple y permite relegar en la infrastructura del sistema la gestión de la relación entre objetos y clases.

Este tipo de construcción aparece en muchos otros dominios como web engineering (relación entre page node types/page instances) o role control access (role types/roles). Otro escenario donde una herramienta como metaDepth podria ayudar es en la clarificación del concepto de estereotipo en UML. Los estereotipos relacionan dos meta niveles diferentes y esto es muy difícil de explicar utilizando una arquitectura de metamodelado fija.

Como ejemplo, veamos como podemos usar metaDepth para definir un diagrama de clases compuesto de clases con una potencia de 2, lo que quiere decir que la metaclasse Class soporta dos niveles de instanciación (el primero permite representar las clases del modelo y el segundo los objetos instancia de esas clases, sin necesidad de añadir nuevas metaclases articiales).


strict Model ClassDiagram@2{
  ext Node Class{
    isAbstract@1  : boolean = false;
    in@2	      : Class[*];
    out@2	      : Class[*];
    noAbsObjects@2: $self.isAbstract=false$
  }
  Edge Association(Class.out, Class.in) {}
}

Con este metamodelo podemos definir el siguiente diagrama de clases:


ClassDiagram Example{
  Class Person {
    name : String;
    age  : int;
    neighbourS : Person[*] {out};
    neighbourT : Person[*] {in};
    subordinate: Employee[*] {out};
  }
  Class Employee : Person {
    boss : Person[1..*] {in};
  }
  Association neighbour (Person.neighbourS, Person.neighbourT){
    isFriendOf : boolean = false;
  }
  Association isBossOf (Person.subordinate, Employee.boss);
}

y al mismo tiempo el siguiente diagrama de objetos


Example Exx {
  Person Juan{ name = "juan"; age = 36; }
  Employee Sacarino{ name = "Sacarino"; age = 22; }
  isBossOf(Juan,Sacarino);
}

Por cierto, como podéis ver, metaDepth es una herramienta de modelado textual lo que algunos de vosotros seguro apreciaréis.

Si te ha gustado esta entrada, puedes subscribirte a este Software Modeling blog y/o seguirme en twitter y/o a través de la lista de distribución del portal Y si realmente te ha gustado ayúdame a hacerlo llegar a otros utilizando los bookmarks que tienes a continuación:

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Powered by WordPress
Read previous post:
metaDepth – A new framework for multi-level meta-modelling
La herramienta SketchUML
SketchUML tool
Close