This document describes a-posteriori typing for model-driven engineering. A-posteriori typing decouples an object's instantiation from its classification, allowing objects to have multiple classifiers and change classifiers at runtime. This is more flexible than traditional constructive typing. The document outlines the design space of possible MDE typings and proposes specifying typings at the type level and instance level. It also discusses analyzing type safety, applying typings to enable bidirectional model transformations through reclassification, and flexibly reusing operations across models. A-posteriori typing supports more flexible reuse, transformation, and analysis for model-driven engineering.
This document provides an overview of the Model-Driven Engineering (MDE) research activities at the MISO group at the Autonomous University of Madrid. The MISO group conducts research in (meta-)modeling, domain-specific languages, and model transformations. Their work includes multi-level modeling, a-posteriori typing, modeling through social networks, active DSLs, transformation analysis, and techniques for improving the reusability of model transformations.
The document provides an introduction to design patterns developed by the Gang of Four (GoF). It discusses several common design patterns in JavaScript like the constructor pattern, module pattern, singleton pattern, observer pattern, mediator pattern, prototype pattern, command pattern, facade pattern, and mixin pattern. For each pattern, it explains the problem it addresses, provides an example implementation, and notes advantages and disadvantages of the pattern. The overall document serves as a high-level overview of fundamental design patterns and their usage in JavaScript applications.
Fairey v ap conference version 5 5 2010 copyrightpamdlynnbrown
The document summarizes a case between artist Shepard Fairey and the Associated Press over Fairey's use of an AP photo in creating political posters for Barack Obama's 2008 presidential campaign. Fairey admitted copying the photo but claimed it was fair use, while AP filed a counterclaim alleging copyright infringement. Both sides presented arguments regarding the four fair use factors: commercial purpose of the use, the amount and substantiality of the portion used, the effect on the potential market, and whether the use transformed the original work. The judges were tasked with weighing these factors to decide whether Fairey's use constituted fair use or copyright infringement based on the facts of the case.
K TO 12 GRADE 7 LEARNING MODULE IN ARALING PANLIPUNANLiGhT ArOhL
Learning materials / modules in Araling Panlipunan for Grade 7, Module 1 to 5. I combined the 5 modules. it was separated by a blank blue page for the module 3,4,5. hope it will help so u will download the whole modules. i will upload the revised module 3. check it in my slideshare.
The document provides an overview of the Model-Driven Engineering (MDE) research activities of the MISO group at the Universidad Autónoma de Madrid. The MISO group focuses on areas like (meta-)modelling, domain-specific languages, and model transformations. Some of their work includes multi-level modelling, a-posteriori typing, modelling through social networks, pattern-based development of DSLs, and analysis of model transformations for correctness.
The document summarizes model-driven engineering (MDE) and discusses approaches to reuse in MDE transformations. Specifically:
- MDE aims to increase abstraction in software development by modeling at a higher level of abstraction rather than coding directly. Models are used to describe problems, simulate/verify/test, and generate code.
- Reusing MDE artifacts like transformations is challenging as they are defined for specific meta-models. Current practice involves ad-hoc copying and adapting transformations, which is error-prone.
- The document presents three approaches to improve reuse: concepts, multi-level modeling, and a-posteriori typing. Concepts define transformations at a more abstract level and allow automated adaptation.
This document provides an overview of the Model-Driven Engineering (MDE) research activities at the MISO group at the Autonomous University of Madrid. The MISO group conducts research in (meta-)modeling, domain-specific languages, and model transformations. Their work includes multi-level modeling, a-posteriori typing, modeling through social networks, active DSLs, transformation analysis, and techniques for improving the reusability of model transformations.
The document provides an introduction to design patterns developed by the Gang of Four (GoF). It discusses several common design patterns in JavaScript like the constructor pattern, module pattern, singleton pattern, observer pattern, mediator pattern, prototype pattern, command pattern, facade pattern, and mixin pattern. For each pattern, it explains the problem it addresses, provides an example implementation, and notes advantages and disadvantages of the pattern. The overall document serves as a high-level overview of fundamental design patterns and their usage in JavaScript applications.
Fairey v ap conference version 5 5 2010 copyrightpamdlynnbrown
The document summarizes a case between artist Shepard Fairey and the Associated Press over Fairey's use of an AP photo in creating political posters for Barack Obama's 2008 presidential campaign. Fairey admitted copying the photo but claimed it was fair use, while AP filed a counterclaim alleging copyright infringement. Both sides presented arguments regarding the four fair use factors: commercial purpose of the use, the amount and substantiality of the portion used, the effect on the potential market, and whether the use transformed the original work. The judges were tasked with weighing these factors to decide whether Fairey's use constituted fair use or copyright infringement based on the facts of the case.
K TO 12 GRADE 7 LEARNING MODULE IN ARALING PANLIPUNANLiGhT ArOhL
Learning materials / modules in Araling Panlipunan for Grade 7, Module 1 to 5. I combined the 5 modules. it was separated by a blank blue page for the module 3,4,5. hope it will help so u will download the whole modules. i will upload the revised module 3. check it in my slideshare.
The document provides an overview of the Model-Driven Engineering (MDE) research activities of the MISO group at the Universidad Autónoma de Madrid. The MISO group focuses on areas like (meta-)modelling, domain-specific languages, and model transformations. Some of their work includes multi-level modelling, a-posteriori typing, modelling through social networks, pattern-based development of DSLs, and analysis of model transformations for correctness.
The document summarizes model-driven engineering (MDE) and discusses approaches to reuse in MDE transformations. Specifically:
- MDE aims to increase abstraction in software development by modeling at a higher level of abstraction rather than coding directly. Models are used to describe problems, simulate/verify/test, and generate code.
- Reusing MDE artifacts like transformations is challenging as they are defined for specific meta-models. Current practice involves ad-hoc copying and adapting transformations, which is error-prone.
- The document presents three approaches to improve reuse: concepts, multi-level modeling, and a-posteriori typing. Concepts define transformations at a more abstract level and allow automated adaptation.
Nathaniel Cook - Forecasting Time Series Data at scale with the TICK stackPyData
This document discusses time series forecasting at scale using the Prophet procedure and the TICK stack. It presents a workflow that uses Kapacitor tasks to create Prophet and baseline models for hundreds of Github project time series, evaluate the models, surface problematic forecasts, and visually inspect models using Chronograf. An example is shown forecasting star counts for over 400 Python projects to demonstrate how the TICK stack automates the workflow and enables scalable time series forecasting.
Approaches to Model Transformation Reuse: from Concepts to A-posteriori typingmiso_uam
This document discusses approaches to reuse model transformations across different but related meta-models. It begins by motivating the problem of having to recreate transformations when meta-models change slightly. It then examines existing ad-hoc approaches to reuse that involve copying and adapting transformations, which is error-prone. The document proposes two main approaches: concept-based reuse and multi-level reuse. Concept-based reuse involves defining transformations over abstract concepts and automatically adapting them to concrete meta-models through bindings. Multi-level reuse defines transformations at a meta-meta-model level to apply generically to any language conforming to that meta-meta-model. The document discusses advantages and limitations of each approach, and considers how aspects of both could
This chapter discusses pointers, classes, virtual functions, and abstract classes in C++. Pointers contain the addresses of other variables and can be used to access dynamic memory. The address of and dereferencing operators are used to work with pointers. Classes and structs can have pointer member variables. Virtual functions allow dynamic binding at runtime rather than compile-time. Abstract classes define pure virtual functions that derived classes must implement.
This document provides an overview of JavaScript design patterns based on Addy Osmani's book "Essential JavaScript & jQuery Design Patterns". It begins with background on design patterns and defines what a design pattern is. It describes the structure of design patterns and discusses anti-patterns. It then covers common JavaScript design patterns including creational, structural, and behavioral patterns as well as MV* patterns like MVC, MVP, and MVVM. Specific patterns like Module, Observer, Command, Constructor & Prototype, and examples using Backbone.js, Spine.js, and Knockout.js are summarized.
1. The document discusses using Azure Machine Learning (ML) capabilities for text classification, including binary and multiclass classification problems.
2. It provides examples of using ML models to detect spam and classify customer service issues from problem descriptions.
3. The document outlines the process for building ML text classification pipelines in Azure ML, including data preparation, feature extraction, model training and evaluation.
Robust C++ Task Systems Through Compile-time ChecksStoyan Nikolov
Task-based (aka job systems) engine architectures are becoming the de-facto standard for AAA game engines and software solutions. The talk explains how the task system in the Hummingbird game UI engine was designed to both be convenient and to avoid common programmer pitfalls. Advanced C++ techniques are employed to warn and shield the developer from errors at compile time.
C# is an object-oriented programming language where all program logic must be contained within classes. It has features like garbage collection, inheritance, interfaces, namespaces, and data types similar to Java. Key concepts include value types vs reference types, boxing and unboxing, arrays, enums, structs, and parameter passing modes like pass by value, reference, and output. The language has control structures like if/else, switch, while, for, and foreach loops to control program flow. Methods can be instance methods or static methods.
iOS development Crash course in how to build an native application for iPhone.
i will be start from beginning till publishing on Apple Store step by step.
this session # 1 after the intro
The document discusses classes, objects, and methods in object-oriented programming. It introduces the Dice class as an example, which models the behavior and properties of dice. The Dice class has private member variables to store the number of sides and rolls, and public methods like Roll() and NumSides() to access and manipulate these properties. The document explains concepts like encapsulation, properties, static methods, and the importance of classes and objects in organizing code into reusable components.
MLFlow: Platform for Complete Machine Learning Lifecycle Databricks
Description
Data Science and ML development bring many new complexities beyond the traditional software development lifecycle. Unlike in traditional software development, ML developers want to try multiple algorithms, tools, and parameters to get the best results, and they need to track this information to reproduce work.
MLflow addresses some of these challenges during an ML model development cycle.
Abstract
ML development brings many new complexities beyond the traditional software development lifecycle. Unlike in traditional software development, ML developers want to try multiple algorithms, tools, and parameters to get the best results, and they need to track this information to reproduce work. In addition, developers need to use many distinct systems to productionize models. To address these problems, many companies are building custom “ML platforms” that automate this lifecycle, but even these platforms are limited to a few supported algorithms and to each company’s internal infrastructure.
In this session, we introduce MLflow, a new open source project from Databricks that aims to design an open ML platform where organizations can use any ML library and development tool of their choice to reliably build and share ML applications. MLflow introduces simple abstractions to package reproducible projects, track results, and encapsulate models that can be used with many existing tools, accelerating the ML lifecycle for organizations of any size.
With a short demo, you see a complete ML model life-cycle example, you will walk away with: MLflow concepts and abstractions for models, experiments, and projects How to get started with MLFlow Using tracking Python APIs during model training Using MLflow UI to visually compare and contrast experimental runs with different tuning parameters and evaluate metrics
The document discusses Unit 4 of the Programming for Problem Solving course. It covers functions and pointers in C programming. Specifically, it discusses function declaration, definition, user-defined functions, storage classes, function prototypes, parameter passing methods (call by value and call by reference), recursion, pointers, pointer arithmetic, and dynamic memory allocation using pointers.
Dear students get fully solved assignments
Send your semester & Specialization name to our mail id :
“ help.mbaassignments@gmail.com ”
or
Call us at : 08263069601
This chapter discusses records (structs) in C++. A struct is a collection of members of different types that are accessed by name. Structs allow grouping of related data and functions together. The chapter covers defining and declaring structs, accessing struct members, assigning struct variables, comparing structs, passing structs to functions, using arrays within structs, and nesting structs within other structs.
This document discusses data product architectures and provides examples of different architectures for data products, including the lambda architecture, analyst architecture, recommender architecture, and partisan discourse architecture. It also discusses common design principles for data product architectures, such as using microservices with stateful backend services and database-backed APIs. Key aspects of data product architectures include handling training data and models, making predictions via APIs, updating models and annotations, and designing flexible systems that can incorporate new models and data.
The document discusses TypeScript concepts including:
- TypeScript adds static typing to JavaScript for type safety and catches errors.
- It is transpiled to JavaScript using a compiler for browser compatibility.
- The document covers TypeScript basics like functions, parameters, return types, interfaces, classes, modules and generics.
- Functions, parameters and return types are typed for type safety. Interfaces define structures without implementation.
- Classes create object templates with fields and methods. Namespaces and modules organize code. Generics enable code reuse.
GraphQL is a query language and execution engine that was created by Facebook in 2012 and became an open standard in 2015. It provides improvements over REST such as allowing queries to retrieve multiple resources with one endpoint. Symfony implementations of GraphQL include the GraphQLBundle and OverblogGraphQLBundle which allow defining types, fields, resolvers, and security rules in YAML configuration files. Security features include limiting query depth and complexity as well as controlling access to fields.
- GraphQL is a query language and execution engine that allows clients to request specific data from an API rather than retrieve predefined resources. It was created by Facebook in 2012 and became an open standard in 2015.
- GraphQL provides improvements over REST APIs such as allowing clients to request specific data in one endpoint using queries rather than making multiple requests to different endpoints.
- Symfony implementations of GraphQL include the GraphQLBundle which allows defining types, fields, and resolvers in YAML configuration and connecting them to Symfony services and repositories.
- Security measures for GraphQL APIs include limiting query depth and complexity, field access control, and marking fields as deprecated.
SWE 316 discusses software design and architecture using object orientation principles. It covers key concepts like classes and objects, where classes represent concepts and objects are instances of classes. The document discusses how classes can relate to each other through inheritance, aggregation, and as clients. It also covers polymorphism, which allows the same method to perform different actions depending on the object's type. The goal is to describe software design using object-oriented techniques.
This document describes a model-driven approach to building augmented reality (AR) applications. Key points:
- AR applications are specified using models that describe the domain, AR representation, object anchoring using techniques like QR codes and beacons, and interaction with external APIs.
- An AR interpreter renders the virtual objects based on the models and allows interaction in the physical world.
- The approach was evaluated through case studies of AR apps for networking, museums, home design, inventory, and social media. A user study found the AR apps to have good usability.
- Future work includes adding physics, collaborative editing, migrating the designer to the web, and more user studies.
This document presents a modular approach to defining families of domain-specific languages (DSLs) using graph transformations. The approach uses language modules that define the abstract syntax and semantics of DSL variants. Module dependencies and extensions define how the variants relate and combine. Configurations select modules to derive a specific DSL meta-model and rules. The approach reduces specification effort compared to defining each variant separately while ensuring behavioral consistency. Tool support and experiments demonstrate the feasibility of the modular approach.
More Related Content
Similar to A-posteriori typing for model-driven engineering
Nathaniel Cook - Forecasting Time Series Data at scale with the TICK stackPyData
This document discusses time series forecasting at scale using the Prophet procedure and the TICK stack. It presents a workflow that uses Kapacitor tasks to create Prophet and baseline models for hundreds of Github project time series, evaluate the models, surface problematic forecasts, and visually inspect models using Chronograf. An example is shown forecasting star counts for over 400 Python projects to demonstrate how the TICK stack automates the workflow and enables scalable time series forecasting.
Approaches to Model Transformation Reuse: from Concepts to A-posteriori typingmiso_uam
This document discusses approaches to reuse model transformations across different but related meta-models. It begins by motivating the problem of having to recreate transformations when meta-models change slightly. It then examines existing ad-hoc approaches to reuse that involve copying and adapting transformations, which is error-prone. The document proposes two main approaches: concept-based reuse and multi-level reuse. Concept-based reuse involves defining transformations over abstract concepts and automatically adapting them to concrete meta-models through bindings. Multi-level reuse defines transformations at a meta-meta-model level to apply generically to any language conforming to that meta-meta-model. The document discusses advantages and limitations of each approach, and considers how aspects of both could
This chapter discusses pointers, classes, virtual functions, and abstract classes in C++. Pointers contain the addresses of other variables and can be used to access dynamic memory. The address of and dereferencing operators are used to work with pointers. Classes and structs can have pointer member variables. Virtual functions allow dynamic binding at runtime rather than compile-time. Abstract classes define pure virtual functions that derived classes must implement.
This document provides an overview of JavaScript design patterns based on Addy Osmani's book "Essential JavaScript & jQuery Design Patterns". It begins with background on design patterns and defines what a design pattern is. It describes the structure of design patterns and discusses anti-patterns. It then covers common JavaScript design patterns including creational, structural, and behavioral patterns as well as MV* patterns like MVC, MVP, and MVVM. Specific patterns like Module, Observer, Command, Constructor & Prototype, and examples using Backbone.js, Spine.js, and Knockout.js are summarized.
1. The document discusses using Azure Machine Learning (ML) capabilities for text classification, including binary and multiclass classification problems.
2. It provides examples of using ML models to detect spam and classify customer service issues from problem descriptions.
3. The document outlines the process for building ML text classification pipelines in Azure ML, including data preparation, feature extraction, model training and evaluation.
Robust C++ Task Systems Through Compile-time ChecksStoyan Nikolov
Task-based (aka job systems) engine architectures are becoming the de-facto standard for AAA game engines and software solutions. The talk explains how the task system in the Hummingbird game UI engine was designed to both be convenient and to avoid common programmer pitfalls. Advanced C++ techniques are employed to warn and shield the developer from errors at compile time.
C# is an object-oriented programming language where all program logic must be contained within classes. It has features like garbage collection, inheritance, interfaces, namespaces, and data types similar to Java. Key concepts include value types vs reference types, boxing and unboxing, arrays, enums, structs, and parameter passing modes like pass by value, reference, and output. The language has control structures like if/else, switch, while, for, and foreach loops to control program flow. Methods can be instance methods or static methods.
iOS development Crash course in how to build an native application for iPhone.
i will be start from beginning till publishing on Apple Store step by step.
this session # 1 after the intro
The document discusses classes, objects, and methods in object-oriented programming. It introduces the Dice class as an example, which models the behavior and properties of dice. The Dice class has private member variables to store the number of sides and rolls, and public methods like Roll() and NumSides() to access and manipulate these properties. The document explains concepts like encapsulation, properties, static methods, and the importance of classes and objects in organizing code into reusable components.
MLFlow: Platform for Complete Machine Learning Lifecycle Databricks
Description
Data Science and ML development bring many new complexities beyond the traditional software development lifecycle. Unlike in traditional software development, ML developers want to try multiple algorithms, tools, and parameters to get the best results, and they need to track this information to reproduce work.
MLflow addresses some of these challenges during an ML model development cycle.
Abstract
ML development brings many new complexities beyond the traditional software development lifecycle. Unlike in traditional software development, ML developers want to try multiple algorithms, tools, and parameters to get the best results, and they need to track this information to reproduce work. In addition, developers need to use many distinct systems to productionize models. To address these problems, many companies are building custom “ML platforms” that automate this lifecycle, but even these platforms are limited to a few supported algorithms and to each company’s internal infrastructure.
In this session, we introduce MLflow, a new open source project from Databricks that aims to design an open ML platform where organizations can use any ML library and development tool of their choice to reliably build and share ML applications. MLflow introduces simple abstractions to package reproducible projects, track results, and encapsulate models that can be used with many existing tools, accelerating the ML lifecycle for organizations of any size.
With a short demo, you see a complete ML model life-cycle example, you will walk away with: MLflow concepts and abstractions for models, experiments, and projects How to get started with MLFlow Using tracking Python APIs during model training Using MLflow UI to visually compare and contrast experimental runs with different tuning parameters and evaluate metrics
The document discusses Unit 4 of the Programming for Problem Solving course. It covers functions and pointers in C programming. Specifically, it discusses function declaration, definition, user-defined functions, storage classes, function prototypes, parameter passing methods (call by value and call by reference), recursion, pointers, pointer arithmetic, and dynamic memory allocation using pointers.
Dear students get fully solved assignments
Send your semester & Specialization name to our mail id :
“ help.mbaassignments@gmail.com ”
or
Call us at : 08263069601
This chapter discusses records (structs) in C++. A struct is a collection of members of different types that are accessed by name. Structs allow grouping of related data and functions together. The chapter covers defining and declaring structs, accessing struct members, assigning struct variables, comparing structs, passing structs to functions, using arrays within structs, and nesting structs within other structs.
This document discusses data product architectures and provides examples of different architectures for data products, including the lambda architecture, analyst architecture, recommender architecture, and partisan discourse architecture. It also discusses common design principles for data product architectures, such as using microservices with stateful backend services and database-backed APIs. Key aspects of data product architectures include handling training data and models, making predictions via APIs, updating models and annotations, and designing flexible systems that can incorporate new models and data.
The document discusses TypeScript concepts including:
- TypeScript adds static typing to JavaScript for type safety and catches errors.
- It is transpiled to JavaScript using a compiler for browser compatibility.
- The document covers TypeScript basics like functions, parameters, return types, interfaces, classes, modules and generics.
- Functions, parameters and return types are typed for type safety. Interfaces define structures without implementation.
- Classes create object templates with fields and methods. Namespaces and modules organize code. Generics enable code reuse.
GraphQL is a query language and execution engine that was created by Facebook in 2012 and became an open standard in 2015. It provides improvements over REST such as allowing queries to retrieve multiple resources with one endpoint. Symfony implementations of GraphQL include the GraphQLBundle and OverblogGraphQLBundle which allow defining types, fields, resolvers, and security rules in YAML configuration files. Security features include limiting query depth and complexity as well as controlling access to fields.
- GraphQL is a query language and execution engine that allows clients to request specific data from an API rather than retrieve predefined resources. It was created by Facebook in 2012 and became an open standard in 2015.
- GraphQL provides improvements over REST APIs such as allowing clients to request specific data in one endpoint using queries rather than making multiple requests to different endpoints.
- Symfony implementations of GraphQL include the GraphQLBundle which allows defining types, fields, and resolvers in YAML configuration and connecting them to Symfony services and repositories.
- Security measures for GraphQL APIs include limiting query depth and complexity, field access control, and marking fields as deprecated.
SWE 316 discusses software design and architecture using object orientation principles. It covers key concepts like classes and objects, where classes represent concepts and objects are instances of classes. The document discusses how classes can relate to each other through inheritance, aggregation, and as clients. It also covers polymorphism, which allows the same method to perform different actions depending on the object's type. The goal is to describe software design using object-oriented techniques.
Similar to A-posteriori typing for model-driven engineering (20)
This document describes a model-driven approach to building augmented reality (AR) applications. Key points:
- AR applications are specified using models that describe the domain, AR representation, object anchoring using techniques like QR codes and beacons, and interaction with external APIs.
- An AR interpreter renders the virtual objects based on the models and allows interaction in the physical world.
- The approach was evaluated through case studies of AR apps for networking, museums, home design, inventory, and social media. A user study found the AR apps to have good usability.
- Future work includes adding physics, collaborative editing, migrating the designer to the web, and more user studies.
This document presents a modular approach to defining families of domain-specific languages (DSLs) using graph transformations. The approach uses language modules that define the abstract syntax and semantics of DSL variants. Module dependencies and extensions define how the variants relate and combine. Configurations select modules to derive a specific DSL meta-model and rules. The approach reduces specification effort compared to defining each variant separately while ensuring behavioral consistency. Tool support and experiments demonstrate the feasibility of the modular approach.
Multi-level modelling allows modelling at more than two meta-levels at once. The document discusses how multi-level modelling can be used for model-driven engineering. It presents the basics of multi-level modelling using concepts like clabjects, potency, levels and the orthogonal classification architecture. Examples are provided where multi-level modelling has advantages over two-level modelling, such as for modelling product types and instances, and domain-specific process modelling languages. Tool support for multi-level modelling is discussed, as well as how multi-level models can be managed through constraints, transformations and code generation.
The document proposes a novel approach called multi-level model product lines (MLM PLs) that combines multi-level modeling and product lines to create highly configurable families of modeling languages. MLM PLs support open variability through instantiation at different meta-levels and closed variability through feature configurations. A theory and tool implementation are presented, allowing exploratory modeling where variability can be resolved incrementally. The approach is demonstrated using the MetaDepth modeling environment.
This document provides an overview of scientific paper writing. It discusses why publishing research is important, different types of venues and their review processes. It also covers topics such as ethics in publishing, rankings of venues and authors, and types of papers. The document then describes how to structure a research paper, including sections such as the introduction, main body, related work, and conclusions. Finally, it provides tips for scientific writing and the publication process.
The document discusses flexible modeling based on facets. It introduces facets as objects that can be added to and removed from host objects, acquiring their slots, types, and constraints. This allows objects to become open and dynamically extendable. Facets provide a way to reuse operations on models, extend existing objects with new information, and view models through different "scenes". Facet laws and interfaces control facet acquisition and removal and which meta-models can be used for facets.
The document discusses mutation testing for ATL model transformations. It introduces mutation testing and how it can be applied to ATL. The key contributions are new mutation operators for ATL that mimic common developer errors, evaluation of test generation techniques and operators, and an open-source tool for mutation testing of ATL.
Máster en Métodos Formales en Ingeniería Informáticamiso_uam
Presentación del Máster en Métodos Formales en Ingeniería Informática en jornadas de posgrado en la facultad de ciencias de la Universidad Autónoma de Madrid
This document discusses analysing meta-model product lines (MMPLs) through lifted analysis techniques. It presents MMPLs as a compact representation of multiple meta-model variants defined through features. It aims to ensure the correctness of MMPLs by lifting existing meta-model analysis techniques to the product line level, including syntactic analysis of meta-models and checking meta-model properties. The key contributions are a declarative notion of MMPLs, lifted analyses to check well-formedness and properties more efficiently than enumerating each meta-model, and a classification of different property types that can be analysed on MMPLs. Tool support for specification and analysis of MMPLs is also discussed.
This document discusses facet-oriented modeling, which introduces the concept of facets to provide flexibility and dynamism to model-driven engineering. Facets allow objects to dynamically acquire and drop slots, types, and constraints. A facet is an object that becomes part of a host object, making its slots accessible. A DSL is presented for adding and removing facets. Facet interfaces and laws specify valid facet combinations and when hosts should acquire facets. The approach is evaluated in scenarios like integrating annotation models and reuse of transformations. It is implemented in the MetaDepth modeling tool.
This document discusses requirements for flexible modelling tools that can accommodate different modelling purposes and stages of development. It proposes a meta-modelling language and explicit modelling process to provide flexibility in modelling. The meta-modelling language supports multiple classification levels and types, as well as extensibility through untyped elements. An explicit modelling process defines phases, conformance rules, and transitions between phases to provide guidance for model development. Process-aware assistance filters model checks and fixes according to the current process intent.
The document discusses developing a transformation product line (TPL) approach to define model transformations over variants of a meta-model product line (MMPL) in a compact, reusable, extensible, and analyzable way by using transformation fragments with presence conditions and composing them through abstraction and overriding mechanisms. It aims to address the challenges of defining transformations over many variants of a meta-model in a scalable way while maintaining correctness through analysis at the TPL level.
The document discusses the need for and concepts around active domain-specific languages (DSLs) that can be used across devices and enable more advanced modeling scenarios. It presents a feature space for DSLs that includes characteristics like being geolocated, supporting external interactions and context-sensitivity. An active DSL is defined as combining these features. The initial realization of these ideas is demonstrated with DSL-Comet, which allows specifying DSLs for use on desktop and mobile and supports collaboration. Future work includes expanding DSL-Comet's capabilities and applying DSLs to large-scale collaborative modeling applications.
This document presents an approach for reusing model transformations through the extraction of typing requirements models (TRMs) from transformations. TRMs characterize the minimal requirements that source and target meta-models must satisfy for a transformation to be well-typed. The approach extracts TRMs from ATL transformations through an attribute grammar. Meta-models can then be checked for conformance to the TRMs to determine if a transformation can be reused. An evaluation of the approach on four transformations showed that it achieved high precision and recall in checking over 2,000 mutated meta-models for conformance.
This document summarizes some experiments conducted by researchers from the Universidad Autónoma de Madrid on model-driven engineering. It introduces the researchers and their work analyzing meta-models, model transformations, and evaluating modeling tools and notations with users. Specific experiments discussed include checking meta-models for refactoring opportunities, statically analyzing transformations to find errors, and evaluating domain-specific modeling tools and construction notations. The researchers find multi-level modeling patterns commonly occur in meta-models and show examples of refactoring modeling scenarios to a multi-level structure.
This document discusses domain-specific modeling languages (DSLs) and presents opportunities and challenges in their construction and use. It proposes an example-based process to engage domain experts in DSL development by automatically inducing a meta-model from example model fragments provided by experts. It also discusses opportunities to make DSLs more "active" by extending their use beyond static design-time scenarios, such as through mobile and context-aware modeling.
MDE can take the form of OMG's Model Driven Architecture (MDA) using UML profiles or domain-specific languages (DSLs) with custom meta-models and notations. MDA is more generally applicable but also heavier weight and tool-dependent, while DSLs are lighter weight but have higher initial costs to develop the language environment. Both approaches have strengths when the right tooling is developed, such as reduced development time and higher quality, but challenges remain in reducing costs, improving flexibility and applicability to different scenarios.
This presentation was provided by Racquel Jemison, Ph.D., Christina MacLaughlin, Ph.D., and Paulomi Majumder. Ph.D., all of the American Chemical Society, for the second session of NISO's 2024 Training Series "DEIA in the Scholarly Landscape." Session Two: 'Expanding Pathways to Publishing Careers,' was held June 13, 2024.
Andreas Schleicher presents PISA 2022 Volume III - Creative Thinking - 18 Jun...EduSkills OECD
Andreas Schleicher, Director of Education and Skills at the OECD presents at the launch of PISA 2022 Volume III - Creative Minds, Creative Schools on 18 June 2024.
Level 3 NCEA - NZ: A Nation In the Making 1872 - 1900 SML.pptHenry Hollis
The History of NZ 1870-1900.
Making of a Nation.
From the NZ Wars to Liberals,
Richard Seddon, George Grey,
Social Laboratory, New Zealand,
Confiscations, Kotahitanga, Kingitanga, Parliament, Suffrage, Repudiation, Economic Change, Agriculture, Gold Mining, Timber, Flax, Sheep, Dairying,
Elevate Your Nonprofit's Online Presence_ A Guide to Effective SEO Strategies...TechSoup
Whether you're new to SEO or looking to refine your existing strategies, this webinar will provide you with actionable insights and practical tips to elevate your nonprofit's online presence.
1. A-POSTERIORI TYPING
FOR MODEL-DRIVEN
ENGINEERING
J. de Lara, E. Guerra, J. Sánchez Cuadrado
Modelling&Software Engineering Research Group
http://miso.es
Universidad Autónoma de Madrid (Spain)
MODELS’2015, Ottawa (Canada)
2. Constructive typing
• Creation of objects and classification
are inseparable
Lacks flexibility
• Objects cannot change their type at
run-time (and retain its identity)
Hinders reuse
• An operation defined for a meta-model
cannot be used for another one
MOTIVATION
2
Task
start: Date
duration: int
review: Task
start= 8/5/15
duration=30
creation «instance of»
Tasks meta-model
model
3. Constructive typing
• Creation of objects and classification
are inseparable
Lacks flexibility
• Objects cannot change their type at
run-time (and retain its identity)
Hinders reuse
• An operation defined for a meta-model
cannot be used for another one
MOTIVATION
3
review: Task
start= 8/5/15
duration=10
model
Task
start: Date
duration: int
review: Task
start= 8/5/15
duration=30
creation «instance of»
Tasks meta-model
model
4. Constructive typing
• Creation of objects and classification
are inseparable
Lacks flexibility
• Objects cannot change their type at
run-time (and retain its identity)
Hinders reuse
• An operation defined for a meta-model
cannot be used for another one
MOTIVATION
4
Task
start: Date
duration: int
review: Task
start= 8/5/15
duration=30
creation «instance of»
Tasks meta-model
model
review: Task
start= 8/5/15
duration=0
model
5. Constructive typing
• Creation of objects and classification
are inseparable
Lacks flexibility
• Objects cannot change their type at
run-time (and retain its identity)
Hinders reuse
• An operation defined for a meta-model
cannot be used for another one
MOTIVATION
5
Task
start: Date
duration: int
review: Task
start= 8/5/15
duration=30
creation «instance of»
Tasks meta-model
model
review: Milestone
start= 8/5/15
duration=0
model
6. Constructive typing
• Creation of objects and classification
are inseparable
Lacks flexibility
• Objects cannot change their type at
run-time (and retain its identity)
Hinders reuse
• An operation defined for a meta-model
cannot be used for another one
MOTIVATION
6
Task
start: Date
duration: int
review: Task
start= 8/5/15
duration=30
creation «instance of»
Tasks meta-model
model
Measurable
quantity: int
Measuring MM
review: Milestone
start= 8/5/15
duration=0
model
7. A more flexible typing mechanism for MDE
Decouple instantiation from classification
• Interfaces in object-oriented programming
• Roles in role-based programming languages
Allow dynamic typing and multiple classifiers for objects
Type and instance-level reclassification specifications
• Transformation by reclassification
• Flexible reuse of model management operations
Prototype implementation in our MetaDepth tool
GOALS AND
CONTRIBUTIO
NS
7
8. design space of possible MDE typings
a-posteriori (AP) typing
• specification: type-level vs instance-level
• analysis
tool support & applications
conclusions and future work
AGENDA
8
9. DESIGN SPACE FOR
TYPINGS (1/2)
9
Typing in MDE
dynamicity
static dynamic
classification
time
creation
a-posteriori
#classifiers
single multiple
bounded
optional mandatory alternative
…
Can we add classifiers
for an object after it is
created?
Can an object change
its type at run-time?
How many classifiers
can an object have?
Defined a-priori?
10. DESIGN SPACE FOR
TYPINGS (2/2)
10
Typing in MDE
totality
total partial
#model
types
single multiple
levels
two multiple
optional mandatory alternative
Can a model be
typed by multiple
meta-models?
Can an object
lack type w.r.t.
a type meta-
model?
Is type equivalence
checked by name
or by structure?
type
equivalence
structural
nominal
How many
meta-levels at
the same time
can be used?
11. DESIGN SPACE FOR
TYPINGS (2/2)
11
Typing in MDE
totality
total partial
#model
types
single multiple
levels
two multiple
optional mandatory alternative
Can a model be
typed by multiple
meta-models?
Can an object
lack type w.r.t.
a type meta-
model?
Is type equivalence
checked by name
or by structure?
type
equivalence
structural
nominal
How many
meta-levels at
the same time
can be used?
Mainstream MDE
approaches have
made the less
flexible choices
in the typing space
12. AP TYPING MOTIVATION:
REUSE
12
Measurable
quantity: int
Schedulable
date: Date
review: Task
Scheduling MM Measuring MM
model
«instance of» «instance of»
start= 8/5/15
duration= 30
name= “rev”
«Schedulable,Measurable»
*
*
res
Task
start: Date
duration: int
name: String
Resource
Person
owner
assigned
1..*
creation meta-model
role meta-models
creation
«instance of»
a-posteriori typingcreation typing
operation
typing of operation
applicable to
13. 13
AP TYPING MOTIVATION:
FLEXIBLE REUSE
*topics
*
*
res
Task
start: Date
duration: int
name: String
Tasks meta-model (constructive types)
Resource
Person
owner
assigned
1..* 1..*
0..3
reviewsArticle
title: String
Conference meta-model (dynamic types)
Reviewer
Authorauthors
Topic
desc: String
«Author»
p2: Person
«Reviewer»
p1: Person
«Article»
r: Resource
:owner
t1:Task
start: 8/5/15
duration: 30
name: “rev”
:res
:assigned
«Author,Reviewer»
p2: Person
«Reviewer»
p1: Person
«Article»
r: Resource
:owner
t1:Task
start: 8/5/15
duration: 30
name: “rev”
:res
:assigned
«Author»
p3: Person
«Article»
s: Resource
:owner
t2:Task
start: 9/5/15
duration: 30
name: “rev”
:res
:assigned
the model
changes
and gets
retyped
creation «instance of»
model
• A Person (constructive type) is only a Reviewer (a posteriori type)
when some condition is met.
14. SPECIFYING AP TYPINGS
AT THE TYPE-LEVEL
14
Schedulable
date: Date
span: double
review: Task
Tasks meta-model ( MMC )
start= 8/5/15
/months= 1
duration= 30
name= “rev”
Scheduling MM ( MMR )
Task
start: Date
duration: int
name: String
Typing Specification
Task Schedulable
self.start date
/months: double=self.duration/30 span
«Schedulable»
«date»
«span»
creation «instance of»
(constructive)
«instance of»
(a-posteriori)
• Derived attributes (months) defined in the typing
specification.
• Typing rules: ensure correctness, see paper
16. 16
TYPE-LEVEL TYPING IN THE
TYPING SPACE
type-level AP typing
totality
total partial
#model
types
single multiple
dynamicity
static dynamic
classification
time
creation
a-posteriori #classifiers
single multiple
bounded
• Objects with different creation type can have same AP type
• Objects with same creation type cannot have different AP
type
17. SPECIFYING AP TYPINGS
AT THE INSTANCE LEVEL
17
date: Date
span: double
writing: Task
start= 15/3/15
duration= 90
name= “wrt”
review: Task
start= 8/5/15
/months= 1
duration= 30
name= “rev”
«Schedulable»
«date»
«instance of»
(a-posteriori)
Schedulable
Scheduling MM (MMR)
Typing Specification
Task.allInstances()->select(duration<80)
Schedulable
self.start date
/months: double=self.duration/30 span
Instance model of Tasks ( MMC )
«span»
• Typing defined by queries.
• Derived attributes defined by queries as well.
20. 20
instance-level AP typing
totality
total partial
#model
types
single multiple
dynamicity
static dynamic
classification
time
creation
a-posteriori #classifiers
single multiple
bounded
INSTANCE-LEVEL TYPING IN
THE TYPING SPACE
• Objects with same creation type can have different AP type
21. ANALYSIS
TYPE-LEVEL AP TYPING
21
Schedulable
date: Date
span: double
Tasks meta-model ( MMC ) Scheduling MM ( MMR )
Task
start: Date
duration: int
name: String
Typing Specification
Task Schedulable
self.start date
/months: double=self.duration/30 span
• Creation and role meta-models may have OCL constraints.
• Executability: Can some “Tasks” models become valid
Scheduling models?.
• Totality: Can all Tasks models become valid Scheduling
model?.
• Surjectivity: Can every Scheduling instance be obtained via
retyping some Tasks instance?
• Analysed “merging” both meta-models and using SAT solving
(details in paper)
22. ANALYSIS
INSTANCE-LEVEL AP TYPING
22
• Dynamic type safety: can an AP spec lead to unsafe typings?
• Can be statically analysed via query rewriting:
Can “reviews” contain objects not typed as “Article”?
Can “res” (of appropriate Tasks) contain something not a “Resource”?
• Details in paper
Typing Specification
Resource.allInstances() Article
self.owner authors
Resource.allInstances()->collect(owner) Author
Task.allInstances()->select(name=“rev”)
->collect(assigned) Reviewer
Task.allInstances()->select(name=“rev” and
assigned->includes(self))->collect(res) reviews
Conference meta-model (MMR)
Article
1..*
0..3reviews
ReviewerAuthor
authors
model
*
*
res
Task
start: Date
duration: int
name: String
Tasks meta-model (MMC)
Resource
Person
owner
assigned
1..*
creation
23. // Model
Tasks someTasks {
Task t0 {
start = "30/04/2015";
duration = 30;
name = "coding";
}
}
TOOL SUPPORT
23
MetaDepth
• Multi-level textual modelling
• Integrated with the Epsilon languages
Type and instance level specifications
• EOL for queries in instance-level specs
Dump of models with different typings
Analysis of type-level specs
• Integration with the USE validator
• Bidirectional reclassification
• Reclassification totality and surjectivity
// Meta-model
Model Tasks {
Node Task {
start : Date;
duration : int;
name : String;
}
}
27. Factory example { // 1st typing
Conveyor p {}
Terminator t { inps= [p]; }
}
Factory example { // 2nd typing
Conveyor p {}
Assembler t { inps= [p]; }
}
APPLICATIONS:
BX MODEL TRANSFORMATIONS
27
PetriNet example {
Place p {}
Transition t { ins = [p]; }
}
MetaDepth console
> dump example as Factory
The typing specification can also be used backwards!
Might yield multiple AP typings for a model
28. // Model witness with no Petri net equivalent
Factory noRefinementWitness {
Assembler assembler2 { outps= [conveyor2, conveyor1]; }
Conveyor conveyor1 { name= "string1"; }
Conveyor conveyor2 { name= "string1"; }
Generator generator2 { outps= [conveyor1]; }
Part part2 {
qa = true;
} // This part would become a token outside any Place
}
APPLICATIONS:
BX MODEL TRANSFORMATIONS
28
The reclassification is not total
• Equivalently, the backwards reclassification is not surjective
The solver produces a witness
• A Factory model that cannot be reclassified into a Petri net
29. APPLICATIONS:
REUSE OF OPERATIONS
Simulator for Petri nets can be reused “as is” for Factory
• Provide an AP typing from Factory to Petri nets
• Factory models become typed as Petri nets
29
// EOL excerpt of the simulator
operation Transition enabled() : Boolean {
return self.ins.forAll(p| p.tokens.size()>0);
}
operation step() : Boolean {
var enabled : Set(Transition) := Transition.all.select( t | t.enabled());
... // fire one random Transition from enabled
}
30. APPLICATIONS:
FLEXIBLE REUSE
30
// Type parts as tokens only if QA is passed
type Factory PetriNet inst {
$Conveyor.all$ > Place with {
/sp : Token[*] = $self.parts.select(p|p.qa=true)$ > tokens
}
$Part.all.select( p | p.qa = true )$ > Token
}
31. CONCLUSIONS AND
FUTURE WORK
AP typing is a more flexible approach to typing in MDE
• Decoupled from creation type
• Dynamic
Flexible reuse, transformation by reclassification, analysis
Improve tool support
Exploit structural typing
Annotations to restrict features of AP typing specs:
• Non-overlapping role classes
31