際際滷

際際滷Share a Scribd company logo
Towards a general-purpose
megamodeling language
AndreiVaranovich
Software Languages Team,
University of Koblenz-Landau, Germany
http://softlang.uni-koblenz.de/mega/
Work in progress, in collaboration with
Jean-Marie Favre, Ralf L辰mmel, andVadim Zaytsev
Colin Atkinson, Thomas K端hne: Model-Driven Development: A Metamodeling Foundation. IEEE Software (SOFTWARE) 20(5):36-41 (2003)
who is Lassie?
http://en.wikipedia.org/wiki/Lassie
http://www.counter-currents.com/wp-content/uploads/2011/10/Lassie.jpg
Too many implicit assumptions
A typical software project
programming languages
(e.g., Java, PHP, JavaScript, or Python)
DSLs (e.g., CSS, XSLT, or SQL)
library-based languages
(e.g., JQuery, DOM API)
con鍖guration languages
(e.g., Hibernate mapping)
models
schemas
models
many languages and technologies
somehow related
Can we model technologies more precisely?
Goal: Develop a megamodeling approach that
is useful for understanding the linguistic architecture of
software products
supported by the MegaL language and the tool suite
megamodeling must help with managing diversity and
heterogeneity of software technologies
ognitive value is important!
[Some] motivations:
Empirical Assessment of MDE in Industry by John Hutchinson,
Jon Whittle, Mark Rounce鍖eld and Steinar Kristoffersen
use of models for team communication
use of models for understanding a problem
at an abstract level
use of models to capture and document
designs
A megamodel is a model of which at least some elements
represent and/or refer to models or metamodels.
Bezivin, J., Jouault, F.,Valduriez, P.: On the need for Megamodels. In: Proceedings of the OOPSLA/GPCE: Best Practices for Model-
Driven Software Development workshop (2004)
Ad-hoc megamodel
http://en.wikipedia.org/wiki/Tombstone_diagram
All
relations are
implicit
Bootstrapping a C compiler written in C, by compiling
it using another compiler written in machine code.
the same information capacity
one can de鍖ne the same set of instances up to a
uniquely de鍖ned isomorphism
=
?
Q: how can we check this?
The notion of megamodel
 Megamodels are (ER) models.
 Entities of interest
 Languages
 Technologies (components thereof)
 Programs
 ...
 Relationships of interest
 Conformance
 Transformation
 ...
Fig. 1. The linguistic architecture of a software product when displayed with the Me-
gaL/Explorer tool.
Demo
http://worker.101companies.org/MegaModels/implementations/xsdClasses/
Linked megamodels
An entity is linked
to a unique
resource that
can be browsed
and examined
correspondsTo
<xs:element name="company">
	 	 <xs:complexType>
	 	 	 <xs:sequence>
	 	 	 	 <xs:element ref="name"/>
	 	 	 	 <xs:element maxOccurs="unbounded" minOccurs="0" ref="department"/>
	 	 	 </xs:sequence>
	 	 </xs:complexType>
	 </xs:element>
http://101companies.org/resources/contributions/jaxbComposition/inputs/Company.xsd/element/xs:schema/element/xs:element?format=html
http://101companies.org/resources/contributions/jaxbComposition/src/main/java/org/softlang/company/xjc/Company.java/class/Company?format=html
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"name",
"department"
})
@XmlRootElement(name = "company")
public class Company {
@XmlElement(required = true)
protected String name;
protected List<Department> department;
/**
* Gets the value of the name property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getName() {
return name;
}
.....
Use of fragments to establish
an executable correspondence
MegaL
Design goal: general-purpose megamodeling
language
https://github.com/avaranovich/megal
Key design principles
 Entities and relationships are extendable
 Everything is a resource
 accessible over HTTP
 Relationships are executable
MegaL prelude
// Entity types
Set < Entity .
Artifact < Entity .
Language < Set .
Technology < Entity .
Concept < Entity .
File < Artifact .
Folder < Artifact .
// Relationship types
elementOf < Entity * Set .
subsetOf < Set * Set .
partOf < Artifact * Artifact .
instanceOf < Concept * Concept .
isA < Concept * Concept .
conformsTo < Artifact * Artifact .
definitionOf < Artifact * Language .
Some megamodels
Java : Language .
extern JavaProgram : File .
JavaProgram elementOf Java .
/* Models, metamodels, and conformance */
Model : Artifact .
Metamodel : Model .
conformsTo : Model * Metamodel .
/*
The MVC concept.
MVC consists of model, view, and controller.
Those subconcepts depend on the main concept.
MVC is a design pattern.
*/
MVC : Concept .
Model @ MVC : Concept .
View @ MVC : Concept .
Controller @ MVC : Concept .
DP ["Design pattern"] : Concept .
Model partOf MVC .
View partOf MVC .
Controller partOf MVC .
MVC instanceOf DP .
Design challenges
 Many source of (partial) errors
 Extensibility of the language, controlled by
the type system
MegaL pipeline
event recorder
event bus
events events events
report
Thank you!
Questions?

More Related Content

Sattose2013 mega

  • 1. Towards a general-purpose megamodeling language AndreiVaranovich Software Languages Team, University of Koblenz-Landau, Germany
  • 2. http://softlang.uni-koblenz.de/mega/ Work in progress, in collaboration with Jean-Marie Favre, Ralf L辰mmel, andVadim Zaytsev
  • 3. Colin Atkinson, Thomas K端hne: Model-Driven Development: A Metamodeling Foundation. IEEE Software (SOFTWARE) 20(5):36-41 (2003) who is Lassie?
  • 5. A typical software project programming languages (e.g., Java, PHP, JavaScript, or Python) DSLs (e.g., CSS, XSLT, or SQL) library-based languages (e.g., JQuery, DOM API) con鍖guration languages (e.g., Hibernate mapping) models schemas models many languages and technologies somehow related
  • 6. Can we model technologies more precisely?
  • 7. Goal: Develop a megamodeling approach that is useful for understanding the linguistic architecture of software products supported by the MegaL language and the tool suite
  • 8. megamodeling must help with managing diversity and heterogeneity of software technologies ognitive value is important! [Some] motivations: Empirical Assessment of MDE in Industry by John Hutchinson, Jon Whittle, Mark Rounce鍖eld and Steinar Kristoffersen use of models for team communication use of models for understanding a problem at an abstract level use of models to capture and document designs
  • 9. A megamodel is a model of which at least some elements represent and/or refer to models or metamodels. Bezivin, J., Jouault, F.,Valduriez, P.: On the need for Megamodels. In: Proceedings of the OOPSLA/GPCE: Best Practices for Model- Driven Software Development workshop (2004)
  • 10. Ad-hoc megamodel http://en.wikipedia.org/wiki/Tombstone_diagram All relations are implicit Bootstrapping a C compiler written in C, by compiling it using another compiler written in machine code.
  • 11. the same information capacity one can de鍖ne the same set of instances up to a uniquely de鍖ned isomorphism = ? Q: how can we check this?
  • 12. The notion of megamodel Megamodels are (ER) models. Entities of interest Languages Technologies (components thereof) Programs ... Relationships of interest Conformance Transformation ...
  • 13. Fig. 1. The linguistic architecture of a software product when displayed with the Me- gaL/Explorer tool. Demo http://worker.101companies.org/MegaModels/implementations/xsdClasses/
  • 14. Linked megamodels An entity is linked to a unique resource that can be browsed and examined correspondsTo
  • 15. <xs:element name="company"> <xs:complexType> <xs:sequence> <xs:element ref="name"/> <xs:element maxOccurs="unbounded" minOccurs="0" ref="department"/> </xs:sequence> </xs:complexType> </xs:element> http://101companies.org/resources/contributions/jaxbComposition/inputs/Company.xsd/element/xs:schema/element/xs:element?format=html http://101companies.org/resources/contributions/jaxbComposition/src/main/java/org/softlang/company/xjc/Company.java/class/Company?format=html @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "", propOrder = { "name", "department" }) @XmlRootElement(name = "company") public class Company { @XmlElement(required = true) protected String name; protected List<Department> department; /** * Gets the value of the name property. * * @return * possible object is * {@link String } * */ public String getName() { return name; } ..... Use of fragments to establish an executable correspondence
  • 16. MegaL Design goal: general-purpose megamodeling language https://github.com/avaranovich/megal
  • 17. Key design principles Entities and relationships are extendable Everything is a resource accessible over HTTP Relationships are executable
  • 18. MegaL prelude // Entity types Set < Entity . Artifact < Entity . Language < Set . Technology < Entity . Concept < Entity . File < Artifact . Folder < Artifact . // Relationship types elementOf < Entity * Set . subsetOf < Set * Set . partOf < Artifact * Artifact . instanceOf < Concept * Concept . isA < Concept * Concept . conformsTo < Artifact * Artifact . definitionOf < Artifact * Language .
  • 19. Some megamodels Java : Language . extern JavaProgram : File . JavaProgram elementOf Java . /* Models, metamodels, and conformance */ Model : Artifact . Metamodel : Model . conformsTo : Model * Metamodel . /* The MVC concept. MVC consists of model, view, and controller. Those subconcepts depend on the main concept. MVC is a design pattern. */ MVC : Concept . Model @ MVC : Concept . View @ MVC : Concept . Controller @ MVC : Concept . DP ["Design pattern"] : Concept . Model partOf MVC . View partOf MVC . Controller partOf MVC . MVC instanceOf DP .
  • 20. Design challenges Many source of (partial) errors Extensibility of the language, controlled by the type system
  • 21. MegaL pipeline event recorder event bus events events events report