Technology modeling with MegaL in software development

Post on 05-Dec-2021

6 views 0 download

Transcript of Technology modeling with MegaL in software development

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 1

Technology modeling with MegaLin software development

Ralf Lämmel Software Languages Team

University of Koblenz-Landau

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 2

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

Acknowledgement: Jean-Marie Favre designed this (such a) slide.

We have a problem!Too many technologies.

Too little time.

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 3

Technological spaces

Source: http://upload.wikimedia.org/wikipedia/en/thumb/6/66/E_t_the_extra_terrestrial_ver3.jpg/220px-E_t_the_extra_terrestrial_ver3.jpg

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

Technological space = Technology and community context

in software engineering• UMLware — Mainstream software modeling • MDEware — Model Driven Engineering • Javaware — Mainstream OO programming • XMLware — Interoperability in data exchange • SQLware — Mainstream database management • Pythonware — Scripting and frameworks • RDFware — Semantic Web and Linked Data • JSONware — Modern interoperability • COBOLware — Legacy programming technology

4

What’s a technological space?

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 5

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 6

A technological space is a working context with a set of associated concepts, body of knowledge,tools, required skills, and possibilities. It is often associated to a given user community with shared know-how, educational support, common literature and even workshop and conference meetings. It is at the same time a zone of established expertise and ongoing research and a repository for abstract and concrete resources.

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 7

More technological spaces ...

Data driven journalism

CSVware

Lambdaware

Javaware

Rubyware

TOOLS 2007-2012 ✟

Specware

???

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 8

http://upload.wikimedia.org/wikipedia/commons/4/48/Data_driven_journalism_process.jpg

Ralf’s favorite technological space (in his next life)

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

Constituents of a technological space

• Application scenarios

• Programming languages

• Data representation formats

• Development tools such as IDEs and compilers

• Runtime tools such as libraries and frameworks

• Query and transformation languages

• Textbooks and other knowledge resources

• Conferences and other community resources

• …

9

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

Space exploration

with 101companies

10

http://101companies.org/

101companies: a community project on software technologies and software languages by Jean-Marie Favre, Ralf Lämmel, Thomas Schmorleiz, Andrei Varanovich. In Proceedings of TOOLS 2012. http://softlang.uni-koblenz.de/101companies/inauguration/

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 11

What’s 101companies?It is ...

The Hitchhiker's Guide to the Software Galaxy

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 12

Company X: Swing + JDBC

Company Y: SWT + Hibernate

Company Z: GWT + MongoDB

...

A community project aiming at a

knowledge base about software

technologies and languages based on

implementations of a human-resources

management system.

What’s 101companies?

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 13

Company X: Swing + JDBC

Company Y: SWT + Hibernate

Company Z: GWT + MongoDB

...

101 ways of building a HRMS.

Building a HRMS for 101 companies.

Why is it called “101companies”?

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 14

A Human Resources Management System

• Total salaries

• Increase salaries

• Cut salaries

• Edit employee data

• Import / export company data

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 15

Demo http://101companies.org/wiki/Contribution:pyjson

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 16

The 101companies Repository

8

442

#Files per implementation Technologies

Languages LOC per implementation

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 17

Explorable facets of a contribution

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 18

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 19

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 20

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 21

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

The 101companies Wiki

• Classification (e.g., languages, technologies)

• Feature modeling for the 101system

• Documentation of each contribution

• Collections of contributions in themes

• Tracking of semantic metadata

• Languages, technologies, developers, …

22

Extended demo

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 23

• 101companies contribution X ...

• ... uses (‚is written in‘) language L

• ... uses technology T

• ... implements feature F

• ... uses (‚exercises‘) concept C

• 101companies developer D ...

• ... has skills regarding language L

• ... has skills regarding technology T

• ...

The 101companies Ontology

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

The SQLware technological space

24

Remember the course slot on data modeling?

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

The XMLware technological space

25

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 26

Elevator speech

Consider the following realities: – Applications are built in Cobol, C#, Java, Python, etc. – “Messages” have to be send over the “wire”. – Configuration data has to be represented somehow. – Objects have to be persisted in an human-readable way.

Conclusions: – We need to model data in a language-independent manner. – We need a comprehensive method for exchange/storage formats.

We need (something like) XML. XML stands for eXtensible Markup Language.

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 27

Example XML document

<?xml version="1.0"?> <weatherReport> <date>7/14/97</date> <city>North Place</city>, <state>NX</state> <country>USA</country> High Temp: <high scale="F">103</high> Low Temp: <low scale="F">70</low> Morning: <morning>Partly cloudy, Hazy</morning> Afternoon: <afternoon>Sunny &amp; hot</afternoon> Evening: <evening>Clear and Cooler</evening> </weatherReport>

XML declaration at the beginning

Root element; there is one!

Start tagEnd tag

Attribute

Text

Entity

From: XML: A Primer, by Simon St. Laurent

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 28

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

Well-formedness of XML

• A document has exactly one root element. • There is an end tag for each start tag: <name>….</name> • Empty elements can be abbreviated: <noname/> • Elements must be properly nested. • Attribute values must be enclosed into “…”. • …

29

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 30

Tree shape of XML

<?xml version="1.0"?> <!DOCTYPE menu SYSTEM "menu.dtd"> <menu> <meal name="breakfast"> <food>Scrambled Eggs</food> <food>Hash Browns</food> <drink>Orange Juice</drink> </meal> <meal name="snack"> <food>Chips</food> </meal> </menu>

menu

meal

name

"breakfast"

food

"Scrambled Eggs"

food

"Hash Browns"

drink

"Orange Juice"

meal

There are techniques for referring from one location in the tree to another. Hence, essentially one can go beyond tree shape. However, the serialized format, no matter what, is of tree shape.

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

XML-based languages - Some examples -

• FpML – Financial products Markup Language

• HL7 – Standards in Healthcare

• MathML – Mathematical Markup Language

• XHTML – HTML defined in XML

• … and countless others …

31

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

XML-related technologies and standards

• XML is a standard; there is 1.0 and 1.1.

• XML elements & attributes are qualified by XML namespaces.

• DTD (Document Type Definition; part of XML standard) and XML Schema and Relax

NG (both separate standards) are used to define legal XML tags and their attributes for

particular XML languages.

• CSS (Cascading Style Sheets) and XSL (eXtensible Stylesheet Language) are used to

map HTML or XML for presentation in a browser.

• XPath, XSLT and XQuery are used to program queries on transformations on XML

data. In fact, XPath is part of XSLT and XQuery.

• DOM (Document Object Model), SAX (Simple API for XML), and JAXP (Java API for

XML Processing) are all Java APIs for XML processing. In fact, DOM is language-

independent.

32

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 33

XML queries with XPath

• XPath is an XML query language.

• Queries are composed from query axes.

• Children, Ancestors, Descendants, ...

• XPath is embedded into Java et al. by APIs.

• XPath queries are encoded as strings.

• Examples: “//salary” “//manager/salary”

All salary nodes below all manager nodes anywhere

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 34

XPath axesAxisName Resultancestor Selects all ancestors (parent, grandparent, etc.) of the current node

ancestor-or-self Selects all ancestors (parent, grandparent, etc.) of the current node and the current node itself

attribute Selects all attributes of the current node

child Selects all children of the current nodedescendant Selects all descendants (children, grandchildren, etc.) of the current node

descendant-or-self Selects all descendants (children, grandchildren, etc.) of the current node and the current node itself

following Selects everything in the document after the closing tag of the current node

following-sibling Selects all siblings after the current node

namespace Selects all namespace nodes of the current node

parent Selects the parent of the current nodepreceding Selects everything in the document that is before the start tag of the current node

preceding-sibling Selects all siblings before the current node

self Selects the current node

“/” “//”

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 35

XML transformations with XSLT

• XSLT is an XML transformation language.

• XSLT leverages XPath for node selection.

• XSLT is an XML-based language.

• XSLT is a functional programming language.

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 36

Cutting salaries with XSLT

<xsl:stylesheet> <xsl:template match="salary"> <xsl:copy> <xsl:value-of select=". div 2"/> </xsl:copy> </xsl:template> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> </xsl:stylesheet>

Type-specific template

Generic default

Recursion into kids

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

XML languages (defined by XML schemas)

37

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 38

<employee> <name>Ralf</name> <address>Koblenz</address> <salary>1234</salary></employee>

<employee> <name>Ralf</name> <salary>1234 Euro</salary></employee>

OK

Not OK!

Address missing

Not a number

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 39

XML Schema (XSD)

http://www.w3.org/XML/Schema: “XML Schemas express shared vocabularies and

allow machines to carry out rules made by people. They provide a means for defining the structure, content and semantics of XML documents. […] XML Schema was approved as a W3C Recommendation on 2 May 2001.”

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 40

XSD for 101

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

<xs:element name="department"> ... </xs:element>

<xs:complexType name="employee"> ... </xs:complexType>

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 41

XML validation

Well-formed XML as a prerequisite

Input

XML document

XML schema

Output

“valid”: document valid w.r.t. schema

“invalid” + violations

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 42

XSD – schema components

• Element declarations

• Complex type definitions

• Model-group definitions

• Simple type definitions

• Attribute declarations

• Attribute-group definitions

• Redefinitions

• Annotations Comments and hints for schema processors

Deprecated

Types of leafs in XML trees (both elements and attributes).

Nonrecursive macros without subtyping

Recursive macros with subtyping

Sets of XML trees rooted by a certain element name

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 43

Sketch of the company schema

<xs:schema …> <xs:element name="company“> … </xs:element> <xs:element name="department“> … </xs:element> <xs:complexType name="employee"> … </xs:complexType> <xs:element name="name"> … </xs:element> <xs:element name="address"> … </xs:element> <xs:element name="salary"> … </xs:element>

</xs:schema>

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 44

<sequence><xs:complexType name="employee"> <xs:sequence> <xs:element ref="name" /> <xs:element ref="address" /> <xs:element ref="salary" /> </xs:sequence> </xs:complexType>

An employee element has children for name, address, and salary.

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 45

<choice><xs:element name="subunit"> <xs:complexType> <xs:choice> <xs:element name="employee" type="employee" /> <xs:element ref="department" /> </xs:choice> </xs:complexType> </xs:element>

In a variation of our preferred schema, a subunit (of a department) is either an

employee or a department.

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 46

“*” (i.e., many)<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> A company element has any number of

department elements as its children.

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 47

XSD simple types• Comparable to primitive types in a programming.

• Example:

<xs:element name="salary" type="xs:double"/>

• All attributes are of simple types.

• New simple types can be defined by: – Restriction – Union – List

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 48

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

Technological space travel

49

Source: http://www.nasa.gov/images/content/63114main_highway_med.jpg

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 50

Sesame

XMIModelwareXMLware

JavawareJDBC

Dataware

JDOM

Ontoware

JenaHibernate

EMF.genJMITeneo JAXB

JPA

Some bridges exercised by such space travel

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 51

Why is space travel a burden?

• Terminology, notation, conventions, culture

• Computational models, data models, type systems

• Concrete technologies and languages

• Accidental complexity

• …This also goes by the name

O/R/X/… impedance mismatch

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

XML data binding (aka O/X mapping)

52

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 53

X-to-O mappingX-to-O

mapping tool

XML types

OO types

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 54

O/X type mapping<element name=“point"> <complexType> <sequence> <element name="x" type=“xs:int"/> <element name="y" type="xs:int"/> </sequence> </complexType> </element>

Maps to public class Point { public int x; public int y; }

Maps to

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 55

Object model for 101system

public class Company {private String name;private List<Department> depts = new LinkedList<Department>();public String getName() { return name; }public void setName(String name) { this.name = name; }public List<Department> getDepts() { return depts; }

}

public class Department { ... }

public class Employee { ... }

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 56

XSD for 101system

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

<xs:element name="department"> ... </xs:element>

<xs:complexType name="employee"> ... </xs:complexType>

XML too

Grammar-like

OO types-like

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

XML data binding• Directions for XML data binding

• Generate classes from XML schemas.

• Generate XML schemas from classes.

• Describe mapping only without generation.

• Motivations for XML data binding

• Support valid XML output.

• Hide XML in OO programming.

• Use XML-based object serialization.

57

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 58

Demo

http://101companies.org/wiki/Contribution:jaxbComposition

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

The O/X impedance mismatch

59

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 60

How to map this element declaration?

<xs:element name="s"> <xs:complexType> <xs:sequence> <xs:element name="a" type="x"/> <xs:sequence maxOccurs="unbounded"> <xs:element name="b" type="y" maxOccurs="unbounded"/> <xs:element name="c" type="z"/> </xs:sequence> </xs:sequence> </xs:complexType> </xs:element>`

1..*

1..*

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 61

How to map “s = a:x (b:y1..* c:z)1..* ”?

Grouping of b’s and c’s is lost.

This may be Ok for read access.

This is not Ok for round-tripping.

Occurrence constraints not enforced:

Mandatory a, b, c

class s { x a; y[] b; z[] c; }

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 62

XML data binding is difficult becauseXML are parented trees whereas …

<Add>

<Add> <Const>

element

<Const><Const>

Thanks to Erik Meijer for contributing this slide or part thereof.

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 63

Objects are freewheeling graphs.

1

.Value

.right.left

.right

.left

Add

Add Const

Thanks to Erik Meijer for contributing this slide or part thereof.

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 64

Its also difficult becauseXML trees are node-labeled whereas …

element

<Add>

<Add> <IConst>1 2

Thanks to Erik Meijer for contributing this slide or part thereof.

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 65

Object graphs are edge-labeled.

1

.Value

.right.left

.right

.left

ConstAdd

<Add>

Const

Thanks to Erik Meijer for contributing this slide or part thereof.

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

Object/relational mapping „likewise“ Let’s do demos, if time permits.

66

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 67

Technology models

A technology model is a structural as well as behavioral model of a technology such that the roles of involved languages, typical artifacts of

usage, and technology application are modeled.

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

Different kinds of software models

• Data models (to be implemented in a database)

• Structural models (to be implemented in software)

• Class diagrams (to model state and relationships)

• Package diagrams (to group classes)

• Behavioral models (to be implemented in software)

• Sequence diagrams (to define specific „scenarios“)

• Activity diagrams (to define general „workflows“)

• State diagrams (to define object states and transitions)

68

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

A structural model for a metro’s turnstile

69

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

A behavioral model for a metro’s turnstile

70

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

Software models vs. technology models

• Software models

• Structure and behavior of the software system

• Technology models

• Entities related to technology usage

• Relationships between those entities

71

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

Examples of technology models

• Population of a mySQL database

• Compilation with Java’s javac compiler

• XML data binding with Java’s JAXB technology

72

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 73

Compilation with Java’s javac compilerhttp://en.wikipedia.org/wiki/Javac

Given a source file (a Java program), the compiler produces bytecode (a .class file). The bytecode could be executed directly by the JVM (Java Virtual Machine), but our technology model is not going to cover the execution aspect.

Explanation

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 74

$ ls HelloWorld.* HelloWorld.java $ more HelloWorld.java public class HelloWorld {

public static void main(String[] args) { System.out.println("Hello, World"); }

} $ javac HelloWorld.java $ ls HelloWorld.* HelloWorld.class HelloWorld.java

Compilation with Java’s javac compiler

Illustration

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

Compilation with Java’s javac compiler

• Java : Language

• JavaByteCode : Language

• Compiler < Technology

• javac : Compiler

• aJavaProgram : Artifact

• aJavaByteCodeProgram : Artifact

• aJavaProgram elementOf Java

• aJavaByteCodeProgram elementOf JavaByteCode

• compilation : Function<Java, JavaByteCode>

• javac defines compilation

• compilation(aJavaProgram) |-> aJavaByteCodeProgram

75

Model

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

Population of a MySQL database

76

https://www.mysql.com/ https://www.mysql.com/products/workbench/

Given a MySQL database, the MySQL workbench is used to populate the database. To this end, the database schema (some CREATE TABLE statements) are executed as a script, followed by another script with sample data (some INSERT statements).

Explanation

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 77

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 78

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 79

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

Population of a MySQL database

• SQL : Language

• RDBMS < Technology

• MySQL : RDBMS

• someCreateStatements : Artifact

• someInsertStatements : Artifact

• someCreateStatements elementOf SQL

• someInsertStatements elementOf SQL

• MySQL Workbench : Technology

• creation : Action

• insertion : Action

• creation precedes insertion

• creation reads someCreateStatements

• creation modifies database

• insertion reads someInsertStatements

• insertion modifies database

• MySQL Workbench executes creation

• MySQL Workbench executes insertion

80

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 81

XML data binding with Java’s JAXB technologyhttp://en.wikipedia.org/wiki/Java_Architecture_for_XML_Binding

Explanation

Source: http://docs.oracle.com/cd/E17802_01/webservices/webservices/docs/1.6/tutorial/doc/JAXBWorks2.html

© 2014 Software Languages Team, University of Koblenz-Landau

82

A technology model for JAXB(XML-data binding of the Java platform)

Part 1: Technology break-down and concepts

© 2014 Software Languages Team, University of Koblenz-Landau

83

A technology model for JAXB(XML-data binding of the Java platform)

Part 2: Type-level mapping

© 2014 Software Languages Team, University of Koblenz-Landau

84

A technology model for JAXB(XML-data binding of the Java platform)

Part 3: Instance-level

mapping

© 2014 Software Languages Team, University of Koblenz-Landau

85

A technology model for JAXB(XML-data binding of the Java platform)

Part 4: Conformance

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

Summary of technology modeling• Entities in software development

• e.g.: Java, Python, J2EE, Django, Testing, Inheritance • Entity types in software development

• e.g.: Language, Technology, Artifact, Concept • Relationships in software development

• e.g.: • HelloWorld.java elementOf Java • Django uses Python

• Relationship types in software development • e.g., „elementOf“ or „uses“

86

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

Entities in technology models

87

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

Entity types I / II

• Language — e.g., Python

• Technology — e.g., Django web framework

• Artifact

• System < Artifact — e.g., an information system

• File < Artifact — e.g., a Python script

• Fragment < Artifact — e.g., a Python function

• Function — e.g., the I/O behavior of a compiler

• Action — e.g., the execution of a script

• Concept — e.g., Composition or inheritance

88

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

Entity types II / II

• Resource < Artifact — e.g., Wikipedia pages

• Request < Artifact — e.g., the invocation of a certain service, tool, or script

• Request < Response — e.g., the response returned upon a request

• Specification < Resource — e.g., Java Language Specification

• Protocol < Resource — e.g., HTTP

• Standard < Resource — e.g., DVI

• Organization — e.g., IBM or Siemens

• People — e.g., „Joe Programmer“ (at Siemens)

• Role — e.g., Developer, Tester, or Manager

89

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

(Software) language entities• Definition:

• An artificial language used in software development

• Examples

• Programming languages: Java, Python, Ruby, …

• Query languages: XPath, SQL, XQuery, …

• Transformation languages: XSLT, SQL, ATL, …

• Modeling languages: UML, SDL, BPMN, …

90

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

More categories of software languages

• Hypertext languages (HTML)

• Markup languages (XML)

• Configuration languages

• Annotation languages

• Template languages

• …

91

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

(Software) technology entities• Definition:

• A tool (in a very general sense) used in software development

• Examples

• APIs and libraries: JDOM, JQuery, Swing, Tkinter, Twitter, …

• Frameworks: JPA, Hibernate, Spring, Django, …

• IDEs: Visual Studio, Eclipse, NetBeans, …

• Platforms: .NET, Android, J2EE, Java, JRE, …

• Language processors: javac, python, gcc, …

92

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

More categories of software technologies

• Server, e.g., Web server

• Web browser

• Plugins

• Office software

• Operating systems

• Package portals, package manager

• App stores

• …

93

We should always try to define each new entitty type as a

subtype („<) of an existing type.

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

(Software) system entities• Definition:

• A deployed, implemented, or designed software system

• Examples

• An information system for a specific startup

• A web application complementing said information system

• A web service making said system available through an API

• A smartphone app complementing said web application

94

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

(Software) artifact entities• Definition:

• A physical artifact as part of a software system

• Examples

• Files: source code, byte code, markup, …

• Directories as shallow or deep collections of files

• Packages as logical collections

95

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

(Software) fragment entities• Definition:

• A part of a software artifact

• Examples

• Classes in a Python script collecting many classes

• Methods in a class of a Python script

• A CREATE TABLE statement in SQL/DDL script

• A method call in a Python script

96

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

Source code as a nested container

97

def search(l, x): return searchInRange(l, x, 0, len(l)-1)

def searchInRange(l, x, min, max): if min>max: return False else: middle = min+(max-min)/2 if x > l[middle]: # Search in right half return searchInRange(l, x, middle+1, max) elif x < l[middle]: # Search in left half return searchInRange(l, x, min, middle-1) else: # Found in the middle return True

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

(Software) meaning entities• Definition:

• The meaning of an artifact, a technology, or a part thereof

• Examples

• Functions

• The semantics of a Python function

• The I/O behavior of a program

• The I/O behavior of a tool as part of a technology

• Actions

• The meaning of a specific method call in a program

• The meaning of a database update

98

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

(Software) concept entities• Definition:

• A concept from the broad domain of software development

• Examples

• A programming technique such as iteration or recursion

• A modeling principle such inheritance or composition

• A design pattern such as Composite or Visitor

• A classifier for software languages or technologies

• A general capability of a software system, e.g., persistence

99

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

(Software) resource entities• Definition:

• A resource for any entity above in the sense of Linked Data

• Examples

• A Wikipedia page for a software language

• A portal for a software technology

• A repository URI for a system

• A fragment locator URI for a source code fragement

• A LinkedIn URI for a developer

100

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

Relationships in technology models

101

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

Relationship types ‚part of‘

• An artifact (a file) is part of a system.

• A fragment is part of an artifact.

• A language is part of another language.

• A technology is part of another technology.

• A concept is part of a concept.

102

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

Relationship types ‚uses‘

• A system (an artifact) uses a language.

• A system (an artifact) uses a technology.

• A system (an artifact) uses a concept.

103

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

Relationship types for languages and models thereof

• An artifact is an element of a language.

• A language is a subset of another language.

• An artifact conforms to an artifact.

• An artifact defines a language.

• An artifact corresponds to another artifact.

104

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 105

Model of technology usage for .NET’s xsd.exehttp://worker.101companies.org/MegaModels/implementations/xsdClasses/

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

Relationship types for meanings & Co.

• An artifact (a fragment) defines a function.

• A technology defines a meaning.

• A technology supports a protocol.

• A technology implements a specification.

• An artifact (a fragment) implements a concept.

106

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

Relationship types for data flow & access

• An artifact is transformed into another artifact.

• A request yields a response.

• A language is the domain of a function.

• A language is the co-domain of a function.

• A function maps one artifact to another.

• An action reads an artifact.

• An action writes an artifact.

• An action modifies an artifact.

107

As a shortcut, we may use the artifact right in place of its meaning.

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

Relationship types for persons

• A person has developed a system.

• A person knows of a language.

• A person knows of a technology.

• A person knows of a concept.

108

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

Benefits of technology modeling

• Raise the level of abstraction compared to …

• file system view

• build management view

• Recognize all technologies and languages explicitly

• Understand concepts behind artifacts

• Understand relationships between artifacts

• Link model elements to artifacts or resources

109

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

An extended example: A technology model for Django

110

We use the Polls app as the running example.

Find the code here:

https://github.com/rlaemmel/mysite

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

Python Web frameworks

• Django

• web2py

• Flask

• Bottle

111

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 112112

A database

The modelThe view

Python code,

HTML, and templates

Templates for views

A low-level view on the Polls app

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

• db_sqlite3 : File • mysite : Directory

• __init__.py : File • manage.py : File • media : Directory • polls : Directory

• __init__.py : File • admin.py : File • models.py : File • tests.py : File • views.py : File

• settings.py : File • templates : Directory

• admin : Directory • polls : Directory

• detail.html : File • index.html : File • results.html : File

• urls.py : File113

Types of artifacts: How useful is that?

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 114

• db_sqlite3 : File ∈ SQLITE3-IMAGE (a language we made up) • mysite : Directory

• __init__.py : File ∈ Python • manage.py : File ∈ Python • media : Directory • polls : Directory

• __init__.py : File ∈ Python • admin.py : File ∈ Python • models.py : File ∈ Python • tests.py : File ∈ Python • views.py : File ∈ Python

• settings.py : File ∈ Python • templates : Directory

• admin : Directory • polls : Directory

• detail.html : File ∈ HTML • index.html : File ∈ HTML • results.html : File ∈ HTML

• urls.py : File ∈ Python

Languages of artifacts: How useful is that?

Is this HTML, proper?

„∈“ shortcut for „element of“

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

Issues

• What is the schema underlying the database image?

• What are the roles of the different python scripts?

• How do code and database relate to each other?

• The HTML files are not plain HTML files, actually.

• What technologies are used by the app?

115

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

Issues

• What is the schema underlying the database image?

• What are the roles of the different python scripts?

• How do code and database relate to each other?

• The HTML files are not plain HTML files, actually.

• What technologies are used by the app?

116

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

In need of new entities: request and response for DB schema

• schemaRequ : Request # for database schema

• schemaResp : Response # for database schema

• schemaRequ ∈ Bash # a shell script

• schemaResp ∈ SQL # CREATE TABLE statements

• schemaRequ yields schemaResp

117

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 118

schemaRequ : Request # for database schema

schemaResp : Response # for database schema

~ $ pwd/home/rlaemmel/mysite~ $ python manage.py sql polls

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

Issues

• What is the schema underlying the database image?

• What are the roles of the different python scripts?

• How do code and database relate to each other?

• The HTML files are not plain HTML files, actually.

• What technologies are used by the app?

119

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

Concepts behind the many Python scripts

120

• mysite• __init__.py implements initialization • manage.py implements administration • polls

• __init__.py implements initialization • admin.py implements view • models.py implements model • tests.py implements testing • views.py implements view

• settings.py implements configuration• urls.py implements router

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

Concepts

• Model: the data / business logics part MVC

• View: the user interface part of MVC

• Router: a variation of a controller (part of MVC)

• Configuration: configuration of a component or a system

• Initialization: initialization of a component or a system

• Administration: administration of a system

• Testing: test of an artifact or a system

121

MVC = Model View Controller

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

The model

122

Don’t bother about details: these are Python (Django) classes for the

business data of the Polls app.

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

The view for „end users“

123

Don’t bother about details, but a typical view loads or saves

data, and renders data as HTML via a template.

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

The view for „admins“ according to Django

124

These views are standardized by Django: they allow us to do basic

data management for polls and choices.

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

The router (map URLs to views)

125

Regular expression for URLs with parameters

Python function for a particular view

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

Issues

• What is the schema underlying the database image?

• What are the roles of the different python scripts?

• How do code and database relate to each other?

• The HTML files are not plain HTML files, actually.

• What technologies are used by the app?

126

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

In need of new entities: request and response for DB synchronization

• syncRequ : Request # for database sync

• syncResp : Response # for database sync

• syncRequ ∈ Bash # a shell script

• syncResp ∈ Text # verbose log

• syncRequ yields syncResp

127

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org 128

syncRequ : Request # for database sync

syncResp : Response # for database sync

~ $ pwd/home/rlaemmel/mysite~ $ python manage.py syncdb

Creating tables ... Creating table auth_permission … Creating table django_admin_log Creating table polls_poll Creating table polls_choice

You just installed Django's auth system, which means you don't have any superusers defined. Would you like to create one now? (yes/no): yes Username (Leave blank to use 'rlaemmel'): rlaemmel … Superuser created successfully. Installing custom SQL ... Installing indexes ... No fixtures found.

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

How do code and database relate to each other?

129

Relationships: • syncRequ reads mysite/polls/models.py • syncRequ reads db.sqlite3 • syncRequ modifies db.sqlite3 • schemaResp corresponds to mysite/polls/models.py

CREATE TABLE "polls_poll" ( … ) ; CREATE TABLE "polls_choice" ( … )

schemaResp:class Poll(models.Model): ...

class Choice(models.Model): …

mysite/polls/models.py:

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

A hidden language for administration

• Remember

• python manage.py sql polls

• python manage.py syncdb

• There exist more such administrative commands.

• We designate a language DjangoAdmin ⊂ Bash.

130

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

Issues

• What is the schema underlying the database image?

• What are the roles of the different python scripts?

• How do code and database relate to each other?

• The HTML files are not plain HTML files, actually.

• What technologies are used by the app?

131

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

The template for the index view

132

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

The template for the detail view

133

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

The template for the results view

134

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

A language for templates

• We designate a language DjangoTempl ⊃ HTML.

• Extra constructs:

• Python expressions {{ … }} evaluating to HMTL

• Loops over Python data to return HTML

135

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

Issues

• What is the schema underlying the database image?

• What are the roles of the different python scripts?

• How do code and database relate to each other?

• The HTML files are not plain HTML files, actually.

• What technologies are used by the app?

136

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

Referenced python modules

• webapp uses django.db is part of Django and implements database access

• webapp uses django.test is part of Django and implements testing

• webapp uses django.template is part of Django and implements DjangoTempl

• webapp uses django.http is part of Django and supports (the) HTTP (protocol)

• webapp uses django.…

• webapp uses datetime is part of PythonRuntime

• webapp uses os is part of PythonRuntime

137

© 2014-2015, Ralf Lämmel, rlaemmel@acm.org

The End

138