The ―Theory‖ and Practice of Modeling Language Design (for Model-Based Software Engineering) 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
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
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 set 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 Compiler 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 software development 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 kind 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 mutual exclusion 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, process 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 formal methods (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 thread) 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
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 MetaObject 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‖
«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 <
+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
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
123 © Copyright Malina Software
OCL Basics – Common Logic Operators
not
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(
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 .
131 © Copyright Malina Software OCL Basics – Other Useful Collection Operations
For Sets, Bags, Sequences .
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:
133 © Copyright Malina Software OCL Basics – Defining Operations
Syntax context
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 character 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
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, Interface, 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 cell 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) Message queue 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) Priority inversion: 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 signal 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 metaclass 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_
. 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 metaclasses 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 Template 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 Cons: . 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
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
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