SlideShare a Scribd company logo
1 of 65
22 March 2011 Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) Programming in UML:An Introduction to fUML and Alf Tutorial for the OMG Executable UML Information Day Presented by Ed Seidewitz
Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Agenda Introduction Elements of Executable UML Standard Model Library
Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 I. Introduction A Motivating Example Programming in UML The Standards
Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 A. A Motivating Example E-Commerce Ordering System Loosely based on the Online Bookstore Domain Case Study given in Appendix B of the book Executable UML: A Foundation for Model Driven Architecture by Stephen J. Mellor and Marc J. Balcer (Addison-Wesley, 2002) To be designed in UML Class models for structure State machine models for behavior To be implemented on the Web Using Java/JEE …or maybe C#/.Net …or maybe LAMP …or whatever…
Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Ordering: Class Model Order is an active class whose classifier behavior is responsible for handling ordering functionality.
Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Order: Classifier Behavior A state machine abstracts system behavior into a finite number of states. The system is modeled as having discrete transitions between the states. A transition may trigger further system behavior or system behavior may be dependent on the current state.
Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Order Behavior: EstablishCustomer Activity Full executability requires complete specification of behavior and computation. This is often much more easy to specify using a textual notation. An activity specifies behavior as the coordinated execution of a set of subordinate actions. Other actions provide various data and computational functions. An action in one activity may call another activity. Data and control flow between the various actions.
Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 The Question Is… If we are going to take the time to carefully design our system using UML, e.g., Structural models of classes and associations Behavioral models using state machines or operations and messages Then why can’t we use these directly to execute our system? The answer is: We can! ,[object Object]
…which is best done using a textual action language…
…which should be at the same semantic level as the rest of the model.,[object Object]
Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Executable UML: Issue Resolutions Making models detailed enough for machine execution defeats the purpose of models for human communication. ,[object Object]
Non-executable models are still useful, too.UML is not specified precisely enough to be executed (at least not in a standard way). ,[object Object]
fUML Version 1.0 formal specification now available.Graphical modeling notations are not good for detailed programming. ,[object Object]
Alf Version 1.0 finalization in progress.,[object Object]
Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Unified Modeling Language (UML) 	The Unified Modeling Language (UML) is a graphical language for modeling the structure, behavior and interactions of software, hardware and business systems, standardized by the Object Management Group (OMG). UML Version 1.1 (first standard) – November 1997 UML Version 1.5 (with action semantics) – March 2003 UML Version 2.0 – August 2005 UML Version 2.3 (current standard) – May 2010 UML Version 2.4 – January 2011 (beta) UML Version 2.5 (spec simplification) – August 2011 (planned)
Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Executable UML Foundation (fUML) 	Foundational UML (fUML) is an executable subset of standard UML that can be used to define, in an operational style, the structural and behavioral semantics of systems. OMG RFP for the Semantics of a Foundational Subset for Executable UML Models – Issued April 2005 fUML Version 1.0 Beta 3 (finalized) – February 2010 fUML Version 1.0 (formal) – January 2011
Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Key Components Foundational UML Subset (fUML) – A computationally complete subset of the abstract syntax of UML (Version 2.3) Kernel – Basic object-oriented capabilities Common Behavior – General behavior and asynchronous communication Activities – Activity modeling, including structured activities (but not including variables, exceptions, swimlanes, streaming or other “higher level” activity modeling) Execution Model – A model of the execution semantics of user models within the fUML subset Foundational Model Library Primitive Types – Boolean, String, Integer, Unlimited Natural Primitive Behaviors – Boolean, String and Arithmetic Functions Basic Input/Output – Based on the concept of “Channels”
Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 UML Action Language (Alf) 	The Action Language for Foundational UML (Alf) is a textual surface representation for UML modeling elements with the primary purpose of acting as the surface notation for specifying executable (fUML) behaviors within an overall graphical UML model. (But which also provides an extended notation for structural modeling within the fUML subset.)	 OMG RFP for Concrete Syntax for a UML Action Language – Issued September 2008 Alf Version 1.0 Beta 1 – October 2010
Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Key Components Concrete Syntax – A BNF specification of the legal textual syntax of the Alf language.  Abstract Syntax – A MOF metamodel of the abstract syntax tree that is synthesized during parsing of an Alf text, with additional derived attributes and constraints that specify the static semantic analysis of that text. Semantics – The semantics of Alf are defined by mapping the Alf abstract syntax metamodel to the fUML abstract syntax metamodel. Standard Model Library From the fUML Foundational Model Library Primitive Types (plus Natural and Bit String) Primitive Behaviors (plus Bit String Functions and Sequence Functions) Basic Input/Output Collection Functions – Similar to OCL collection operations for sequences Collection Classes – Set, Ordered Set, Bag, List, Queue, Deque, Map
Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 II. Elements of Executable UML Activities Actions Structure Asynchronous Communication
Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 A. Activities Activities and Parameters Actions and Flows Textual Notation Tokens Offers Control Nodes Structured Nodes
Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Activities and Parameters An activity is a specification of behavior as the coordinated execution of subordinate actions, using a control and data flow model. An activity may have input, output and return parameters. The parameters have corresponding activity parameter node on the boundary of the diagrammatic representation of an activity.
Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Actions and Flows An activity diagram is a graph structure consisting of activity nodes connected by activity edges. An action is a fundamental unit of executable behavior within an activity. A pin is an activity node that either accepts input to or provides output from an action. A control flow specifies the sequencing of actions. An object flow provides a path for passing objects or data.
Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Textual Notation activity DoSomething(in input: Integer, out output Integer): Integer {    output = A(input);    return B(); } Alf behavioral notation maps to fUML activity models. The semantics of the Alf notation is defined by its mapping to fUML
Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Tokens A token is a container for an object, datum or locus of control that may be present at an activity node. The activity is invoked with an argument of 1 for its input parameter. Values on the output activity parameter nodes are copied to the output arguments. a = DoSomething(1, b); The object token flows to the output activity parameter node along the object flow. The object token flows to the input pin of action A along the object flow. Action A fires and produces an object token on its output pin. When it is done, action A produces a control token, which flows to action B along the control flow. An object token with a value of 1 is placed on the input activity parameter node. Action B accepts the control token and fires, producing an object token on its output pin. The object token flows to the output activity parameter node along the object flow.
Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Offers Actions with no control constraints execute concurrently. This means that they may execute in parallel – or they may execute sequentially in any order. An output pin offers its tokens to the targets of all outgoing object flows. Note: fUML semantics do not guarantee “liveliness” or “fairness” in the execution of actions competing for tokens. A single token can only flow to one target. If two competing targets are both ready to accept an offer for the same token, it is indeterminate which will get the token.
Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Fork and Join Nodes A fork node copies the tokens it is offered, and offers a copy on each outgoing flow. A join node waits for a token to be offered on all incoming flows and then offers tokens on its outgoing flow. In the Alf textual notation, forks and joins are implicit in the parallel block notation. order = 'Create Order'(); //@parallel  {    'Fulfill Order'(order);    'Invoice Order'(order); } 'Close Out Order'(order); Note: Alf does not actually provide any notation for competition for tokens on output pins. A fork node is always inserted for multiple flows out of any output pin.
Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Control Nodes An initial node generates a single control token. A control node is an activity node used to coordinate the flow of (the offers for) tokens between other nodes. A merge node passes on any tokens it receives. Note: This construction is necessary so a “card” token is available for each iteration. Note: Since the decision node “gates” control flow, it must be provided with an incoming control token. A decision node routes tokens based on a decision input value. An activity final node terminates the activity when it receives a token.
Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Data Stores fUML 1.1 will allow the use of data store nodes.
Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Structured Nodes An loop node iterates the execution of its body while a condition is true. Inputs to the loop node initialize loop variables available across all iterations of the loop. A structured node is an activity node used to group subordinate nodes into a control structure. By default, the condition is tested after execution of the body. Note: There is no normative UML graphical notation for loop or conditional nodes. card = 'Select Credit Card'(); do {    charge = 'Create Credit Card Charge'(card);    if ('Check Charge Approval'(charge)) {       'Notify Customer of Approval'(charge);       declined = false;    } else {       'Notify Customer of Denial'(charge);       declined = true; } } while (declined); A conditional node executes one clause or another based on the result of a test (or tests). break; Alf also provides a traditional break statement. true
Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Expansion Regions An expansion region is used to apply subordinate actions on all members of an input collection A parallel expansion region applies nested behavior concurrently to all collection elements. 'Get Outstanding Orders'(customer) ->    select order ('Is Delinquent?'(order)) ->    iterate order ('Refer for Collection'(order)); Alf provides specialized notation that maps to typical uses of expansion regions. An iterative expansion region applies nested behavior sequentially to all collection elements.
Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Reduction This is shorthand for“this.lineItems->collect item (item.amount)”. this.totalAmount =      this.lineItems.amount->reduce MoneyFunctions::Add; A reduction action “inserts” a binary function between the elements of a sequence of values.
Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 B. Actions Invocation Actions Object Actions Structural Feature Actions Link Actions NOTE: Some of these actions will be discussed in more detail later.
Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Invocation Actions Call Behavior Calling an activity Calling a primitive behavior Call Operation Send Signal Accept Event PlaceOrder(customer, product) Max(throttle, limit)    count + quantity order.addProduct(product, quantity) vehicle.EngageBrake(pressure) accept (signal: EngageBrake)
Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Object Actions Value Specification Create Object Destroy Object Test Identity Read Self Read Extent Read Is Classified Object Reclassify Object 1    true    "Hello" new Order() order.destroy() order == myOrder    name != customerName this Order.allInstances() vehicle instanceof Car       car hastype Hatchback reclassify order from PendingOrder to ClosedOrder
Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Structural Feature Actions Read Structural Feature Add Structural Feature Value Remove Structural Feature Value Clear Structural Feature Value order.customer order.datePlaced = todayorder.lineItems->add(item)order.lineItems->addAt(1,item) order.lineItems->remove(item)order.lineItems->removeAt(1) order.card = null
Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Link Actions Read Link Create Link Destroy Link Clear Association Owns.person(house=>thisHouse)    thisHouse.person Owns.addLink(person=>jack, house=>newHouse) Owns.removeLink(person=>jack, house=>oldHouse) Owns.clearAssoc(jack)
Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Computation Indexing (from 1 , not 0) Increment/Decrement Arithmetic/Logic Comparison Conditional Isolation order.lineItems[i]    order.lineItems->at(i) index++    ++count total + value    address & mask total > threshold    index <= count    count != 0 && total/count > limitcount < min || count > max $this.sensor.getReading().value
Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 C. Structure Structural and Behavioral Models Classes Associations
Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Structural and Behavioral Models A structural model (e.g., a class model) specifies the relevant (types of) instances in a domain that may exist at any one point in time. Structural semantics define how a structural model constrains allowable instances. A behavioral model (e.g., an activity model) specifies behavior over time Behavioral semantics define how a behavioral model changes the state of instances over time.
Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Classes A class is a classifier of objects that persist in the extent of the class, with an identity that is independent of the value of their attributes at any one time. Attributes Data Types Primitive Types Operations and Methods Structural Semantics Behavioral Semantics
Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Classes and Attributes A class may have attributes whose types are primitive, data types or other classes. A referential attribute, whose type is a class, is conventionally notated as an association with a class-owned association end. A bidirectional association results in corresponding referential attributes on both associated classes.
Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Data Types A data type is a classifier of transient data values whose identity is based on the values of their attributes. Data types may have attributes, but not operations.
Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Primitive Types From UML 2.3 Auxiliary Constructs Boolean Integer UnlimitedNatural String fUML 1.1 will: Use the new UML 2.4 PrimitiveTypes package Include support for the new Real type
Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Classes: Operations and Methods A method defines the actual behavior that is invoked. An operation specifies a behavior that may be synchronously invoked on an instance of a class.
Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Classes: Structural Semantics Structural semantics specify how a structural model constrains allowable instances. Objects are instances of classes with values for each attribute. Class-owned association ends are structural features with values, like attributes. fUML does not actually give semantics to an association with class-owned ends, only to the ends as structural features. Note: fUML does provide “reified” semantics for associations that own their own ends, as will be discussed later.
Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Classes: Behavioral Semantics Behavioral semantics specify how a behavioral model changes the state of instances over time. Creating an Order Adding a Line Item Canceling an Order
Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Creating an Order Before After A new object is created and the constructor operation is invoked. order = new Order (customer, today) @Create public Order (in customer: Customer, in datePlaced: Date) {    this.datePlaced = datePlaced;    this.totalAmount = new Money(dollars=>0, cents=>0);    this.customer = customer;    this.customer.orders->add(this); } The constructor initializes the new order’s attribute values… …and adds the order to the customer’s list.
Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Adding a Line Item Before After order.addProduct (product, 2) The addProduct operation is invoked on an existing Order object. The method for the operation creates a new line item object… …adds the new object to the list of line items for the order… public addProduct     (in product: Product, in quantity: Integer) {    lineItem = new LineItem(product, quantity);    this.lineItems->add(lineItem);    this.totalAmount = MoneyFunctions::Add             (this.totalAmount, lineItem.amount); } …and updates the total order amount.
Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Canceling an Order Before After order.cancel() A destructor operation is invoked, after which the order object is destroyed. Because line items are aggregated by composition, they are destroyed, too. @Destroy public cancel() {    this.customer.orders->remove(this); } References to the destroyed object must be explicitly removed.
Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Associations An association is a classifier whose instances are links that relate other instances. Classes and Associations Structural Semantics Behavioral Semantics
Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Classes and Associations An association (that owns its ends) is a classifier of persistent links between the associated classes, which exist in the extent of the association.
Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Associations: Structural Semantics Structural semantics specify how a structural model constrains allowable instance models. Links are now semantic instances of the indicated associations.
Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Associations: Behavioral Semantics Behavioral semantics specify how a behavioral model changes the state of instances over time. Creating an Order (revised) Canceling an Order (revised)
Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Creating an Order (revised) Before After order = new Order (customer, today) @Create public Order (in customer: Customer, in datePlaced: Date) {    this.datePlaced = datePlaced;    this.totalAmount = new Money(dollars=>0, cents=>0);    Customer_Order.addLink(customer, this); } A single action creates a bidirectional link.
Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Canceling an Order (revised) Before After order.cancel() A destructor operation is invoked, after which the order object is destroyed.  Links in which the destroyed object participates are now also automatically destroyed. @Destroy public cancel() { }
Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 D. Asynchronous Communication Signals and Receptions Classifier Behaviors Asynchronous Behavior
Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Signals and Receptions A signal is a classifier whose instances may be communicated asynchronously. A signal may have attributes that represent transmittable data.  A reception is a declaration of the ability to receive a signal.  More than one class can receive the same signal.
Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 An active class is one that has a classifier behavior. Only active class may receive signals. A classifier behavior is an autonomous behavior started when an active class is instantiated. Classifier Behaviors
Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Asynchronous Behavior The order object creates a new credit card charge object, which begins its asynchronous behavior. The order object accepts a signal to submit a charge. Note: UML semantics require a separate action to start the behavior of a new object. However, Alf notation for creating an active class maps to both create and start object behavior actions. accept (submission: SubmitCharge); card = submission.card; do {    new CreditCardCharge(card, this);    accept (response: ChargeApproved) {       this.customer.ChargeApproved(response.charge);       break;    } or accept (response: ChargeDeclined) {       this.customer.ChargeDeclined(response.charge);    } while (true); The order object accepts a signal from the charge object that the charge is approved. The order object sends a signal to the customer that the charge is approved.
Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 III. Standard Model Library ,[object Object]
Collection Functions
Collection Classes
Basic Input/Output,[object Object]
Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Collection Functions Collection functions operate on sequences of values of any type. Testing and accessing functions Examples: seq->isEmpty(), seq1->equals(seq2), seq->at(n) Non-mutating funtions Examples: seq2 = seq->including(x), seq3 = seq1->union(seq2) Mutating “in place” functions Examples: seq->add(x), seq1->addAll(seq2), seq2->remove(x)

More Related Content

What's hot

Introduction to MLflow
Introduction to MLflowIntroduction to MLflow
Introduction to MLflowDatabricks
 
Helm – The package manager for Kubernetes
Helm – The package manager for KubernetesHelm – The package manager for Kubernetes
Helm – The package manager for KubernetesFabianRosenthal1
 
MLOps Using MLflow
MLOps Using MLflowMLOps Using MLflow
MLOps Using MLflowDatabricks
 
Capella Days 2021 | An example of model-centric engineering environment with ...
Capella Days 2021 | An example of model-centric engineering environment with ...Capella Days 2021 | An example of model-centric engineering environment with ...
Capella Days 2021 | An example of model-centric engineering environment with ...Obeo
 
An intro to Kubernetes operators
An intro to Kubernetes operatorsAn intro to Kubernetes operators
An intro to Kubernetes operatorsJ On The Beach
 
6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformationMajong DevJfu
 
CapellaDays2022 | ThermoFisher - ESI TNO | A method for quantitative evaluati...
CapellaDays2022 | ThermoFisher - ESI TNO | A method for quantitative evaluati...CapellaDays2022 | ThermoFisher - ESI TNO | A method for quantitative evaluati...
CapellaDays2022 | ThermoFisher - ESI TNO | A method for quantitative evaluati...Obeo
 
Migrating Java JBoss EAP Applications to Kubernetes With S2I
Migrating Java JBoss EAP Applications to Kubernetes With S2IMigrating Java JBoss EAP Applications to Kubernetes With S2I
Migrating Java JBoss EAP Applications to Kubernetes With S2IKonveyor Community
 
Open shift 4 infra deep dive
Open shift 4    infra deep diveOpen shift 4    infra deep dive
Open shift 4 infra deep diveWinton Winton
 
Building a Kubernetes App with Amazon EKS
Building a Kubernetes App with Amazon EKSBuilding a Kubernetes App with Amazon EKS
Building a Kubernetes App with Amazon EKSDevOps.com
 
MLOps - The Assembly Line of ML
MLOps - The Assembly Line of MLMLOps - The Assembly Line of ML
MLOps - The Assembly Line of MLJordan Birdsell
 
Applying Anti-Reversing Techniques to Machine Code
Applying Anti-Reversing Techniques to Machine CodeApplying Anti-Reversing Techniques to Machine Code
Applying Anti-Reversing Techniques to Machine CodeTeodoro Cipresso
 
Introduction to Neo4j for the Emirates & Bahrain
Introduction to Neo4j for the Emirates & BahrainIntroduction to Neo4j for the Emirates & Bahrain
Introduction to Neo4j for the Emirates & BahrainNeo4j
 

What's hot (20)

Introduction to MLflow
Introduction to MLflowIntroduction to MLflow
Introduction to MLflow
 
Helm – The package manager for Kubernetes
Helm – The package manager for KubernetesHelm – The package manager for Kubernetes
Helm – The package manager for Kubernetes
 
MLOps for production-level machine learning
MLOps for production-level machine learningMLOps for production-level machine learning
MLOps for production-level machine learning
 
MLOps Using MLflow
MLOps Using MLflowMLOps Using MLflow
MLOps Using MLflow
 
Capella Days 2021 | An example of model-centric engineering environment with ...
Capella Days 2021 | An example of model-centric engineering environment with ...Capella Days 2021 | An example of model-centric engineering environment with ...
Capella Days 2021 | An example of model-centric engineering environment with ...
 
An intro to Kubernetes operators
An intro to Kubernetes operatorsAn intro to Kubernetes operators
An intro to Kubernetes operators
 
6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation
 
CapellaDays2022 | ThermoFisher - ESI TNO | A method for quantitative evaluati...
CapellaDays2022 | ThermoFisher - ESI TNO | A method for quantitative evaluati...CapellaDays2022 | ThermoFisher - ESI TNO | A method for quantitative evaluati...
CapellaDays2022 | ThermoFisher - ESI TNO | A method for quantitative evaluati...
 
Migrating Java JBoss EAP Applications to Kubernetes With S2I
Migrating Java JBoss EAP Applications to Kubernetes With S2IMigrating Java JBoss EAP Applications to Kubernetes With S2I
Migrating Java JBoss EAP Applications to Kubernetes With S2I
 
MLOps.pptx
MLOps.pptxMLOps.pptx
MLOps.pptx
 
Open shift 4 infra deep dive
Open shift 4    infra deep diveOpen shift 4    infra deep dive
Open shift 4 infra deep dive
 
Spring AOP
Spring AOPSpring AOP
Spring AOP
 
Borland C++Builder 進階課程
Borland C++Builder 進階課程Borland C++Builder 進階課程
Borland C++Builder 進階課程
 
Building a Kubernetes App with Amazon EKS
Building a Kubernetes App with Amazon EKSBuilding a Kubernetes App with Amazon EKS
Building a Kubernetes App with Amazon EKS
 
Openshift
Openshift Openshift
Openshift
 
Introducing Kogito
Introducing KogitoIntroducing Kogito
Introducing Kogito
 
MLOps - The Assembly Line of ML
MLOps - The Assembly Line of MLMLOps - The Assembly Line of ML
MLOps - The Assembly Line of ML
 
MLOps in action
MLOps in actionMLOps in action
MLOps in action
 
Applying Anti-Reversing Techniques to Machine Code
Applying Anti-Reversing Techniques to Machine CodeApplying Anti-Reversing Techniques to Machine Code
Applying Anti-Reversing Techniques to Machine Code
 
Introduction to Neo4j for the Emirates & Bahrain
Introduction to Neo4j for the Emirates & BahrainIntroduction to Neo4j for the Emirates & Bahrain
Introduction to Neo4j for the Emirates & Bahrain
 

Viewers also liked

Model-Driven Software Engineering in Practice - Chapter 6 - Modeling Language...
Model-Driven Software Engineering in Practice - Chapter 6 - Modeling Language...Model-Driven Software Engineering in Practice - Chapter 6 - Modeling Language...
Model-Driven Software Engineering in Practice - Chapter 6 - Modeling Language...Jordi Cabot
 
Is your company fully engaged towards innovation?
Is your company fully engaged towards innovation?Is your company fully engaged towards innovation?
Is your company fully engaged towards innovation?Sebastien Juras
 
Software Engineering :UML class diagrams
Software Engineering :UML class diagramsSoftware Engineering :UML class diagrams
Software Engineering :UML class diagramsAjit Nayak
 
INNOVATION IS NOT AN OPTION
INNOVATION IS NOT AN OPTIONINNOVATION IS NOT AN OPTION
INNOVATION IS NOT AN OPTIONSebastien Juras
 
Uml Omg Fundamental Certification 3
Uml Omg Fundamental Certification 3Uml Omg Fundamental Certification 3
Uml Omg Fundamental Certification 3Ricardo Quintero
 
Parallel programming using MPI
Parallel programming using MPIParallel programming using MPI
Parallel programming using MPIAjit Nayak
 
Computer Fundamentals & Intro to C Programming module i
Computer Fundamentals & Intro to C Programming module iComputer Fundamentals & Intro to C Programming module i
Computer Fundamentals & Intro to C Programming module iAjit Nayak
 
Database Programming using SQL
Database Programming using SQLDatabase Programming using SQL
Database Programming using SQLAjit Nayak
 
Uml Omg Fundamental Certification 1
Uml Omg Fundamental Certification 1Uml Omg Fundamental Certification 1
Uml Omg Fundamental Certification 1Ricardo Quintero
 
Ns2: Introduction - Part I
Ns2: Introduction - Part INs2: Introduction - Part I
Ns2: Introduction - Part IAjit Nayak
 
Misiones en Honduras Mayo 2012
Misiones en Honduras Mayo 2012Misiones en Honduras Mayo 2012
Misiones en Honduras Mayo 2012Ricardo Quintero
 
One thing you can do to increase your charisma
One thing you can do to increase your charismaOne thing you can do to increase your charisma
One thing you can do to increase your charismaSebastien Juras
 
Enterprise Architecture for Dummies
Enterprise Architecture for DummiesEnterprise Architecture for Dummies
Enterprise Architecture for DummiesSebastien Juras
 
Software Engineering : Process Models
Software Engineering : Process ModelsSoftware Engineering : Process Models
Software Engineering : Process ModelsAjit Nayak
 
The Humming-bird’s share
The Humming-bird’s shareThe Humming-bird’s share
The Humming-bird’s shareSebastien Juras
 
Ns2: OTCL - PArt II
Ns2: OTCL - PArt IINs2: OTCL - PArt II
Ns2: OTCL - PArt IIAjit Nayak
 
Object Oriented Analysis Design using UML
Object Oriented Analysis Design using UMLObject Oriented Analysis Design using UML
Object Oriented Analysis Design using UMLAjit Nayak
 

Viewers also liked (20)

Model-Driven Software Engineering in Practice - Chapter 6 - Modeling Language...
Model-Driven Software Engineering in Practice - Chapter 6 - Modeling Language...Model-Driven Software Engineering in Practice - Chapter 6 - Modeling Language...
Model-Driven Software Engineering in Practice - Chapter 6 - Modeling Language...
 
OCL tutorial
OCL tutorial OCL tutorial
OCL tutorial
 
Is your company fully engaged towards innovation?
Is your company fully engaged towards innovation?Is your company fully engaged towards innovation?
Is your company fully engaged towards innovation?
 
Software Engineering :UML class diagrams
Software Engineering :UML class diagramsSoftware Engineering :UML class diagrams
Software Engineering :UML class diagrams
 
INNOVATION IS NOT AN OPTION
INNOVATION IS NOT AN OPTIONINNOVATION IS NOT AN OPTION
INNOVATION IS NOT AN OPTION
 
Uml Omg Fundamental Certification 3
Uml Omg Fundamental Certification 3Uml Omg Fundamental Certification 3
Uml Omg Fundamental Certification 3
 
01 conceptos de diseño
01 conceptos de diseño01 conceptos de diseño
01 conceptos de diseño
 
Parallel programming using MPI
Parallel programming using MPIParallel programming using MPI
Parallel programming using MPI
 
Computer Fundamentals & Intro to C Programming module i
Computer Fundamentals & Intro to C Programming module iComputer Fundamentals & Intro to C Programming module i
Computer Fundamentals & Intro to C Programming module i
 
Database Programming using SQL
Database Programming using SQLDatabase Programming using SQL
Database Programming using SQL
 
Uml Omg Fundamental Certification 1
Uml Omg Fundamental Certification 1Uml Omg Fundamental Certification 1
Uml Omg Fundamental Certification 1
 
Ns2: Introduction - Part I
Ns2: Introduction - Part INs2: Introduction - Part I
Ns2: Introduction - Part I
 
Misiones en Honduras Mayo 2012
Misiones en Honduras Mayo 2012Misiones en Honduras Mayo 2012
Misiones en Honduras Mayo 2012
 
One thing you can do to increase your charisma
One thing you can do to increase your charismaOne thing you can do to increase your charisma
One thing you can do to increase your charisma
 
I BELIEVE I CAN FLY
I BELIEVE I CAN FLYI BELIEVE I CAN FLY
I BELIEVE I CAN FLY
 
Enterprise Architecture for Dummies
Enterprise Architecture for DummiesEnterprise Architecture for Dummies
Enterprise Architecture for Dummies
 
Software Engineering : Process Models
Software Engineering : Process ModelsSoftware Engineering : Process Models
Software Engineering : Process Models
 
The Humming-bird’s share
The Humming-bird’s shareThe Humming-bird’s share
The Humming-bird’s share
 
Ns2: OTCL - PArt II
Ns2: OTCL - PArt IINs2: OTCL - PArt II
Ns2: OTCL - PArt II
 
Object Oriented Analysis Design using UML
Object Oriented Analysis Design using UMLObject Oriented Analysis Design using UML
Object Oriented Analysis Design using UML
 

Similar to Programming in UML: An Introduction to fUML and Alf

Executable UML and SysML Workshop
Executable UML and SysML WorkshopExecutable UML and SysML Workshop
Executable UML and SysML WorkshopEd Seidewitz
 
UML: Once More with Meaning
UML: Once More with MeaningUML: Once More with Meaning
UML: Once More with MeaningEd Seidewitz
 
UML: This Time We Mean It!
UML: This Time We Mean It!UML: This Time We Mean It!
UML: This Time We Mean It!Ed Seidewitz
 
06-unit-iintrouml25sep2015-160901172758.pptx
06-unit-iintrouml25sep2015-160901172758.pptx06-unit-iintrouml25sep2015-160901172758.pptx
06-unit-iintrouml25sep2015-160901172758.pptxSindhu Mani
 
UNIFIED MODELING LANGUAGE
UNIFIED MODELING LANGUAGEUNIFIED MODELING LANGUAGE
UNIFIED MODELING LANGUAGERaval Chirag
 
Introduction To Uml
Introduction To UmlIntroduction To Uml
Introduction To Umlguest514814
 
UML Modeling and Profiling Lab - Advanced Software Engineering Course 2014/2015
UML Modeling and Profiling Lab - Advanced Software Engineering Course 2014/2015UML Modeling and Profiling Lab - Advanced Software Engineering Course 2014/2015
UML Modeling and Profiling Lab - Advanced Software Engineering Course 2014/2015Luca Berardinelli
 
Uml(unified modeling language) Homework Help
Uml(unified modeling language) Homework HelpUml(unified modeling language) Homework Help
Uml(unified modeling language) Homework HelpSteve Nash
 
Introduction to Unified Modeling Language
Introduction to Unified Modeling LanguageIntroduction to Unified Modeling Language
Introduction to Unified Modeling LanguageAMITJain879
 
18540PhDreport.pdf
18540PhDreport.pdf18540PhDreport.pdf
18540PhDreport.pdfTaraTrends
 
Executable UML – UML2
Executable UML – UML2Executable UML – UML2
Executable UML – UML2elliando dias
 
Object Process Methodology
Object Process MethodologyObject Process Methodology
Object Process Methodologyguest77b0cd12
 
Unified Modeling Language
Unified Modeling LanguageUnified Modeling Language
Unified Modeling Languagesurana college
 
M05 Metamodel
M05 MetamodelM05 Metamodel
M05 MetamodelDang Tuan
 

Similar to Programming in UML: An Introduction to fUML and Alf (20)

Executable UML and SysML Workshop
Executable UML and SysML WorkshopExecutable UML and SysML Workshop
Executable UML and SysML Workshop
 
UML: Once More with Meaning
UML: Once More with MeaningUML: Once More with Meaning
UML: Once More with Meaning
 
UML: This Time We Mean It!
UML: This Time We Mean It!UML: This Time We Mean It!
UML: This Time We Mean It!
 
06-unit-iintrouml25sep2015-160901172758.pptx
06-unit-iintrouml25sep2015-160901172758.pptx06-unit-iintrouml25sep2015-160901172758.pptx
06-unit-iintrouml25sep2015-160901172758.pptx
 
UNIFIED MODELING LANGUAGE
UNIFIED MODELING LANGUAGEUNIFIED MODELING LANGUAGE
UNIFIED MODELING LANGUAGE
 
Ch 2.1
Ch 2.1Ch 2.1
Ch 2.1
 
Introduction To Uml
Introduction To UmlIntroduction To Uml
Introduction To Uml
 
UML Modeling and Profiling Lab - Advanced Software Engineering Course 2014/2015
UML Modeling and Profiling Lab - Advanced Software Engineering Course 2014/2015UML Modeling and Profiling Lab - Advanced Software Engineering Course 2014/2015
UML Modeling and Profiling Lab - Advanced Software Engineering Course 2014/2015
 
Uml introduciton
Uml introducitonUml introduciton
Uml introduciton
 
ooAD
ooADooAD
ooAD
 
Uml(unified modeling language) Homework Help
Uml(unified modeling language) Homework HelpUml(unified modeling language) Homework Help
Uml(unified modeling language) Homework Help
 
l1_introuml.pdf
l1_introuml.pdfl1_introuml.pdf
l1_introuml.pdf
 
Apostila UML
Apostila UMLApostila UML
Apostila UML
 
Introduction to Unified Modeling Language
Introduction to Unified Modeling LanguageIntroduction to Unified Modeling Language
Introduction to Unified Modeling Language
 
18540PhDreport.pdf
18540PhDreport.pdf18540PhDreport.pdf
18540PhDreport.pdf
 
Executable UML – UML2
Executable UML – UML2Executable UML – UML2
Executable UML – UML2
 
Object Process Methodology
Object Process MethodologyObject Process Methodology
Object Process Methodology
 
Unified Modeling Language
Unified Modeling LanguageUnified Modeling Language
Unified Modeling Language
 
Unified Modeling Language
Unified Modeling LanguageUnified Modeling Language
Unified Modeling Language
 
M05 Metamodel
M05 MetamodelM05 Metamodel
M05 Metamodel
 

More from Ed Seidewitz

SysML v2 - What's the big deal, anyway?
SysML v2 - What's the big deal, anyway?SysML v2 - What's the big deal, anyway?
SysML v2 - What's the big deal, anyway?Ed Seidewitz
 
Introduction to the OMG Systems Modeling Language (SysML), Version 2
Introduction to the OMG Systems Modeling Language (SysML), Version 2Introduction to the OMG Systems Modeling Language (SysML), Version 2
Introduction to the OMG Systems Modeling Language (SysML), Version 2Ed Seidewitz
 
The Very Model of a Modern Metamodeler
The Very Model of a Modern MetamodelerThe Very Model of a Modern Metamodeler
The Very Model of a Modern MetamodelerEd Seidewitz
 
SysML v2 and the Next Generation of Modeling Languages
SysML v2 and the Next Generation of Modeling LanguagesSysML v2 and the Next Generation of Modeling Languages
SysML v2 and the Next Generation of Modeling LanguagesEd Seidewitz
 
SysML v2 and MBSE: The next ten years
SysML v2 and MBSE: The next ten yearsSysML v2 and MBSE: The next ten years
SysML v2 and MBSE: The next ten yearsEd Seidewitz
 
Precise Semantics Standards at OMG: Executing on the Vision
Precise Semantics Standards at OMG: Executing on the VisionPrecise Semantics Standards at OMG: Executing on the Vision
Precise Semantics Standards at OMG: Executing on the VisionEd Seidewitz
 
Model Driven Architecture without Automation
Model Driven Architecture without AutomationModel Driven Architecture without Automation
Model Driven Architecture without AutomationEd Seidewitz
 
Hands On With the Alf Action Language: Making Executable Modeling Even Easier
Hands On With the Alf Action Language: Making Executable Modeling Even EasierHands On With the Alf Action Language: Making Executable Modeling Even Easier
Hands On With the Alf Action Language: Making Executable Modeling Even EasierEd Seidewitz
 
Standards-Based Executable UML: Today's Reality and Tomorrow's Promise
Standards-Based Executable UML: Today's Reality and Tomorrow's PromiseStandards-Based Executable UML: Today's Reality and Tomorrow's Promise
Standards-Based Executable UML: Today's Reality and Tomorrow's PromiseEd Seidewitz
 
A Unified View of Modeling and Programming
A Unified View of Modeling and ProgrammingA Unified View of Modeling and Programming
A Unified View of Modeling and ProgrammingEd Seidewitz
 
UML as a Programming Language
UML as a Programming LanguageUML as a Programming Language
UML as a Programming LanguageEd Seidewitz
 
Executable UML Roadmap (as of September 2014)
Executable UML Roadmap (as of September 2014)Executable UML Roadmap (as of September 2014)
Executable UML Roadmap (as of September 2014)Ed Seidewitz
 
Essence: A Common Ground for Flexible Methods
Essence: A Common Ground for Flexible MethodsEssence: A Common Ground for Flexible Methods
Essence: A Common Ground for Flexible MethodsEd Seidewitz
 
Succeeding with Agile in the Federal Government: A Coach's Perspective
Succeeding with Agile in the Federal Government: A Coach's PerspectiveSucceeding with Agile in the Federal Government: A Coach's Perspective
Succeeding with Agile in the Federal Government: A Coach's PerspectiveEd Seidewitz
 
UML 2.5: Specification Simplification
UML 2.5: Specification SimplificationUML 2.5: Specification Simplification
UML 2.5: Specification SimplificationEd Seidewitz
 
Models, Programs and Executable UML
Models, Programs and Executable UMLModels, Programs and Executable UML
Models, Programs and Executable UMLEd Seidewitz
 
Architecting Your Enterprise
Architecting Your EnterpriseArchitecting Your Enterprise
Architecting Your EnterpriseEd Seidewitz
 
Programming in UML: Why and How
Programming in UML: Why and HowProgramming in UML: Why and How
Programming in UML: Why and HowEd Seidewitz
 

More from Ed Seidewitz (18)

SysML v2 - What's the big deal, anyway?
SysML v2 - What's the big deal, anyway?SysML v2 - What's the big deal, anyway?
SysML v2 - What's the big deal, anyway?
 
Introduction to the OMG Systems Modeling Language (SysML), Version 2
Introduction to the OMG Systems Modeling Language (SysML), Version 2Introduction to the OMG Systems Modeling Language (SysML), Version 2
Introduction to the OMG Systems Modeling Language (SysML), Version 2
 
The Very Model of a Modern Metamodeler
The Very Model of a Modern MetamodelerThe Very Model of a Modern Metamodeler
The Very Model of a Modern Metamodeler
 
SysML v2 and the Next Generation of Modeling Languages
SysML v2 and the Next Generation of Modeling LanguagesSysML v2 and the Next Generation of Modeling Languages
SysML v2 and the Next Generation of Modeling Languages
 
SysML v2 and MBSE: The next ten years
SysML v2 and MBSE: The next ten yearsSysML v2 and MBSE: The next ten years
SysML v2 and MBSE: The next ten years
 
Precise Semantics Standards at OMG: Executing on the Vision
Precise Semantics Standards at OMG: Executing on the VisionPrecise Semantics Standards at OMG: Executing on the Vision
Precise Semantics Standards at OMG: Executing on the Vision
 
Model Driven Architecture without Automation
Model Driven Architecture without AutomationModel Driven Architecture without Automation
Model Driven Architecture without Automation
 
Hands On With the Alf Action Language: Making Executable Modeling Even Easier
Hands On With the Alf Action Language: Making Executable Modeling Even EasierHands On With the Alf Action Language: Making Executable Modeling Even Easier
Hands On With the Alf Action Language: Making Executable Modeling Even Easier
 
Standards-Based Executable UML: Today's Reality and Tomorrow's Promise
Standards-Based Executable UML: Today's Reality and Tomorrow's PromiseStandards-Based Executable UML: Today's Reality and Tomorrow's Promise
Standards-Based Executable UML: Today's Reality and Tomorrow's Promise
 
A Unified View of Modeling and Programming
A Unified View of Modeling and ProgrammingA Unified View of Modeling and Programming
A Unified View of Modeling and Programming
 
UML as a Programming Language
UML as a Programming LanguageUML as a Programming Language
UML as a Programming Language
 
Executable UML Roadmap (as of September 2014)
Executable UML Roadmap (as of September 2014)Executable UML Roadmap (as of September 2014)
Executable UML Roadmap (as of September 2014)
 
Essence: A Common Ground for Flexible Methods
Essence: A Common Ground for Flexible MethodsEssence: A Common Ground for Flexible Methods
Essence: A Common Ground for Flexible Methods
 
Succeeding with Agile in the Federal Government: A Coach's Perspective
Succeeding with Agile in the Federal Government: A Coach's PerspectiveSucceeding with Agile in the Federal Government: A Coach's Perspective
Succeeding with Agile in the Federal Government: A Coach's Perspective
 
UML 2.5: Specification Simplification
UML 2.5: Specification SimplificationUML 2.5: Specification Simplification
UML 2.5: Specification Simplification
 
Models, Programs and Executable UML
Models, Programs and Executable UMLModels, Programs and Executable UML
Models, Programs and Executable UML
 
Architecting Your Enterprise
Architecting Your EnterpriseArchitecting Your Enterprise
Architecting Your Enterprise
 
Programming in UML: Why and How
Programming in UML: Why and HowProgramming in UML: Why and How
Programming in UML: Why and How
 

Recently uploaded

Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalLionel Briand
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfFerryKemperman
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Matt Ray
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceBrainSell Technologies
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Hr365.us smith
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Developmentvyaparkranti
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
cpct NetworkING BASICS AND NETWORK TOOL.ppt
cpct NetworkING BASICS AND NETWORK TOOL.pptcpct NetworkING BASICS AND NETWORK TOOL.ppt
cpct NetworkING BASICS AND NETWORK TOOL.pptrcbcrtm
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf31events.com
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Angel Borroy López
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfDrew Moseley
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 

Recently uploaded (20)

Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive Goal
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. Salesforce
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)
 
Advantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your BusinessAdvantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your Business
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Development
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
cpct NetworkING BASICS AND NETWORK TOOL.ppt
cpct NetworkING BASICS AND NETWORK TOOL.pptcpct NetworkING BASICS AND NETWORK TOOL.ppt
cpct NetworkING BASICS AND NETWORK TOOL.ppt
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdf
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 

Programming in UML: An Introduction to fUML and Alf

  • 1. 22 March 2011 Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) Programming in UML:An Introduction to fUML and Alf Tutorial for the OMG Executable UML Information Day Presented by Ed Seidewitz
  • 2. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Agenda Introduction Elements of Executable UML Standard Model Library
  • 3. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 I. Introduction A Motivating Example Programming in UML The Standards
  • 4. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 A. A Motivating Example E-Commerce Ordering System Loosely based on the Online Bookstore Domain Case Study given in Appendix B of the book Executable UML: A Foundation for Model Driven Architecture by Stephen J. Mellor and Marc J. Balcer (Addison-Wesley, 2002) To be designed in UML Class models for structure State machine models for behavior To be implemented on the Web Using Java/JEE …or maybe C#/.Net …or maybe LAMP …or whatever…
  • 5. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Ordering: Class Model Order is an active class whose classifier behavior is responsible for handling ordering functionality.
  • 6. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Order: Classifier Behavior A state machine abstracts system behavior into a finite number of states. The system is modeled as having discrete transitions between the states. A transition may trigger further system behavior or system behavior may be dependent on the current state.
  • 7. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Order Behavior: EstablishCustomer Activity Full executability requires complete specification of behavior and computation. This is often much more easy to specify using a textual notation. An activity specifies behavior as the coordinated execution of a set of subordinate actions. Other actions provide various data and computational functions. An action in one activity may call another activity. Data and control flow between the various actions.
  • 8.
  • 9. …which is best done using a textual action language…
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Unified Modeling Language (UML) The Unified Modeling Language (UML) is a graphical language for modeling the structure, behavior and interactions of software, hardware and business systems, standardized by the Object Management Group (OMG). UML Version 1.1 (first standard) – November 1997 UML Version 1.5 (with action semantics) – March 2003 UML Version 2.0 – August 2005 UML Version 2.3 (current standard) – May 2010 UML Version 2.4 – January 2011 (beta) UML Version 2.5 (spec simplification) – August 2011 (planned)
  • 16. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Executable UML Foundation (fUML) Foundational UML (fUML) is an executable subset of standard UML that can be used to define, in an operational style, the structural and behavioral semantics of systems. OMG RFP for the Semantics of a Foundational Subset for Executable UML Models – Issued April 2005 fUML Version 1.0 Beta 3 (finalized) – February 2010 fUML Version 1.0 (formal) – January 2011
  • 17. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Key Components Foundational UML Subset (fUML) – A computationally complete subset of the abstract syntax of UML (Version 2.3) Kernel – Basic object-oriented capabilities Common Behavior – General behavior and asynchronous communication Activities – Activity modeling, including structured activities (but not including variables, exceptions, swimlanes, streaming or other “higher level” activity modeling) Execution Model – A model of the execution semantics of user models within the fUML subset Foundational Model Library Primitive Types – Boolean, String, Integer, Unlimited Natural Primitive Behaviors – Boolean, String and Arithmetic Functions Basic Input/Output – Based on the concept of “Channels”
  • 18. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 UML Action Language (Alf) The Action Language for Foundational UML (Alf) is a textual surface representation for UML modeling elements with the primary purpose of acting as the surface notation for specifying executable (fUML) behaviors within an overall graphical UML model. (But which also provides an extended notation for structural modeling within the fUML subset.) OMG RFP for Concrete Syntax for a UML Action Language – Issued September 2008 Alf Version 1.0 Beta 1 – October 2010
  • 19. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Key Components Concrete Syntax – A BNF specification of the legal textual syntax of the Alf language. Abstract Syntax – A MOF metamodel of the abstract syntax tree that is synthesized during parsing of an Alf text, with additional derived attributes and constraints that specify the static semantic analysis of that text. Semantics – The semantics of Alf are defined by mapping the Alf abstract syntax metamodel to the fUML abstract syntax metamodel. Standard Model Library From the fUML Foundational Model Library Primitive Types (plus Natural and Bit String) Primitive Behaviors (plus Bit String Functions and Sequence Functions) Basic Input/Output Collection Functions – Similar to OCL collection operations for sequences Collection Classes – Set, Ordered Set, Bag, List, Queue, Deque, Map
  • 20. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 II. Elements of Executable UML Activities Actions Structure Asynchronous Communication
  • 21. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 A. Activities Activities and Parameters Actions and Flows Textual Notation Tokens Offers Control Nodes Structured Nodes
  • 22. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Activities and Parameters An activity is a specification of behavior as the coordinated execution of subordinate actions, using a control and data flow model. An activity may have input, output and return parameters. The parameters have corresponding activity parameter node on the boundary of the diagrammatic representation of an activity.
  • 23. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Actions and Flows An activity diagram is a graph structure consisting of activity nodes connected by activity edges. An action is a fundamental unit of executable behavior within an activity. A pin is an activity node that either accepts input to or provides output from an action. A control flow specifies the sequencing of actions. An object flow provides a path for passing objects or data.
  • 24. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Textual Notation activity DoSomething(in input: Integer, out output Integer): Integer { output = A(input); return B(); } Alf behavioral notation maps to fUML activity models. The semantics of the Alf notation is defined by its mapping to fUML
  • 25. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Tokens A token is a container for an object, datum or locus of control that may be present at an activity node. The activity is invoked with an argument of 1 for its input parameter. Values on the output activity parameter nodes are copied to the output arguments. a = DoSomething(1, b); The object token flows to the output activity parameter node along the object flow. The object token flows to the input pin of action A along the object flow. Action A fires and produces an object token on its output pin. When it is done, action A produces a control token, which flows to action B along the control flow. An object token with a value of 1 is placed on the input activity parameter node. Action B accepts the control token and fires, producing an object token on its output pin. The object token flows to the output activity parameter node along the object flow.
  • 26. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Offers Actions with no control constraints execute concurrently. This means that they may execute in parallel – or they may execute sequentially in any order. An output pin offers its tokens to the targets of all outgoing object flows. Note: fUML semantics do not guarantee “liveliness” or “fairness” in the execution of actions competing for tokens. A single token can only flow to one target. If two competing targets are both ready to accept an offer for the same token, it is indeterminate which will get the token.
  • 27. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Fork and Join Nodes A fork node copies the tokens it is offered, and offers a copy on each outgoing flow. A join node waits for a token to be offered on all incoming flows and then offers tokens on its outgoing flow. In the Alf textual notation, forks and joins are implicit in the parallel block notation. order = 'Create Order'(); //@parallel { 'Fulfill Order'(order); 'Invoice Order'(order); } 'Close Out Order'(order); Note: Alf does not actually provide any notation for competition for tokens on output pins. A fork node is always inserted for multiple flows out of any output pin.
  • 28. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Control Nodes An initial node generates a single control token. A control node is an activity node used to coordinate the flow of (the offers for) tokens between other nodes. A merge node passes on any tokens it receives. Note: This construction is necessary so a “card” token is available for each iteration. Note: Since the decision node “gates” control flow, it must be provided with an incoming control token. A decision node routes tokens based on a decision input value. An activity final node terminates the activity when it receives a token.
  • 29. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Data Stores fUML 1.1 will allow the use of data store nodes.
  • 30. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Structured Nodes An loop node iterates the execution of its body while a condition is true. Inputs to the loop node initialize loop variables available across all iterations of the loop. A structured node is an activity node used to group subordinate nodes into a control structure. By default, the condition is tested after execution of the body. Note: There is no normative UML graphical notation for loop or conditional nodes. card = 'Select Credit Card'(); do { charge = 'Create Credit Card Charge'(card); if ('Check Charge Approval'(charge)) { 'Notify Customer of Approval'(charge); declined = false; } else { 'Notify Customer of Denial'(charge); declined = true; } } while (declined); A conditional node executes one clause or another based on the result of a test (or tests). break; Alf also provides a traditional break statement. true
  • 31. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Expansion Regions An expansion region is used to apply subordinate actions on all members of an input collection A parallel expansion region applies nested behavior concurrently to all collection elements. 'Get Outstanding Orders'(customer) -> select order ('Is Delinquent?'(order)) -> iterate order ('Refer for Collection'(order)); Alf provides specialized notation that maps to typical uses of expansion regions. An iterative expansion region applies nested behavior sequentially to all collection elements.
  • 32. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Reduction This is shorthand for“this.lineItems->collect item (item.amount)”. this.totalAmount = this.lineItems.amount->reduce MoneyFunctions::Add; A reduction action “inserts” a binary function between the elements of a sequence of values.
  • 33. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 B. Actions Invocation Actions Object Actions Structural Feature Actions Link Actions NOTE: Some of these actions will be discussed in more detail later.
  • 34. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Invocation Actions Call Behavior Calling an activity Calling a primitive behavior Call Operation Send Signal Accept Event PlaceOrder(customer, product) Max(throttle, limit) count + quantity order.addProduct(product, quantity) vehicle.EngageBrake(pressure) accept (signal: EngageBrake)
  • 35. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Object Actions Value Specification Create Object Destroy Object Test Identity Read Self Read Extent Read Is Classified Object Reclassify Object 1 true "Hello" new Order() order.destroy() order == myOrder name != customerName this Order.allInstances() vehicle instanceof Car car hastype Hatchback reclassify order from PendingOrder to ClosedOrder
  • 36. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Structural Feature Actions Read Structural Feature Add Structural Feature Value Remove Structural Feature Value Clear Structural Feature Value order.customer order.datePlaced = todayorder.lineItems->add(item)order.lineItems->addAt(1,item) order.lineItems->remove(item)order.lineItems->removeAt(1) order.card = null
  • 37. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Link Actions Read Link Create Link Destroy Link Clear Association Owns.person(house=>thisHouse) thisHouse.person Owns.addLink(person=>jack, house=>newHouse) Owns.removeLink(person=>jack, house=>oldHouse) Owns.clearAssoc(jack)
  • 38. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Computation Indexing (from 1 , not 0) Increment/Decrement Arithmetic/Logic Comparison Conditional Isolation order.lineItems[i] order.lineItems->at(i) index++ ++count total + value address & mask total > threshold index <= count count != 0 && total/count > limitcount < min || count > max $this.sensor.getReading().value
  • 39. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 C. Structure Structural and Behavioral Models Classes Associations
  • 40. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Structural and Behavioral Models A structural model (e.g., a class model) specifies the relevant (types of) instances in a domain that may exist at any one point in time. Structural semantics define how a structural model constrains allowable instances. A behavioral model (e.g., an activity model) specifies behavior over time Behavioral semantics define how a behavioral model changes the state of instances over time.
  • 41. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Classes A class is a classifier of objects that persist in the extent of the class, with an identity that is independent of the value of their attributes at any one time. Attributes Data Types Primitive Types Operations and Methods Structural Semantics Behavioral Semantics
  • 42. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Classes and Attributes A class may have attributes whose types are primitive, data types or other classes. A referential attribute, whose type is a class, is conventionally notated as an association with a class-owned association end. A bidirectional association results in corresponding referential attributes on both associated classes.
  • 43. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Data Types A data type is a classifier of transient data values whose identity is based on the values of their attributes. Data types may have attributes, but not operations.
  • 44. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Primitive Types From UML 2.3 Auxiliary Constructs Boolean Integer UnlimitedNatural String fUML 1.1 will: Use the new UML 2.4 PrimitiveTypes package Include support for the new Real type
  • 45. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Classes: Operations and Methods A method defines the actual behavior that is invoked. An operation specifies a behavior that may be synchronously invoked on an instance of a class.
  • 46. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Classes: Structural Semantics Structural semantics specify how a structural model constrains allowable instances. Objects are instances of classes with values for each attribute. Class-owned association ends are structural features with values, like attributes. fUML does not actually give semantics to an association with class-owned ends, only to the ends as structural features. Note: fUML does provide “reified” semantics for associations that own their own ends, as will be discussed later.
  • 47. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Classes: Behavioral Semantics Behavioral semantics specify how a behavioral model changes the state of instances over time. Creating an Order Adding a Line Item Canceling an Order
  • 48. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Creating an Order Before After A new object is created and the constructor operation is invoked. order = new Order (customer, today) @Create public Order (in customer: Customer, in datePlaced: Date) { this.datePlaced = datePlaced; this.totalAmount = new Money(dollars=>0, cents=>0); this.customer = customer; this.customer.orders->add(this); } The constructor initializes the new order’s attribute values… …and adds the order to the customer’s list.
  • 49. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Adding a Line Item Before After order.addProduct (product, 2) The addProduct operation is invoked on an existing Order object. The method for the operation creates a new line item object… …adds the new object to the list of line items for the order… public addProduct (in product: Product, in quantity: Integer) { lineItem = new LineItem(product, quantity); this.lineItems->add(lineItem); this.totalAmount = MoneyFunctions::Add (this.totalAmount, lineItem.amount); } …and updates the total order amount.
  • 50. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Canceling an Order Before After order.cancel() A destructor operation is invoked, after which the order object is destroyed. Because line items are aggregated by composition, they are destroyed, too. @Destroy public cancel() { this.customer.orders->remove(this); } References to the destroyed object must be explicitly removed.
  • 51. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Associations An association is a classifier whose instances are links that relate other instances. Classes and Associations Structural Semantics Behavioral Semantics
  • 52. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Classes and Associations An association (that owns its ends) is a classifier of persistent links between the associated classes, which exist in the extent of the association.
  • 53. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Associations: Structural Semantics Structural semantics specify how a structural model constrains allowable instance models. Links are now semantic instances of the indicated associations.
  • 54. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Associations: Behavioral Semantics Behavioral semantics specify how a behavioral model changes the state of instances over time. Creating an Order (revised) Canceling an Order (revised)
  • 55. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Creating an Order (revised) Before After order = new Order (customer, today) @Create public Order (in customer: Customer, in datePlaced: Date) { this.datePlaced = datePlaced; this.totalAmount = new Money(dollars=>0, cents=>0); Customer_Order.addLink(customer, this); } A single action creates a bidirectional link.
  • 56. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Canceling an Order (revised) Before After order.cancel() A destructor operation is invoked, after which the order object is destroyed. Links in which the destroyed object participates are now also automatically destroyed. @Destroy public cancel() { }
  • 57. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 D. Asynchronous Communication Signals and Receptions Classifier Behaviors Asynchronous Behavior
  • 58. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Signals and Receptions A signal is a classifier whose instances may be communicated asynchronously. A signal may have attributes that represent transmittable data. A reception is a declaration of the ability to receive a signal. More than one class can receive the same signal.
  • 59. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 An active class is one that has a classifier behavior. Only active class may receive signals. A classifier behavior is an autonomous behavior started when an active class is instantiated. Classifier Behaviors
  • 60. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Asynchronous Behavior The order object creates a new credit card charge object, which begins its asynchronous behavior. The order object accepts a signal to submit a charge. Note: UML semantics require a separate action to start the behavior of a new object. However, Alf notation for creating an active class maps to both create and start object behavior actions. accept (submission: SubmitCharge); card = submission.card; do { new CreditCardCharge(card, this); accept (response: ChargeApproved) { this.customer.ChargeApproved(response.charge); break; } or accept (response: ChargeDeclined) { this.customer.ChargeDeclined(response.charge); } while (true); The order object accepts a signal from the charge object that the charge is approved. The order object sends a signal to the customer that the charge is approved.
  • 61.
  • 64.
  • 65. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Collection Functions Collection functions operate on sequences of values of any type. Testing and accessing functions Examples: seq->isEmpty(), seq1->equals(seq2), seq->at(n) Non-mutating funtions Examples: seq2 = seq->including(x), seq3 = seq1->union(seq2) Mutating “in place” functions Examples: seq->add(x), seq1->addAll(seq2), seq2->remove(x)
  • 66. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Collection Classes Collection classes define objects that represent collections of values of a given type.
  • 67. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Basic Input Output: Channels
  • 68. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Basic Input Output: Reading and Writing Lines activity ReadLine (out errorStatus: Status[0..1]): String { return StandardIntputChannel.allInstances().readLine(status); } activity WriteLine (in value: String, out errorStatus: Status[0..1]) { StandardOutputChannel.allInstances().writeLine(result, status); }
  • 69. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 Hello World activity Hello() { WriteLine("Hello World!"); }
  • 70. Copyright © 2011 Data Access Technologies, Inc. (Model Driven Solutions) 22 March 2011 References Foundational UML (fUML) Semantics of a Foundational Subset for Executable UML Models standard,http://www.omg.org/spec/FUML/Current fUML Open Source (Reference) Implementation Project, http://www.modeldriven.org/fuml Action Language for fUML (Alf) Action Language for Foundational UML (Alf) standard, http://www.omg.org/spec/ALF/Current Alf Open Source (Reference) Implementation Repository, http://lib.modeldriven.org/MDLibrary/trunk/Applications/Alf-Reference-Implementation /dist – Full parser for the current version of the specification Full implementation in progress Contact Email: ed-s@modeldriven.com Twitter: @seidewitz or http://twitter.com/seidewitz