Invited talk on action languages for UML at the international workshop on Action Languages and Precise Modeling for Cyber-Physical Systems Design and Testing at CASCON 2016
The document discusses employing the Object Constraint Language (OCL) in model-based engineering. It describes using the Unified Modeling Language (UML) and OCL for modeling system structure and behavior, including class diagrams, state machines, and operation specifications. It also discusses validating and verifying models through techniques like scenario generation, consistency checking, and analyzing properties such as independence and reachability.
The document introduces UML (Unified Modeling Language) diagrams which are used to visualize, specify, construct and document software systems and business processes. It discusses the main UML diagram types - use case diagrams, class diagrams, interaction diagrams, state diagrams and activity diagrams. It also explains that UML can be used at different levels of detail from informal sketches to detailed blueprints and executable specifications. UML supports object-oriented software design and can model concepts, software specifications or implementations depending on the perspective.
Formally Defining and Iterating Infinite Models (MODELS 2012)Benoit Combemale
Talk given at MODELS 2012 and various seminars about a formal definition of the concept of infinite (software design) model, and associated iterators. Preprint available at https://hal.inria.fr/hal-00716623
UML (Unified Modeling Language) is a standard modeling language used to visualize, specify, construct, and document software systems. It includes standard graphical notations for modeling classes, objects, interactions, use cases, and other aspects of software design. The UML metamodel defines the building blocks of UML through a library of classes that describe all UML elements. UML is commonly used for documentation, specifications, and agile processes like SCRUM. Popular tools for working with UML include Enterprise Architect, BoUML, LucidChart, and online tools like Genmymodel.org. Certification is available at fundamental, intermediate, and advanced levels.
This presentation is about a lecture I gave within the "Software systems and services" immigration course at the Gran Sasso Science Institute, L'Aquila (Italy): http://cs.gssi.infn.it/.
http://www.ivanomalavolta.com
Programming in UML: An Introduction to fUML and AlfEd Seidewitz
The document discusses programming in UML using the Foundational UML (fUML) standard and the Action Language for fUML (Alf). It provides an overview of fUML and Alf, which define an executable subset of UML and a textual action language for specifying behaviors in UML models. The document uses a motivating example of an e-commerce ordering system to illustrate key concepts of executable UML including activities, actions, structure, and asynchronous communication.
The TextUML Toolkit is a UML authoring tool that uses a textual notation called TextUML. It focuses on code generation from UML models and is targeted towards developers. The toolkit generates code using code generation tools like Acceleo and supports importing and exporting models from other UML tools. Future plans include bundling Acceleo and addressing feedback for a 1.0 release in June.
The document discusses employing the Object Constraint Language (OCL) in model-based engineering. It describes using the Unified Modeling Language (UML) and OCL for modeling system structure and behavior, including class diagrams, state machines, and operation specifications. It also discusses validating and verifying models through techniques like scenario generation, consistency checking, and analyzing properties such as independence and reachability.
The document introduces UML (Unified Modeling Language) diagrams which are used to visualize, specify, construct and document software systems and business processes. It discusses the main UML diagram types - use case diagrams, class diagrams, interaction diagrams, state diagrams and activity diagrams. It also explains that UML can be used at different levels of detail from informal sketches to detailed blueprints and executable specifications. UML supports object-oriented software design and can model concepts, software specifications or implementations depending on the perspective.
Formally Defining and Iterating Infinite Models (MODELS 2012)Benoit Combemale
Talk given at MODELS 2012 and various seminars about a formal definition of the concept of infinite (software design) model, and associated iterators. Preprint available at https://hal.inria.fr/hal-00716623
UML (Unified Modeling Language) is a standard modeling language used to visualize, specify, construct, and document software systems. It includes standard graphical notations for modeling classes, objects, interactions, use cases, and other aspects of software design. The UML metamodel defines the building blocks of UML through a library of classes that describe all UML elements. UML is commonly used for documentation, specifications, and agile processes like SCRUM. Popular tools for working with UML include Enterprise Architect, BoUML, LucidChart, and online tools like Genmymodel.org. Certification is available at fundamental, intermediate, and advanced levels.
This presentation is about a lecture I gave within the "Software systems and services" immigration course at the Gran Sasso Science Institute, L'Aquila (Italy): http://cs.gssi.infn.it/.
http://www.ivanomalavolta.com
Programming in UML: An Introduction to fUML and AlfEd Seidewitz
The document discusses programming in UML using the Foundational UML (fUML) standard and the Action Language for fUML (Alf). It provides an overview of fUML and Alf, which define an executable subset of UML and a textual action language for specifying behaviors in UML models. The document uses a motivating example of an e-commerce ordering system to illustrate key concepts of executable UML including activities, actions, structure, and asynchronous communication.
The TextUML Toolkit is a UML authoring tool that uses a textual notation called TextUML. It focuses on code generation from UML models and is targeted towards developers. The toolkit generates code using code generation tools like Acceleo and supports importing and exporting models from other UML tools. Future plans include bundling Acceleo and addressing feedback for a 1.0 release in June.
This is a one day workshop presentation, primarily on the new OMG Foundational UML specification for executable model semantics, but also discussing extensions for executable SysML (System Modeling Language) models.
The document discusses Object Oriented Analysis and Design (OOAD) using the Unified Modeling Language (UML). It provides an introduction to the UML, explaining that it was created to provide a common language for software engineering. The UML can be used within various development processes, such as the waterfall model, spiral model, iterative frameworks, and Rational Unified Process. The document then covers object orientation concepts, an overview of UML diagrams, and how UML can be applied during analysis and design phases of the software development lifecycle.
The document is a slide presentation on UML modeling and profiling from a software engineering course. It introduces UML and the concepts of metamodeling. It explains that UML is used to specify, visualize, construct and document software system artifacts. The presentation then outlines the typical steps in UML modeling: 1) modeling use cases, 2) modeling system structure with classes and components, and 3) modeling deployment to hardware nodes.
When talking about modeling, I think there will be a bundle of terms that will come to our mind, UML, domain driven development, DSL, forward/reverse enginerring, MDD, MDA, BPMN. These technology or methodology have been there for years; And obviously, modeling has proven itself to provide value by improving communication, business-alignment, quality, and productivity. Its applicability includes a number of disciplines such as analysis, design, or development. But why aren’t we all doing Model Driven Development yet?
This document provides an introduction to the Unified Modeling Language (UML) and the modeling tool Rational Rose. It defines UML as a standardized modeling language used to communicate software designs. It describes the different types of UML diagrams and their syntax. It also introduces Rational Rose as a tool for creating and maintaining UML diagrams and models. The document discusses how to use various features of Rational Rose like the browser, documentation windows, and specifications. It provides examples of UML use case diagrams and how to add documentation to model elements. It concludes with some pitfalls to avoid when using UML.
This document provides an overview and tutorial on SysML (Systems Modeling Language). It discusses that SysML is a modeling language used for systems engineering that extends the Unified Modeling Language (UML). The tutorial covers topics such as the history and purpose of SysML, the language architecture, modeling elements, compliance with UML, diagram elements like block definition diagrams and internal block diagrams, and more. It is intended to help those new to SysML understand the basics of the modeling framework and language.
ROS 2 AI Integration Working Group 1: ALMA, SustainML & ROS 2 use case eProsima
The new ROS 2 AI Integration Working Group is focused on enabling Machine Learning technologies for ROS 2.
In this presentation you'll find:
- ALMA: the Human Centric Algebraic Machine Learning project
- SustainML
- Enabling ML technologies for ROS 2 robots with Vulcanexus
The document discusses the need for an executable version of the Unified Modeling Language (UML) called xUML. It notes that while UML 1.x describes system behavior, it is not fully executable because it lacks precise semantics for actions. xUML addresses this by defining a precise action semantics language and process to allow UML models to be executed, validated, and automatically generated into code. An executable UML provides benefits like early verification of requirements, improved quality through objective criteria, and more fun for analysts.
This document provides an overview of the history and development of the Unified Modeling Language (UML) and Foundational UML (fUML) standard for executable modeling. It discusses how UML evolved from its origins in object-oriented analysis and design in the 1980s-1990s to add formal execution semantics definitions. fUML and the Action Language for Foundational UML (Alf) provide a computationally complete subset of UML with a defined execution model, addressing UML's previous lack of precise semantics. The document outlines the key components and implementations of fUML and Alf and their role in specifying UML's structural and behavioral semantics formally.
Precise Semantics Standards at OMG: Executing on the VisionEd Seidewitz
The document discusses standards for precise semantics in executable modeling developed by the Object Management Group (OMG). It summarizes Foundational UML (fUML), the Action Language for fUML (Alf), the Precise Semantics of Composite Structure (PSCS), and the Precise Semantics of State Machines (PSSM). It outlines potential future standards and provides resources for these existing and upcoming specifications.
The document discusses modeling and the Model Driven Architecture (MDA) approach. It notes that modeling has been used for thousands of years in fields like engineering, architecture, and shipbuilding. The MDA aims to make adaptability the central design focus through the use of modeling. The key concepts of MDA include transformations between models at different levels of abstraction and a focus on graphical modeling languages. The ultimate goal is to specify architectures that can last for decades while facilitating integration and maintenance.
Smalltalk in Large-scale Enterprise ArchitecturesESUG
This document discusses using Smalltalk in large-scale enterprise architectures. It proposes a "business-centered" architecture with Smalltalk used for the core business logic component ("hub") and other technologies like Java used for external integrations ("spokes"). The key aspects of this architecture are:
1) All business logic and rules are contained within a single Smalltalk component, isolating that logic from external systems.
2) External systems interact with this business logic component using a publish-subscribe messaging system.
3) Smalltalk is well-suited for the flexible, extensible business logic role because of its close mapping to object-oriented domains and simulation capabilities. This component aims to be an executable model
This document provides an introduction to structural and use case modeling with the Unified Modeling Language (UML). It outlines a tutorial series on UML that covers introduction, behavioral modeling, and advanced modeling. The document discusses why modeling is useful, provides an overview of UML's goals and evolution, and describes some of UML's foundational concepts including its building blocks, well-formedness rules, and unifying concepts.
This document provides an introduction to the Unified Modeling Language (UML). It outlines the course information for an Introduction to UML course, including aims, objectives, assessment, and recommended books. It then describes what UML is and lists common UML tools. The document explains that UML defines 13 types of diagrams divided into categories for structure, behavior, and interaction. Examples of different UML diagrams are provided, including class, object, component, and use case diagrams. Guidelines are given for modeling with UML, including the development process, types of models, and use case modeling syntax, semantics, and examples.
"Custom ML Models for Each User", Siamion KarasikFwdays
The document discusses ML1, an AI-powered Jira plugin created by Exadel that uses machine learning to predict field values in Jira tickets. It describes how ML1 was developed to help Exadel's technical support team automate ticket assignment and reduce processing time. Rather than using a single machine learning model for all users, ML1 takes an approach of training and using a separate model for each individual user or group. This allows the models to better reflect the specific data and needs of each user. The document also discusses considerations for monitoring and improving a multi-model machine learning system over time.
Actor model which is currently trending in software development is a popular design approach when it comes to complex applications. Many systems written in Erlang (Akka framework) are designed with actor model in their core. But Erlang and Akka are managed environments and safe programming languages. Is it worth using actor model in C++? If yes, where to look and what to use? The talk will cover all these topics.
This document provides an introduction and overview of structural modeling and use case modeling in the Unified Modeling Language (UML). It discusses the goals and benefits of modeling, provides a quick tour of UML concepts, and covers the core elements of structural modeling like classes, interfaces, associations and diagrams. It explains when and how to model system structure and provides an example of interface-based design. The document is intended to teach the basics of UML structural and use case modeling.
UML is a standard modeling language used to create object-oriented models to represent systems. It was developed in the 1990s to address challenges with modeling complex object-oriented systems. UML includes different types of diagrams - structural diagrams depict system structure, behavioral diagrams show system functioning, and interaction diagrams visualize communication between entities. UML is now recognized as an ISO standard and supported by modeling tools.
Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...The Third Creative Media
"Navigating Invideo: A Comprehensive Guide" is an essential resource for anyone looking to master Invideo, an AI-powered video creation tool. This guide provides step-by-step instructions, helpful tips, and comparisons with other AI video creators. Whether you're a beginner or an experienced video editor, you'll find valuable insights to enhance your video projects and bring your creative ideas to life.
More Related Content
Similar to Action Languages for UML execution: Where we are and where we are heading
This is a one day workshop presentation, primarily on the new OMG Foundational UML specification for executable model semantics, but also discussing extensions for executable SysML (System Modeling Language) models.
The document discusses Object Oriented Analysis and Design (OOAD) using the Unified Modeling Language (UML). It provides an introduction to the UML, explaining that it was created to provide a common language for software engineering. The UML can be used within various development processes, such as the waterfall model, spiral model, iterative frameworks, and Rational Unified Process. The document then covers object orientation concepts, an overview of UML diagrams, and how UML can be applied during analysis and design phases of the software development lifecycle.
The document is a slide presentation on UML modeling and profiling from a software engineering course. It introduces UML and the concepts of metamodeling. It explains that UML is used to specify, visualize, construct and document software system artifacts. The presentation then outlines the typical steps in UML modeling: 1) modeling use cases, 2) modeling system structure with classes and components, and 3) modeling deployment to hardware nodes.
When talking about modeling, I think there will be a bundle of terms that will come to our mind, UML, domain driven development, DSL, forward/reverse enginerring, MDD, MDA, BPMN. These technology or methodology have been there for years; And obviously, modeling has proven itself to provide value by improving communication, business-alignment, quality, and productivity. Its applicability includes a number of disciplines such as analysis, design, or development. But why aren’t we all doing Model Driven Development yet?
This document provides an introduction to the Unified Modeling Language (UML) and the modeling tool Rational Rose. It defines UML as a standardized modeling language used to communicate software designs. It describes the different types of UML diagrams and their syntax. It also introduces Rational Rose as a tool for creating and maintaining UML diagrams and models. The document discusses how to use various features of Rational Rose like the browser, documentation windows, and specifications. It provides examples of UML use case diagrams and how to add documentation to model elements. It concludes with some pitfalls to avoid when using UML.
This document provides an overview and tutorial on SysML (Systems Modeling Language). It discusses that SysML is a modeling language used for systems engineering that extends the Unified Modeling Language (UML). The tutorial covers topics such as the history and purpose of SysML, the language architecture, modeling elements, compliance with UML, diagram elements like block definition diagrams and internal block diagrams, and more. It is intended to help those new to SysML understand the basics of the modeling framework and language.
ROS 2 AI Integration Working Group 1: ALMA, SustainML & ROS 2 use case eProsima
The new ROS 2 AI Integration Working Group is focused on enabling Machine Learning technologies for ROS 2.
In this presentation you'll find:
- ALMA: the Human Centric Algebraic Machine Learning project
- SustainML
- Enabling ML technologies for ROS 2 robots with Vulcanexus
The document discusses the need for an executable version of the Unified Modeling Language (UML) called xUML. It notes that while UML 1.x describes system behavior, it is not fully executable because it lacks precise semantics for actions. xUML addresses this by defining a precise action semantics language and process to allow UML models to be executed, validated, and automatically generated into code. An executable UML provides benefits like early verification of requirements, improved quality through objective criteria, and more fun for analysts.
This document provides an overview of the history and development of the Unified Modeling Language (UML) and Foundational UML (fUML) standard for executable modeling. It discusses how UML evolved from its origins in object-oriented analysis and design in the 1980s-1990s to add formal execution semantics definitions. fUML and the Action Language for Foundational UML (Alf) provide a computationally complete subset of UML with a defined execution model, addressing UML's previous lack of precise semantics. The document outlines the key components and implementations of fUML and Alf and their role in specifying UML's structural and behavioral semantics formally.
Precise Semantics Standards at OMG: Executing on the VisionEd Seidewitz
The document discusses standards for precise semantics in executable modeling developed by the Object Management Group (OMG). It summarizes Foundational UML (fUML), the Action Language for fUML (Alf), the Precise Semantics of Composite Structure (PSCS), and the Precise Semantics of State Machines (PSSM). It outlines potential future standards and provides resources for these existing and upcoming specifications.
The document discusses modeling and the Model Driven Architecture (MDA) approach. It notes that modeling has been used for thousands of years in fields like engineering, architecture, and shipbuilding. The MDA aims to make adaptability the central design focus through the use of modeling. The key concepts of MDA include transformations between models at different levels of abstraction and a focus on graphical modeling languages. The ultimate goal is to specify architectures that can last for decades while facilitating integration and maintenance.
Smalltalk in Large-scale Enterprise ArchitecturesESUG
This document discusses using Smalltalk in large-scale enterprise architectures. It proposes a "business-centered" architecture with Smalltalk used for the core business logic component ("hub") and other technologies like Java used for external integrations ("spokes"). The key aspects of this architecture are:
1) All business logic and rules are contained within a single Smalltalk component, isolating that logic from external systems.
2) External systems interact with this business logic component using a publish-subscribe messaging system.
3) Smalltalk is well-suited for the flexible, extensible business logic role because of its close mapping to object-oriented domains and simulation capabilities. This component aims to be an executable model
This document provides an introduction to structural and use case modeling with the Unified Modeling Language (UML). It outlines a tutorial series on UML that covers introduction, behavioral modeling, and advanced modeling. The document discusses why modeling is useful, provides an overview of UML's goals and evolution, and describes some of UML's foundational concepts including its building blocks, well-formedness rules, and unifying concepts.
This document provides an introduction to the Unified Modeling Language (UML). It outlines the course information for an Introduction to UML course, including aims, objectives, assessment, and recommended books. It then describes what UML is and lists common UML tools. The document explains that UML defines 13 types of diagrams divided into categories for structure, behavior, and interaction. Examples of different UML diagrams are provided, including class, object, component, and use case diagrams. Guidelines are given for modeling with UML, including the development process, types of models, and use case modeling syntax, semantics, and examples.
"Custom ML Models for Each User", Siamion KarasikFwdays
The document discusses ML1, an AI-powered Jira plugin created by Exadel that uses machine learning to predict field values in Jira tickets. It describes how ML1 was developed to help Exadel's technical support team automate ticket assignment and reduce processing time. Rather than using a single machine learning model for all users, ML1 takes an approach of training and using a separate model for each individual user or group. This allows the models to better reflect the specific data and needs of each user. The document also discusses considerations for monitoring and improving a multi-model machine learning system over time.
Actor model which is currently trending in software development is a popular design approach when it comes to complex applications. Many systems written in Erlang (Akka framework) are designed with actor model in their core. But Erlang and Akka are managed environments and safe programming languages. Is it worth using actor model in C++? If yes, where to look and what to use? The talk will cover all these topics.
This document provides an introduction and overview of structural modeling and use case modeling in the Unified Modeling Language (UML). It discusses the goals and benefits of modeling, provides a quick tour of UML concepts, and covers the core elements of structural modeling like classes, interfaces, associations and diagrams. It explains when and how to model system structure and provides an example of interface-based design. The document is intended to teach the basics of UML structural and use case modeling.
UML is a standard modeling language used to create object-oriented models to represent systems. It was developed in the 1990s to address challenges with modeling complex object-oriented systems. UML includes different types of diagrams - structural diagrams depict system structure, behavioral diagrams show system functioning, and interaction diagrams visualize communication between entities. UML is now recognized as an ISO standard and supported by modeling tools.
Similar to Action Languages for UML execution: Where we are and where we are heading (20)
Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...The Third Creative Media
"Navigating Invideo: A Comprehensive Guide" is an essential resource for anyone looking to master Invideo, an AI-powered video creation tool. This guide provides step-by-step instructions, helpful tips, and comparisons with other AI video creators. Whether you're a beginner or an experienced video editor, you'll find valuable insights to enhance your video projects and bring your creative ideas to life.
DECODING JAVA THREAD DUMPS: MASTER THE ART OF ANALYSISTier1 app
Are you ready to unlock the secrets hidden within Java thread dumps? Join us for a hands-on session where we'll delve into effective troubleshooting patterns to swiftly identify the root causes of production problems. Discover the right tools, techniques, and best practices while exploring *real-world case studies of major outages* in Fortune 500 enterprises. Engage in interactive lab exercises where you'll have the opportunity to troubleshoot thread dumps and uncover performance issues firsthand. Join us and become a master of Java thread dump analysis!
INTRODUCTION TO AI CLASSICAL THEORY TARGETED EXAMPLESanfaltahir1010
Image: Include an image that represents the concept of precision, such as a AI helix or a futuristic healthcare
setting.
Objective: Provide a foundational understanding of precision medicine and its departure from traditional
approaches
Role of theory: Discuss how genomics, the study of an organism's complete set of AI ,
plays a crucial role in precision medicine.
Customizing treatment plans: Highlight how genetic information is used to customize
treatment plans based on an individual's genetic makeup.
Examples: Provide real-world examples of successful application of AI such as genetic
therapies or targeted treatments.
Importance of molecular diagnostics: Explain the role of molecular diagnostics in identifying
molecular and genetic markers associated with diseases.
Biomarker testing: Showcase how biomarker testing aids in creating personalized treatment plans.
Content:
• Ethical issues: Examine ethical concerns related to precision medicine, such as privacy, consent, and
potential misuse of genetic information.
• Regulations and guidelines: Present examples of ethical guidelines and regulations in place to safeguard
patient rights.
• Visuals: Include images or icons representing ethical considerations.
Content:
• Ethical issues: Examine ethical concerns related to precision medicine, such as privacy, consent, and
potential misuse of genetic information.
• Regulations and guidelines: Present examples of ethical guidelines and regulations in place to safeguard
patient rights.
• Visuals: Include images or icons representing ethical considerations.
Content:
• Ethical issues: Examine ethical concerns related to precision medicine, such as privacy, consent, and
potential misuse of genetic information.
• Regulations and guidelines: Present examples of ethical guidelines and regulations in place to safeguard
patient rights.
• Visuals: Include images or icons representing ethical considerations.
Real-world case study: Present a detailed case study showcasing the success of precision
medicine in a specific medical scenario.
Patient's journey: Discuss the patient's journey, treatment plan, and outcomes.
Impact: Emphasize the transformative effect of precision medicine on the individual's
health.
Objective: Ground the presentation in a real-world example, highlighting the practical
application and success of precision medicine.
Data challenges: Address the challenges associated with managing large sets of patient data in precision
medicine.
Technological solutions: Discuss technological innovations and solutions for handling and analyzing vast
datasets.
Visuals: Include graphics representing data management challenges and technological solutions.
Objective: Acknowledge the data-related challenges in precision medicine and highlight innovative solutions.
Data challenges: Address the challenges associated with managing large sets of patient data in precision
medicine.
Technological solutions: Discuss technological innovations and solutions
E-commerce Development Services- Hornet DynamicsHornet Dynamics
For any business hoping to succeed in the digital age, having a strong online presence is crucial. We offer Ecommerce Development Services that are customized according to your business requirements and client preferences, enabling you to create a dynamic, safe, and user-friendly online store.
Measures in SQL (SIGMOD 2024, Santiago, Chile)Julian Hyde
SQL has attained widespread adoption, but Business Intelligence tools still use their own higher level languages based upon a multidimensional paradigm. Composable calculations are what is missing from SQL, and we propose a new kind of column, called a measure, that attaches a calculation to a table. Like regular tables, tables with measures are composable and closed when used in queries.
SQL-with-measures has the power, conciseness and reusability of multidimensional languages but retains SQL semantics. Measure invocations can be expanded in place to simple, clear SQL.
To define the evaluation semantics for measures, we introduce context-sensitive expressions (a way to evaluate multidimensional expressions that is consistent with existing SQL semantics), a concept called evaluation context, and several operations for setting and modifying the evaluation context.
A talk at SIGMOD, June 9–15, 2024, Santiago, Chile
Authors: Julian Hyde (Google) and John Fremlin (Google)
https://doi.org/10.1145/3626246.3653374
14 th Edition of International conference on computer visionShulagnaSarkar2
About the event
14th Edition of International conference on computer vision
Computer conferences organized by ScienceFather group. ScienceFather takes the privilege to invite speakers participants students delegates and exhibitors from across the globe to its International Conference on computer conferences to be held in the Various Beautiful cites of the world. computer conferences are a discussion of common Inventions-related issues and additionally trade information share proof thoughts and insight into advanced developments in the science inventions service system. New technology may create many materials and devices with a vast range of applications such as in Science medicine electronics biomaterials energy production and consumer products.
Nomination are Open!! Don't Miss it
Visit: computer.scifat.com
Award Nomination: https://x-i.me/ishnom
Conference Submission: https://x-i.me/anicon
For Enquiry: Computer@scifat.com
WWDC 2024 Keynote Review: For CocoaCoders AustinPatrick Weigel
Overview of WWDC 2024 Keynote Address.
Covers: Apple Intelligence, iOS18, macOS Sequoia, iPadOS, watchOS, visionOS, and Apple TV+.
Understandable dialogue on Apple TV+
On-device app controlling AI.
Access to ChatGPT with a guest appearance by Chief Data Thief Sam Altman!
App Locking! iPhone Mirroring! And a Calculator!!
Malibou Pitch Deck For Its €3M Seed Roundsjcobrien
French start-up Malibou raised a €3 million Seed Round to develop its payroll and human resources
management platform for VSEs and SMEs. The financing round was led by investors Breega, Y Combinator, and FCVC.
The Rising Future of CPaaS in the Middle East 2024Yara Milbes
Explore "The Rising Future of CPaaS in the Middle East in 2024" with this comprehensive PPT presentation. Discover how Communication Platforms as a Service (CPaaS) is transforming communication across various sectors in the Middle East.
Most important New features of Oracle 23c for DBAs and Developers. You can get more idea from my youtube channel video from https://youtu.be/XvL5WtaC20A
Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...Paul Brebner
Closing talk for the Performance Engineering track at Community Over Code EU (Bratislava, Slovakia, June 5 2024) https://eu.communityovercode.org/sessions/2024/why-apache-kafka-clusters-are-like-galaxies-and-other-cosmic-kafka-quandaries-explored/ Instaclustr (now part of NetApp) manages 100s of Apache Kafka clusters of many different sizes, for a variety of use cases and customers. For the last 7 years I’ve been focused outwardly on exploring Kafka application development challenges, but recently I decided to look inward and see what I could discover about the performance, scalability and resource characteristics of the Kafka clusters themselves. Using a suite of Performance Engineering techniques, I will reveal some surprising discoveries about cosmic Kafka mysteries in our data centres, related to: cluster sizes and distribution (using Zipf’s Law), horizontal vs. vertical scalability, and predicting Kafka performance using metrics, modelling and regression techniques. These insights are relevant to Kafka developers and operators.
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
Action Languages for UML execution: Where we are and where we are heading
1. Action Languages for UML execution
Where we are and where we are heading
Federico Ciccozzi
Assistant Professor, Mälardalen University (Sweden)
Contact: federico.ciccozzi@mdh.se
5. 5
● 15+18 full professors
● 70+ senior researchers (PhDs)
● 80+ PhD students
● Research volume 20 MCAD/yr
● ~80% of research in co-production projects
Mälardalen University (MDH)
Embedded Systems Research Environment
6. Companies we work with
● ABB AB ● AbsInt Angewandte Informatik GmbH ● Ada
Core ● Addiva ●Aensys Informatikai ● AICAS GMBH ●
Akhela ● Algo Rego ● Algosystems S.A. ● Alten ● Arcticus
Systems AB ● ATEGO SAS ● Atlas Copco ● Attendo ●
Austrian Institute of Technology ● AVL ● Bexen Cardio ●
Bombardier Transportation ● Bruhnspace AB ● Cambio
Healthcare Systems ● Cea List ● Critical Software ●
CrossControl AB ● Delphi France ● DELTA AB ● Ericsson
AB ● Eskilstuna Elektronikpartner AB ● Etteplan ●
European Aeronautic Defence and Space Company ●
Fonsazione Bruno Kessler ● Giraff AB ● GMV Innovating
Solutions ● Hök instrument AB ● Ingenieria de Sistemas
Intensivos en Software, S.L ● Intecs Informatica e
Tecnologia del Software ● JC Development ● Magillem ●
Maximatecc ● Medfield Diagnostics AB ● Meeq AB ●
Microsoft Sverige ● Motion Control ● Munktell Science Park
● Oilfield Technology Group ● Peerialism ● Physiotest ●
Prevas AB ● Prover
● Qtema ● Quality Pharma ● Quviq ● Resiltech ●
Saab ● Scania ● SEMA-TEC ● SICS Swedish ICT -
the Swedish institute of computer science ●
SignalGeneriX ● SINTEF ● SP Technical Research
Institute of Sweden ● Swedish Defence Research
Agency (FOI) ● Swedsoft ● Svensk Elektronik ● T2
Data ● TATA Consulting Services ● TeliaSonera ●
Thales Alenia Space ● Thales Communications and
Security SAS ● Thales Group ● The Swedish National
Road and Transport Research Institute ● Tidorum ●
Traintic ● TTTech Computertechnik AG ● ULMA
Embedded Solutions ● Vendolocus Development ●
VG Power AB ● Virtual Vehicle ● Vitrociset ● Volvo AB
● Volvo Cars ● Volvo Construction Equipment ● Volvo
Group Trucks Technology ● Västerås Science Park ●
X/Open Company Limited ● Xdin
7. Agenda
7
● Background
● Why Action Languages (ALs)?
● Some history about ALs for UML
● Introduction on Action Language for Foundational UML (ALF)
● Current support for ALF
● Some experiences from executing ALF
● Future perspectives
10. Background
10
● Software too complex for hand-writing machine code
● Abstraction from programming languages (3GLs) was the
solution
11. Background
11
● Software too complex for hand-writing machine code
● Abstraction from programming languages (3GLs) was the
solution
● Programming languages, stars of software engineering
from early 70s
13. Background
13
● Software complexity growing very fast
3GLs not enough
Machine-oriented
Too prescriptive (not useful for communication)
Too specific
…
14. Background
14
● Software complexity growing very fast
● 3GLs not enough
● Machine-oriented
● Too prescriptive (not useful for communication)
● Too specific
● …
15. Background
15
● A solution: Model-Driven Engineering (MDE)
● More abstraction
● Automation
● Separation of concerns (domain-specific modelling
languages)
● Prescriptive AND descriptive
● Human-oriented
Many general-purpose and domain-specific modelling
languages
16. Background
16
● A solution: Model-Driven Engineering (MDE)
● More abstraction
● Automation
● Separation of concerns (domain-specific modelling
languages)
● Prescriptive AND descriptive
● Human-oriented
● Many general-purpose and domain-specific modelling
languages
19. UML1.[0-4] (1997-2003)
● Primarily for problem understanding and
documentation (descriptive)
● Practitioner saw possibilities for executing models
19
20. UML1.[0-4] (1997-2003)
● Primarily for problem understanding and
documentation (descriptive)
● Practitioner saw possibilities for executing models
But..
20
22. UML1.[0-4] (1997-2003)
● To execute models you need precise modelling!
● What’s precise modelling?
● Well-defined abstract syntax for modelling structure
● Well-defined abstract syntax for modelling (algorithmic)
behaviours
● Intra-model consistency
● Inter-model consistency
● Well-defined model execution semantics
22
23. Precise modelling?
23
● UML was not able to describe precise complex behaviours
and did not have well-defined execution semantics
Answer of practitioners and tool vendors..
3GLs (C/C++, Java, …)
3GLs could and we had all the tools for executing them
already
24. Precise modelling?
24
● UML was not able to describe precise complex behaviours
and did not have well-defined execution semantics
● Answer of practitioners and tool vendors..
3GLs (C/C++, Java, …)
3GLs could what UML couldn’t
25. Precise modelling?
25
● UML was not able to describe precise complex behaviours
and did not have well-defined execution semantics
● Answer of practitioners and tool vendors..
3GLs (C/C++, Java, …)
● 3GLs could what UML couldn’t
26. 3GLs for action code – the less good
26
● Consistency between action code and surrounding model
(inter-model consistency)
● Hard to check
● Very hard to maintain
● Limited cross-domain reusability (think of CPS, IoT, etc..)
Imagine to write Java actions in Ada structural code…
(Why would you even do that?..)
27. 3GLs for action code – the less good
27
● Consistency between action code and surrounding model
(inter-model consistency)
● Hard to check
● Very hard to maintain
● Limited cross-domain reusability (think of CPS, IoT, etc..)
● Imagine to write Java actions in Ada structural code…
● (Why would you even do that?..)
28. UML1.[0-4] (1997-2003)
● Tools (e.g., from IBM) start supporting executable
variants of UML
● Executability relied on custom semantics
(implicit profiles) in combination with 3GLs for action
code
28
29. Thereby..
● Tools not fully compliant with the UML standard
● End users forced into a “vendor lock-in”
predicament
29
30. Anyhow..
30
● If you are here, you see potential in ALs
● Let’s talk about them!
31. ”The tale of ALs for UML”
31
● No princess nor prince on white horse
● No crystal shoe
But (hopefully) a happy ending
DISCLAIMER 1: The coming list of ALs is not meant to be exhaustive, but
rather significative
DISCLAIMER 2: I won’t touch upon other kinds of textual languages used
with/for UML (e.g., Umple, TextUML, txtUML, ..)
32. ”The tale of ALs for UML”
32
● No princess nor prince on white horse
● No crystal shoe
● But (hopefully) a happy ending
DISCLAIMER 1: The coming list of ALs is not meant to be exhaustive, but
rather significative
DISCLAIMER 2: I won’t touch upon other kinds of textual languages used
with/for UML (e.g., Umple, TextUML, txtUML, ..)
33. ”The tale of ALs for UML”
33
● No princess nor prince on white horse
● No crystal shoe
● But (hopefully) a happy ending
DISCLAIMER 1: The coming list of ALs is not meant to be exhaustive, but
rather significative
DISCLAIMER 2: I won’t touch upon other kinds of textual languages used
with/for UML (e.g., Umple, TextUML, txtUML, ..)
34. ”The tale of ALs for UML”
34
● No princess nor prince on white horse
● No crystal shoe
● But (hopefully) a happy ending
DISCLAIMER 1: The coming list of ALs is not meant to be exhaustive, but
rather significative
DISCLAIMER 2: I won’t touch upon other kinds of textual languages used
with/for UML (e.g., Umple, TextUML, txtUML, ..)
35. 1997: Shlaer-Mellor Action Language (SMALL)
35
● The first AL for UML!
● Data flow-based execution similar to fUML
● UML did not have an execution semantics to adhere to
● The language was never implemented in practice..
38. 2003: Action Specification Language (ASL)
38
● Part of the OOA tool
● Fairly capable AL for its time
● Not aligned to UML1.5 action semantics
● Development stopped in 2009
39. 2004: Platform Independent Action Language
(PAL)
39
● Part of the PathMATE tool
● Still there
● Not aligned to UML1.5 action semantics
41. 2005
41
UML 2.0
● (Much) more precise than UML1.5
● First step towards a precise execution semantics
42. 2007: OCLX4 action language (OCLX4)
42
● OCL enriched with meta-actions for changing system
state
● Not aligned with UML2 action semantics
43. 2007: Action Language for Business Logic
(ABL)
43
● Java-inspired
● Meant to be converted to UML actions
● Includes non-UML concepts
● Not aligned with UML2 action semantics
44. 2008: +CAL
44
● In line with UML1.5 action semantics
● Domain-specific (distributed systems)
47. 2009
47
fUML 1.0
● Foundational Subset for Executable UML
● Finally a precise execution semantics for UML
UMLfUML
Classes, activities,
composite structures
State-machines,
etc..
48. 2011: UML Action Language (UAL)
48
● IBM behind it
● Still there (?)
49. 2013 Action Language for Foundational
UML (ALF)
49
● Evolution of UAL
● OMG standard since 2013
● Materialization of great ideas in SMALL (Shlaer-Mellor
action language), 15 years later
50. The (r)evolution of UML2
● Semantically more precise than previous UML when
it comes to execution
Provide fUML, a formal specification of the executable
semantics for a subset of UML2
Provide ALF, a textual action language based on fUML
50
51. The (r)evolution of UML2
● Semantically more precise than previous UML when
it comes to execution
● Provide fUML, a formal specification of the execution
semantics for a subset of UML
Provide ALF, a textual action language based on fUML
51
52. The (r)evolution of UML2
● Semantically more precise than previous UML when
it comes to execution
● Provide fUML, a formal specification of the execution
semantics for a subset of UML
● Provide ALF, a textual action language based on fUML
52
53. ALF: what is it?
53
● ALF is a Java-like textual surface representation for UML
Execution semantics is given by mapping ALF's concrete
syntax to the abstract syntax of fUML
Primary goal: specifying executable behaviors within UML
structural model
ALF has an extended notation to represent structure too
It is possible to describe a UML model entirely using ALF
54. ALF: what is it?
54
● ALF is a Java-like textual surface representation for UML
● Execution semantics is given by mapping ALF's concrete
syntax to the abstract syntax of fUML
Primary goal: specifying executable behaviors within UML
structural model
ALF has an extended notation to represent structure too
It is possible to describe a UML model entirely using ALF
55. ALF: what is it?
55
● ALF is a Java-like textual surface representation for UML
● Execution semantics is given by mapping ALF's concrete
syntax to the abstract syntax of fUML
● Primary goal: specifying executable behaviors within
UML structural model
ALF has an extended notation to represent structure too
It is possible to describe a UML model entirely using ALF
57. ALF: what is it?
57
● ALF is a Java-like textual surface representation for UML
● Execution semantics is given by mapping ALF's concrete
syntax to the abstract syntax of fUML
● Primary goal: specifying executable behaviors within
UML structural model
● ALF has an extended notation to represent structure too
It is possible to describe a UML model entirely using ALF
58. ALF: what is it?
58
● ALF is a Java-like textual surface representation for UML
● Execution semantics is given by mapping ALF's concrete
syntax to the abstract syntax of fUML
● Primary goal: specifying executable behaviors within
UML structural model
● ALF has an extended notation to represent structure too
● It is possible to describe a complete (precise) model
entirely using ALF
63. ALF v1.0.1
63
● Lexical structure
● Punctuation, operators, literals, reserved words..
Expressions
Behavioural unit that evaluates to a collection of values
Can have side effects (e.g. change values)
Statements
Behavioural segments producing an effect
Primary units od sequencing and control
Units
Structural elements (mostly within fUML) for defining structural
models
for(Integer i in intList){
x = x + i;
}
64. ALF v1.0.1
64
● Lexical structure
● Punctuation, operators, literals, reserved words..
● Expressions
● Behavioural unit that evaluates to a collection of values
● Can have side effects (e.g. change values)
Statements
Behavioural segments producing an effect
Primary units od sequencing and control
Units
Structural elements (mostly within fUML) for defining structural
models
for(Integer i in intList){
x = x + i;
}
65. ALF v1.0.1
65
● Lexical structure
● Punctuation, operators, literals, reserved words..
● Expressions
● Behavioural unit that evaluates to a collection of values
● Can have side effects (e.g. change values)
● Statements
● Behavioural segments producing an effect
● Primary units of sequencing and control
Units
Structural elements (mostly within fUML) for defining structural
models
for(Integer i in intList){
x = x + i;
}
66. ALF v1.0.1
66
● Lexical structure
● Punctuation, operators, literals, reserved words..
● Expressions
● Behavioural unit that evaluates to a collection of values
● Can have side effects (e.g. change values)
● Statements
● Behavioural segments producing an effect
● Primary units of sequencing and control
● Units
● Structural elements (mostly within fUML)
package Pkg{
active class ClassA{..}
}
67. ALF v1.0.1: syntactic conformance
67
● Minimum conformance
● subset of ALF to write textual action language snippets within
a larger graphical UML model
● includes only capabilities available in traditional, procedural
programming language
Full conformance
complete action language for representing behaviours within a
UML structural model
Extended conformance
includes structural modelling capabilities (ALF units)
68. ALF v1.0.1: syntactic conformance
68
● Minimum conformance
● subset of ALF to write textual action language snippets within
a larger graphical UML model
● includes only capabilities available in traditional, procedural
programming language
● Full conformance
● complete action language for representing behaviours within
a UML structural model
Extended conformance
includes structural modelling capabilities (ALF units)
69. ALF v1.0.1: syntactic conformance
69
● Minimum conformance
● subset of ALF to write textual action language snippets within
a larger graphical UML model
● includes only capabilities available in traditional, procedural
programming language
● Full conformance
● complete action language for representing behaviours within
a UML structural model
● Extended conformance
● includes structural modelling capabilities (ALF units)
70. ALF v1.0.1: (execution) semantic
conformance
70
● Interpretive execution
● modelling tool directly interprets and executes ALF
Compilative execution
modelling tool compiles ALF and executes it according to the
semantics specified in fUML
context of the execution of a larger model that may not conform to
fUML
Translational execution
modelling tool translates ALF and surrounding UML model into an
executable non-UML format, and executes the translation on that
platform
a.k.a. code generation
71. ALF v1.0.1: (execution) semantic
conformance
71
● Interpretive execution
● modelling tool directly interprets and executes ALF
● Compilative execution
● modelling tool compiles ALF and executes it according to the
semantics specified in fUML
● context of the execution of the surrounding model may not
conform to fUML
Translational execution
modelling tool translates ALF and surrounding UML model into an
executable non-UML format, and executes the translation on that
platform
a.k.a. code generation
72. ALF v1.0.1: (execution) semantic
conformance
72
● Interpretive execution
● modelling tool directly interprets and executes ALF
● Compilative execution
● modelling tool compiles ALF and executes it according to the
semantics specified in fUML
● context of the execution of the surrounding model may not
conform to fUML
● Translational execution
● modelling tool translates ALF and surrounding UML model into
an executable non-UML format, and executes the translation on
that platform
● a.k.a. code generation
73. ALF standard implementations
73
● ALF reference implementation
● By Ed Seidewitz (basically the father of ALF)
● Text-based, terminal
● Interpretive execution
74. ALF standard implementations
74
● ALF reference implementation
● By Ed Seidewitz (basically the father of ALF)
● Text-based, terminal
● Interpretive execution
● ALF implementation in Eclipse/Papyrus
● CEA list (France) in collaboration with Ed Seidewitz
● Model-based interpretive execution (MOKA)
75. State-of-the-practice in Industry
75
● UML-based MDE is still relying on 3GLs for action code
Pragmatism..
Reuse of existing models with PL action code (e.g., C++)
Domain specificity
Expertise
Time
76. State-of-the-practice in Industry
76
● UML-based MDE is still relying on 3GLs for action code
Why?
● Pragmatism..
● Reuse of existing models with 3GLs action code
● Domain specificity
● Expertise
● Time/money
77. State-of-the-practice in Industry
77
and..
● ALs have had a bad reputation!
● Before ALF
● Huge amount of different ALs throughout the years
● No efforts in standard (except OMG)
● No traction from research and practice
78. How do we know (besides experience)?
78
● Systematic review (SR)
● The first systematic investigation of the states of the
art and practice of the execution of UML models
● Over 4,500 papers and tools were scrutinized
● 70 papers and tools were selected for answering the
research questions that we identified
79. Scrutinized tools
79
IBM RSA
IBM RSARTE
IBM Rational Rose
IBM Rational Rhapsody
MentorGraphics BridgePoint
Fujaba
Papyrus - Qompass
Papyrus - Moka
Syntony
Moliz
FXU
Modeldriven.org
IBM Tau
ARTISAN Studio Sysym
CHESS
Conformiq Designer
GENCODE
Sparx Enterprise Architect
BOUML
Cameo Simulation toolkit
QM
TOPCASED Model Simulation
SOL SOLoist
Democles
ALF-verifier
IPANEMA
Telelogic Tau
ARTISAN Studio
AndroMDA
Anylogic
CODESIMULINK
Context-Serv
Genertica
GENESYS
Gentleware Poseidon
OMEGA-IFX
UML2SC
AONIX AMEOS
Astah Professional
CodeCooker
Altova Umodel
Visual Paradigm
Borland Together Architect
Compuware OptimalJ
Magic Draw UML Professional
Pragsoft UML Studio
ArgoUML
Yatta UML Lab
Microsoft Visual Studio
Provide execution
Do not provide execution
82. ALF..
82
● Increasing industrial interest
● Adoption in well-established industrial UML-based
development
● Far from painless and swift
● Use of 3GLs in models deeply rooted in UML-based MDE
83. What to do?
83
● Introducing such a change with brute force is
unthinkable!
Our goal is to support and boost ALF adoption process
by exploiting ALF as a complement to existing UML-based MDE
processes leveraging programming languages
An example: a process producing executable C++ from UML
with C++ as action code.
Could reuse legacy models (or parts of them)
At the same time, new models (or parts of them) couldb be entirely defined
using UML and ALF
84. What to do?
84
● Introducing such a change with brute force is
unthinkable!
● Research community must support and boost ALF
adoption process
How?
● Industrial-grade innovation
● Focus on industrial needs
● Constructive rather than disruptive
85. MDH contribution
85
● Standalone solutions for translational execution of ALF to C++
ALF transformation: system defined only in terms of ALF (.alf)
The complete ALF model is translated to C++
UML-ALF transformation: system modelled with UML (+ profiles),
bodies of operations as opaque behaviours defined in ALF
Opaque behaviours in ALF are translated to C++
Basic support for ALF units
(partially) Namespace, package, class, operation, property
Support for translation of minimum conformance (no complete yet)
Except allInstances(), BitString
Limitations for casting and collections management (all collections
currently translated to C++ vectors)
86. MDH contribution
86
● Standalone solutions for translational execution of ALF to C++
1. ALF transformation: system defined only in terms of ALF (.alf)
● The complete ALF model is translated to C++
UML-ALF transformation: system modelled with UML (+ profiles),
bodies of operations as opaque behaviours defined in ALF
Opaque behaviours in ALF are translated to C++
Basic support for ALF units
(partially) Namespace, package, class, operation, property
Support for translation of minimum conformance (no complete yet)
Except allInstances(), BitString
Limitations for casting and collections management (all collections
currently translated to C++ vectors)
87. MDH contribution
87
● Standalone solutions for translational execution of ALF to C++
1. ALF transformation: system defined only in terms of ALF (.alf)
● The complete ALF model is translated to C++
2. UML-ALF transformation: system modelled with UML (+ profiles),
operation bodies as opaque behaviours defined in ALF
● Opaque behaviours in ALF are translated to C++
Basic support for ALF units
(partially) Namespace, package, class, operation, property
Support for translation of minimum conformance (no complete yet)
Except allInstances(), BitString
Limitations for casting and collections management (all collections
currently translated to C++ vectors)
88. MDH contribution
88
● Standalone solutions for translational execution of ALF to C++
1. ALF transformation: system defined only in terms of ALF (.alf)
● The complete ALF model is translated to C++
2. UML-ALF transformation: system modelled with UML (+ profiles),
operation bodies as opaque behaviours defined in ALF
● Opaque behaviours in ALF are translated to C++
● Basic support for ALF units
● (partially) Namespace, package, class, operation, property
Support for translation of minimum conformance (no complete yet)
Except allInstances(), BitString
Limitations for casting and collections management (all collections
currently translated to C++ vectors)
89. MDH contribution
89
● Standalone solutions for translational execution of ALF to C++
1. ALF transformation: system defined only in terms of ALF (.alf)
● The complete ALF model is translated to C++
2. UML-ALF transformation: system modelled with UML (+ profiles),
operation bodies as opaque behaviours defined in ALF
● Opaque behaviours in ALF are translated to C++
● Basic support for ALF units
● (partially) Namespace, package, class, operation, property
● Support for translation of minimum conformance
● Except allInstances(), BitString
● Limitations for casting and collections management (all collections
currently translated to C++ vectors)
90. MDH contribution
90
● Type deduction mechanisms
● Dynamic typing
● Access to members (e.g., a.b in ALF to a.b or ab or a::b in C++?)
● Imported scopes
● Nested scopes
● ….
91. MDH contribution
91
● Implementation based on Eclipse/Papyrus Mars 1.0
● Set of Eclipse plugins (solution 1 and 2 are separated)
● Translation as model-to-text transformations in Xtend
● First of its kind
93. Transforming ALF
93
● Transformation steps
● a.-b. structure transformation
● b’. Action code in ALF (blocks) is
translated automatically to C++
● Solution 1: stored during structure
transformation and then translated
● Solution 2: UML model is navigated and opaque
behaviours in ALF are translated to C++
94. Transforming ALF
94
● Transformation steps
● a.-b. structure transformation
● b’. Action code in ALF (blocks) is
translated automatically to C++
● b’’. Action code in C++ can be copied to
the output code files
95. Transforming ALF
95
● Transformation steps
● a.-b. structure transformation
● b’. Action code in ALF (blocks) is
translated automatically to C++
● b’’. Action code in C++ can be copied to
the output code files
● CppTree
● Intermediate structural representation
for C++ (Xtend/Java)
● Leverages TypeDeduction
96. Main transformation steps
96
● Structural translation: produces corresponding C++
skeleton code
Check for each UML operation if there is a fine-grained
behaviour defined in terms of a UML opaque behaviour
Opaque behaviour in C++: copies as it is to resulting .cpp file
Opaque behaviour in ALF: triggers M2T transformation for
translation from ALF to C++.cpp file
Opaque behaviour in other (not supported) languages: no action
97. Main transformation steps
97
● Structural translation: produces corresponding C++
skeleton code
● Check for each UML operation if there is a fine-grained
behaviour defined in terms of a UML opaque behaviour
Opaque behaviour in C++: copies as it is to resulting .cpp file
Opaque behaviour in ALF: triggers M2T transformation for
translation from ALF to C++.cpp file
Opaque behaviour in other (not supported) languages: no action
98. Main transformation steps
98
● Structural translation: produces corresponding C++
skeleton code
● Check for each UML operation if there is a fine-grained
behaviour defined in terms of a UML opaque behaviour
● Opaque behaviour in C++: copies it as it is to resulting .cpp file
Opaque behaviour in ALF: triggers M2T transformation for
translation from ALF to C++.cpp file
Opaque behaviour in other (not supported) languages: no action
99. Main transformation steps
99
● Structural translation: produces corresponding C++
skeleton code
● Check for each UML operation if there is a fine-grained
behaviour defined in terms of a UML opaque behaviour
● Opaque behaviour in C++: copies it as it is to resulting .cpp file
● Opaque behaviour in ALF: triggers M2T transformation for
translation from ALF to C++ .cpp file
Opaque behaviour in other (not supported) languages: no action
100. Main transformation steps
100
● Structural translation: produces corresponding C++
skeleton code
● Check for each UML operation if there is a fine-grained
behaviour defined in terms of a UML opaque behaviour
● Opaque behaviour in C++: copies it as it is to resulting .cpp file
● Opaque behaviour in ALF: triggers M2T transformation for
translation from ALF to C++ .cpp file
● Opaque behaviour in other (not supported) language: no action
105. Scope
105
● SMARTCore project (funded by Swedish national agency, KKS)
● Project leader:
● Mälardalen University (Federico Ciccozzi)
● Industrial partners:
● ABB CR (Tiberiu Seceleanu)
● Ericsson AB (Diarmuid Corcoran)
● Alten Sweden (Detlef Scholle)
● Linked to Papyrus Industry Consortium initiative
106. Two interesting aspects
106
● Memory management in ALF vs. C++
● Execution semantics misalignment between ALF and C++
107. Memory management in ALF vs. C++
107
● ALF does not enforce a specific memory management mechanism
Two possibilities
Create and destroy objects explicitly
Constrain an object's lifecycle to ”execution locus” unless they are not
explicitly destroyed
If all links to an object are destroyed, object can be re-trieved anytime
using class extent expressions (in C++, ”unreachable" objects and
thereby memory leaks)
No univocal way to to bridge memory management mechanisms in
ALF and C++
108. Memory management in ALF vs. C++
108
● ALF does not enforce a specific memory management mechanism
● Two possibilities
1. Create and destroy objects explicitly
2. Constrain an object's lifecycle to ”execution locus” unless they are not
explicitly destroyed
If all links to an object are destroyed, object can be re-trieved anytime
using class extent expressions (in C++, ”unreachable" objects and
thereby memory leaks)
No univocal way to to bridge memory management mechanisms in
ALF and C++
109. Memory management in ALF vs. C++
109
● ALF does not enforce a specific memory management mechanisms
● Two possibilities
1. Create and destroy objects explicitly
2. Constrain an object's lifecycle to ”execution locus” unless they are not
explicitly destroyed
● If all links to an object are destroyed, object can be retrieved using
class extent expressions
● in C++, ”unreachable" objects and thereby memory leaks
No univocal way to bridge memory management mechanisms in ALF
and C++
110. Memory management in ALF vs. C++
110
● ALF does not enforce a specific memory management mechanisms
● Two possibilities
1. Create and destroy objects explicitly
2. Constrain an object's lifecycle to ”execution locus” unless they are not
explicitly destroyed
● If all links to an object are destroyed, object can be retrieved using
class extent expressions
● in C++, ”unreachable" objects and thereby memory leaks
● No univocal way to bridge memory management mechanisms in
ALF and C++
111. Memory management in ALF vs. C++
111
● Our goal was to generate C++ code free from memory
overflows/leaks
For practical reasons (industrial applications), we were restricted to
C++11
Three possibilities:
Allocate basic typed variables on the stack and more complex objects on the
heap
Pros: good code performance and easy to implement
Cons: no prevention from stack overflows
Allocate everything on the heap through ”smart pointers”
Pros: good code performance, medium to implement, prevents stack overflows and memory
leaks
Cons: not optimised memory usage
Perform a smart allocation on heap and stack
Pros: best code performance, can prevent stack overflows and leaks, optimal memory usage
Cons: complex to implement and maintain
112. Memory management in ALF vs. C++
112
● Our goal was to generate C++ code free from memory
overflows/leaks
● For practical reasons (industrial applications), we were restricted to
C++11
Three possibilities:
Allocate basic typed variables on the stack and more complex objects on the
heap
Pros: good code performance and easy to implement
Cons: no prevention from stack overflows
Allocate everything on the heap through ”smart pointers”
Pros: good code performance, medium to implement, prevents stack overflows and memory
leaks
Cons: not optimised memory usage
Perform a smart allocation on heap and stack
Pros: best code performance, can prevent stack overflows and leaks, optimal memory usage
Cons: complex to implement and maintain
113. Memory management in ALF vs. C++
113
● Our goal was to generate C++ code free from memory
overflows/leaks
● For practical reasons (industrial applications), we were restricted to
C++11
● Three possibilities:
● Allocate basic typed variables on the stack and more complex objects on
the heap
● Pros: good code performance and easy to implement
● Cons: no prevention from stack overflows
Allocate everything on the heap through ”smart pointers”
Pros: good code performance, medium to implement, prevents stack overflows and memory
leaks
Cons: not optimised memory usage
Perform a smart allocation on heap and stack
Pros: best code performance, can prevent stack overflows and leaks, optimal memory usage
Cons: complex to implement and maintain
114. Memory management in ALF vs. C++
114
● Our goal was to generate C++ code free from memory
overflows/leaks
● For practical reasons (industrial applications), we were restricted to
C++11
● Three possibilities:
● Allocate basic typed variables on the stack and more complex objects on
the heap
● Pros: good code performance and easy to implement
● Cons: no prevention from stack overflows
● Allocate everything on the heap through ”smart pointers”
● Pros: good code performance, medium to implement, prevents stack overflows
● Cons: not optimised memory usage
Perform a smart allocation on heap and stack
Pros: best code performance, can prevent stack overflows and leaks, optimal memory usage
Cons: complex to implement and maintain
115. Memory management in ALF vs. C++
115
● Our goal was to generate C++ code free from memory
overflows/leaks
● For practical reasons (industrial applications), we were restricted to
C++11
● Three possibilities:
● Allocate basic typed variables on the stack and more complex objects on
the heap
● Pros: good code performance and easy to implement
● Cons: no prevention from stack overflows
● Allocate everything on the heap through ”smart pointers”
● Pros: good code performance, medium to implement, prevents stack overflows
● Cons: not optimised memory usage
● Perform a smart allocation on heap and stack
● Pros: best code performance, can prevent stack overflows and leaks, optimal memory usage
● Cons: complex to implement and maintain
116. Memory management in ALF vs. C++
116
● Our goal was to generate C++ code free from memory
overflows/leaks
● For practical reasons (industrial applications), we were restricted to
C++11
● Three possibilities:
● Allocate basic typed variables on the stack and more complex objects on
the heap
● Pros: good code performance and easy to implement
● Cons: no prevention from stack overflows
● Allocate everything on the heap through ”smart pointers”
● Pros: good code performance, medium to implement, prevents stack overflows and memory
leaks
● Cons: not optimised memory usage
● Perform a smart allocation on heap and stack
● Pros: best code performance, can prevent stack overflows and leaks, optimal memory usage
● Cons: complex to implement and maintain
117. Execution semantics misalignment
117
● ALF and C++ have different semantics
Translating from one to the other does not bridge this
Ad-hoc solutions can be enforced, but are not optimal
3GL compilers (e.g. for C++) optimise according to 3GL semantics
118. Execution semantics misalignment
118
● ALF and C++ have different semantics
ALF
let a : ClassA = …;
let param : Integer = null;
a.addItem(param);
a.printItems();
119. Execution semantics misalignment
119
● ALF and C++ have different semantics
ALF
let a : ClassA = …;
let param : Integer = null;
a.addItem(param); Execution stops here!
a.printItems();
121. Execution semantics misalignment
121
● ALF and C++ have different semantics
● addItem() is called; there might be a null pointer exception
C++
ClassA a = …;
int param = null;
a.addItem(param);
a.printItems();
122. Execution semantics misalignment
122
● ALF and C++ have different semantics
● Translating from one to the other does not bridge this
Ad-hoc solutions can be enforced, but are not optimal
3GL compilers (e.g. for C++) optimise according to 3GL semantics
123. Execution semantics misalignment
123
● ALF and C++ have different semantics
● Translating from one to the other does not bridge this
● Ad-hoc solutions need to be enforced, but are not optimal
3GL compilers (e.g. for C++) optimise according to 3GL semantics
124. Execution semantics misalignment
124
● ALF and C++ have different semantics
● Translating from one to the other does not bridge this
● Ad-hoc solutions need to be enforced, but are not optimal
● 3GL compilers unaware of UML/ALF semantics
125. Execution semantics misalignment
125
● ALF and C++ have different semantics
● Translating from one to the other does not bridge this
● Ad-hoc solutions need to be enforced, but are not optimal
● 3GL compilers unaware of UML/ALF semantics
● 3GL compilers optimise according to 3GL semantics
127. So..
127
● Code generation is not the best way to go..
● Translating UML/ALF to C++ is almost like translating C++ to
C to reuse a C compiler
128. So..
128
● Code generation is not the best way to go..
● Translating UML/ALF to C++ is almost like translating C++ to
C to reuse a C compiler
● Do you remember CFront? And what happened with it?
129. So..
129
● Code generation is not the best way to go..
● Translating UML/ALF to C++ is almost like translating C++ to
C to reuse a C compiler
● Do you remember CFront? And what happened with it?
CFront
130. Why didn’t CFront succeed?
130
● Overcomplex generated compiler code
● Suboptimal executables (based on C semantics)
132. Why compiling?
132
● Full control over the manipulations that models undergo
Optimisations based on model semantics
Maximised semantics-preservation from model to executable
Produced executables semantically more consistent to source models
than with any translational approach
Consistency enhances model observability (e.g., model debugging,
models@runtime
More predictable generated executables
Boost adoption of UML/ALF for embedded real-time and safety-critical
systems
133. Why compiling?
133
● Full control over the manipulations that models undergo
● Optimisations based on model semantics
Maximised semantics-preservation from model to executable
Produced executables semantically more consistent to source models
than with any translational approach
Consistency enhances model observability (e.g., model debugging,
models@runtime
More predictable generated executables
Boost adoption of UML/ALF for embedded real-time and safety-critical
systems
134. Why compiling?
134
● Full control over the manipulations that models undergo
● Optimisations based on model semantics
● Maximised semantics-preservation from model to executable
● Produced executables semantically more consistent to source models
than with any translational approach
● Enhanced model-executable consistency
● Better model observability (e.g., model debugging, models@runtime)
More predictable generated executables
Boost adoption of UML/ALF for embedded real-time and safety-critical
systems
135. Why compiling?
135
● Full control over the manipulations that models undergo
● Optimisations based on model semantics
● Maximised semantics-preservation from model to executable
● Produced executables semantically more consistent to source models
than with any translational approach
● Enhanced model-executable consistency
● Better model observability (e.g., model debugging, models@runtime)
● More predictable generated executables
● Boost adoption of UML/ALF for embedded real-time safety-critical
systems (e.g. CPS)
138. The waving guys
138
● Who are they?
● Mälardalen University (myself, project leader)
● Alten Sweden AB
● Saab Group – Defence and Security
● Academia-industry cooperative project (2017-2020)
● Swedish national funding
● Goals
● Development of predictable safety-critical software-intensive systems
● Compilation of (f)UML/ALF
● Optimised memory management
● Minimisation of dynamic memory handling
● Optimal allocation on heap and stack
● Driven by model-based analysis
139. Other (to be) hot research topics in
UML/ALF execution
139
● Ability to execute partial models (early verification)
● Modelling uncertainty (flexible development of CPS, IoT)
● Enhanced observability of model execution
● Enhanced control of model execution
● Support for executing models based on UML profiles
● Integration of UML simulators into heterogeneous (multi-paradigm)
simulation systems (CPS)
● Use of model-reference approaches at runtime (models@runtime)
141. (f)UML+ALF = Precise modelling
141
UML
Well-defined syntax for structural details
Profiles specific for different concerns/domains in a CPS
ALF
Well-defined syntax for algorithmic behaviours
Platform-independent -> deployment to different platforms of the same
functions
fUML
Well-defined execution semantics
Gives tools for producing predictable software (mission-critical CPS, IoT,
safety-critical systems in general)
UML + fUML + ALF
consistent abstract syntaxes (fUML as common base)
inter-model consistency by-construction
What’s precise modelling?
• Well-defined abstract
syntax for structure
• Well-defined abstract
syntax for behaviour
• Well-defined model
execution semantics
• Intra-model consistency
142. (f)UML+ALF = Precise modelling
142
● UML
● Well-defined syntax for structural details
● Profiles specific for different concerns/domains in a CPS
ALF
Well-defined syntax for algorithmic behaviours
Platform-independent -> deployment to different platforms of the same
functions
fUML
Well-defined execution semantics
Gives tools for producing predictable software (mission-critical CPS, IoT,
safety-critical systems in general)
UML + fUML + ALF
consistent abstract syntaxes (fUML as common base)
inter-model consistency by-construction
What’s precise modelling?
• Well-defined abstract
syntax for structure
• Well-defined abstract
syntax for behaviour
• Well-defined model
execution semantics
• Intra-model consistency
143. (f)UML+ALF = Precise modelling
143
● UML
● Well-defined syntax for structural details
● Profiles specific for different concerns/domains in a CPS
● ALF
● Well-defined syntax for algorithmic behaviours
● Platform-independent -> deployment to different platforms of the same
functions (heterogeneous systems -> CPS)
fUML
Well-defined execution semantics
Gives tools for producing predictable software (mission-critical CPS, IoT,
safety-critical systems in general)
UML + fUML + ALF
consistent abstract syntaxes (fUML as common base)
inter-model consistency by-construction
What’s precise modelling?
• Well-defined abstract
syntax for structure
• Well-defined abstract
syntax for behaviour
• Well-defined model
execution semantics
• Intra-model consistency
144. (f)UML+ALF = Precise modelling
144
● UML
● Well-defined syntax for structural details
● Profiles specific for different concerns/domains in a CPS
● ALF
● Well-defined syntax for algorithmic behaviours
● Platform-independent -> deployment to different platforms of the same
functions (heterogeneous systems -> CPS)
● fUML
● Well-defined execution semantics
● Gives tools for producing predictable software (mission-critical CPS, IoT,
safety-critical systems in general)
UML + fUML + ALF
consistent abstract syntaxes (fUML as common base)
inter-model consistency by-construction
What’s precise modelling?
• Well-defined abstract
syntax for structure
• Well-defined abstract
syntax for behaviour
• Well-defined model
execution semantics
• Intra-model consistency
145. (f)UML+ALF = Precise modelling
145
● UML
● Well-defined syntax for structural details
● Profiles specific for different concerns/domains in a CPS
● ALF
● Well-defined syntax for algorithmic behaviours
● Platform-independent -> deployment to different platforms of the same
functions (heterogeneous systems -> CPS)
● fUML
● Well-defined execution semantics
● Gives tools for producing predictable software (mission-critical CPS, IoT,
safety-critical systems in general)
● UML + fUML + ALF
● consistent abstract syntaxes (fUML as common base)
● intra-model consistency by-construction (need support by modelling tool)
What’s precise modelling?
• Well-defined abstract
syntax for structure
• Well-defined abstract
syntax for behaviour
• Well-defined model
execution semantics
• Intra-model consistency
146. ALF instead of 3GLs for action code
146
● ALF standard action language for UML (and profiles)
● Abstraction
● Model consistency and maintainability (full awareness of
surrounding model elements)
● Model reusability (several targets from same input model)
● Model analisability (simulation, execution, etc..)
147. ALF instead of 3GLs for action code
147
● ALF standard action language for UML (and profiles)
● Abstraction
● Model consistency and maintainability (full awareness of
surrounding model elements)
● Model reusability (several targets from same input model)
● Model analisability (simulation, execution, etc..)
● Shift to ALF in industrial UML-based MDE leveraging
3GLs for action code is not trivial
148. Joint effort
148
● A myriad of UML tools in 20 years
● More or less wild customisation, enhancement, creation of
dialects
● Innovation reduced to minimum, portability issues, language
implementations discrepancy, …
● Modelling tool landscape which in many ways contradicts UML's
creed (UNIFICATION)
What do we need?
UML = unification technology unified intents and efforts
Open-source common baseline
Domain-specific customised variations
Synergic effort between developers, users and researchers from
industry and academia is vital
149. Joint effort
149
● A myriad of UML tools in 20 years
● More or less wild customisation, enhancement, creation of
dialects
● Innovation reduced to minimum, portability issues, language
implementations discrepancy, …
● Modelling tool landscape which in many ways contradicts UML's
creed (UNIFICATION)
● What do we need?
● UML = unification technology unified intents and efforts
● Common baseline
● Domain-specific customised variations (even user-defined)
● Synergic effort between developers, users and researchers from
industry and academia is vital
150. Thanks for the attention!
150Contact: federico.ciccozzi@mdh.se
Acknowledgements
Thanks for fruitful discussions and cooperation to:
• Bran Selic (Malina Software Corp.)
• Ivano Malavolta (Vrije University)
• Mikael Sjödin (MDH)
• Alfonso Pierantonio (University of L’Aquila)
• Antonio Cicchetti (MDH)
• Francis Bordeleau (Ericsson)
• Diarmuid Corcoran (Ericsson)
• Thomas Åkerlund (Knightec)
• Alessio Bucaioni (MDH)
• Detlef Scholle (Alten Sweden)
• Tiberiu Seceleanu (ABB Corporate Research)
• SMARTCore (www.es.mdh.se/projects/377-SMARTCore)
• Papyrus IC (wiki.polarsys.org/Papyrus_IC)
Editor's Notes
Make examples
Make examples
Acti
Acti
Acti
Acti
Provided ALF, a textual action language based on fUML for compact and complete specification of complex behaviors including their algorithmic parts
Provided ALF, a textual action language based on fUML for compact and complete specification of complex behaviors including their algorithmic parts
Provided ALF, a textual action language based on fUML for compact and complete specification of complex behaviors including their algorithmic parts