This document presents an approach for generating assertion code from the Object Constraint Language (OCL) using model transformations. The approach constructs a hierarchy of programming languages based on their structural similarities. This allows rules for translating OCL to be reused across multiple implementation languages, saving approximately 50% of the effort compared to creating individual translators. An evaluation implemented the approach in Maude and demonstrated its ability to generate code for Java, Python, Haskell and O'Haskell from a single OCL specification.
A Logic Meta-Programming Foundation for Example-Driven Pattern Detection in O...Coen De Roover
Presentation at the Postdoctoral symposium of the 2011 International Conference on Software Maintenance, accompanying the paper
http://soft.vub.ac.be/Publications/2011/vub-soft-tr-11-11.pdf
A Logic Meta-Programming Foundation for Example-Driven Pattern Detection in O...Coen De Roover
Presentation at the Postdoctoral symposium of the 2011 International Conference on Software Maintenance, accompanying the paper
http://soft.vub.ac.be/Publications/2011/vub-soft-tr-11-11.pdf
Specifying function specializations over an arbitrary set of type constraints is a daunting task in C++ as soon as those constraints become more and more complex and/or grow in number. Various idioms are traditionally used to solve this problem: SFINAE or Tag Dispatching for example.
This talk introduces Boost.Dispatch, an infrastructure library that make Tag Dispatching easier to use and maintain by providing a protocol to define Tags and relationship between them, to map an arbitrary set of tags to a given function implementation and to extend said list of specialization in an open, modular way. The main new asset of Boost.Dispatch is the ability to use categorization of function properties and/or architectural information to guide the dispatch in addition to the more traditional use of type properties.
The talk will quickly brushes a picture of what SFINAE, overloading and Tag Dispatching mean in C++ and what are their limitations. We’ll introduce Boost.Dispatch over some examples ranging from simple library design to actual high performance computing code using the library to select best implementation of a function based on non-trivial architecture dependent information. Then we’ll dive into the implementation of the library and try to sketches the upcoming challenges yet to be solved.
Multi-dimensional exploration of API usage - ICPC13 - 21-05-13Coen De Roover
Presented at the 21st IEEE International Conference on Program Comprehension (ICPC 2013), San Francisco (USA). Website of the paper: http://softlang.uni-koblenz.de/explore-API-usage/
HDR Defence - Software Abstractions for Parallel ArchitecturesJoel Falcou
Performing large, intensive or non-trivial computing on array like data
structures is one of the most common task in scientific computing, video game
development and other fields. This matter of fact is backed up by the large number
of tools, languages and libraries to perform such tasks. If we restrict ourselves to
C++ based solutions, more than a dozen such libraries exists from BLAS/LAPACK
C++ binding to template meta-programming based Blitz++ or Eigen.
If all of these libraries provide good performance or good abstraction, none of
them seems to fit the need of so many different user types. Moreover, as parallel
system complexity grows, the need to maintain all those components quickly
become unwieldy. This thesis explores various software design techniques - like
Generative Programming, MetaProgramming and Generic Programming - and their
application to the implementation of various parallel computing libraries in such a
way that abstraction and expressiveness are maximized while efficiency overhead is
minimized.
(Costless) Software Abstractions for Parallel ArchitecturesJoel Falcou
Performing large, intensive or non-trivial computing on array like data structures is one of the most common task in scientific computing, video game development and other fields. This matter of fact is backed up by the large number of tools, languages and libraries to perform such tasks. If we restrict ourselves to C++ based solutions, more than a dozen such libraries exists from BLAS/LAPACK C++ binding to template meta-programming based Blitz++ or Eigen. If all of these libraries provide good performance or good abstraction, none of them seems to fit the need of so many different user types.
Moreover, as parallel system complexity grows, the need to maintain all those components quickly become unwieldy. This talk explores various software design techniques - like Generative Programming, MetaProgramming and Generic Programming - and their application to the implementation of a parallel computing librariy in such a way that:
- abstraction and expressiveness are maximized - cost over efficiency is minimized
We'll skim over various applications and see how they can benefit from such tools. We will conclude by discussing what lessons were learnt from this kind of implementation and how those lessons can translate into new directions for the language itself.
Java 8 is one of the largest upgrades to the popular language and framework in over a decade. This talk will detail several new key features of Java 8 that can help make programs easier to read, write, and maintain. Java 8 comes with many features, especially related to collection libraries. We will cover such new features as Lambda Expressions, the Stream API, enhanced interfaces, and more.
Specifying function specializations over an arbitrary set of type constraints is a daunting task in C++ as soon as those constraints become more and more complex and/or grow in number. Various idioms are traditionally used to solve this problem: SFINAE or Tag Dispatching for example.
This talk introduces Boost.Dispatch, an infrastructure library that make Tag Dispatching easier to use and maintain by providing a protocol to define Tags and relationship between them, to map an arbitrary set of tags to a given function implementation and to extend said list of specialization in an open, modular way. The main new asset of Boost.Dispatch is the ability to use categorization of function properties and/or architectural information to guide the dispatch in addition to the more traditional use of type properties.
The talk will quickly brushes a picture of what SFINAE, overloading and Tag Dispatching mean in C++ and what are their limitations. We’ll introduce Boost.Dispatch over some examples ranging from simple library design to actual high performance computing code using the library to select best implementation of a function based on non-trivial architecture dependent information. Then we’ll dive into the implementation of the library and try to sketches the upcoming challenges yet to be solved.
Multi-dimensional exploration of API usage - ICPC13 - 21-05-13Coen De Roover
Presented at the 21st IEEE International Conference on Program Comprehension (ICPC 2013), San Francisco (USA). Website of the paper: http://softlang.uni-koblenz.de/explore-API-usage/
HDR Defence - Software Abstractions for Parallel ArchitecturesJoel Falcou
Performing large, intensive or non-trivial computing on array like data
structures is one of the most common task in scientific computing, video game
development and other fields. This matter of fact is backed up by the large number
of tools, languages and libraries to perform such tasks. If we restrict ourselves to
C++ based solutions, more than a dozen such libraries exists from BLAS/LAPACK
C++ binding to template meta-programming based Blitz++ or Eigen.
If all of these libraries provide good performance or good abstraction, none of
them seems to fit the need of so many different user types. Moreover, as parallel
system complexity grows, the need to maintain all those components quickly
become unwieldy. This thesis explores various software design techniques - like
Generative Programming, MetaProgramming and Generic Programming - and their
application to the implementation of various parallel computing libraries in such a
way that abstraction and expressiveness are maximized while efficiency overhead is
minimized.
(Costless) Software Abstractions for Parallel ArchitecturesJoel Falcou
Performing large, intensive or non-trivial computing on array like data structures is one of the most common task in scientific computing, video game development and other fields. This matter of fact is backed up by the large number of tools, languages and libraries to perform such tasks. If we restrict ourselves to C++ based solutions, more than a dozen such libraries exists from BLAS/LAPACK C++ binding to template meta-programming based Blitz++ or Eigen. If all of these libraries provide good performance or good abstraction, none of them seems to fit the need of so many different user types.
Moreover, as parallel system complexity grows, the need to maintain all those components quickly become unwieldy. This talk explores various software design techniques - like Generative Programming, MetaProgramming and Generic Programming - and their application to the implementation of a parallel computing librariy in such a way that:
- abstraction and expressiveness are maximized - cost over efficiency is minimized
We'll skim over various applications and see how they can benefit from such tools. We will conclude by discussing what lessons were learnt from this kind of implementation and how those lessons can translate into new directions for the language itself.
Java 8 is one of the largest upgrades to the popular language and framework in over a decade. This talk will detail several new key features of Java 8 that can help make programs easier to read, write, and maintain. Java 8 comes with many features, especially related to collection libraries. We will cover such new features as Lambda Expressions, the Stream API, enhanced interfaces, and more.
Simon Peyton Jones: Managing parallelismSkills Matter
If you want to program a parallel computer, it obviously makes sense to start with a computational paradigm in which parallelism is the default (ie functional programming), rather than one in which computation is based on sequential flow of control (the imperative paradigm). And yet, and yet ... functional programmers have been singing this tune since the 1980s, but do not yet rule the world. In this talk I’ll say why I think parallelism is too complex a beast to be slain at one blow, and how we are going to be driven, willy-nilly, towards a world in which side effects are much more tightly controlled than now. I’ll sketch a whole range of ways of writing parallel program in a functional paradigm (implicit parallelism, transactional memory, data parallelism, DSLs for GPUs, distributed processes, etc, etc), illustrating with examples from the rapidly moving Haskell community, and identifying some of the challenges we need to tackle.
IDE as a Front-end and Fast time-to-market language support in Eclipse IDE re...Mickael Istria
From https://www.eclipsecon.org/france2018/session/ignite-talks
IDE as a Front-end and Fast time-to-market language support in Eclipse IDE relying on LSP, TextMate and CLI
C# and Rust case studies
EcoreTools-Next: Executable DSL made (more) accessibleCédric Brun
Various Eclipse Modeling technologies are trying to empower domain experts in the creation of specific tools. Using EcoreTools and Sirius a domain expert can define languages, graphical modelers and editors without writing a single line of Java code or launching a new Eclipse runtime. However, when come the time to add behaviors to the language structure (e.g., to implement interpreters, compilers, static analysis, refactoring, or generators), the domain expert has to face all the complexity of Eclipse Plugin development, OSGi, Java and much more.
This is a no-go in some contexts and as such there was a sweet spot for a new technology in Eclipse Modeling that support a seamless mechanism to weave behaviors across (Ecore-based) language structure.
This talk will present an integrated approach for weaving behavior of domain specific languages right from the EcoreTools modeler, that can be automatically applied to conforming models while having the following novel characteristics:
Domain experts are able to weave the behaviors across the language structure, seamlessly supporting the definition of a visitors for any kind of purposes.
No need for code generation, any change is instantly reflected and can be tested right away, even on Dynamic Instances
Strong optional validation, fast evaluation
"on demand" extension through Java services
behavior definition which is non-intrusive to the Ecore model
complemented by a first prototype of a dual compiler that seamlessly complement the EMF generation results.
The talk will demo the creation of a DSL and its behavior through the use of these plugins which are extending EcoreTools. The design of the language will also be discussed as it is embeds the Eclipse "aql" query language, leverage union types and type inference and can itself be integrated in other contexts. The audience will leave with a clear understanding of how they could define the behavior of their DSL using this technology, how it compares to approaches like Xcore/Xbase and when it could be part of the Eclipse release.
The technology is currently considered as good enough for experimenting and is being contributed to Eclipse Modeling through the EcoreTool project.
With prototype-based languages, concretization and abstraction are unified into a single concept a prototype. Prototype-based languages are based on a simple set of principles: object-centered representation, dynamic reshape of objects, cloning and possibly message delegation. However, they all differ in the interpretation and combination of these principles. Therefore there is a need to compare and understand. In this paper we present Prototalk, a research and teaching vehicle to understand, implement and compare prototype-based languages. Prototalk is a framework that offers a predefined set of language data structures and mechanisms that can be composed and extended to generate various prototype-based language interpreters. It presents a classification of languages based on different mechanisms in an operational manner.
.NET Core, ASP.NET Core Course, Session 3aminmesbahi
Session 3,
Introducing to Compiler
What is the LLVM?
LLILC
RyuJIT
AOT Compilation
Preprocessors and Conditional Compilation
An Overview on Dependency Injection
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
PHP Frameworks: I want to break free (IPC Berlin 2024)Ralf Eggert
In this presentation, we examine the challenges and limitations of relying too heavily on PHP frameworks in web development. We discuss the history of PHP and its frameworks to understand how this dependence has evolved. The focus will be on providing concrete tips and strategies to reduce reliance on these frameworks, based on real-world examples and practical considerations. The goal is to equip developers with the skills and knowledge to create more flexible and future-proof web applications. We'll explore the importance of maintaining autonomy in a rapidly changing tech landscape and how to make informed decisions in PHP development.
This talk is aimed at encouraging a more independent approach to using PHP frameworks, moving towards a more flexible and future-proof approach to PHP development.
Neuro-symbolic is not enough, we need neuro-*semantic*Frank van Harmelen
Neuro-symbolic (NeSy) AI is on the rise. However, simply machine learning on just any symbolic structure is not sufficient to really harvest the gains of NeSy. These will only be gained when the symbolic structures have an actual semantics. I give an operational definition of semantics as “predictable inference”.
All of this illustrated with link prediction over knowledge graphs, but the argument is general.
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
Keynote at DIGIT West Expo, Glasgow on 29 May 2024.
Cheryl Hung, ochery.com
Sr Director, Infrastructure Ecosystem, Arm.
The key trends across hardware, cloud and open-source; exploring how these areas are likely to mature and develop over the short and long-term, and then considering how organisations can position themselves to adapt and thrive.
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
Here is something new! In our next Connector Corner webinar, we will demonstrate how you can use a single workflow to:
Create a campaign using Mailchimp with merge tags/fields
Send an interactive Slack channel message (using buttons)
Have the message received by managers and peers along with a test email for review
But there’s more:
In a second workflow supporting the same use case, you’ll see:
Your campaign sent to target colleagues for approval
If the “Approve” button is clicked, a Jira/Zendesk ticket is created for the marketing design team
But—if the “Reject” button is pushed, colleagues will be alerted via Slack message
Join us to learn more about this new, human-in-the-loop capability, brought to you by Integration Service connectors.
And...
Speakers:
Akshay Agnihotri, Product Manager
Charlie Greenberg, Host
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 3. In this session, we will cover desktop automation along with UI automation.
Topics covered:
UI automation Introduction,
UI automation Sample
Desktop automation flow
Pradeep Chinnala, Senior Consultant Automation Developer @WonderBotz and UiPath MVP
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
State of ICS and IoT Cyber Threat Landscape Report 2024 previewPrayukth K V
The IoT and OT threat landscape report has been prepared by the Threat Research Team at Sectrio using data from Sectrio, cyber threat intelligence farming facilities spread across over 85 cities around the world. In addition, Sectrio also runs AI-based advanced threat and payload engagement facilities that serve as sinks to attract and engage sophisticated threat actors, and newer malware including new variants and latent threats that are at an earlier stage of development.
The latest edition of the OT/ICS and IoT security Threat Landscape Report 2024 also covers:
State of global ICS asset and network exposure
Sectoral targets and attacks as well as the cost of ransom
Global APT activity, AI usage, actor and tactic profiles, and implications
Rise in volumes of AI-powered cyberattacks
Major cyber events in 2024
Malware and malicious payload trends
Cyberattack types and targets
Vulnerability exploit attempts on CVEs
Attacks on counties – USA
Expansion of bot farms – how, where, and why
In-depth analysis of the cyber threat landscape across North America, South America, Europe, APAC, and the Middle East
Why are attacks on smart factories rising?
Cyber risk predictions
Axis of attacks – Europe
Systemic attacks in the Middle East
Download the full report from here:
https://sectrio.com/resources/ot-threat-landscape-reports/sectrio-releases-ot-ics-and-iot-security-threat-landscape-report-2024/
"Impact of front-end architecture on development cost", Viktor TurskyiFwdays
I have heard many times that architecture is not important for the front-end. Also, many times I have seen how developers implement features on the front-end just following the standard rules for a framework and think that this is enough to successfully launch the project, and then the project fails. How to prevent this and what approach to choose? I have launched dozens of complex projects and during the talk we will analyze which approaches have worked for me and which have not.
Essentials of Automations: Optimizing FME Workflows with ParametersSafe Software
Are you looking to streamline your workflows and boost your projects’ efficiency? Do you find yourself searching for ways to add flexibility and control over your FME workflows? If so, you’re in the right place.
Join us for an insightful dive into the world of FME parameters, a critical element in optimizing workflow efficiency. This webinar marks the beginning of our three-part “Essentials of Automation” series. This first webinar is designed to equip you with the knowledge and skills to utilize parameters effectively: enhancing the flexibility, maintainability, and user control of your FME projects.
Here’s what you’ll gain:
- Essentials of FME Parameters: Understand the pivotal role of parameters, including Reader/Writer, Transformer, User, and FME Flow categories. Discover how they are the key to unlocking automation and optimization within your workflows.
- Practical Applications in FME Form: Delve into key user parameter types including choice, connections, and file URLs. Allow users to control how a workflow runs, making your workflows more reusable. Learn to import values and deliver the best user experience for your workflows while enhancing accuracy.
- Optimization Strategies in FME Flow: Explore the creation and strategic deployment of parameters in FME Flow, including the use of deployment and geometry parameters, to maximize workflow efficiency.
- Pro Tips for Success: Gain insights on parameterizing connections and leveraging new features like Conditional Visibility for clarity and simplicity.
We’ll wrap up with a glimpse into future webinars, followed by a Q&A session to address your specific questions surrounding this topic.
Don’t miss this opportunity to elevate your FME expertise and drive your projects to new heights of efficiency.
Essentials of Automations: Optimizing FME Workflows with Parameters
Generating Assertion Code from OCL: A Transformational Approach Based on Similarities of Implementation Languages
1. 2009. 10. 9 TOKYO INSTITUTE OF TECHNOLOGY
DEPARTMENT OF COMPUTER SCIENCE
MODELS 2009
Generating Assertion
Code from OCL:
A Transformational Approach Based on
Similarities of Implementation Languages
Rodion Moiseev Shinpei Hayashi Motoshi Saeki
Department of Computer Science
Tokyo Institute of Technology
Japan
2. Abstract
Generation Assertion Code from OCL
− Transformational Approach:
Regarding OCL-to-code as model transformation
− Similarities of Implementation Languages:
Constructing a language hierarchy for effective
developing of transformation rules
Results
− A translation framework has been developed
− Showed ~50% of effort to construct translation
rules saved
2
3. Background
Model-centric approaches are becoming
important in academia and industry
OCL is often the language of choice for
stipulating constraints on models
Successful application depends on
mature tool support:
− Support for multiple programming languages
− Customizable assertion code/test case
generation
3
4. Motivating Example
Application design: UML with OCL
<<interface>> OCL
MyApplication
doQuery(q : Query) : Integer
context MyApplication::doQuery(
q: Query): Integer
pre: not q = null
post: result >= 0
4
5. Motivating Example
A need to check OCL for multiple languages
MyApplication Client 1
Perl Java
Server
<<interface>> Client 2
MyApplication
Haskell
doQuery(q : Query) : Integer
context MyApplication::doQuery(
q: Query): Integer
pre: not q = null
post: result >= 0
5
7. Problems
Troublesome to make individual OCL
translators
− Many languages exist
• Most of existing tools are tailor-made for a
specific language
− Creating a translator requires efforts
• Specifying OCL translation rules for each
individual OCL concept, operator, etc.
Our solution:
Usage of language similarities
7
8. Language Similarities
E.g., for-loop iterating over a collection
For Each apple In apples Do:
If apple.color == “red” Then
…
Next Imperative
Pseudo-language
for (Iterator it = apples.iterator(); it.hasNext(); ) {
Apple apple = (Apple) it.next();
if (apple.color == “red”) { for apple in apples:
… if apple.color == “red”:
Java …
Python
8
9. The Approach
Hierarchy of programming languages
based on their structural similarities
OCL
Imperative Functional DbC
Java, C# like Python Lisp Haskell JML
Step-by-step <<described in terms of>>
Java C# Translation Pseudo-languages
Concrete languages
MultiJava
High
concreteness 9
10. Advantages
Provide a single framework for creating
OCL translators for any language
− Reuse translator implementations
Bridges semantic gap
− Effort of understanding OCL is alleviated
− Manual effort of creating OCL translators is
reduced
OCL OCL
Semantic gap Imperative
Python Python
10
11. Generation Process
Environment
containing type
information
Parser + type checker OCL AST ENV
AST→Imperative DL AST ENV
OCL
OCL Imperative DL
Input Imper. DL→Python DL Imper. DL ENV
UML + OCL
rewriting rules Python DL Python Code
Python DL→Python Code Python DL ENV
printing rules
DL = Definition Language
(Structural representation of pseudo/implementation languages) 11
12. Comparison with MDE
DL Definition and MDE Terms
Rewriting System
Metalanguage
Rewriting Language
written in Transformation Language written in
written in
Imperative DL Imper. DL→Python DL Python DL
PIM Transformation PSM
Rules
Rewriting engine
12
13. Transformation Example
All employees in the company earn more than 10,000
employees->forAll( e : Employee | e.salary > 10000)
OCL AST:
iteratorExp
(assocEndCallExp simpleName("self") . simpleName("employees"))
-> simpleName("forAll") ( varDecl(simpleName("e"), pathName("Employee")) |
operCallExp(
attrCallExp simpleName("e") . simpleName("salary"),
simpleName(">"),
intLitExp("10000")
Company 1 .. * employees Employee
)
salary : Int
)
13
16. Generation Result
class Employee: From UML
def __init__(self, name, salary):
self.name = name
self.salary = salary
class Company:
def __init__(self, employees):
self.employees = employees
def callExtMethod_A(self): From OCL
for e in self.employees:
if (not (e.salary > 10000)):
return False
return True
def inv(self):
return self.callExtMethod_A()
16
17. Approach Evaluation
Implemented a tool in the Maude System (*)
To show the ability to implement several OCL
translators with significant effort savings
Target languages
− Imperative
• Java
OCL Predefined
• Python
Imperative Functional
− Functional
• Haskell
Java Python Haskell
• O’Haskell
O’Haskell
* http://maude.cs.uiuc.edu/
17
21. Evaluation Results
Direct Proposed
Approach Approach
Java 85 36
Python 99 59
Haskell 76 52
O’Haskell 76 1
Total 316 148
~50% effort could be saved on average
21
22. Conclusion
Proposed a novel technique to generate
assertion code from OCL constraints
Used structural similarities of programming
languages to enable reusing in OCL
translators for multiple languages
− Saving manual effort
Run an experiment to show the claimed effort
savings by using our approach
22
23. Future Work
Uncovered functionalities of OCL
− History expressions (@pre)
− OCL messages
− allInstances, etc.
Hierarchy Limitations
− Difficult to extend hierarchy from the middle
− Does not allow multiple parent nodes
(e.g. useful for implementing an
imperative/functional hybrid)
Real case study
23