20
© Software Languages Team, University of Koblenz-Landau Modeling software systems at a macroscopic scale Ralf Lämmel Software Languages Team University of Koblenz-Landau, Germany Joint work with Jean-Marie Favre, Andrei Varanovich, and Vadim Zaytsev https://github.com/avaranovich/megal http://softlang.uni-koblenz.de/mega

Modeling software systems at a macroscopic scale

Embed Size (px)

Citation preview

Page 1: Modeling software systems  at a macroscopic scale

© Software Languages Team, University of Koblenz-Landau

Modeling software systems at a macroscopic scale

Ralf LämmelSoftware Languages Team

University of Koblenz-Landau, Germany Joint work with Jean-Marie Favre, Andrei Varanovich, and Vadim Zaytsev

https://github.com/avaranovich/megal

http://softlang.uni-koblenz.de/mega

Page 3: Modeling software systems  at a macroscopic scale

© Software Languages Team, University of Koblenz-Landau

http://en.wikipedia.org/wiki/Lassie

http://www.counter-currents.com/wp-content/uploads/2011/10/Lassie.jpg

Too many implicit assumptions!

Page 4: Modeling software systems  at a macroscopic scale

© Software Languages Team, University of Koblenz-Landau

A typical software project(at the macroscopic scale)

programming languages (e.g., Java, PHP, JavaScript, or Python)

DSLs (e.g., CSS, XSLT, or SQL)

library-based languages(e.g., JQuery, DOM API)

configuration languages(e.g., Hibernate mapping)

models

schemas

models

“many” languages and technologies“somehow” related

Page 5: Modeling software systems  at a macroscopic scale

© Software Languages Team, University of Koblenz-Landau

Can we model software projects more preciselyin terms of languages,

technologies,and concepts?

Page 6: Modeling software systems  at a macroscopic scale

© Software Languages Team, University of Koblenz-Landau

A megamodel is a model of which at least some elements represent and/or refer to models or metamodels.

Source: 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)

We embrace this notion in the broadest sense: programs are models and grammars are

metamodels (or v.v.) etc.

Page 7: Modeling software systems  at a macroscopic scale

© Software Languages Team, University of Koblenz-Landau

A megamodel

ATL Documentations !

! ATL Starter’s Guide Date 07/12/2005

Page 2!

MMM

MMt

Ma Mb

MMa

Mt

MMb

conformsTo

conformsTo conformsTo

conformsTo

conformsTo

conformsTo

Transformation

MMMMMM

MMtMMt

MaMa MbMb

MMaMMa

MtMt

MMbMMb

conformsTo

conformsTo conformsTo

conformsTo

conformsTo

conformsTo

Transformation Figure 1. An overview of model transformation

Figure 1 summarizes the full model transformation process. A model Ma, conforming to a metamodel MMa, is here transformed into a model Mb that conforms to a metamodel MMb. The transformation is defined by the model transformation model Mt which itself conforms to a model transformation metamodel MMt. This last metamodel, along with the MMa and MMb metamodels, has to conform to a metametamodel (such as MOF or Ecore).

3 A simple transformation example This section introduces the transformation example that is going to be developed in the document. The aim of this first example is to introduce users with the basic concepts of the ATL programming. To this end, this example considers two similar metamodels, Author (Figure 2) and Person (Figure 3), that both encode data relative to persons.

Figure 2. The Author metamodel

Figure 3. The Person metamodel

Both metamodels are composed of a single eponym element: Author for the Author metamodel and Person for the Person metamodel. Both entities are characterized by the same couple of string properties (name and surname). The objective is here to design an ATL transformation enabling to generate a Person model from an Author model. The transformation to be designed will have to implement the following (obvious) semantics:

• A distinct Person element is generated for each source Author element; o The name of the generated Person has to be initialized with the name of the source

Author; o The surname of the generated Person has to be initialized with the name of the

source Author.

Source:http://wiki.eclipse.org/ATL/Concepts#Model_Transformation

Model transformations

with ATL

What to think of this part?

Page 8: Modeling software systems  at a macroscopic scale

© Software Languages Team, University of Koblenz-Landau

A megamodel

Source:http://en.wikipedia.org/wiki/Tombstone_diagram

Bootstrapping a C compiler written in C, by compiling it using another compiler written in machine code.

Page 9: Modeling software systems  at a macroscopic scale

© Software Languages Team, University of Koblenz-Landau

• Megamodeling must help with managing diversity and heterogeneity of software technologies.• Cognitive value is important!

Specific motivations of megamodeling:

Empirical Assessment of MDE in Industry by John Hutchinson, Jon Whittle, Mark Rouncefield 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

“Generic” motivations:

Page 10: Modeling software systems  at a macroscopic scale

© Software Languages Team, University of Koblenz-Landau

The notion of megamodel

• Megamodels are (ER) models.

• Entities of interest‣ Languages‣ Technologies (components thereof)‣ Programs‣ ...

• Relationships of interest‣ Conformance‣ Transformation‣ ...

Page 11: Modeling software systems  at a macroscopic scale

© Software Languages Team, University of Koblenz-Landau

How to validate megamodeling claims?

By “=” we mean (roughly) that one can define the same set of instances up to a uniquely defined isomorphism.

=?

Page 12: Modeling software systems  at a macroscopic scale

© Software Languages Team, University of Koblenz-Landau

The upper frame uses the MegaL/yEd visual notation for megamodeling.

The lower frame shows some linked artifacts explained later in the paper.

Fig. 1. The linguistic architecture of a software product when displayed with the Me-gaL/Explorer tool.

technology for Object/XML mapping are clearly identifiable. Consider, for ex-

ample, the fact that the class generator is not described as generating ‘arbitrary’

C#. Instead, a designated subset, CSharpFromXsd, is used because the genera-

tor indeed produces very regular code whose regularity helps with understanding

Object/XML mapping, as we discuss later.

Demo

http://worker.101companies.org/MegaModels/implementations/xsdClasses/

Page 13: Modeling software systems  at a macroscopic scale

© Software Languages Team, University of Koblenz-Landau

Linked megamodels

An entity is linked to a unique resource thatcan be browsed and examined

correspondsTo

Page 14: Modeling software systems  at a macroscopic scale

© Software Languages Team, University of Koblenz-Landau

<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

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 observable correspondence

Page 15: Modeling software systems  at a macroscopic scale

© Software Languages Team, University of Koblenz-Landau

Key design principles of MegaL as general-purpose megamodeling language

• Entities and relationships are extensible.

• Everything is a resource, i.e.:

• accessible over HTTP.

• Relationships are executable.

Page 16: Modeling software systems  at a macroscopic scale

© Software Languages Team, University of Koblenz-Landau

MegaL prelude// Entity typesSet < Entity .Artifact < Entity .Language < Set .Technology < Entity .Concept < Entity .File < Artifact .Folder < Artifact .

// Relationship typeselementOf < Entity * Set .subsetOf < Set * Set .partOf < Artifact * Artifact .instanceOf < Concept * Concept . isA < Concept * Concept . conformsTo < Artifact * Artifact .definitionOf < Artifact * Language .

Page 17: Modeling software systems  at a macroscopic scale

© Software Languages Team, University of Koblenz-Landau

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 .

Page 18: Modeling software systems  at a macroscopic scale

© Software Languages Team, University of Koblenz-Landau

• Different sources of (partial) errors

• Extensibility of the language

• To be controlled by the type system

Design challenges of MegaL

Page 19: Modeling software systems  at a macroscopic scale

© Software Languages Team, University of Koblenz-Landau

MegaL pipeline

event recorder

event bus

events events events

report

Page 20: Modeling software systems  at a macroscopic scale

© Software Languages Team, University of Koblenz-Landau

Thank you!Questions?

https://github.com/avaranovich/megalhttp://softlang.uni-koblenz.de/mega