understanding programming technologies by analogy ...laemmel/aosd11/slides.pdf · understanding...

125
Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial) Ralf Lämmel Software Language Engineer University of Koblenz-Landau See the 101companies wiki http://101companies.uni-koblenz.de Follow @meganalysis

Upload: trinhdien

Post on 01-May-2018

224 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

Understanding Programming Technologies by Analogy, Examples, and Abstraction

(AOSD 2011 tutorial)

Ralf LämmelSoftware Language EngineerUniversity of Koblenz-Landau

See the 101companies wikihttp://101companies.uni-koblenz.de

Follow @meganalysis

Page 2: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Acknowledgement

Co-developers

Thomas Schmorleiz

Andrei Varanovich

Scientific collaboration

Dragan Gasevic

Jean-Marie Favre

See here for detailed credits:

101companies:Contributors

Page 3: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Introduction

Page 4: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

We havea problem.

EMF

SQL

TENEO

Java

XSD

DOM

Antlr

OWL

UML

XMI

Ecore

SQL DDL

XLSTSaxon

Hibernate

Awk

Json

Yacc

JAXP

RestOWL

RDF

ATOM

SparQLXSLT

DTD

BNF

XSD

OCL

Prolog

grep

MOF

OMG

QVT

jDOMRose

Protegé

XQuery

ODM

XMLSpy

JPA

JAXB

JDBC

ODBC

MySQLArgoUML

Jean

Jena

Jena

Ralf

Dragan

TXL

VLDB

EMF.gen

ORACLE

TCS

XText

Teneo

Jersey

GWT

Sesame

Stratego

XPATH

JeanBeans

UTF8

ASCII

RDFa

RDF(S)

RDFS

CFG

LALR

ER

SLE2010xerces

xalan

saxonsax

sed

XSD

JMI JMF

SBVR

Thanks to Jean-Marie Favre for this excellent slide!

Page 5: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

EMF

SQL

TENEO

Java

XSD

DOM

Antlr

OWL

UML

XMI

Ecore

SQL DDL

XLSTSaxon

Hibernate

Awk

Json

Yacc

JAXP

RestOWL

RDF

ATOM

SparQLXSLT

DTD

BNF

XSD

OCL

Prolog

grep

MOF

OMG

QVT

jDOMRose

Protegé

XQuery

ODM

XMLSpy

JPA

JAXB

JDBC

ODBC

MySQLArgoUML

Jean

Jena

Jena

Ralf

Dragan

TXL

VLDB

EMF.gen

ORACLE

TCS

XText

Teneo

Jersey

GWT

Sesame

Stratego

XPATH

JeanBeans

UTF8

ASCII

RDFa

RDF(S)

RDFS

CFG

LALR

ER

SLE2010xerces

xalan

saxonsax

sed

XSD

JMI JMF

SBVR

Today’s Issues

• Silos of knowledge• Combining technologies• Complexity of technologies• Entering a new space• Teaching technologies?

Page 6: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Why would you study computer science, if your ultimate destiny is

to get lost in space and technology?

Page 7: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Popular opinion 1

Practice is just inherently complex. University (say, theory or research) should not bother.

Page 8: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Popular opinion 2

Practice is just incidentally complex.University must not bother.

Page 9: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Popular opinion 3

Practice is just incredibly complex.University can not bother.

Page 10: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

(As yet) unpopular opinion

Practice is just amazingly complex and does not go away.University and research must, should, and can help.

Page 11: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

EMF

SQL

TENEO

Java

XSD

DOM

Antlr

OWL

UML

XMI

Ecore

SQL DDL

XLSTSaxon

Hibernate

Awk

Json

Yacc

JAXP

RestOWL

RDF

ATOM

SparQLXSLT

DTD

BNF

XSD

OCL

Prolog

grep

MOF

OMG

QVT

jDOMRose

Protegé

XQuery

ODM

XMLSpy

JPA

JAXB

JDBC

ODBC

MySQLArgoUML

Jean

Jena

Jena

Ralf

Dragan

TXL

VLDB

EMF.gen

ORACLE

TCS

XText

Teneo

Jersey

GWT

Sesame

Stratego

XPATH

JeanBeans

UTF8

ASCII

RDFa

RDF(S)

RDFS

CFG

LALR

ER

SLE2010xerces

xalan

saxonsax

sed

XSD

JMI JMF

SBVR

• Silos of knowledge• Combining technologies• Complexity of technologies• Entering a new space• Teaching technologies?

Today’s Issues

• Analogy• Examples• Abstraction

Our Approach

Page 12: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Analogy, examples, abstraction

MOF XSD RDFS SQL.DDL EBNF

OCLXPath

QVT

XQuery SPARQL SQL

ProtégéTopbeard

XMLSpyVS-XML

ArgoUMLRose

MySQLOracle

XSLT TXLASF

MetaEnv.

XMLVLDB

MoDELSECMDA

ICSWESWC

VLDBSIGMOD

CCPOPL

Metalanguage

Navigation

Query

Transfo.

Toolkit

Conferences

Modelware XMLware Ontoware Dataware Grammarware

Page 13: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

Sesame

© 2010-2011, Ralf Lämmel and 101companies

Analogy in space travel

XMImodelware XMLware

javaware

JDBC

Dataware

JDOM

Ontware

JenaHibernate

EMF.genJMITeneo JAXB

JPA

Page 14: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Analogy, examples, abstractioncompany "meganalysis" {! department "Research" {! ! manager "Craig" {! ! ! address "Redmond"! ! ! salary 123456! ! }! ! employee "Erik" {! ! ! address "Utrecht"! ! ! salary 12345! ! }! ! employee "Ralf" {! ! ! address "Koblenz"! ! ! salary 1234! ! }! }! department "Development" {! ! manager "Ray" {! ! ! address "Redmond"! ! ! salary 234567! ! }

...

Total salaries

Cut salaries

Store companies Navigate

companies

Page 15: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Total salaries in XQuery

Cut salaries in SQL DML

UPDATE employee SET salary = salary / 2;

<result> {sum(//salary)}</result>

Functionality on companies

Page 16: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Variation points for examples

X vs. O vs. R vs. λ etc.Static typing vs. dynamic typingTextual vs. abstract vs. visual syntaxGPPL vs. DSL vs. embedding vs. APIInstance- vs. operation-based mappingType checking vs. inference vs. reasoningCode first vs. schema first vs. mapping onlyIn-memory processing vs. push vs. pull parsingPure vs. impure transformations (or in between)Code vs. generative vs. model-driven vs. mapping

Page 17: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Analogy, examples, abstraction

What’s the essence of technology xyz?

What’s the ontology of programming technologies?

Page 18: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Remember Tombstone diagrams?

http://en.wikipedia.org/wiki/T-diagram

"Used for describing complicated processes for bootstrapping, porting, and self-compiling of compilers, interpreters, and macro-processors."

Page 19: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Abstraction with megamodels

An XSLT transformation

Page 20: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

What’s the ontology we need?

http://owl.man.ac.uk/tutorial/

Page 21: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Abstraction with an ontology

2.25 Capability

Capability a principle capability in programming to address non-functional requirements– Access control the capability to control access to data and resources within programs– Distribution the capability to distribute programs (objects) over computers in a network– Indexing the capability for access to keyed and ordered records– Interaction the capability of interactions between the user and the system– Logging the capability of logging certain events along program execution– Mapping the capability of bridging technical spaces– – O/R mapping the capability of bridging the technical spaces objectware and tupleware– – O/X mapping the capability of bridging the technical spaces objectware and XMLware– – R/X mapping the capability of bridging the technical spaces tupleware and XMLware– Parallelism the capability to execute a program in parallel– Parsing the capability of analyzing software artifacts in terms of their concrete syntax– Persistence the capability to maintain program data beyond the runtime of the program– Serialization the capability of converting program data into a format for storage or transmission– Streaming the capability for processing data in a stream as opposed to in-memory

64

Page 22: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Aside: a related course on Programming (Techniques and) Technologies

The Expression ProblemThe Visitor Design PatternParsingXML ProcessingXML ValidationXML Data BindingDatabase AccessO/R MappingModel View Controller

More Design Patterns ReflectionAspect-Oriented ProgrammingFunctional OO ProgrammingCombinator LibrariesGeneric ProgrammingProgramming with ThreadsDistributed ProgrammingWebService Programming

Page 23: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

101companies system

Page 24: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

“Specification”

The 101companies system (in the sequence: just the "system") is a conceived system in the application domain of human resources. The present specification is meant to be informal and liberal; it should facilitate different implementations of the system with different programming technologies and techniques, and with different feature sets. The system is concerned with companies, departments, managers, and employees, and it supports functionality for totaling salaries, cutting salaries, computing other data, and checking data in some ways. The system may also be subject to additional capabilities---similar to non-functional requirements, e.g.: serialization, persistence, or logging. The following feature model breaks down all required or optional features of the system.

Page 25: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Feature model2 Deep ontology

2.1 101feature101feature features of the 101companies system– 101basics basic features of the 101companies system– – 101feature:Company a data model for companies– – 101feature:Cut cut all salaries in half– – 101feature:Total total all salaries in a company– 101capabilities capability-related features of the 101companies system– – 101feature:Interaction interaction with companies though a user interface– – 101feature:Logging logging for mutations of companies– – 101feature:Persistence persistence for companies– – 101feature:Serialization serialization for companies– 101extras extra features of the 101companies system– – 101feature:Depth determine depth of department nesting– – 101feature:Mentoring associate employees with mentors– – 101feature:Precedence check that salaries increase with rank in hierarchy

38

Page 26: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

101feature:Company

What's a company?■ A company is structured as follows:

■ There is a name.

■ There is any number of (possibly nested) departments.

■ Each department is structured as follows.

■ There is a name.

■ There is any number of employees.

■ There is a manager as a special employee.

■ There is any number of (possibly nested) sub-departments.

■ Employees are characterized by name, salary, and possibly other properties.

■ The idea is that each employee can serve only in one position in the company.

Page 27: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Total salaries in XQuery

Cut salaries in SQL DML

UPDATE employee SET salary = salary / 2;

<result> {sum(//salary)}</result>

Functionality on companies

Page 28: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Some options for 101feature:serialization

Use “Object streams”.

Convert objects into XML tree.

Use XML-data binding.

Use even a persistence technology.

Use uniform read/show (from/toString).

Page 29: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

101companies implementations

Page 30: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Implementation java

Page 31: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Keywords “java”POJO

Containers

Composite pattern

Subtyping

Virtual methods

Object serialization

Marker interface pattern

Page 32: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Implementation java

Page 33: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Implementation aspectJ

Page 34: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Keywords “aspectJ”

Modularity

Inter-type declarations

Pointcuts, Advice, Logging

Page 35: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Implementation aspectJ

Page 36: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Implementation haskell

Page 37: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Keywords “haskell”

Algebraic datatypes

Pattern matching

Structural induction

Purity vs. impurity

Page 38: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Implementation haskell

Page 39: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Implementation syb

Page 40: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Keywords “syb”

Boilerplate code

Uniform traversal

Polymorphism

Code generation

Page 41: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Generic traversal with SYBStrategic traversal

One-layer traversal

Deep traversal

Page 42: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Implementation syb

Page 43: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Implementation dom

Page 44: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Keywords “dom”

Technical space Xmlware

Trees vs. graphs

Generic vs. problem-specific representation

DOM API with its axes

API vs. API implementation

Page 45: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Implementation dom

Page 46: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Implementation jaxb

Page 47: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Keywords “jaxb”XML data binding = O/X mapping

Bridging technical spaces

Impedance mismatch

Code generation

Annotations

...

Page 48: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

http://www.oracle.com/technetwork/articles/javase/index-140168.html

Page 49: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Implementation jaxb

Page 50: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

101companies ontology

Page 53: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

[−] 101feature[−] 101basics Company Cut Total

[−] 101capabilities Interaction Logging Persistence Serialization

[−] 101extras Depth Mentoring Precedence

Page 55: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

[−] 101implementation antlr antlr2 antlr3 aspectJ atl atl2 atl3 clojure csharp csharpEntityFramework dom emf fsharp gwt haskell hibernate hibernate2

 java jaxb jaxb2 jdbc jdbc2 jdom jena jena2 kiama mobl mps prolog ruby sax scala sql sqlServer swing

 syb webDSL xom xpath xquery xslt

Page 57: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

[−] Language[+] Domain-specific language[−] Format language

 ASCII Unicode XML

[+] Markup language[−] Programming language

[+] Aspect-oriented programming language[−] Functional programming language

 FSharp Haskell Haskell 98 JavaScript Scala XQuery XSLT

[+] Multi-paradigm programming language[+] OO programming language

[+] Scripting language[+] Unspecific language[+] XML language

Page 58: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Languages cited by implementations

Page 59: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Languages cited anywhere

Page 61: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

[−] Technology[+] Data technology[+] IDE[−] Language processor

[−] Language implementation[+] Compiler[+] Executor[+] Interpreter

[×] Parser[×] Pretty printer[×] Program analyzer[+] Program generator[×] Program transformer

[+] Platform[+] Reuseware[+] Runtime[×] Tool[+] Toolkit

Page 62: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Technologies cited by implementations

Page 63: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Technologies cited anywhere

Page 65: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

[−] Term[+] Architectural component[+] Capability[+] Computation[+] Design pattern[+] Domain[+] Language concept[+] Language construct[+] Program structure[+] Programming[+] Programming paradigm[+] Programming technique[+] Technical space

Term

Page 66: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

[−] Capability[−] Mapping O/R mapping O/X mapping R/X mapping

 Access control Distribution Indexing Interaction Logging Parallelism Parsing Persistence Serialization Streaming

Page 67: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

[−] Term[+] Architectural component[+] Capability[+] Computation[+] Design pattern[+] Domain[+] Language concept[+] Language construct[+] Program structure[+] Programming[+] Programming paradigm[+] Programming technique[+] Technical space

Term

Page 68: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

[−] Domain[−] Application domain ECommerce Financial exchange Health care Human resources

[−] Programming domain Data programming Database programming Distributed programming GUI programming XML programming

Page 69: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

[−] Term[+] Architectural component[+] Capability[+] Computation[+] Design pattern[+] Domain[+] Language concept[+] Language construct[+] Program structure[+] Programming[+] Programming paradigm[+] Programming technique[+] Technical space

Term

Page 71: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

[−] Term[+] Architectural component[+] Capability[+] Computation[+] Design pattern[+] Domain[+] Language concept[+] Language construct[+] Program structure[+] Programming[+] Programming paradigm[+] Programming technique[+] Technical space

Term

Page 73: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

[−] Term[+] Architectural component[+] Capability[+] Computation[+] Design pattern[+] Domain[+] Language concept[+] Language construct[+] Program structure[+] Programming[+] Programming paradigm[+] Programming technique[+] Technical space

Term

Page 75: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

101companies wiki

Page 77: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

101companies:AboutWelcome to the 101companies wiki.This is an effort to organize and understand programming technologies.Please follow @meganalysis on Twitter.

101companies pages■ 101companies:Ontology: the 101companies ontology■ 101companies:System: the specification for the 101companies system■ 101companies:Implementations: implementations of the 101companies system■ 101companies:Development: the development corner for this wiki■ 101companies:Invitation: call for contributors of all kinds■ 101companies:Administration: administrators with contact information■ 101companies:Contributors: contributors of all kinds ("hall of fame")■ 101companies:Resources: papers, slide decks, and other resources■ 101companies:License: Creative Commons Deed License for wiki

Page 78: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

101companies:SystemIntent--- A liberal specification of the 101companies system ---

SpecificationThe 101companies system (in the sequence: just the "system") is a conceived system in the application domain of human resources. The present specification is meant to be informal and liberal; it should facilitate different implementations of the system with different programming technologies and techniques, and with different feature sets. The system is concerned with companies, departments, managers, and employees, and it supports functionality for totaling salaries, cutting salaries, computing other data, and checking data in some ways. The system may also be subject to additional capabilities---similar to non-functional requirements, e.g.: serialization, persistence, or logging. The following feature model breaks down all required or optional features of the system.

Feature model[−] 101feature[−] 101basics Company Cut Total[+] 101capabilities[+] 101extras

Page 79: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

101companies:ImplementationsList of implementationsThe pages for the implementations are members of the Wiki category 101implementation.)The pages were automatically derived from the README files from the repository of implementations.

[−] 101implementation antlr antlr2 antlr3 aspectJ atl atl2 atl3 clojure csharp csharpEntityFramework dom emf fsharp gwt haskell hibernate ...

Page 80: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

101companies:ContributorsWant to contribute?See the 101companies:Invitation page.

Contributors to the 101companies effort■ See Category:101contributor for a list of contributors to the 101companies:Implementations.■ See Special:ListUsers for a list of contributors to the 101companies wiki.

Specific 101companies:Implementations point out designated contributors and those should be contacted if necessary.

History of the 101companies effort

...

Page 81: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Category:101contributorThis wiki category includes all pages of contributors of 101companies:Implementations.See also a detailed description of contributors to the 101companies effort.

Ontology[−] 101contributor

 Andrei Varanovich Betim Sojeva Ralf Lämmel Thiago Tonelli Bartolomei Thomas Schmorleiz Tony Sloane Vadim Zaytsev Zef Hemel

Page 82: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

101implementation:syb

Intent--- An implementation in Haskell using SYB ---

ImplementationsThere is more basic, functional programming-based implementation in Haskell: 101implementation:haskell. The present implementation exercises an advanced programming technique: SYB style of generic programming.

Languages■ Haskell including SYB-related extensions

Technologies■ GHCi: Haskell interpreter used for testing (Version 6.12.3)

Features101feature:Company, 101feature:Total, 101feature:Cut, 101feature:Depth, 101feature:Serialization

MotivationSeveral of the 101companies features essentially involve traversal over arbitrarily nested data. For instance, totaling all salaries requires the location of salary subterms at all levels in the term. Hence, support for traversals can significantly help here. In fact, SYB style of generic programming can be put to work, and the corresponding function implementations become drastically more concise.

Page 83: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

101companies:OntologyAll concepts and instances of the ontology are rooted in these base concepts:■ Language: classification of software languages■ Technology: classification of programming technologies■ Term: concepts and instances for characterization■ 101feature: features of the 101companies information system■ 101implementation: implementations of the 101companies information system

MediaWiki is used in a certain way to represent the ontology.

Category treeThere is also a separate view available with a fully expanded category tree for the ontology.

Base concepts

Concept LanguageClassification[+] Language...

Page 84: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Domain-specific capabilities

Page 85: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Domain-specific capabilities

Domain-specific formatting, e.g.:prettify links to be more category-awarenormalize and highlight “intent”

Focus on domain ontology; redirect elsewhere for more.Provide domain-specific backlist-based indexes.Provide navigation information based on document type/structureExtend API for external tools, e.g., based on category treeImport README files into Wiki incl. indexing for contributors et al.

Page 86: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Ambiguous terminology

Page 87: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Unambiguous terminology

21.03.11 15:25Streaming - 101companies

Page 1 of 1http://101companies.uni-koblenz.de/index.php?title=Streaming&printable=yes

StreamingFrom 101companies

Intent--- The capability for processing data in a stream as opposed to in-memory ---

LinksWikipedia (http://en.wikipedia.org/wiki/Stream_(computing))

CitationsTechnologies

SAX

Remaining ontology

XML processingPush-based XML parsing

Retrieved from "http://101companies.uni-koblenz.de/index.php/Streaming"Category: Capability

This page was last modified on 9 March 2011, at 23:23.Content is available under this license.

Page 88: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Information overload (“Haskell”)

Page 89: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Tailored information 21.03.11 15:30Language:Haskell - 101companies

Page 1 of 1http://101companies.uni-koblenz.de/index.php?title=Language:Haskell&printable=yes

Language:HaskellFrom 101companies

Intent--- the functional programming language ---

Resourceshaskell.org (http://www.haskell.org/haskellwiki/Haskell) (Home page)Haskell (http://en.wikipedia.org/wiki/Haskell_(programming_language)) (Wikipedia)

CitationsTechnologies

GHCGHCi

Languages

Haskell 98

Implementations

101implementation:haskell101implementation:syb

Remaining ontology

Unspecific language

Retrieved from "http://101companies.uni-koblenz.de/index.php/Language:Haskell"Categories: Functional programming language | Unspecific language

This page was last modified on 20 March 2011, at 00:06.Content is available under this license.

Page 90: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Navigation and indexing

Technology:GHCiBase → Technology → Language processor → Language implementation → Interpreter → GHCi

Intent--- A Haskell interpreter ---

DiscussionGHCi is part of the GHC distribution.

CitationsImplementations■ 101implementation:haskell■ 101implementation:syb

Category: Interpreter

Page 91: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Megamodeling

Page 92: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

What’s a megamodel?

Page 93: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

What’s a megamodel?

Follow @meganalysis

Page 94: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

A megamodel is model.A megamodel is not a metamodel.

Page 95: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Modeling-biased definition:

A megamodel shows the relationships between models, metamodels, and model transformations.

Page 96: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Do we need megamodeling?

Page 97: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Empirical megamodeling

Meganalysiscompany

(ANTLR)

A megamodel

Company.g

company : ...

sample.Company

company "meganalysis" { ...

accept (or parse)

Page 98: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Specific megamodeling

Meganalysiscompany

(ANTLR)

A megamodel

Company.g

company : ...

sample.Company

company "meganalysis" { ...

accept (or parse)w ∈ L(GCompany)…

A megamodel

Page 99: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

We need to be more precise and more abstract.

Page 100: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Precise megamodeling

meganalysissample.Company

Company.g

ANTLR

R

C

E

a megamodel

E ... “element of”

C ... “conforms to”

R ... “represents”

The megamodelmetamodel

Page 101: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Basic megamodeling idioms

Page 102: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

EntitiesTechnologies LanguagesElements of languages

ProgramsSchemas

Functions (arising through interpretation, for example)...

Page 103: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Relationships

E: elementOfC: conformsToD: dependsOnS: subsetOfR: representsFunction application

Page 104: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Languages

Page 105: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Artifacts and “elementOf”

Page 106: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Conformance

Page 107: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Application

Page 108: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Technologies

Page 109: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Compilation

Page 110: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Interpretation

Page 111: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Interpretation cont’d

Page 112: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Examples

Page 113: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Interpretation of a Haskell program

Page 114: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Execution of a compiler Haskell program

Page 115: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Abstract from interpreter/compiler

Page 116: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

An XSLT transformation

Page 117: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Abbreviated XSLT transformation

Page 118: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Transformation with DOM

Page 119: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Abbreviated transformation with DOM

Page 120: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Transformation with JAXB

Page 121: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Wrap-up

Page 122: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

BOF sessionWhen? Today, 5pmWhere? Please see registration desk.What?

Show off with your favorite AOP technologyReview 101companies approachImprove implementations and wikiAdd new implementationsCoordinate future efforts

Page 123: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

TODO / Plans

Publish over overall idea and megamodeling approach.

Upscale ontology in a course next semester.

Upload additional implementations.

Tutorials at other PL/SE events.

Set up regular online meetings.

Page 124: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

© 2010-2011, Ralf Lämmel and 101companies

Acknowledgement

Co-developers

Thomas Schmorleiz

Andrei Varanovich

Scientific collaboration

Dragan Gasevic

Jean-Marie Favre

See here for detailed credits:

101companies:Contributors

Page 125: Understanding Programming Technologies by Analogy ...laemmel/aosd11/slides.pdf · Understanding Programming Technologies by Analogy, Examples, and Abstraction (AOSD 2011 tutorial)

Thanks!