<<

The ―Theory‖ and Practice of Modeling Language Design (for Model-Based ) Bran Selić Malina Software Corp. Zeligsoft (2009) Ltd. Simula Research Labs, Norway University of Toronto, Carleton University [email protected] © Copyright Malina Software A Programming Language Sample

SC_MODULE(producer) SC_CTOR(consumer) { { sc_outmaster out1; SC_SLAVE(accumulate, in1); sc_in start; // kick-start sum = 0; // initialize }; void generate_data () SC_MODULE(top) // container { { for(int i =0; i <10; i++) { producer *A1; out1 =i ; //to invoke slave;} consumer *B1; } sc_link_mp link1; SC_CTOR(producer) SC_CTOR(top) { { SC_METHOD(generate_data); A1 = new producer(“A1”); sensitive << start;}}; A1.out1(link1); SC_MODULE(consumer) B1 = new consumer(“B1”); { B1.in1(link1);}}; sc_inslave in1; int sum; // state variable void accumulate (){ sum += in1; }

2 © Copyright Malina Software …and its Model

«sc_method» «sc_link_mp» «sc_slave» A1:producer link1 B1:consumer start out1 in1

3 © Copyright Malina Software Spot the Difference…

SC_MODULE(producer) SC_CTOR(consumer) { { sc_outmaster out1; SC_SLAVE(accumulate, in1); sc_in start; // kick-start sum = 0; // initialize }; void generate_data () SC_MODULE(top) // container { { for(int i =0; i <10; i++) { producer *A1; out1 =i ; //to invoke slave;} consumer *B1; } sc_link_mp link1; SC_CTOR(producer) SC_CTOR(top) { { SC_METHOD(generate_data); A1 = new producer(“A1”); sensitive << start;}}; A1.out1(link1); SC_MODULE(consumer) B1 = new consumer(“B1”); { B1.in1(link1);}}; sc_inslave in1; int sum; // state variable void accumulate (){ sum += in1; «sc_link_mp» } «sc_method» «sc_slave» A1:producer B1:consumer start out1 link1 in1

4 © Copyright Malina Software Tutorial Outline

 Models: What and Why

 Modeling Language Design

 Modeling Language Specification

 Model Transformations

 Summary

5 © Copyright Malina Software Why is Software so Problematic?

 COMPLEXITY! . The machines we construct with computer software are often required to realize complex functionality . ...and it has to interact with a physically complex world (including the hardware that runs it)  A useful distinction to keep in mind:  Essential complexity . Immanent to the problem  Cannot be eliminated by technology or method  Accidental complexity . Usually due to technology or methods used . This is the one we can fix

6 © Copyright Malina Software Coping with Complexity  ABSTRACTION: Selective reduction of information of a system which preserves its salient properties relative to a given of concerns . Often, our only coping mechanism

SYSTEM

7 © Copyright Malina Software Models = Outcomes of Abstraction

 A model is a set of ―statements‖ about a system under study [Seidewitz]*  Involves three core elements:

Interpretation (Abstraction)

System under study Model(s)

* E. Seidewitz, “What models mean”, IEEE Software, Sept./Oct. 2003 8 © Copyright Malina Software Engineering Models

 ENGINEERING MODEL: A selective representation of some system that captures accurately and concisely all of its essential properties of interest for a given set of concerns • We don‘t see everything at once • What we do see is adjusted to human understanding

9 © Copyright Malina Software Why Do Engineers Build Models?

 To understand . ...problems and solutions . Knowledge acquisition  To communicate . ...understanding and design intent . Knowledge transfer  To predict . ...the interesting characteristics of system under study . Models as surrogates  To specify . ...the implementation of the system . Models as ―blueprints‖

10 © Copyright Malina Software Types of Engineering Models

 Descriptive: models for understanding, communicating, and predicting . E.g., scale models, mathematical models, qualitative models, documents, etc. . Tend to be highly abstract (detail removed)  Prescriptive: models as specifications . E.g., architectural blueprints, circuit schematics, state machines, pseudocode, etc. . Tend to be detailed so that the specification can be implemented

Q: Is it useful to have models that can serve both kinds of purposes?

11 © Copyright Malina Software Characteristics of Useful Engineering Models

 Purposeful: . Constructed to address a specific set of concerns/audience  Abstract . Emphasize important aspects while removing irrelevant ones  Understandable . Expressed in a form that is readily understood by observers  Accurate . Faithfully represents the modeled system  Predictive . Can be used to answer questions about the modeled system  Cost effective . Should be much cheaper and faster to construct than actual system To be useful, engineering models must satisfy at least these characteristics!

12 © Copyright Malina Software Modeling Software

13 © Copyright Malina Software What‘s a Software Model?

 SOFTWARE MODEL: An engineering model of a software system from one or more viewpoints specified using one or more modeling languages . E.g.:

left:B right:B

B m1

0..* 0..* m2 A B «import» m3 0..1 a : A 0..* C m4 left:B right:B c : C

Structural Execution (design-time) (run-time) view view

18 © Copyright Malina Software Classical SW Modeling: SA/SD

PH reached X start

Monitor Control Current PH PH PH

stop Raise PH Q: What does this Input valve ―bubble‖ really mean? control Q: How is it implemented in code? ―…bubbles and arrows, as opposed to programs, …never crash‖ Modeling languages -- B. Meyer have yet to ―UML: The Positive Spin‖ recover from this American Programmer, 1997 ―debacle‖

19 © Copyright Malina Software ―Classical‖ Modeling Languages

 Flow charts, SA/SD, 90‘s OO notations (Booch, OMT, OOSE, UML 1)  Most of them were intended exclusively for constructing descriptive models . Informal ―sketching‖ [M. Fowler]* . No perceived need for precision . Languages are ambiguous and open to interpretation  source of undetected miscommunication

*http://martinfowler.com/bliki/UmlAsSketch.html

21 © Copyright Malina Software New Generation of Modeling Languages

 Formal languages designed for modeling  Support for both descriptive and prescriptive models . ...sometimes in the same language  Key objectives: . Well-understood and precise semantic foundations . Can be formally (i.e., mathematically) analyzed (qualitative and quantitative analyses) . And yet, can still be used informally (―sketching‖) if desired

22 © Copyright Malina Software Modeling vs Programming Languages

 The primary purpose and focus of programming languages is implementation . The ultimate form of prescription  Implementation requires total precision and ―full‖ detail  Takes precedence over description requirements  To be useful, a modeling language must support description . I.e., communication, prediction, and understanding . These generally require omission of ―irrelevant‖ detail such as details of the underlying computing technology used to implement the software

23 © Copyright Malina Software Computer Languages

 Much of the evolution of computer languages is motivated by the need to be more human-centric Degree of Application (computing specific technology) abstraction

Modeling languages

Classical (3G) programming languages Can we do the same here ? Computing Assemblers (2G), technology machine specific languages (1G) filled detail Implementation level

24 © Copyright Malina Software Components of a Modeling Language

 The definition of a modeling language consists of:

. Set of language concepts/constructs (―ontology‖)

• e.g., Account, Customer, Class, Association, Attribute, Package . Rules for combining language concepts (well-formedness

rules)

SYNTAX ABSTRACT • e.g., ―each end of an association must be connected to a class‖ . CONCRETE SYNTAX (notation/representation) • e.g., keywords, graphical symbols for concepts • Mapping to abstract syntax concepts . SEMANTICS: the meaning of the language concepts • Comprises: Semantic Domain and Semantic Mapping (concepts to domain)

25 © Copyright Malina Software Elements of a Modeling Language

Modeling Language

0..1

0..* 1 Concrete Semantics Syntax Mapping Mapping 1 0..* 1..* 0..* 1 Concrete Abstract 0..* 1..* Semantics Syntax Syntax Domain

Semantics

26 © Copyright Malina Software Model-Based Engineering (MBE)

 An approach to system and in which software models play an indispensable role  Based on two time-proven ideas:

(1) ABSTRACTION (2) AUTOMATION

S1 e3/action3 S1 e3/action3

S3 S3 Realm of Realm of e1/action1 e1/action1 modeling e2/action2 e2/action2 tools languages S2 S2

switch (state) { switch (state) { case„1:action1; case„1:action1; newState(„2‟); newState(„2‟); break; break; case„2:action2; case„2:action2; newState(„3‟); newState(„3‟); break; break; case‟3:action3; case‟3:action3; newState(„1‟); newState(„1‟); break;} break;}

27 © Copyright Malina Software Model-Driven Architecture (MDA)™

 In recognition of the increasing importance of MBE, the Object Management Group (OMG) is developing a set of supporting industry standards

(1) ABSTRACTION (2) AUTOMATION

(3) INDUSTRY STANDARDS • UML 2 • OCL • MOF • SysML http://www.omg.org/mda/ • SPEM • …etc.

28 © Copyright Malina Software Tutorial Outline

 Models: What and Why

 Modeling Language Design

 Modeling Language Specification

 Model Transformations

 Summary

29 © Copyright Malina Software Primary Language Design Concerns

 Who are the primary end users? . Authors / readers? (i.e., primary use cases)  What of models do they want? . Descriptive, prescriptive, or both?  What is the domain? . What is the application domain and what are its salient technical characteristics?

30 © Copyright Malina Software Sidebar: Feature Diagram Essentials

Mutually exclusive alternatives (exclusive or) Feature or concept PC Purchase Mandatory Configuration sub-feature Optional sub-feature

1 GB 3 GB Windows 7 Linux Extras RAM RAM OS OS

Inclusive-or alternatives (but, at least 1) DVD Display Printer drive Screen

31 © Copyright Malina Software Key Language Design Choices

Modeling Language Features

Scope Specification

Abstraction Extension Range

Concrete Precision Syntax Level Model Model of Type Computation

Some choices are inter-dependent

32 © Copyright Malina Software Selecting Language Scope

 A common opinion: ―Surely it is better to design a small language that is highly expressive, because it focuses on a specific narrow domain, as opposed to a large and cumbersome language that is not well-suited to any domain?‖  Which suggests:

Scope

But, this may be an Domain- General Specific Purpose oversimplification

33 © Copyright Malina Software Scope: How General/Specific?

 Generality often comes at the expense of expressiveness . Expressiveness: the ability to specify concisely yet accurately a desired system or property . Example: • UML does not have a concept that specifies devices (e.g. semaphore)  to represent such a concept in our model, we would need to combine a number of general UML concepts in a particular way (e.g., classes, constraints, interactions) . ...which may(?) be precise, but not very concise  It also comes at the cost of detail that is necessary to: . Execute models . Generate complete implementations

34 © Copyright Malina Software Specialization: Inevitable Trend

 Constant branching of application domains into ever- more specialized sub-domains . As our knowledge and experience increase, domain concepts become more and more refined • E.g., simple concept of computer memory → ROM, RAM, DRAM, cache, virtual memory, persistent memory, etc.  One of the core principles of MBE is raising the level of abstraction of specifications to move them closer to the problem domain

• This seems to imply that domain-specific languages are invariably the preferred solution • But, there are some serious hurdles here...

35 © Copyright Malina Software The Case of Programming Languages

 Literally hundreds of domain-specific programming languages have been defined over the past 50 years . Fortran: for scientific applications . COBOL for ―data processing‖ applications . Lisp for AI applications . etc.  Some relevant trends . Many of the original languages are still around . More often than not, highly-specialized domains still tend to use general-purpose languages with specialized domain-specific program libraries and frameworks instead of domain-specific programming languages . In fact, the trend towards defining new domain-specific programming languages seems to be diminishing  Why is this happening?

36 © Copyright Malina Software Success* Criteria for a Language (1)

 Technical validity: absence of major design flaws and constraints . Ease of writing correct programs  Expressiveness  Simplicity: absence of gratuitous/accidental complexity . Ease of learning  Run-time efficiency: speed and (memory) space  Familiarity: proximity to widely-available skills . E.g., syntax

* ―Success‖  language is adopted by a substantive development community and used with good effect for real-world applications

37 © Copyright Malina Software Success Criteria for a Language (2)

 Language Support & Infrastructure: . Availability of necessary tooling . Effectiveness of tools (reliability, quality, usability, customizability, interworking ability) . Availability of skilled practitioners . Availability of teaching material and training courses . Availability of program libraries . Capacity for evolution and maintenance (e.g., standardization)

38 © Copyright Malina Software Sidebar: Basic Tooling Capabilities

 Essential  Useful (to Essential) . Model Authoring . Code generation . Model validation . Model simulation/debug/trace (syntax, semantics) . Model transformation . Model export/import . Model review/inspection . Document generation . Collaborative . Version management development support . Model compare/merge . Language customization support . Test generation . Test execution . Traceability

39 © Copyright Malina Software Language Size

 How complex (simple) should a language be to make it effective?

limited expressive simple complex

Turing C Java PL/I C++ Java + machine Basic Java libs + language Java-based frameworks . The art of computer language design lies in finding the right balance between expressiveness and simplicity – Need to minimize accidental complexity while recognizing and respecting essential complexity – Small languages solve small problems – No successful language has ever gotten smaller

40 © Copyright Malina Software Practical Issues of Scope

 Practical systems often involve multiple heterogeneous domains . Each with its own ontology and semantic and dedicated specialists  Example: a telecom network node system . Basic bandwidth management . Equipment and resource management . Routing . Operations, administration, and systems management . Accounting (customer resource usage) . Computing platform (OS, supporting services)

41 © Copyright Malina Software The Fragmentation Problem  FRAGMENTATION PROBLEM: combining overlapping independently specified domain-specific subsystems, specified using different DSLs, into a coherent and consistent whole (i.e., single implementation)

Network Node Call Processing System

Comm. Channel Resource Mgmt. System Bandwidth Mgmt. System

Sadly, there are no generic composition (weaving) rules – each case has to be handled individually

42 © Copyright Malina Software Approach to Dealing with Fragmentation

 Having a common syntactic and semantic foundations for the different DSLs seems as if it should facilitate specifying the formal interdependencies between different DSMLs

DSL1 Class Library DSL2 Class Library . . .etc. DSL1 Refinements DSL2 Refinements

Common Abstract Syntax and Semantic Foundation

 NB: Same divide and conquer approach can be used to modularize complex languages  Core language base + independent sub-languages (e.g., UML)

43 © Copyright Malina Software Selecting An Abstraction Range

Modeling Language Features

Scope Specification

Extension

Concrete Precision Syntax Abstraction Level Model Model of Range Type Computation

Executable

 This decomposes into two separate questions: . What is a suitable level of abstraction of the language? . How much (implementation-level) detail should the language concepts include?  The answers depend on other design choices

44 © Copyright Malina Software Abstraction Range of Computer Languages

Normally determined by How far up the type and level of do we go? description desired Application domain specific

Modeling language concepts

Normally determined by How much the type and level of detail do we prescription desired provide? Computing technology specific

45 © Copyright Malina Software Selecting a Precision Level

Modeling Language Features

Scope Specification

Abstraction Extension Range

Concrete Syntax Model Model of Precision Type Computation Level

Informal Formal

Ad Hoc Codified Precise Executable Implementation

46 © Copyright Malina Software Formality

 Based on a well understood mathematical theory with existing analysis tools . E.g., automata theory, abstract state machines, Petri nets, temporal logic, calculi, queueing theory, Horne clause logic . NB: precise does not necessarily mean detailed  Formality provides a foundation for automated validation of models . Model checking (symbolic execution) . Theorem proving . However, the value of these is constrained due to scalability issues (―the curse of dimensionality‖)  It can also help validate the language definition  But, it often comes at the expense of expressiveness . Only phenomena recognized by the formalism can be expressed accurately

47 © Copyright Malina Software Precision vs. Detail

 A specification can be precise but still leave out detail: . E.g., we can identify a set very precisely without necessarily specifying the details associated with its members

Adults We state very precisely as to what Karl constitutes the set of Adults of some Bob population (age  21) Jill without being specific Fred about details such as names or genders of its members Alice Peggy back

48 © Copyright Malina Software Ad Hoc ―Languages‖

 Mostly notations created for specific cases (not intended for reuse)  Used exclusively for descriptive purposes  No systematic and comprehensive specification of syntax or semantics . Appeal to intuition Caster Poster Memory Messages CStack Manager Sockets BStack

Services Layer

File Print Log

RUF Core

49 © Copyright Malina Software Codified Languages

 Example: UML 1.x, OMT, SysML, ...  Characteristics: . Defined: An application-independent language specification exists . Some aspects of the language are fully defined (usually: concrete syntax, semantics) . Semantics usually based on natural language and other informal specification methods . Designed primarily for descriptive modeling . But, may also be used partly for specification (e.g., partial code generation/code skeletons)

50 © Copyright Malina Software Precise Languages

 Examples: Object Constraint Language (OCL), Layered Queueing Networks (LQN)  Fully defined semantics (domain and mapping)  High level of abstraction but typically cover relatively small range . I.e., lacking detail for execution or implementation . Often declarative  Mostly designed for prescription (e.g., prediction and analysis), but may also be used for specification

51 © Copyright Malina Software Executable Languages

 ―Models that are not executable are like cars without engines‖, [D. Harel]  Examples: Modelica, Matlab  A subcategory of precise languages covering a range that includes sufficient detail for creating executable models . But, may be missing detail required for automatic generation of implementations . Often based on operational semantics that may not be easily analyzed by (due to scalability issues)  Rationale: . Enables early detection of design flaws . Helps develop engineering intuition and confidence

52 © Copyright Malina Software How We Can Learn From Models ?

. By inspection X = cos (h + p/2) X = cos+ x*5 (h + p/2) + x*5 – mental execution – unreliable ?

. By execution X = cos (h + p/2) X =+ cos x*5 (h + p/2) – more reliable than inspection + x*5 – direct experience/insight

. By formal analysis ? – reliable (provided the models X = cos (h + p/2) X =+ cos x*5 (h + p/2) are accurate) + x*5 – formal methods do not scale very well

53 © Copyright Malina Software Executable Modeling Tool Requirements

 Ability to execute a model on a computer and observe its behavior . With possible human intervention when necessary  Key capabilities . Controllability: ability to start/stop/slow down/speed up/drive execution . Observability: ability to view execution and state in model (source) form . Partial model execution: ability to execute abstract and incomplete models

54 © Copyright Malina Software Implementation (Modeling) Languages

 Computer languages that: . Provide concepts at high levels of abstraction suitable for descriptive purposes, and also . Include detailed-level concepts such that the models can provide efficient implementations through either automatic code generation or interpretation  Examples: UML-RT, Rhapsody UML, etc.

55 © Copyright Malina Software Language Abstraction Levels

Degree of Application (computing specific technology) abstraction

Modeling languages

Classical (3G) programming languages

Computing Assemblers (2G), technology machine Compiler specific languages (1G) filled detail Implementation level

56 © Copyright Malina Software Full Range Modeling Languages

 A number of ―descriptive‖ modeling languages have evolved into fully-fledged implementation languages Degree of Application (computing specific technology) abstraction

Modeling e.g., UML Action languages Language Classical (3G) programming languages Action languages

Assemblers (2G), Computing Compiler Translator technology machine filled detail specific languages (1G) filled detail Implementation level

57 © Copyright Malina Software Precision Level Categories

 A more refined categorization based on degree of ―formality‖ . Precision of definition, internal consistency, completeness, level of detail covered

Category Characteristics Primary Purpose Defined, formal, consistent, Prediction, IMPLEMENTATION complete, detailed Implementation Defined, formal, consistent, Analysis, EXECUTABLE complete Prediction Analysis, PRECISE Defined, formal, consistent Prediction Documentation, CODIFIED Defined, informal Analysis Documentation, AD HOC Undefined, informal Analysis (no reuse)

58 © Copyright Malina Software Modern MBSE Development Style

 Models can be refined continuously until the application is fully specified  in the extreme case the model can become the system that it was modeling!

void generate () {for (int i=0; i<10; «sc_method» producer i++) producer {out1 = i;}} start out1

NotStarted producer start /generate ( )

NotStarted Started refine start St1 St2 Started

59 © Copyright Malina Software But, if the Model is the System...

 ...are we not losing the key abstraction characteristic of models?

• The computer offers a void generate () uniquely producer {for (int i=0; i<10; capable abstraction i++) device: {out1 = i;}} Software can be represented NotStarted from any desired viewpoint and at Model start /generate ( ) any desired level of Xform abstraction Started The abstraction resides within the model and can be St1 St2 extracted automatically

60 © Copyright Malina Software The Unique Nature of Software

 Software is a unique in that a program and its model share the same medium – the computer  The two can be formally linked to each other  This formal linkage can be realized by automated transformations implemented on a computer

61 © Copyright Malina Software A Unique Feature of Software

Software has the unique property that it allows us to directly evolve models into implementations without fundamental discontinuities in the expertise, tools, or methods!  High probability that key design decisions will be preserved in the implementation and that the results of prior analyses will be valid

62 © Copyright Malina Software Automatic Code Generation

 A form of model transformation (model to text) . To a lower level of abstraction  State of the art: . All development done via the model (i.e., no modifications of generated code) . Size: Systems equivalent to ~ 10 MLoC . Scalability: teams involving hundreds of developers . Performance: within ±5-15% of equivalent manually coded system

63 © Copyright Malina Software Major Telecom Equipment Manufacturer

 MBE technologies used . UML, Rational Technical Developer, RUP  Example 1: Radio Base Station . 2 Million lines of C++ code (87% generated by tools) . 150 developers  Example 2: Network Controller . 4.5 Million lines of C++ code (80% generated by tools) . 200 developers Benefits

80% fewer bugs 30% productivity increase

64 © Copyright Malina Software Styles of MBE

Levels of Abstraction Automation Code Round Trip Code only Model-centric Model only Visualization Engineering Model Model Model Model

visualize synchronize generate

Code Code Code Code

“What’s a “The code is “Manage “The model is “Who cares model?” the model” code and the code” about the model” code?”

Time

67 © Copyright Malina Software Roundtrip Engineering

Implementation transformation

Reverse engineering

NB: Slide idea borrowed from an itemis AG presentation 68 © Copyright Malina Software State of the Practice

Levels of Abstraction Automation Code Round Trip Code only Model-centric Model only Visualization Engineering Model Model Model Model Predominant State of the Practice visualize synchronize generate State of the Code Code Code Code Art

“What’s a “The code is “Manage “The model is “Who cares model?” the model” code and the code” about the model” code?”

Time

69 © Copyright Malina Software Selecting a Model Type

Modeling Language Features

With the Specification appropriate choice Scope of Abstraction Abstraction Extension Range and Range Precision Level in Concrete combination with Precision Syntax Level Model of suitable model Computation transforms, it is possible to define languages that Model Type support both types of models

Descriptive Prescriptive

70 © Copyright Malina Software Pragmatics: Multiple Models Needed

 In reality, it is generally not practical to have a single model that covers all possible levels of abstraction  But, it is possible to formally (i.e., electronically) couple different models via persistent model transforms

NB: The same language a' b' and tools are used for both models m'

Abstract Model

a1 a2 c1 c2 b2 b1

m1 m2 m3 m4 m6 m5

Detailed Model

71 © Copyright Malina Software Selecting a Model of Computation

Modeling Language Features

Scope Specification

Abstraction Extension Range

Concrete Precision Syntax Level Model Type

Model of Computation

 Model of Computation: A conceptual framework (paradigm) used to specify how a (software) system realizes its prescribed functionality . Where and how does behavior (i.e., computation) occur . Derived usually from domain semantics

72 © Copyright Malina Software Key Dimensions of MoC

 Involves a number of inter-related decisions

Model of Computation

Computational Semantic Paradigm Domain Concurrency Distribution Paradigm Paradigm

Causality Interaction Paradigm Paradigm

73 © Copyright Malina Software Selecting a Computational Paradigm

Model of Computation

Computational Semantic Paradigm Domain Concurrency Distribution Paradigm Paradigm

Causality Interaction Object Flow Paradigm Paradigm Oriented Based

ControlFlow DataFlow Based Based

74 © Copyright Malina Software Other MoC Dimensions

 Concurrency paradigm: does computation occur sequentially (single ) or in parallel (multiple threads)?  Causality paradigm: what causes behavior . event driven, control driven, data driven (functional), time driven, logic driven, etc.  Execution paradigm: nature of behavior execution . Synchronous (discrete), asynchronous, mixed (LSGA)  Interaction paradigm: how do computational entities interact . synchronous, asynchronous, mixed  Distribution paradigm: does computation occur in a single site or multiple? . Multisite ( concurrent execution) vs. single site . If multisite: Coordinated or uncoordinated (e.g., time model, failure model)?

NB: These choices require a deep understanding of computing technology and cannot be made easily by non-experts

75 © Copyright Malina Software Semantics

 The meaning of language concepts  Specified by relating them to concepts of a ―well- understood‖ different domain . E.g.,

A class describes a set of objects UML that share the Shared Class human (concept) same specifications of knowledge features, constraints, and semantics

Semantic Mapping Semantic Domain

76 © Copyright Malina Software ―Formal‖ Semantics

 The mapping and the domain are defined using precisely defined domains and mappings . Formal mathematical frameworks (e.g., first-order logic, abstract state machines, process algebras, IO streams, etc.) or . Executable computer languages (e.g., Java, Prolog) • Which may themselves have a formal semantics definition  Example: . Base UML (bUML) is defined in terms of mappings to the Process Specification Language (PSL), which is itself based on situational calculus and first order logic . Foundational UML (fUML) is defined operationally as a bUML program

77 © Copyright Malina Software Selecting a Semantics Domain

 Avoid sophisticated mathematical formalisms . Difficult to understand and verify (unless suitable tools are available) . Operational methods are generally preferred in practice  Choose a domain with existing tool support . Enables verification of the semantics specification itself . Enables verification/prediction of model properties . Examples: • Abstract state machines • Temporal Logic of Actions • Process Specification Language

78 © Copyright Malina Software Pragmatics: Multiple (Nested) MoCs  Some modeling languages use a void generate () combination of {for (int i=0; i<10; producer i++) MoCs (e.g., UML) {out1 = i;}}

NotStarted Control-flow start /generate ( ) driven MoC «sc_method» producer Started start out1

St1 St2

Distributed MoC

Event-driven concurrent MoC

79 © Copyright Malina Software Selecting a Concrete Syntax

Modeling Language Features

Scope Specification

Abstraction Extension Range

Precision Level Model Model of Type Computation Concrete Syntax

Surface Interchange Syntax Syntax

80 © Copyright Malina Software State of the Art

―Very little is documented about why particular graphical conventions are used. Texts generally state what a particular symbol means without giving any rationale for the choice of symbols or saying why the symbol chosen is to be preferred to those already available. The reasons for choosing graphical conventions are generally shrouded in mystery.‖ [S. Hitchman]*

* S. Hitchman, “The Details of Conceptual Modeling Notations are Important – A Comparison of Relationship Normative Language”, Comms. of the AIS, 9, 2002.

81 © Copyright Malina Software Concrete Syntax Design

 Two main forms: . For computer-to-computer interchange (e.g., XMI) . For human consumption – ―surface‖ syntax  Designing a good surface syntax is the area that we understand least . If a primary purpose of models is communication and understanding, what syntactical forms should we use for a given language? . D. Moody, ―The ‗Physics‘ of Notations: Toward a Scientific Basis for Constructing Visual Notations in Software Engineering‖, IEE Transactions on Software Engineering, vol. 35, no.6, Nov./Dec. 2009  Requires multi-disciplinary skills . Domain knowledge . Computer language design . Cognitive science . Psychology . Cultural Anthropology . Graphic design . Computer graphics

82 © Copyright Malina Software A Couple of Thoughts on Graphics

 ―Whenever someone draws a picture to explain a program, it is a sign that something is not understood.‖ – E. Dijkstra*  ―Yes, a picture is what you draw when you are trying to understand something or trying to help someone understand.‖ – W. Bartussek*

* Quoted in D.L. Parnas, “Precisely Annotated Hierarchical Pictures of Programs”, McMaster U. Tech Report, 1998.

83 © Copyright Malina Software Text vs. Graphics: Example

State: Off, On, Starting, Stopping; Initial: Off; Transition: {source: Off; target: Starting; trigger: start; stopped Off action: a1();} Transition: {source: Starting; target: On; start/a1() trigger: started;} Stopping Starting Transition: {source: On: stop/a2() target: Stopping; trigger: stop; action: a2();} Transition: On started {source: Stopping; target: Off; trigger: stopped;}

84 © Copyright Malina Software Surface Syntax

 Textual forms . Same as for programming languages: linear sequence of symbols . Usually specified as a type of BNF with terminals; e.g.: Surface ::= „ADD‟ <[arguments-list]> Syntax ::= „(„  Tabular forms . Constrained 2-dimensional Graphical Textual . E.g., spreadsheets, Parnas tables  Graphical forms Tabular . More complex: unconstrained 2-dimensional • Actually 2.5 dimensional – concept of Z-dimensions (overlapping graphics) . More flexible: user can choose which parts of the model to represent and how! • E.g., shape, line/fill styles, x-y position, size, font, etc.

DepositFunds vs. DepositFunds

85 © Copyright Malina Software Guidelines for Effective Visual Design

Different visual 1:1 correspondence dialects for between concepts different and symbols audiences 1. Semiotic Different concepts Clarity should have different symbols 2. Perceptual 6. Cognitive fit Discriminability

Cognitive Symbols should Effectiveness suggest meaning

5. Graphic 3. Perceptual Parsimony Immediacy

4. Visual Number of different Expressiveness graphical conventions Use full range should be cognitevly of visual managable variables * D. Moody and J.v.Hillegersberg, “Evaluating the Visual Syntax of UML: An Analysis of the Cognitive Effectiveness of the UML Suite of Diagrams”, 86 © Copyright Malina Software Extending an Existing Language?

Modeling Language Features

Scope Specification

Abstraction Range

Concrete Precision Syntax Level Model Model of Extension Type Computation

Define Extend

Refine

87 © Copyright Malina Software Approaches to DSML Design

1. Define a completely new language from scratch 2. Extend an existing language: add new domain- specific concepts to an existing (base) language 3. Refine an existing language: specialize the concepts of a more general existing (base) language

88 © Copyright Malina Software Refinement vs Extension

 Semantic space = the set of all valid programs that can be specified with a given computer language  Refinement: subsets the semantic space of the base language (e.g., UML profile mechanism) . Enables reuse of base-language infrastructure  Extension: intersects the semantic space of the base language

Base Language Space

Extension Refinement

89 © Copyright Malina Software Comparison of Approaches

Expressive Ease of Infrastructure Multimodel Approach Power Lang.Design Reuse Integration New Language High Low Low Low Extension Medium Medium Medium Medium Refinement Low High High High

90 © Copyright Malina Software Define, Refine, or Extend?

 Depends on the problem at hand . Is there significant semantic similarity between the base language metamodel and the new language metamodel? • Does every new language concept represent a semantic specialization of some base language concept? • No semantic or syntactic conflicts? . Is language design expertise available? . Is domain expertise available? . Cost of establishing and maintaining a language infrastructure? . Need to integrate models with models based on other DSMLs?  The ability to reuse the infrastructure of a language has often led to refinement or extension as the preferred choice . Not necessarily optimal from a purely technical viewpoint . E.g., Z.109 (SDL profile of UML), SysML4Modelica (SysML profile), SystemC (UML profile), AADL (UML profile), MoDAF/DoDAF (UML profile)…

91 © Copyright Malina Software Selecting a Language Specification Method

Modeling Language Features

Scope Specification

Abstraction Extension Range

Concrete Precision Syntax Level Model Model of Type Computation

 What methods should be used to specify a modeling language?

92 © Copyright Malina Software Summary: Modeling Language Design

 Modeling language design is still much more of an art than a science . Few reference texts; no consensus  Doing it well requires a rare combination of skills: . Understanding of modeling technologies, computer language technologies, domain knowledge, and even non-technical knowledge such as cognitive psychology . Many complex technical and non-technical design choices and tradeoffs need to be made  DSMLs are an important and inevitable trend, but the often advertised notion of ―end-user language design‖ is far from practical reality

93 © Copyright Malina Software Tutorial Outline

 Models: What and Why

 Modeling Language Design

 Modeling Language Specification

 Model Transformations

 Summary

94 © Copyright Malina Software Elements of a Modeling Language

Modeling Language

0..1

0..* 1 Concrete Semantics Syntax Mapping Mapping 1 0..* 1..* 0..* 1 Concrete Abstract 0..* 1..* Semantics Syntax Syntax Domain

Semantics

95 © Copyright Malina Software Tutorial Outline

 Models: What and Why

 Modeling Language Design

 Modeling Language Specification

. Specifying Abstract Syntax . Specifying Concrete Syntax . Specifying Semantics . Case Study: UML

 Model Transformations

 Summary

96 © Copyright Malina Software Data and Metadata

Legend:

Line A Line B

Line C Line D

The metadata

The data

97 © Copyright Malina Software Metamodeling Approaches

 Abstract syntax specified by a model using a domain-specific modeling language . i.e., a language for defining abstract syntaxes . Metamodeling language  Notable metamodeling languages . OMG‘s Facility (MOF) . Eclipse‘s Eclipse Modeling Framework (EMF) . Xactium‘s XMF

98 © Copyright Malina Software Metamodels vs. Other Specification Styles

 Models explicitly capture potentially intricate relationships between the elements of a model . Models map naturally to graphs  BNF specifications are tuned to linear text-based syntactical forms . Typically parsed into ―abstract syntax trees‖ (ASTs) that obscure some relationships  need to rely on element identifiers to reconstitute them  Equivalent constraints apply to XML-based approaches . Still, XML is typically used to interchange model specs . Generated from models as a linear representation

99 © Copyright Malina Software The OMG‘s 4-Layer ―Architecture‖

01011 <2 tons> 01011 01011 Real Objects <5 tons> (computer memory, (M0) run-time environment)

«representedBy» «representedBy» «representedBy»

Customer CustomerOrder Model (M1) id item (model repository) quantity

«specifiedBy» «specifiedBy» (M2 = UML, Class Association . . . Meta-Model (modeling tool) CWM)

«specifiedBy»

Class(MOF) . . . Meta-Meta-Model (M3 = MOF) (modeling tool) «specifiedBy»

100 © Copyright Malina Software The Structure of MOF (simplified)

UML Infrastructure

EMOF

«merge» «merge» «merge» «merge»

Reflection Identifiers Extension CMOF

101 © Copyright Malina Software Essential MOF Concepts (Example) Package  Key concepts used to define an abstract syntax (modularization construct)

Generalization Vehicle (relationship) Class (concept)

Automobile w Wheel make : String 3..* power : Integer Association Constraint (relationship) vehicle 0..2 (well-formedness Composition rule) driver 0..* (relationship) Person (driver.age <= 16) implies (power <= 10)

102 © Copyright Malina Software Example: EMOF Metamodel (Root)

Metaclass = A MOF  Using MOF to define Class that models a Language Concept (E)MOF

0..1 Element

NamedElement Comment 0..* name : String body : String

Type TypedElement

103 © Copyright Malina Software Example: EMOF Metamodel (simplified)

type 0..* Type TypedElement 0..1

Class 0..* Property isAbstract : Boolean isReadOnly : Boolean default : String [0..1] isComposite : Boolean opposite isDerived : Boolean 0..1

0..* 0..* Operation Parameter

104 © Copyright Malina Software The Meaning of Class Models

type 0..* Type TypedElement 0..1

 A key element of abstract syntax definition  What does this model represent? . There is much confusion about the meaning of this type of diagram (model)  Questions: . What do the boxes and lines represent? . How many Types are represented in this diagram? . What does ―type‖ mean? . What does ―0..*‖ mean?

105 © Copyright Malina Software Example: Two Populations with Relationships

Adults Children

Karl

Cory Ida Bob Dee Jill Fred Guy

Alice Peggy Hayley Les

106 © Copyright Malina Software Some Facts We Can State

 Particular statements (propositions): . Bob has no children (in the set Children) . Karl is the father of Dee and Ida . Karl and Jill are the parents of Cory . Fred and Peggy are the parents of Guy . Peggy is the mother of Hayley . Alice is the mother of Les  General statements (predicates – through abstraction): . Children can have one or two Adult parents . Some Adults are parents of Children . Every Person has a name and a gender

107 © Copyright Malina Software Classes and Associations in MOF (and UML)

 Class: A specification of a collection of object instances characterized by possessing the same set of features and behaviours  Association: A specification of a collection of links whose ends conform respectively to the same type

108 © Copyright Malina Software Classes and Association Classifiers

Adults Children

Karl

Cory Ida Bob Dee Jill Fred

Guy

Alice Peggy Hayley Les

parents children Adult Child

name : String name : String 1..2 0..* gender : [M, F] gender : [M, F]

109 © Copyright Malina Software Interpreting Association Ends

parents children Adult Child

name : String name : String 1..2 0..* gender : [M, F] gender : [M, F] The ―children‖ (set) of Karl Children Adults

Karl Ida Dee Cory

Jill The ―parents‖ An OCL (set) of Cory constraint

Karl.children->includes(Cory)

110 © Copyright Malina Software Example Metamodel: UML (simplified fragment) sources 1..* Directed Element targets Relationship 1..* NamedElement

NamedElement generalizations name : String 0..* Generalization TypedElement

types 1..*

Classifier Type features Feature 0..*

Classifier attributes 0..* Attribute Class operations 0..* Operation Primitive Type

111 © Copyright Malina Software Under the Hood: How Models are Stored

Diagrams are just attributes[1] selective views of : ClassObj 1 : AttributeObj 2 the underlying model name[ClassA = “A”] name[attr =. a1] “a1”

targets[1] A types[1] a1 : Integer generalizations [1] : Generalization : PrimitiveType name = “Integer”

sources[1] types[1] B : Class get_a1() : Integer name = “B” NB: Models are operations[1] complex : Operation graphs name = “get_a1” Model User view repository view 112 © Copyright Malina Software Models and Diagrams  Model elements can be created by: . Indirectly: by creating a new element in a diagram . Directly: by inserting it directly into the model (e.g., through a program or a model browser/explorer) Diagrams (model views) : Class attributes[1] : Attribute

A name = “A” name = “a1”

a1 : Integer targets[1]

types[1] generalizations [1] : Generalization : PrimitiveType B name = “Integer” Programmatic get_a1() : Integer sources[1] types[1] (API) : Class

name = “B” access

operations[1] Diagrams are : Operation

usually separated name = “get_a1” from the model Model Repository

113 © Copyright Malina Software OBJECT CONSTRAINT LANGUAGE (OCL): WRITING CONSTRAINTS (WELL- FORMEDNESS RULES) AND QUERIES

114 © Copyright Malina Software Example: A Community

friend friend

Alice Bob Eunice Fred Jill Karl

friend

Cory Dee Guy Hayley Ida Les friend

Millie Nick Orville Peggy

friend 115 © Copyright Malina Software A Corresponding Class Diagram

+husband

0..1 0..*

+wife Person 0..* +name: String <> 0..1 +isMarried: Boolean +friend Gender +gender: Gender +age: Integer +M +F +isSenior(): Boolean

+parent +child Adult Child 0..* 0..*

116 © Copyright Malina Software Propositions, Predicates, and Constraints

 Proposition: A statement that is either True of False . Bob is an Adult . Les and Ida are friends  Predicates: Propositions that involve variables; e.g.: . There is at least one Adult with the name ―Bob‖ . All Adults are married . Every Child has at least one Adult parent  A predicate require a range for its variables  Constraints: predicates that, by design, must evaluate to True; e.g.: . Only Adults can have Children . An Adult who is married must have a spouse

117 © Copyright Malina Software First-Order (Predicate) Logic(s)

 Used to reason about predicates  Basic operators of FOL: . The usual Boolean operators • AND () • OR () • NOT () . Conditional: • If is True (hypothesis) then (conclusion) must be True • . Existential quantifier (): • There exists at least one member of the domain such that predicate is True •  a  Dom | . Universal quantifier (): • For all members of the specified domain is True •  a  Dom |

118 © Copyright Malina Software FOL Examples and OCL Equivalents

 There is at least one Adult with the name ―Bob‖ .  a  Adult | (name(a) = ―Bob‖)  All Adults are married .  a  Adult | (married(a) = True)  Every Child has at least one Adult parent   c  Child | (size(parents(c))  1)  ...and their OCL equivalents . exists (a:Adult| a.name = “Bob”) . forAll (a:Adult | a.isMarried) . forAll (c:Child | parents->size() >= 1)

119 © Copyright Malina Software The Object Constraint Language (OCL)  An OMG standardized language for specifying constraints and queries for UML and MOF classifiers and objects . http://www.omg.org/spec/OCL/2.2/PDF . Declarative side-effect-free language  Primarily used in conjunction with MOF to specify the abstract syntax of modeling language constructs . Example: +parent +child Adult Child 0..* 0..*

context Child inv: self.parent->size() <= 2

120 © Copyright Malina Software OCL Basics – Contexts and Constraints

+husband

0..1 0..*

+wife Person 0..* +name: String 0..1 +isMarried: Boolean +friend +gender: Gender +age: Integer +isSenior(): Boolean

 Context: identifies the class (or object) to which the constraint (also called an invariant) applies context Person inv: ...  Class constraints are written from the perspective of a generic member of the context class . ...which means that they apply to all members of the class ((self.isMarried) and (self.gender = #M)) implies((self.wife->size() = 1) and (self.husband->size () = 0))

121 © Copyright Malina Software OCL Basics – Data Types Used in OCL

 Reuses basic UML/MOF primitive types . Boolean, Integer, String . Adds type Real . Support all common arithmetic and logic operators  Collection types . Set, OrderedSet, Bag, Sequence  Model types . Modeler-defined application-specific classes . E.g., Person, Adult, Child, Gender  OclType = the type of all types (metatype) . Useful operation on any type: allInstances()

Person.allInstances() -- returns the set of all -- instances of Person

122 © Copyright Malina Software OCL Basics – Standard Arithmetic Operators

< > <= >= + - * / .mod()  ...

123 © Copyright Malina Software

OCL Basics – Common Logic Operators

 not or and xor = <> implies  if then [else endif]

124 © Copyright Malina Software OCL Basics – Accessing Properties

+husband

0..1 0..*

+wife Person 0..* +name: String 0..1 +isMarried: Boolean +friend +gender: Gender +age: Integer +isSenior(): Boolean

 Classifier (and object) attributes and operations are accessed by the dot (.) operator self.name -- returns name String self.isSenior() -- returns True or False self.friend -- returns a collection -- persons who are friends -- of “self”

126 © Copyright Malina Software OCL Basics – Association/Link Navigation

 Association ends are accessed like all other Properties of Classifiers  OCL can navigate from a Classifier context to any outgoing association end...regardless of navigability

0..* Person 0..* +name: String +isMarried: Boolean +friend +gender: Gender +age: Integer +isSenior(): Boolean self.friend self.person -- uses default naming rule for -- unnamed ends  Unless the multiplicity is exactly 1, the result of the navigation is a collection

127 © Copyright Malina Software OCL Basics – OCL Collections and Operations

Collection

OrderedSet Set Bag Sequence

 Collections represent groups of values (e.g., Classes)  Collections can be manipulated using special collection operations . size() -- the size of the collection (Integer) . count() -- the number of occurrences of (Integer) . includes() -- True if collection includes . includesAll() -- True if collection includes . isEmpty() -- True if collection is empty . notEmpty() -- True if collection is not empty . exists() -- True if is True for at least 1 element . forAll() -- True if is True for all elements . ...

128 © Copyright Malina Software OCL Basics – Applying Operations to Collections

 The application of an operation to a collection is indicated by the use of the right-arrow (->) operator . self.friend->size() -- number of friends of self . self.friend->isEmpty() -- checks if set of -- friends is empty

129 © Copyright Malina Software OCL Basics – Universal and Existential Quantifiers

 ―exists‖ and ―forAll‖ operations are used to specify predicates over collections . exists =  (first-order logic existential quantifier operator) • self.friend->exists (f:Person | f.name = „Bob‟) -- at least one friend must be named „Bob‟ . forAll =  (first-order logic universal quantifier operator) • Person.allInstances()->forAll(p:Person| p.name <> „‟) -- the name of a Person cannot be an empty string . Avoids confusing mathematical symbols (+ avoids need for special typesetting)

130 © Copyright Malina Software OCL Basics – Select and Collect Operations

 Special iteration operations for deriving useful new collections from existing ones  Select provides a subset of elements that satisfy a predicate . ->select ( : | ) . Person->select (p:Person | p.isMarried)  Collect returns a new collection of values obtained by applying an operation on all of the elements of a collection . ->collect ( : | ) . Person->collect (p:Person | p.name)

131 © Copyright Malina Software OCL Basics – Other Useful Collection Operations

 For Sets, Bags, Sequences . ->union () -- returns the union of -- and . ->intersection() -- returns the -- intersection of -- and . - () -- returns a collection of -- elements in -- that are not in  For OrderedSets and Sequences . ->at(i) -- access element at position i . ->append() -- add to end of . ->first() -- return first element in . ->last() -- return last element in

132 © Copyright Malina Software OCL Basics – Pre- and Post-Conditions

 ―Design by contract‖ for Operations, Receptions, and UML Behaviors . Pre-conditions: Conditions that must hold before an operation . Post-conditions: Conditions that must hold after an operation has completed  Syntax: . pre: . post: . Also can use @pre in a post-condition to refer to the value of prior to the execution of the operation

133 © Copyright Malina Software OCL Basics – Defining Operations

 Syntax context () : [pre: ] [post: ] [body: ] -- must evaluate to -- a kind of  Example context Person::isSenior() : Boolean pre: age >= 0 post: age = age@pre -- age is unchanged -- after operation -- completes body: (age >= 65)

134 © Copyright Malina Software Summary: OCL

 OCL constraints are one of the means to define well-formedness (i.e., syntactic) rules for MOF- based models . Complement class (meta)models  It is based on basic first-order logic and set theory and operates on class (and instance) diagrams . Since class diagrams deal with relationships between sets and elements of sets  Defines primarily static semantics but can also be used to specify dynamic semantics (e.g., through pre- and post- statements on operations)

135 © Copyright Malina Software MOF Pattern: Association Specialization

accounts customers BankAccount BankCustomer 1..* 1..*

C-accounts owner Corporate Corporate Account 1..* 1 Customer

P-accounts owners Personal Private Account Customer 1..* 1..* NB: tightened constraint

136 © Copyright Malina Software More Refined Specification

{union} {union} accounts/accounts /customerscustomers BankAccount BankCustomer 1..* 1..*

{subsets accounts} {subsets customers} C-accounts owner Corporate Corporate Account 1..* 1 Customer

{subsets accounts} P-accounts owners Personal Private Account Customer 1..* 1..* {subsets customers}

137 © Copyright Malina Software Composition (―Black Diamond‖) Associations

 Implies ―ownership‖ of one element by another . i.e., An instance of Person owns an instance of String that specifies that person‘s ―name‖

0..1 name Person String 1 value  Semantics: ―Deletion‖ semantics . When the owner is removed, all its owned elements are also removed with it

name a : Person :String value = “Bran”

138 © Copyright Malina Software Key MOF Abstraction: Names and Namespaces

 Names are specified by Strings . No pre-defined set or size limit . E.g.: ―Alice‖, ―R2->D2‖, ―4 Sale‖, ―Ceлић‖, ―多音字‖, ―‖ . NB: An empty name is a valid name  A namespace is a model element that owns a collection of model elements (that may be) distinguished by their names . The features (attributes, operations, etc.) of a Class . Used as a basis for specifying other MOF concepts: Package, Class, Operation, etc.  General rules (may be further constrained in a profile) . Names in a namespace are not necessarily unique (but is preferred) • E.g. Two operations may have the same name but different parameter sets • E.g.: an operation and an attribute of a class can have the same name . Namespaces can contain other namespaces  hierarchical (qualified) names • Use of double-colon (::) to separate names in a qualified name • E.g.: ―System::CoolingSubsystem::ACUnit‖

139 © Copyright Malina Software The Concept of Visibility

 Named elements owned by a MOF namespace have a defined visibility: . The capacity for an element to be referenced by other model elements (possibly in other namespaces)  Pre-defined visibility kinds: . public (+) – named element is visible to all elements that can access its namespace . private (-) – visible only within the namespace that owns it . protected (#) – visible only to elements in its extended namespace (i.e., its namespace and the namespaces of all specializing classifiers – for classifier type namespaces only) • E.g., a Class attribute visible to all subclasses of that Class . package – (~) visible only to other elements in the same package • e.g., a Class attribute visible to all elements in the same Package as the Class

140 © Copyright Malina Software MOF Packages

 A Package is a means for grouping the parts of a (meta)model . Packages are (typically) not intended to model anything . Analogous to file system folders  A package is a kind of namespace . Public elements from other packages can be imported into the package namespace (analogous to ―external‖ declarations in programming)

141 © Copyright Malina Software Package Diagrams  Show relationships (import, merge) between packages in a model . A design-time view

«import» «modelLibrary» Kernel UtilityClasses

«merge»

«import» ExtendedKernel

«import»

Top

142 © Copyright Malina Software Package Import Semantics

X Y

B +C -D «import» A C +E

 Following importing, namespace X contains the following names: . A, B, C, Y::C, E . ...but not D  However, Y::C and E are not owned by X

143 © Copyright Malina Software Package Merge

 Allows selective incremental concept extension

InfrastructureLibrary

Element «merge»

EMOF::Reflection EMOF::Reflection

Object Object

result Element Element getMetaClass() getMetaClass() … …

146 © Copyright Malina Software Package Merge Semantics

 A graphically-specified operation on packages and their contents . Extends definition and scope of a concept through an increment  Why not just use subclassing? . The additional specifications apply to the original concept wherever it was used

Element Object

We would need to replace Element with the new ObjectElement class Object in all parts of the model where Element Element originally appeared

147 © Copyright Malina Software MOF Pattern: Modular (Mixin) Generalizations

 A meta-modeling pattern for adding capabilities using specialized superclasses . Each increment adds a well-defined primitive capability . To be used with extreme caution because it can lead to semantic conflicts and overgeneralization problems • Especially if the mixin classes have associations

PackageableElement MultiplicityElement NamedElement

lower : Integer name: String [0..1] upper : UnlimitedInteger

Property Operation Parameter

148 © Copyright Malina Software Meta-Modeling Trap: Overgeneralization

 Fragment of the UML 2 metamodel (simplified):

ownedElement 0..* Over- generalization Element owner 0..1

What does it mean for a Dependency to Relationship Classifier own a Use Case?

Dependency Use Case

149 © Copyright Malina Software Dealing with Overgeneralization

 Caused by ―abstract‖ associations  Can sometimes be avoided using association specialization (covariance) or constraints

ownedElement 0..*

owner Element 0..1

Element Relationship Classifier OwnedBy Classifier ownedElement->size() = 0

150 © Copyright Malina Software MOF Alternatives

 XMF Mosaic – Extesible Modeling Framework . http://itcentre.tvu.ac.uk/~clark/downloads.html . http://www.eis.mdx.ac.uk/staffpages/tonyclark/Papers  EMF – Eclipse Modeling Framework . http://www.eclipse.org/modeling/emf/  RDFS - Resource Description Framework Schema . http://www.w3.org/TR/rdf-schema/  Xtext – a textual metamodeling language for languages with a textual concrete syntax . http://www.eclipse.org/Xtext/

151 © Copyright Malina Software The XMF XCore Metamodel

152 © Copyright Malina Software The EMF Metamodel

153 © Copyright Malina Software RDFS – An Alternative to MOF

 Resource Description Framework Schema (RDFS) . A standardized format for knowledge (ontology) representation and interchange on the World-Wide Web . Standardized by the W3C consortium . http://www.w3.org/standards/techs/rdf  Based on simple paradigm:

Attribute Resource Leo Tolstoy Value (object) URI author

Doubleday Co. http://www.library.org/books#WarAndPeace publisher etc. content Encoded using an http://www.library.org/content#WarAndPeace XML syntax

154 © Copyright Malina Software RDFS Metamodel (simplified)

 Everything is a resource (identified by a URI)

subject RDFSResource 1 localName : String object namespace : String uri : String 1 RDFSLiteral 1 predicate

RDFStatement

Properties can be domain defined independently RDFProperty RDFClass of Resources and can 0..* be associated with range multiple classes 0..*

155 © Copyright Malina Software Tutorial Outline

 Models: What and Why

 Modeling Language Design

 Modeling Language Specification

. Specifying Abstract Syntax . Specifying Concrete Syntax . Specifying Semantics . Case Study: UML

 Model Transformations

 Summary

156 © Copyright Malina Software OMG Languages Concrete Syntax

 Incomplete and informally defined . No definitive rules on what is a valid syntactical construction . Abstract to concrete syntax mapping is incomplete and ambiguour . Creates difficulties in model interchange and confuses users  Fortunately, the new ―Diagram Definition‖ standard is a step towards remedying these deficiencies

157 © Copyright Malina Software OMG‘s Data Definition Standard

 A standard for: 1. Specifying concrete graphical syntax (Diagram Graphics = DG) 2. Interchanging model diagrams (Diagram Interchange = DI)  For defining the concrete syntax of MOF-based modeling languages . Comprises a modeling language in MOF  Support for variations . Different ways of specifying mappings of concrete syntax elements to corresponding abstract syntax elements • Model transforms, tables, informal text... . Different ways of interchanging diagrams • Based on what is assumed to be known by the rendering tool (e.g., UML tool versus general drawing tool)

158 © Copyright Malina Software How DD Works: UML Example

Model Transform MOF “Language” MOF M3

DI DD Metamodel M2 UML UML DI DG Mapping Metamodel Metamodel Metamodel

:UMLShape :Group :UseCase bounds = {0,0,50,30) :Ellipse M1 :UMLLabel transform center = {25, 15} bounds = {10, 35, 25, 10} :Text data = “mumble” bounds = {10, 25, 25, 10} Model editor Rendering tool 159 © Copyright Malina Software DD: Elements of the DI Metamodel

160 © Copyright Malina Software Specializing DI: UML Example

161 © Copyright Malina Software Mapping DI to DG: UML Example

 Using the OMG standard model transformation language QVTo (operational QVT)  E.g.:

162 © Copyright Malina Software Summary: Concrete Syntax

 The use of graphically-oriented forms for many modeling languages (linear text) is one of the main areas of differentiation between programming and modeling languages . Graphics can be much more effective at communicating certain types of information than text . But, they also add complexity to the language specification  Most modeling languages are hybrids combining different both graphical and textual forms in a single language . Form should follow function – each form where it is most appropriate  Some useful technologies and methods are emerging for specifying graphical concrete syntaxes  However, we still have no proper theory of how to design such languages . What makes a concrete syntax an effective communications tool?

163 © Copyright Malina Software Tutorial Outline

 Models: What and Why

 Modeling Language Design

 Modeling Language Specification

. Specifying Abstract Syntax . Specifying Concrete Syntax . Specifying Semantics . Case Study: UML

 Model Transformations

 Summary

164 © Copyright Malina Software On Specifying Semantics

 Semantics are specified using a language whose semantics are already defined  Numerous approaches to defining run-time semantics of computer languages . Informal natural language description are the most common way . Denotational, translational, operational, axiomatic

165 © Copyright Malina Software On Specifying Semantics

 The ―Executable UML Foundation‖ specification provides a standard for defining semantics . Defines the dynamic semantics for a subset of standard UML concepts that have a run-time manifestation . Semantics of modeling languages can be specified as programs written using a standardized executable modeling language (operational (interpretive) approach) . The semantics of Executable UML itself are defined axiomatically  http://www.omg.org/spec/FUML/

166 © Copyright Malina Software OMG Approach to Specifying UML Semantics  UML semantics hierarchy . As defined by the Executable UML Foundation proto-standard

Higher-level behavioral formalisms (with SVPs)

Higher-level UML UML UML UML UML action statechart activities interactions Action Language(s) semantics semantics semantics semantics

Map (compile) to

Foundational UML (fUML) action semantics Generic (action executions, token flows, etc.) UML VM (with SVPs) Act on (create, destroy, read, write, etc.)

Core structural elements (objects, links, etc.)

SVP = Semantic Variation Point

167 © Copyright Malina Software Foundational UML (fUML) and Basic UML (bUML)

 A subset of fUML actions is used as a core language (Basic UML) that is used to describe fUML itself

Foundational UML (fUML) action semantics (action executions, token flows, etc.)

Maps to Basic UML action semantics (bUML) (Operational Specification)

Maps to (Axiomatic Specification)

Formal mathematical model (Process Specification Language) Basis for a formalization of UML

168 © Copyright Malina Software Tutorial Outline

 Models: What and Why

 Modeling Language Design

 Modeling Language Specification

. Specifying Abstract Syntax . Specifying Concrete Syntax . Specifying Semantics . Case Study: UML

 Model Transformations

 Summary

169 © Copyright Malina Software MDA Languages Architecture

 MDA = OMG‘s initiative to support model-based engineering with a set of industry standards:

UML Profiles

ODM UML 2 CWM SPEM RAS (Ontology)

Core Specifications: MOF 2, XMI 2.1, MOF Versioning, MOF QVT, MOF to Text UML 2 Infrastructure

170 © Copyright Malina Software UML 1: The First Cut etc.

Booch OMT

OOSE The primary intent was to facilitate documentation of the results of analysis and design.

171 © Copyright Malina Software UML Roots and Evolution: UML 1

MDA

2003 UML 1.5 (Action Semantics) UML 1.4 (bug fixes) UML 1.3 (profiles)

UML 1.1 (First OMG Standard)

1996 Rumbaugh Booch Harel Jacobson

Semantic Foundations of OO (Nygaard, Goldberg, Meyer, Stroustrup, Harel, Wirfs-Brock, Reenskaug,…) 1967 172 © Copyright Malina Software UML Roots and Evolution: UML 2 2010 UML 2.4 . . . 2005 UML 2.0 (MDA)

2003 UML 1.5 (Action Semantics) UML 1.4 (bug fixes) UML 1.3 (profiles)

UML 1.1 (First OMG Standard)

1996 Rumbaugh Booch Harel Jacobson

Semantic Foundations of OO (Nygaard, Goldberg, Meyer, Stroustrup, Harel, Wirfs-Brock, Reenskaug,…) 1967 173 © Copyright Malina Software UML 1 vs UML 2

 UML 1 was intended primarily as a design and documentation tool . Informal and semi-formal definition . Overlapping and ambiguous concepts  UML 2 is intended to support MDA . Much more formal and precise definition • Executable UML Foundation . Opens up potential to use UML as an implementation language  UML 2 added capabilities . Highly-modular language architecture . Improved large-system modeling capability • Interactions, collaboration (instance) structures, activities all defined recursively for scalability . More powerful language extensibility capability

174 © Copyright Malina Software UML 2 Language Architecture

 A user-selectable collection of different languages for different needs based on a set of shared conceptual cores  Organized into user-selectable increments of increasing sophistication

L3  L3  L3  L3  L3  L2  L2  L2  L2  State Activities Deployments Actions (L1) Machines (L1) Use Components (L3) (L1) Interactions Cases (L2) (L1) Flow-Based (L1) Behavior Core

Composite Structures L2 L3 General Behavior Core (L1)  

Classes (L1) L2 L3 (Structure)   UML Infrastructure Kernel (L0)

175 © Copyright Malina Software UML Language Compliance Levels

 4 levels of compliance (L0 – L3) . compliance(Lx)  compliance (Lx-1)  Dimensions of compliance: . Abstract syntax (UML metamodel, XMI interchange) . Concrete syntax • Optional Diagram Interchange compliance  Forms of compliance . Abstract syntax . Concrete syntax . Abstract and concrete syntax . Abstract and concrete syntax with diagram interchange  However, this architecture has been deemed as too complex for implementation and the compliance levels and the use of package merge in the definition of UML are being eliminated in UML 2.5 (due in 2012)

176 © Copyright Malina Software UML Language Specification Format

 Abstract Syntax . Concepts, their features, and mutual relationships . Described by a MOF metamodel + additional constraints (OCL or English)  Concrete Syntax . Notation (diagrams, text, tables, graphical representation) . UML concrete syntax definition is incomplete and informally defined . XML-based Interchange format (XMI)  Language Semantics . The meaning of UML models and the concepts used to express them . English (+ fUML model + mathematical model)

177 © Copyright Malina Software UML Abstract Syntax

178 © Copyright Malina Software New Approach to the UML Metamodel

 In UML 2, a more incremental approach was used to define the abstract syntax (compared to UML 1) . Based on a core of fine-grained abstract concepts (e.g., namespace, multiplicity, redefinition) . More complex concepts derived using mixin-based composition of core concepts and package merge . More refined semantics through the use of association specialization  Enables: . Cleaner definition of core semantics (concepts are isolated from each other) . More flexible definition of complex concepts . Simpler evolution and extension

179 © Copyright Malina Software The Root of the UML Metamodel

Represents the generalization (union) of all varieties of compositions between concepts

180 © Copyright Malina Software The Namespaces Metamodel

Introduces capability to be part of a package

181 © Copyright Malina Software Adding Namespace Relationships

182 © Copyright Malina Software Types Metamodel

 NB: typed elements may not actually have a type declared (lower bound of TypedElement::type = 0) . To support incomplete models

183 © Copyright Malina Software Packages Metamodel

184 © Copyright Malina Software Constraints

 Captures some semantics for elements of a namespace  Expressed in either formal or natural language . E.g., Object Constraint Language (OCL), English, Australian  Notation choices:

{size >= 0} Stack Stack

size : Integer {size >= 0} size : Integer

IN LINE ATTACHED NOTE

185 © Copyright Malina Software Constraints Metamodel

 ValueSpecification: modeling element that contains an expression which evaluates to a Boolean value (true/false)  The namespace can be a Class, Package, , etc.

186 © Copyright Malina Software Core Structural Concepts: Values  Value: universal, unique, and unchanging . Numbers, characters, strings . Represented by a symbol (e.g., 7, VII, ―a‖, ―fubar‖) . Includes object identifiers (―InstanceValue‖) . Represented by ValueSpecification in the UML metamodel

187 © Copyright Malina Software Core Structural Concepts: Objects

 ―Value containers‖: a (physical) space for storing values . Can be created and destroyed dynamically . Limited to storing only values conforming to a given type . The stored value may be changed (e.g., variables, attributes) . Multiple forms in UML: variables, attribute slots, objects  Object: a complex value container with a unique identity conforming to a Class type . May own attribute slots (containers for attribute values) . May be capable of performing behaviours (operations, etc.) . Identity does not change during its lifecycle . ...but its type could change over type (type reclassification)

188 © Copyright Malina Software Specifying Instances in UML

 InstanceSpecification: a generic facility for modeling objects and other things that occupy memory space  The metamodel

189 © Copyright Malina Software Multiplicity Concept

Adult Child parent child name : String [0..*] name : String [0..*] 1..2 0..*

Multiplicity Multiplicity

Multiplicity Multiplicity

 For specifying usages that are collections  Attributes, association ends, parameters, etc.  Can specify ranges (upper and lower bounds) . 0 = absence of elements . * (or [0..*]) = open-ended upper bound

190 © Copyright Malina Software Multiplicity Modifiers

Adult Child parent child name : String [0..*] name : String [0..*] 1..2 0..* {unique, ordered} Multiplicity modifiers  {unique} = no two elements of the collection can have the same value . Default value: true . {nonunique} if false  {ordered} = the elements in the collection are ordered in some appropriate manner ( an ordered collection) . Default value: false = {unordered}

191 © Copyright Malina Software Multiplicities Metamodel

192 © Copyright Malina Software The UML Concept of Classifier

 A classifier is a specification of a collection of entities (things, concepts, etc.) that 1. Share a set of characteristics (features) and which 2. Can be classified (divided) into sub-collections according to the nature of some of their characteristics  E.g., people can be classified based on their gender into men and women . . . . or, they may be classified according to their age into adults and children  Kinds of Classifiers in UML: . Classes, Associations, AssociationClasses, DataTypes, Enumerations, Interfaces, Behaviors (Activities, Interactions, StateMachines), Signals, UseCases, Collaborations, Components, Nodes, etc.

193 © Copyright Malina Software UML Classifier Concept

 Introduces concepts that can be: . Classified based on the nature of their features . Generalized/specialized

194 © Copyright Malina Software Redefinition in UML

Introduces capability to be redefined (in a sub-classifier)

195 © Copyright Malina Software Classifier Features

 Two basic kinds: . Structural features (e.g., attributes, associations) . Behavioural features (e.g., operations, receptions)  Structural features are type usages and have: . Multiplicity . Visibility . Scope [static(classifier), instance] • Static features are singletons and apply to the classifier as a whole rather than individual instances  Behavioural features have . Visibility and scope

196 © Copyright Malina Software Features Metamodel

197 © Copyright Malina Software Class and Association Metamodel

198 © Copyright Malina Software UML Concrete Syntax

201 © Copyright Malina Software UML Concrete Syntax: Diagram Types

UML Diagram

Structure Behavior Diagram Diagram

Instance Class Activity Statechart Diagram Diagram Diagram Diagram

Deployment Package Interaction UseCase Diagram Diagram Diagram Diagram

Collaboration Composite Diagram Structure Timing Interaction Diagram Overview Profile Sequence Communication Diagram Diagram Diagram

202 © Copyright Malina Software UML General Diagram Format

 An optional structured form for UML diagrams HEADER

[] []

DIAGRAM CONTENTS AREA

pkg TopPkgDiagram act class cmp «import» dep PkgA PkgB sd pkg stm uc

203 © Copyright Malina Software SysML Diagram Format  Simpler and more systematic approach than UML . All diagrams have a common mandatory format HEADER

diagramKind [elementType] elementName [diagramName]

CONTENTS

pkg [package] Top act activity bdd block ibd package «import» pkg ... par PkgA PkgB req sd stm uc 204 © Copyright Malina Software SysML Diagram Types

 Some UML diagrams were modified, others omitted, and new SysML-specific diagrams added

SysML Diagram

Structure Behavior Diagram Diagram

Internal Block Block Activity Statechart Diagram Definition Diagram Diagram

Package Sequence UseCase Diagram Diagram Diagram

Parametric Requirement Diagram Diagram

205 © Copyright Malina Software UML Semantics

206 © Copyright Malina Software UML Model of Computation

 Object oriented . All behavior stems from (active) objects  Distributed . Multiple sites of execution (―localities‖)  Concurrent . Active objects  multiple threads of execution  Heterogeneous causality model . Event driven at the highest level . Data and control flow driven at more detailed levels  Heterogeneous interaction model . Synchronous, asynchronous, mixed

207 © Copyright Malina Software UML Run-Time (Dynamic) Semantics Architecture

State Activities Interactions Machines . . .

Behavioral Semantic Base Actions Flow-Based Behavior Semantics

Object Existence Inter-object Comms

Structural Semantic Base (Objects)

208 © Copyright Malina Software UML Model of Causality (How Things Happen)  A discrete event-driven model of computation . Network of communicating objects  All behaviour stems from objects

obj2:C2 obj1:C1

act1 s1 act2

s2 a1:A1

obj3:C1

s1

s2 a2:A2

209 © Copyright Malina Software Basic Structural Elements  Values . Universal, unique, constant . E.g. Numbers, characters, object identifiers (―instance value‖)  ―Cells‖ (Slots/Variables) . Container for values or objects . Can be created and destroyed dynamically . Constrained by a type . Have identity (independent of contents)  Objects (Instances) . Containers of slots (corresponding to structural features) . Just a special kind of  Links . Tuples of object identifiers . May have identity (i.e., some links are objects) . Can be created and destroyed dynamically

211 © Copyright Malina Software Relationship Between Structure and Behaviour

 From the UML metamodel:

Feature feature Classifier Class 0..* 0..* Because: when Actor executed, 0..1 owned Behavior a special Behavior ―execution‖ Class 0..* context object is created Collaboration

UseCase

Activity StateMachine Interaction OpaqueBehavior

For flow-based For event-driven For event-driven behaviours behaviours system behaviours

212 © Copyright Malina Software Classifier Behaviours vs.Methods

 Methods: Intended primarily for passive objects . Can be synchronous (for operations) or asynchronous (for receptions)  Classifier behaviour: Intended primarily for active objects . Executed when the object is created

0..1 owned 0..1 Behavior Behavior 0..* context classifier 0..* method Behavior 0..1 0..* 0..1 Parameter

0..* specification 0..1 Behavioral Feature 0..1

Operation Reception

213 © Copyright Malina Software Active Object Definition

 Active object definition: An active object is an object that, as a direct consequence of its creation, commences to execute its classifier behavior, and does not cease until either the complete behavior is executed or the object is terminated by some external object.  Also: The points at which an active object responds to [messages received] from other objects is determined solely by the behavior specification of the active object...

Parallel lines used to distinguish from passive classes AnActiveClass

214 © Copyright Malina Software Passive vs. Active Objects

 Passive objects respond whenever an operation (or reception) of theirs is invoked . NB: invocations may be concurrent  conflicts possible!  Active objects run concurrently and respond only when they execute a ―receive‖ action

a1:a1 a2:a1 a1:a1 a2:a1

setA(1) getA() reqB() reqA()

obj:C active:A setA(a:Integer) getA() : Integer Event selection based on chosen reqA reqB scheduling policy

215 © Copyright Malina Software Run-To-Completion (RTC) Semantics

 Any messages arriving between successive ―receive‖ actions are queued and only considered for handling on the next ―receive‖ action . Simple ―one thing at a time‖ approach . Avoids concurrency conflicts

ReceiveReceive

Message queue

reqC reqAreqBreqC ......

ReceiveReceive

216 © Copyright Malina Software The Problem with RTC

 Message (event) priority: in some systems (e.g., real-time systems) messages may be assigned different priorities . To differentiate important (high priority) events from those that are less so and to give them priority handling (e.g., interrupting handling of a low priority message)  : The situation that occurs when a high priority message has to wait for a low priority message  The RTC approach is susceptible to priority inversion . But, it is limited to situations where the high-priority and low-priority events are being handled by the same object (rather than the system as a whole)

217 © Copyright Malina Software RTC Semantics

 If a high priority event arrives for an object that is ready to receive it, the processing of any low priority events by other active objects can be interrupted Active1 Active2

lo hi (queue d) hi

Handling of low priority event suspended while high priority event is processed Processing of queued high priority event can commence at this point

218 © Copyright Malina Software UML Communications Types  Synchronous communications: (Call and wait) . Calling an operation synchronously  Asynchronous communications: (Send and continue) . Sending a to a reception . Asynchronous call of an operation (any replies discarded)

Object1 Object2 Object1 Object2

call opX() send sigX()

opX method sigX method reply executing executing

Synchronous Asynchronous Communications Communications 219 © Copyright Malina Software Purpose of UML Actions

 For modelling fine-grained behavioural phenomena which manipulates and accesses UML entities (objects, links, attributes, operations, etc.) . E.g. create link, write attribute, destroy object . A kind of UML ―assembler‖  The UML standard defines: . A set of actions and their semantics (i.e., what happens when the actions are executed) . A method for combining actions to construct more complex behaviours  The standard does not define: . A concrete syntax (notation) for individual kinds of actions . Proposal exists for a concrete semantics for UML Actions

220 © Copyright Malina Software Categories of UML Actions

 Capabilities covered . Communication actions (send, call, receive,…) . Primitive function action . Object actions (create, destroy, reclassify,start,…) . Structural feature actions (read, write, clear,…) . Link actions (create, destroy, read, write,…) . Variable actions (read, write, clear,…) . Exception action (raise)  Capabilities not covered . Standard control constructs (IF, LOOP, etc. – handled through Activities) . Input-output . Computations of any kind (arithmetic, Boolean logic, higher- level functions)

221 © Copyright Malina Software Action Specifications and Action Executions

Action Specification (a design-time specification)

first: a1:TestIdentityAction result : Boolean

second:

Input Pin Output Pin

Action Execution (a run-time concept)

object1:C1 first: a1[i]:TestIdentity result : Boolean ActionExecution false second: (value) object2:C1

NB: each time action a1 needs to be executed, a new action execution is created 222 © Copyright Malina Software Combining Actions

 Data flow MoC: output to input connections

i1:T3 a2: i1:T3 a2: i1:T1 i1:T1 a1: a1: o1: T3 o1: T3 i2:T2 i2:T2 i2:T3 a3: o1: T3 i2:T3 a3: o1: T3

Contention (a2 and a3) Data replication

 Control flow MoC: identifying successor actions a4:

i1:T1 a1: a2: o1: T3 i1:T3 a3: i2:T2 a5: o1: T3

223 © Copyright Malina Software Controlling Execution: Token Passing

 Execution order can be modeled as an exchange of data/control ―tokens‖ between nodes

aa4x:4x:

i1:T1 a1x: a2x: o1: T3 i1:T3 a3x: i2:T2 a5x: o1: T3

 General execution rules: . All tokens have to be available before actions execute . Tokens are offered only after action execution completes

224 © Copyright Malina Software Summary: UML Semantics

 The UML model of computation is: . Structure dominant . Distributed . Concurrent . Event driven (at the highest level) . Data and control flow driven (at finer grained levels) . Supports different interaction models  The core part of the UML semantics is defined formally . Provides an opportunity for automated formal analyses

225 © Copyright Malina Software UML Extensibility Mechanism - Profiles

226 © Copyright Malina Software UML as a Platform for DSMLs

 DSML = Domain-Specific Modeling Language  Designed as a ―family of modeling languages‖ . Contains a set of semantic variation points (SVPs) where the full semantics are either unspecified or ambiguous . SVP examples: • Precise type compatibility rules • Communications properties of communication links (delivery semantics, reliability, etc.) • Multi-tasking scheduling policies . Enables domain-specific customization  Open to both extension (―heavyweight‖ extension) and refinement (―lightweight‖ extension)

227 © Copyright Malina Software Example: Adding a Semaphore Concept to UML

 Semaphore semantics: . A specialized object that limits the number of concurrent accesses in a multithreaded environment. When that limit is reached, subsequent accesses are suspended until one of the accessing threads releases the semaphore, at which point the earliest suspended access is given access.  What is required is a special kind of object . Has all the general characteristics of UML objects . …but adds refinements

228 © Copyright Malina Software Example: The Semaphore Stereotype

 Design choice: Refine the UML Class concept by . ―Attaching‖ semaphore semantics • Done informally as part of the stereotype definition . Adding constraints that capture semaphore semantics • E.g., when the maximum number of concurrent accesses is reached, subsequent access requests are queued in FIFO order . Adding characteristic attributes (e.g., concurrency limit) . Adding characteristic operations (getSemaphore (), releaseSemaphore ())  Create a new ―subclass‖ of the original with the above refinements . For technical reasons, this is done using special mechanisms instead of MOF Generalization (see slide Why are Stereotypes Needed?)

229 © Copyright Malina Software Example: Graphical Definition of the Stereotype

«metaclass» UML::Class Special icon ―Extension‖ (Optional)

«stereotype» Semaphore active->size() limit <= <= limit MAXlimit limit : Integer getSema : Operation relSema : Operation

Constraints

230 © Copyright Malina Software Example: Applying the Stereotype

Object

print()

«semaphore» «semaphore» SomeOtherClass DijkstraSem BinarySem p ( ) get ( ) v ( ) release ( ) «semaphore» «semaphore» limit = MAXlimit limit = 1 getSema = p getSema = get relSema = v relSema = release

231 © Copyright Malina Software The Semantics of Stereotype Application

«semaphore» BinarySem

get ( ) BinarySem release ( ) «semaphore» get ( ) release ( ) limit = 1 getSema = get relSema = release NB: attaching a stereotype does «semaphore» not change the limit = 1 getSema = get original! relSema = release

:Class :Class

name = “BinarySem” name = “BinarySem”

:Operation :Operation :Operation :Operation

name = “get” name = “release” name = “get” name = “release”

232 © Copyright Malina Software Stereotype Representation Options

«semaphore» MySema MySema

(a) (b)

MySema (c)

233 © Copyright Malina Software Why are Stereotypes Needed?

 Why not simply create a new metaclass?

UML:: MOF Class generalization

Semaphore

Rationale:

1. Not all modeling tools support meta-modeling  need to define (M2) extensions using (M1) models 2. Need for special semantics for the extensions: – multiple extensions for a single stereotype – extension of abstract classes (applicable to all subclasses)

234 © Copyright Malina Software The MOF Semantics of UML Extension

 How a stereotype is attached to its base class within a model repository:

“Base” metaclass Stereotype

UML::Class base_Class 0..1 Semaphore : MOF::Class 1 extension_Semaphore : MOF::Stereotype

. Association ends naming convention: base_ extension_

. Required for writing correct OCL constraints for stereotypes

235 © Copyright Malina Software Example: OCL Constraint for a Stereotype

“Base” metaclass Stereotype

UML::Class base_Class 0..1 Semaphore : MOF::Class 1 extension_Semaphore : MOF::Stereotype

 Semaphore constraint: the base Class must have an owned ordered attribute called ―msgQ‖ of type Message

context Semaphore inv: self.base_Class.ownedAttribute-> exists (a | (a.name = „msgQ‟) and (a.type->notEmpty()) and (a.type = Message) and (a.isOrdered) and (a.upperValue = self.limit))

236 © Copyright Malina Software Adding New Meta-Associations

 This was not possible in UML 1.x profiles . Meta-associations represent semantic relationships between modeling concepts . New meta-associations create new semantic relationships . Possibility that some tools will not be able to handle such additions  UML 2.0 capability added via stereotype attribute types: Creates an association between Class and . To be used with care! Message that does not exist in UML

«metaclass» «stereotype» UML::Class Semaphore msgQ : Message [0..*]

237 © Copyright Malina Software UML Profiles

 Profile: A special kind of package containing stereotypes and model libraries that, in conjunction with the UML metamodel, define a group of domain- specific concepts and relationships . The profile mechanism is also available in MOF where it can be used for other MOF-based languages  Profiles can be used for two different purposes: . To define a domain-specific modeling language . To define a domain-specific viewpoint (cast profiles)

238 © Copyright Malina Software Re-Casting Models Using Profiles

 A profile can be dynamically applied or unapplied to a given model . Without changing the original model . Allows a model to be interpreted from the perspective of a specific domain  Example: viewing a UML model fragment as a queueing network

arrivalRate = . . . unapply «client» profile user1 useruser11 apply «server» profile DBase DBase «client» user2 user2user2 serviceRate = . . . arrivalRate = . . .

239 © Copyright Malina Software Multi-Base Stereotypes

 A domain concept may be a specialization of more than one base language concept

NB: stereotyping an abstract class

«metaclass» «metaclass» SemCollaboration UML:: UML:: ConnectableElement Class client1

«semaphore» Sem client2 «stereotype» Semaphore

NB: disjunctive semantics (unlike generalization)

240 © Copyright Malina Software Analysis with Cast Profiles

 E.g., recast a model as a queueing network model

M2M Transform

Modeling Tool Model Analysis Tool 4 m 3.1 2.5

5

Inverse M2M Transform QoS annotations

241 © Copyright Malina Software ―Required‖ Extensions

 An extension can be marked as ―required‖ . Implies that every instance of the base class will be stereotyped by that stereotype • Used by modeling tools to autogenerate the stereotype instances . Facilitates working in a DSML context by avoiding manual stereotyping for every case . E.g., modeling Java

«metaclass» UML::Class

{required}

«stereotype» JavaClass

242 © Copyright Malina Software Strict Profile Application

 A strict application of a profile will hide from view all model elements that do not have a corresponding stereotype in that profile . Convenient for generating views  Strictness is a characteristic of the profile application and not of the profile itself . Any given profile can be applied either way

243 © Copyright Malina Software Metamodel Subsetting with Profiles (1)

 It is often useful to remove segments of the full UML metamodel resulting in a minimal DSML definition . NB: Different mechanism from strict profile application – the hiding is part of the profile definition and cannot be applied selectively  The UML 2.1 profile mechanism adds controls that define which parts of the metamodel are used . Based on refinement of the package import and element import capabilities of UML

244 © Copyright Malina Software Metamodel Subsetting with Profiles (2)

 Case 1: Metamodel Reference . All elements of the referenced MOF package (PackageX) are visible (but not the elements of PackageY) . These elements can also serve as the base for stereotypes in MyProfile

MetamodelZ

«profile» «reference» «merge» MYProfile PackageX PackageY

. Case 2: Explicit Metaclass Reference – Metaclass Q is visible and can serve as a base metaclass for stereotypes in MyProfile NB: Care must be MetamodelZ taken to ensure that all prerequisite parts PackageX for Q (superclasses, merge increments, «profile» «reference» MYProfile Q etc.) are also referenced

245 © Copyright Malina Software Metamodel Subsetting with Profiles (3)

 Case 3: Implicit metaclass reference . Metaclass M is visible

MetamodelZ «profile» MyProfile

«metaclass» M MetamodelZ::M

Q P «stereotype» S

246 © Copyright Malina Software The UML Profile Metamodel

249 © Copyright Malina Software Guidelines for Defining Profiles

 Always define a pure domain model (using MOF) first and the profile elements second . Allows separation of two different concerns: • What are the right concepts and how are they related? • How do the domain-specific concepts map to corresponding UML concepts? . Mixing these two concerns often leads to inadequate profiles  For each domain concept, find the UML concept(s) that most closely match and define the appropriate stereotype . If no matching UML concept can be found, a UML profile is probably unsuitable for that DSML . Fortunately, many of the UML concepts are quite general (object, association) and can easily be mapped to domain- specific concepts

250 © Copyright Malina Software Matching Stereotypes to Metaclasses

 A suitable base metaclass implies the following: . Semantic proximity • The domain concept should be a special case of the UML concept . No conflicting well-formedness rules (OCL constraints) . Presence of required characteristics and (meta)attributes • e.g., multiplicity for domain concepts that represent collections • New attributes can always be added but should not conflict with existing ones . No inappropriate or conflicting characteristics or (meta)attributes • Attributes that are semantically unrelated to the domain concept • These can sometimes be eliminated by suitable constraints (e.g., forcing multiplicity to always have a value of 1 or 0) . Presence of appropriate meta-associations • It is possible to define new meta-associations . No inappropriate or confliciting meta-associations • These too can be eliminated sometimes by constraints

251 © Copyright Malina Software Beware of Syntactic Matches!

 Avoid seductive appeal of a syntactic match . In particular, do not use things that model M1 entities to capture M0 elements and vice versa • Example: using packages to represent groupings of run-time entities • Example: using connector and part structures to capture design time dependencies (e.g., requirements dependencies)  This may confuse both tools and users

252 © Copyright Malina Software Catalog of Adopted OMG Profiles

 UML Profile for CORBA  UML Profile for CORBA Component Model (CCM)  UML Profile for Enterprise Application Integration (EAI)  UML Profile for Enterprise Distributed Object Computing (EDOC)  UML Profile for Modeling QoS and Fault Tolerance Characteristics and Mechanisms  UML Profile for Schedulability, Performance, and Time  UML Profile for System on a Chip (SoC)  UML Profile for Systems Engineering (SysML)  UML Testing Profile  UML Profile for Modeling and Analysis of Real-Time and Embedded Systems (MARTE)  UML Profile for DoDAF/MoDAF (UPDM)

253 © Copyright Malina Software Bibliography

 OMG UML Profiles specifications . http://www.omg.org/technology/documents/profile_catalog.h tm

254 © Copyright Malina Software Tutorial Outline

 Models: What and Why

 Modeling Language Design

 Modeling Language Specification

 Model Transformations

 Summary

255 © Copyright Malina Software Model Transformations: Purpose

 Generating a new model from a source model— according to formally defined rules—to: 1. Extract an interesting subset of the source model (Query) • Example: Find all classes that have multiple parents 2. Generate a new model, based on a different metamodel, that is ―equivalent‖ to the source model (Transformation) • Example: Create a queueing network model of a UML model to facilitate performance analysis • Example: UML to Java transformation for code generation • Definition of ―equivalence‖ depends on the particular case 3. Represent the source model from a particular viewpoint (View) • In effect, just a special case of Transformation

256 © Copyright Malina Software A Basic Representation of Model Transformation

 Source to target mapping based on pre-defined transformation rules . Conceptually similar to source code compilation

MM1 to MM2 Metamodel Metamodel M2 Transformation MM1 MM2 Rules

Transformation M1 model1 model2 : MM1 Mapping : MM2

Can be either a process or an object

257 © Copyright Malina Software Model Transformations: Styles

(1) Source element (2) Source pattern to target pattern to target element

(3) Source pattern to target pattern

258 © Copyright Malina Software Features of Model Transformations

 Based on classification of Czarnecki and Helsen*

Model Transformation

Transformation Tracing Rules

Rule Source/Target Application Relationship Control

Rule Incrementality Organization Directionality

*K. Czarnecki and S. Helsen, “Feature-based survey of model transformation approaches”, IBM Systems Journal, vol. 45, no.3, 2006 259 © Copyright Malina Software Model Transformation Features

 Transformation rules – the rules for the transformation  Rule application control – controlling where (location) and when (scheduling) a rule applies  Rule organization – packaging and reuse of rules  Source-target relationship – are source and target the same model or different ones?  Incrementality – incremental change support  Directionality – of transformations (one way or multiple directions)  Tracing – retaining trace links between source and target

260 © Copyright Malina Software The Traditional Approach

 A basic ―element-to-pattern‖ style . Generate a target pattern for each element of the source model . Example (S. Mellor: ―archetype‖ language that generates a Java class):

.for each object in O_OBJ public class ${object.name} extends StateMachine private StateMachineState currentState; .select many attributes related by object->O_ATTR[R_105] .for each attribute in attributes private ${attribute.implType} ${attribute.name}; .end for . . . .select many signals related by object->SM_SM[R301]->SM_EVT[R303]

.for each signal in signals protected void ${signal.name} () throws ooadException; . . . .end for } .emit to file ${object.name}.java .end for  Open source example: Jave Emitter Templates (JET) in Eclipse

261 © Copyright Malina Software Some Drawbacks of the Template Approach

 Primarily intended for model-to-code transforms . Optimized for working with strings . Model-to-model transforms possible but may be difficult to specify  : . E.g., no dedicated support for a system-level optimization pass . Unidirectional: no built-in support for inverse mapping . Localized perspective: no support for incremental transformation (―recompile the world‖ for every change, regardless of scope) . Serialized transformation process (like Cfront): No ability to exploit application level knowledge for optimization

262 © Copyright Malina Software MDA Transformation Standards

 MOF to XMI  MOF to JMI  MOF 2 Queries/Views/Transformations  MOF to Text

263 © Copyright Malina Software QVT Basics

 Three types of transformations defined: . Core . Relations . Operational Mappings  The first two forms are declarative the third is imperative (procedural) . Core is a ―minimal‖ form based on minor extensions to OCL and EMOF . Relations is more user-friendly but may be less efficient . The standard defines a formal mapping from Relations to Core  Operational style provides more flexibility but is more complex  All allow invocation of external (―black box‖) transforms

264 © Copyright Malina Software QVT Metamodel Structure (simplified)

«import» Essential EMOF OCL

«import» «import» «import»

Common Imperative OCL «import» «import»

Core «import» Relations QVT QVT «import» Operational Mapping QVT

265 © Copyright Malina Software A Generalized Model of QVT Model Transformations

 Transformations can be viewed as an instantiable collection of relations between metamodel patterns

Transform [MM1-MM2] M2 Metamodel Metamodel MM1 MM2 relationshiprelationship Relationi

aTransform : Transform M1 model1 model2 : MM1 : MM2 relationshiprelationship ri:Relationi

Trace

266 © Copyright Malina Software Relations and Transformations

 A relation specifies a matching between two (or more) model patterns in respective models

. A pattern (domain) in a relation can be designated as – ―checkonly‖ – only detects and flags violations of relation – ―enforced‖ – modifies corresponding model to assure relation holds . A relation may invoke (depend on) other relations . A transformation consists of one or more ―top-level‖ relations that must hold – …and a set of relations invoked (transitively) by top-level relations

267 © Copyright Malina Software Relational Transforms: Graphical Syntax

 Only practical for binary relations Class2Table

«domain» «domain» c:Class t : Table name = cn name = cn+’_tid’

u1 : UML r1 : RDBMS C E p : Property col : Column name = pn name = pn

when cn.notEmpty () where Property2Column (c, t)

268 © Copyright Malina Software Relational Transforms: Textual Syntax

 Equivalent textual specification: relation Class2Table { checkonly domain u1:UML c:Class { name = cn, p:Property {name = pn}} enforce domain r1:RDBMS t:table { name = cn + „_tid‟, col:Column {name = pn }} when { cn.notEmpty() } where { Property2Column (c, t) }}  Any number of domains (patterns) can be included in a relation

269 © Copyright Malina Software Transformation Relations as Objects

 Model transformation can be viewed as enforcement of pre-defined formal relations between two or more models  This can be achieved by instantiating a set of ―relation‖ objects (traces) that enable continuous transformation . If one model changes, trace objects react to ensure that the declared relations between models always hold (for enforced domains) . Only the necessary changes are made  incremental change model

270 © Copyright Malina Software Example: UML to MOF Model Transform

 Translate a UML-based metamodel into a proper MOF metamodel . e.g., MOF does not support association classes

271 © Copyright Malina Software Example: UML Metamodel (Simplified Fragment)

272 © Copyright Malina Software Example: MOF Metamodel (Simplified Fragment)

273 © Copyright Malina Software Example: Relationship Definition

UMLAssocClass2MOF «domain»

«domain»

u : UML m : MOF

C E

274 © Copyright Malina Software Alternative: Operational Mappings Approach

 A ―how‖ (vs ―what‖) approach to transformation . Unidirectional: source and target clearly identified . However: support for incremental transforms • Uses concept of ―trace‖ objects that incarnate a transformation instance  Provides explicit control over the entire transformation process . E.g., can specify sub-transformations that can be executed in parallel  Extends OCL with imperative statements and side- effects . E.g.: assignment statement, imperative ‖if-then-else‖, loops, etc. . Used to specify transformation procedure . Includes a ―standard library‖ of OCL operations

275 © Copyright Malina Software Operational Mapping: Basics

 Some conceptual overlap with Relations . Source is always ―checkonly‖ and target is always ―enforced‖ . Transformations are reified as objects . Each ―transformation instance‖ (trace) ensures continuous updating of the target model in the presence of ongoing modifications of the source model  General format: . transformation (in im:MM1, out om:MM2) main () {-- }  A transformation occurs by creating an instance of the appropriate transformation and invoking its ―transform()‖ operation . The results can be checked for success or failure . Exceptions can be handled explicitly, etc.

276 © Copyright Malina Software Operational Mapping: Mapping Specification

 Each mapping is defined as an operation on the appropriate metamodel element . E.g. (see slide xxx): . mapping AssociationClass::UMLAssocClass2MOF(){ // this will create an end object if it does not exist object ca : MOFClass {name := self.end[0].umlclass.name;}; object cb : MOFClass {name := self.end[1].umlclass.name;}; object a1e1 : MOFProperty {name := self.end[0].name; lower := self.end[0].lower; upper := self.end[0].upper;} object a1e2 : MOFProperty {name := self.end[1].name; lower := self.end[1].lower; upper := self.end[1].upper;} ... object ac : MOFAssociation {name := ca.name + „_‟ + cb.name; } }

277 © Copyright Malina Software Operational Mapping: Invoking the Mappings

transformation UML2MOF (in um:UML, out mm:MOF) main (){ im.objectsOfType(AssociationClass)-> map UMLAssocClass2MOF ()} mapping AssociationClass::UMLAssocClass2MOF() { ...}

278 © Copyright Malina Software Alternative: The Core Language Approach

 Similar to Relations but simpler . Trace classes need to be specified explicitly . Mappings tend to be more verbose

Guard Guard Guard Pattern Pattern Pattern

Domain Trace Domain Pattern Pattern Pattern

“check” “enforce”

map { [check] [enforce] () {} [check] [enforce] () {} ... where () {} }

279 © Copyright Malina Software Summary: MDA Transformations

 A key element of MDA  An operation on MDA models to . Convert models into equivalent models suitable for analysis or viewing . Refine or generalize models (e.g., PIM to PSM, or PSM to PIM) . Generate code from models  OMG provides a technology-neutral standard for defining transformations . Declarative style (Core and Relations) . Imperative style (Operational Mappings)  Work on model transformations is in its infancy and more research is required to deal with scalability, performance, optimization, etc.

280 © Copyright Malina Software Summary (1)

 The definition of a modeling languages comprises a concrete syntax, an abstract syntax, and semantics . Greater emphasis on communication/understanding aspects compared to most programming languages • E.g., multiple DSMLs, each chosen for its expressiveness  We have neither a deep understanding nor a systematic approach to modeling language design . A discipline lacking theoretical underpinnings  but definitely not lacking in controversy . But, a critical discipline to help us contend with the growing complexity of modern software

281 © Copyright Malina Software Summary (2)

 Designing a useful domain-specific computer language (modeling or programming) is challenging and requires diverse and highly-specialized skills . Domain expertise . Modeling language design expertise • No established and reliable theory of modeling language design to guide the designer . Dealing with the fragmentation problem  And remember: if the support infrastructure is inadequate, the language may not be viable . Despite its potential technical excellence

282 © Copyright Malina Software Bibliography/References

 A. Kleppe, ―Software Language Engineering‖, Addison-Wesley, 2009  T. Clark et al., ―Applied Metamodeling – A Foundation for Language Driven Development‖, (2nd Edition), Ceteva, http://www.eis.mdx.ac.uk/staffpages/tonyclark/Papers/  S. Kelly and J.-P. Tolvanen, "Domain-Specific Modeling: Enabling Full Code Generation," John Wiley & Sons, 2008  J. Greenfield et al., ―Software Factories‖, John Wiley & Sons, 2004  D. Harel and B. Rumpe, ―Meaningful Modeling: What‘s the Semantics of ‗Semantics‘‖, IEEE Computer, Oct. 2004.  E. Seidewitz, ―What Models Mean‖, IEEE Software, Sept./Oct. 2003.  T. Kühne, ―Matters of (Meta-)Modeling, Journal of Software and Systems Modeling, vol.5, no.4, December 2006.  Kermeta Workbench (http://www.kermeta.org/ )  OMG‘s Executable UML Foundation Spec (http://www.omg.org/spec/FUML/1.0/Beta1 )  UML 2 Semantics project (http://www.cs.queensu.ca/~stl/internal/uml2/index.html)  ITU-T SDL language standard (Z.100) (http://www.itu.int/ITU- T/studygroups/com10/languages/Z.100_1199.pdf)  ITU-T UML Profile for SDL (Z.109) (http://www.itu.int/md/T05-SG17-060419- TD-WP3-3171/en)

283 © Copyright Malina Software – THANK YOU – QUESTIONS, COMMENTS, ARGUMENTS...

284 © Copyright Malina Software