The document describes a method for automatically simulating SOAP web services from temporal logic specifications. It discusses how SOAP web services use XML messages in requests and responses to form transactions, but not all message sequences are valid. It presents challenges in creating a realistic stub service that follows constraints on valid sequences and parameter values. Current solutions involve hard-coding responses, but the document proposes using Linear Temporal Logic with First-Order quantifiers (LTL-FO+) to specify valid behavior, and decomposing the specification into a tree to guide automatic message generation. This allows producing response sequences directly from the logical constraints.
jQuery is the new favorite of web developers. This lightweight JavaScript library makes developers love writing JavaScript code again! What needed 20 lines of code first is now reduced to 3 lines. Who wouldn’t be enthusiastic?! Microsoft showed its love for the library by fully integrating it in Visual Studio. I dare to ask: Should you stay behind? In this session, we’ll take a look at jQuery and we’ll teach you what you need to know to get on your way. More specifically, we’ll look at selectors, attributes, working with WCF, jQuery UI and much more. You may walk out of this session wearing a sticker: “I love jQuery”!
The document summarizes a presentation about building a real world MVC web application called Aphirm.it that allows users to share affirmations. The presentation covers using Entity Framework to interact with the database, implementing user registration and authentication, uploading images, and using AJAX and JavaScript for features like live updating. It also discusses implementing administration functionality like approving content, assigning badges to users, and sending tweets when new content is added.
Fate spazio al mio nuovo sito web: VR room scale su browser con A-Frame e HTC...Giorgio Pomettini
The document discusses building virtual reality experiences for room-scale VR using A-Frame and HTC Vive. It covers creating 3D entities, adding controllers and physics, and building a scene with interactive objects, terrain, and cameras for room-scale VR. Code examples are provided for setting up a VR scene with objects the user can interact with and move around using Vive controllers and Cannon.js for physics simulation.
Client-side MVC with Backbone.js (reloaded)iloveigloo
The document discusses a presentation on client-side MVC with Backbone.js. It includes an agenda that covers why Backbone.js, its architecture including models, collections, views, templates and routers, real world examples, tips and tricks, and extras. The architecture section describes how Backbone.js provides structure using models, collections, views and connecting to RESTful APIs. It also outlines the MVC components and their roles.
This document provides an overview of jQuery and Web 2.0 technologies. It discusses how jQuery simplifies tasks like DOM manipulation, event handling, and Ajax. jQuery uses CSS-like selectors to find elements and chaining to perform multiple actions at once. It has a simple API for common tasks and can be extended through plugins. The document also touches on related tools like jQuery UI and jQuery Mobile.
RuleBox is a modern intuitive and natural language rule engine based upon the great work of RuleBook: https://github.com/rulebook-rules/rulebook ported over to ColdFusion (CFML).
Tired of classes filled with if/then/else statements? Need a nice abstraction that allows rules to be easily specified in a way that decouples them from each other? Want to write rules the same way that you write the rest of your code [in ColdFusion]? RuleBox is right for you!
Runtime Monitoring of a Quantified Temporal Logic (Talk @ UniSA)Sylvain Hallé
The document discusses runtime monitoring of quantified temporal logic and its application to interface contracts in web applications. Specifically, it discusses using linear temporal logic with first-order quantification (LTL-FO+) to express properties of message sequences in web service interfaces by quantifying over elements in XML messages. This allows interface contracts to express constraints on messages while handling XML documents as the symbols in the logical language.
jQuery is the new favorite of web developers. This lightweight JavaScript library makes developers love writing JavaScript code again! What needed 20 lines of code first is now reduced to 3 lines. Who wouldn’t be enthusiastic?! Microsoft showed its love for the library by fully integrating it in Visual Studio. I dare to ask: Should you stay behind? In this session, we’ll take a look at jQuery and we’ll teach you what you need to know to get on your way. More specifically, we’ll look at selectors, attributes, working with WCF, jQuery UI and much more. You may walk out of this session wearing a sticker: “I love jQuery”!
The document summarizes a presentation about building a real world MVC web application called Aphirm.it that allows users to share affirmations. The presentation covers using Entity Framework to interact with the database, implementing user registration and authentication, uploading images, and using AJAX and JavaScript for features like live updating. It also discusses implementing administration functionality like approving content, assigning badges to users, and sending tweets when new content is added.
Fate spazio al mio nuovo sito web: VR room scale su browser con A-Frame e HTC...Giorgio Pomettini
The document discusses building virtual reality experiences for room-scale VR using A-Frame and HTC Vive. It covers creating 3D entities, adding controllers and physics, and building a scene with interactive objects, terrain, and cameras for room-scale VR. Code examples are provided for setting up a VR scene with objects the user can interact with and move around using Vive controllers and Cannon.js for physics simulation.
Client-side MVC with Backbone.js (reloaded)iloveigloo
The document discusses a presentation on client-side MVC with Backbone.js. It includes an agenda that covers why Backbone.js, its architecture including models, collections, views, templates and routers, real world examples, tips and tricks, and extras. The architecture section describes how Backbone.js provides structure using models, collections, views and connecting to RESTful APIs. It also outlines the MVC components and their roles.
This document provides an overview of jQuery and Web 2.0 technologies. It discusses how jQuery simplifies tasks like DOM manipulation, event handling, and Ajax. jQuery uses CSS-like selectors to find elements and chaining to perform multiple actions at once. It has a simple API for common tasks and can be extended through plugins. The document also touches on related tools like jQuery UI and jQuery Mobile.
RuleBox is a modern intuitive and natural language rule engine based upon the great work of RuleBook: https://github.com/rulebook-rules/rulebook ported over to ColdFusion (CFML).
Tired of classes filled with if/then/else statements? Need a nice abstraction that allows rules to be easily specified in a way that decouples them from each other? Want to write rules the same way that you write the rest of your code [in ColdFusion]? RuleBox is right for you!
Runtime Monitoring of a Quantified Temporal Logic (Talk @ UniSA)Sylvain Hallé
The document discusses runtime monitoring of quantified temporal logic and its application to interface contracts in web applications. Specifically, it discusses using linear temporal logic with first-order quantification (LTL-FO+) to express properties of message sequences in web service interfaces by quantifying over elements in XML messages. This allows interface contracts to express constraints on messages while handling XML documents as the symbols in the logical language.
Monitoring Business Process Compliance Across Multiple Executions with Stream...Sylvain Hallé
The document discusses stream processing and querying of process logs. It defines a process log as a mapping of case identifiers to traces, which are sequences of events. Queries can check properties of individual traces or perform aggregations across multiple traces. Hyper-queries generalize this to operate on the full log. Various methods of incrementally evaluating queries and hyper-queries are discussed as the log is produced, such as processing one case or event at a time. The state of the art in constraint and query languages is reviewed.
A Stream-Based Approach to Intrusion DetectionSylvain Hallé
1) The document proposes an approach to intrusion detection based on runtime verification by running monitors on every suffix of an event stream to detect multiple instances of patterns.
2) It describes techniques to prune redundant monitors by discarding those that remain in the initial state after the first event or reach the same state at the same step.
3) Retaining only the "progressing subsequence" of the stream that visits each new state in order further reduces the number of matches.
Event Stream Processing with BeepBeep 3Sylvain Hallé
Event logs and event streams can be found in software systems of very diverse kinds. Analyzing the wealth of information contained in these logs can serve multiple purposes. In this tutorial, the audience will learn about BeepBeep, a versatile Java library intended to make the processing of event streams (either offline or in realtime) both fun and simple. BeepBeep is the result of more than a decade of research led by a team at Laboratoire d’informatique formelle at Université du Québec à Chicoutimi (Canada). Over the past few years, BeepBeep has been involved in a variety of case studies, and provides built-in support for writing domain-specific languages. Recently, a complete textbook has been published on BeepBeep, testifying to the maturity that the system has acquired.
Smart Contracts-Enabled Simulation for Hyperconnected LogisticsSylvain Hallé
(Slides for a talk given in the journal-first track of the EDOC 2022 conference.)
The combination of the Internet of Things and blockchain-based technologies represents a real opportunity for supply chain and logistics protagonists, who need more dynamic, trustworthy and transparent tracking systems in order to improve their efficiency and strengthen customer confidence. In parallel, hyperconnected logistics promise more efficient and sustainable goods handling and delivery. This chapter shows how the Ethereum blockchain and smart contracts can be used to implement a shareable and secured tracking system for hyperconnected logistics. A simulation using the well-known AnyLogic software tool provides insights on the monitoring of properties depicting shipment lifecycle constraints through a stream of blockchain log events processed by BeepBeep 3, an open source stream processing engine.
Test Suite Generation for Boolean Conditions with Equivalence Class PartitioningSylvain Hallé
Boolean test input generation is the process of finding sets of values for variables of a logical expression such that a given coverage criterion is achieved. This paper presents a formal framework in which evaluating an expression produces a tree structure, and where a coverage criterion is expressed as equivalence classes induced by a particular transformation over these trees. It then defines many well-known coverage criteria as particular cases of this framework. The paper describes an algorithm to generate test suites by a reduction through a graph problem; this algorithm works in the same way regardless of the criterion considered. An experimental evaluation of this technique shows that it produces test suites that are in many cases smaller than existing tools.
Synthia: a Generic and Flexible Data Structure Generator (Long Version)Sylvain Hallé
Synthia is a versatile, modular and extensible Java-based data structure generation library. It is centered on the notion of "pickers", which are objects producing values of a given type on demand. Pickers are stateful and can be given as input to other pickers; this chaining principle can generate objects whose structure follows a complex pattern. The paper describes the core principles and key features of the library, including test input shrinking, provenance tracking, and object mutation.
Test Sequence Generation with Cayley Graphs (Talk @ A-MOST 2021)Sylvain Hallé
The paper presents a theoretical foundation for test sequence generation based on an input specification. The set of possible test sequences is first partitioned according to a generic "triaging" function, which can be created from a state-machine specification in various ways. The notion of coverage metric is then expressed in terms of the categories produced by this function. Many existing test generation problems, such as t-way state or transition coverage, become particular cases of this generic framework. We then present algorithms for generating sets of test sequences providing guaranteed full coverage with respect to a metric, by building and processing a special type of graph called a Cayley graph. An implementation of these concepts is then experimentally evaluated against existing techniques, and shows it provides better performance in terms of running time and test suite size.
Efficient Offline Monitoring of LTL with Bit Vectors (Talk at SAC 2021)Sylvain Hallé
We describe an extension of the BeepBeep stream processing library for the offline verification of arbitrary expressions of Linear Temporal Logic using bitmap manipulations. Experimental results show that, for complex LTL formulæ containing up to 20 operators, event traces can be evaluated at a throughput of millions of events per second and provide a considerable speed-up compared to the current implementation of the tool.
A Generic Explainability Framework for Function CircuitsSylvain Hallé
The document describes a framework for explaining the output of function circuits. It introduces the concept of functions as basic processing units that take inputs and produce outputs. Functions can be composed into circuits where the output of one function is the input of another. The framework represents circuits using designation graphs that trace the propagation of values between function inputs and outputs. It defines derivation operators that take a designation graph and reconstruct the derivation of an output value from input values through the functions in the circuit. This allows explaining how a circuit produced a particular output from its inputs.
Detecting Responsive Web Design Bugs with Declarative SpecificationsSylvain Hallé
Responsive Web Design (RWD) is a concept that is born from the need to provide users with a positive and intuitive experience, no matter what device they use. Complex Cascading Style Sheets (CSS) are used in RWD to smoothly change the appearance of a website based on the window width of the device being used. The paper presents an automated approach for testing these dynamic web applications, where a combination of dynamic crawling and back-end testing is used to automatically detect RWD bugs.
Streamlining the Inclusion of Computer Experiments in Research PapersSylvain Hallé
To run experiments on a computer, you probably write command-line scripts for various tasks: generate your data, save it into files, process and display them as plots or tables to include in a paper. But soon enough, your handful of “quick and dirty” files becomes a bunch of poorly documented scripts that generate and pass around all kinds of obscure temporary files. LabPal is a library that allows you to set up an environment for running experiments, collating their results and processing them.
Writing Domain-Specific Languages for BeepBeepSylvain Hallé
This paper describes a plug-in extension of the BeepBeep 3 event stream processing engine. The extension allows one to write a custom grammar defining a particular specification language on event traces. A built-in interpreter can then convert expressions of the language into chains of BeepBeep processors through just a few lines of code, making it easy for users to create their own domain-specific languages.
Real-Time Data Mining for Event StreamsSylvain Hallé
Information systems produce different types of event logs; in many situations, it may be desirable to look for trends inside these logs. We show how trends of various kinds can be computed over such logs in real time, using a generic framework called the trend distance workflow. Many common computations on event streams turn out to be special cases of this workflow, depending on how a handful of workflow parameters are defined. This process has been implemented and tested in a real-world event stream processing tool, called BeepBeep.
Technologies intelligentes d'aide au développement d'applications web (WAQ 2018)Sylvain Hallé
Surfez sur le web quelques heures, et vous trouverez sûrement un site ou une application qui contient un bogue dans son interface graphique. Que ce soit un bouton qui ne fonctionne pas, un rectangle partiellement caché ou mal positionné, il semble que les problèmes d’interface soient notoirement difficiles à traquer! Des technologies intelligentes pourraient-elles aider les concepteurs et les développeurs à mieux tester leurs interfaces? Au Laboratoire d’informatique formelle de l’Université du Québec à Chicoutimi, nous le croyons. Nous avons développé Cornipickle, un logiciel permettant à un développeur d’énoncer, dans un langage simple et lisible, une foule de contraintes sur le positionnement et le contenu des éléments d’une interface web. Nous verrons comment Cornipickle peut s’intégrer à une application existante, détecter des problèmes, identifier les éléments qui sont fautifs et même suggérer des correctifs. Ceci permet donc à un développeur de gagner beaucoup de temps lors de la recherche des problèmes.
This document provides an overview of BeepBeep 3, an open source event stream query engine developed for processing and analyzing event streams. It describes some key concepts including events, traces, functions, processors, synchronous processing, and various built-in processors like Filter, Window, and Cumulative. Processors can be composed together to perform multi-step queries on event streams. The engine aims to combine strengths from rule-based and complex event processing systems while providing extensibility through additional processor and function palettes.
A "Do-It-Yourself" Specification Language with BeepBeep 3 (Talk @ Dagstuhl 2017)Sylvain Hallé
This talk reviews the basic principles behind the BeepBeep 3 event stream processing engine, and the facilities it provides to help you design you own, domain-specific query language.
Event Stream Processing with Multiple ThreadsSylvain Hallé
The document discusses event stream processing using multiple threads. It presents the problem of processing an input event stream through a computation P to produce an output event stream as a single task. The solution involves splitting the computation P into parts that can be processed in parallel by multiple threads to improve efficiency.
The system is based on connecting simple computing units called processors into a pipeline. New thread-aware processors are introduced, including ones for non-blocking pushing of events, pull pipelines, and preemptive pulling. These allow existing queries to gain multi-threading capabilities with minimal changes. Experimental results on sample queries show speedups from 5% to 400% by adding just one thread-aware processor.
A Few Things We Heard About RV Tools (Position Paper)Sylvain Hallé
This document discusses feedback received about RV tools from various sources. It includes comments on making a profit from clicking buttons, whether the tools can already do certain things, if tasks only require a boolean, writing properties, how long tasks take, and if the data can be considered big data. The document also notes that some of the feedback is not specific to RV tools.
Solving Equations on Words with Morphisms and AntimorphismsSylvain Hallé
Word equations are combinatorial equalities between strings of symbols, variables and functions, which can be used to model problems in a wide range of domains. While some complexity results for the solving of specific classes of equations are known, currently there does not exist a systematic equation solver. We present in this paper a reduction of the problem of solving word equations to Boolean satisfiability, and describe the implementation of a general-purpose tool that leverages existing SAT solvers for this purpose. Our solver will prove useful in the resolution of word equations, and in the computer-based exploration of various combinatorial conjectures.
OpenID AuthZEN Interop Read Out - AuthorizationDavid Brossard
During Identiverse 2024 and EIC 2024, members of the OpenID AuthZEN WG got together and demoed their authorization endpoints conforming to the AuthZEN API
Monitoring Business Process Compliance Across Multiple Executions with Stream...Sylvain Hallé
The document discusses stream processing and querying of process logs. It defines a process log as a mapping of case identifiers to traces, which are sequences of events. Queries can check properties of individual traces or perform aggregations across multiple traces. Hyper-queries generalize this to operate on the full log. Various methods of incrementally evaluating queries and hyper-queries are discussed as the log is produced, such as processing one case or event at a time. The state of the art in constraint and query languages is reviewed.
A Stream-Based Approach to Intrusion DetectionSylvain Hallé
1) The document proposes an approach to intrusion detection based on runtime verification by running monitors on every suffix of an event stream to detect multiple instances of patterns.
2) It describes techniques to prune redundant monitors by discarding those that remain in the initial state after the first event or reach the same state at the same step.
3) Retaining only the "progressing subsequence" of the stream that visits each new state in order further reduces the number of matches.
Event Stream Processing with BeepBeep 3Sylvain Hallé
Event logs and event streams can be found in software systems of very diverse kinds. Analyzing the wealth of information contained in these logs can serve multiple purposes. In this tutorial, the audience will learn about BeepBeep, a versatile Java library intended to make the processing of event streams (either offline or in realtime) both fun and simple. BeepBeep is the result of more than a decade of research led by a team at Laboratoire d’informatique formelle at Université du Québec à Chicoutimi (Canada). Over the past few years, BeepBeep has been involved in a variety of case studies, and provides built-in support for writing domain-specific languages. Recently, a complete textbook has been published on BeepBeep, testifying to the maturity that the system has acquired.
Smart Contracts-Enabled Simulation for Hyperconnected LogisticsSylvain Hallé
(Slides for a talk given in the journal-first track of the EDOC 2022 conference.)
The combination of the Internet of Things and blockchain-based technologies represents a real opportunity for supply chain and logistics protagonists, who need more dynamic, trustworthy and transparent tracking systems in order to improve their efficiency and strengthen customer confidence. In parallel, hyperconnected logistics promise more efficient and sustainable goods handling and delivery. This chapter shows how the Ethereum blockchain and smart contracts can be used to implement a shareable and secured tracking system for hyperconnected logistics. A simulation using the well-known AnyLogic software tool provides insights on the monitoring of properties depicting shipment lifecycle constraints through a stream of blockchain log events processed by BeepBeep 3, an open source stream processing engine.
Test Suite Generation for Boolean Conditions with Equivalence Class PartitioningSylvain Hallé
Boolean test input generation is the process of finding sets of values for variables of a logical expression such that a given coverage criterion is achieved. This paper presents a formal framework in which evaluating an expression produces a tree structure, and where a coverage criterion is expressed as equivalence classes induced by a particular transformation over these trees. It then defines many well-known coverage criteria as particular cases of this framework. The paper describes an algorithm to generate test suites by a reduction through a graph problem; this algorithm works in the same way regardless of the criterion considered. An experimental evaluation of this technique shows that it produces test suites that are in many cases smaller than existing tools.
Synthia: a Generic and Flexible Data Structure Generator (Long Version)Sylvain Hallé
Synthia is a versatile, modular and extensible Java-based data structure generation library. It is centered on the notion of "pickers", which are objects producing values of a given type on demand. Pickers are stateful and can be given as input to other pickers; this chaining principle can generate objects whose structure follows a complex pattern. The paper describes the core principles and key features of the library, including test input shrinking, provenance tracking, and object mutation.
Test Sequence Generation with Cayley Graphs (Talk @ A-MOST 2021)Sylvain Hallé
The paper presents a theoretical foundation for test sequence generation based on an input specification. The set of possible test sequences is first partitioned according to a generic "triaging" function, which can be created from a state-machine specification in various ways. The notion of coverage metric is then expressed in terms of the categories produced by this function. Many existing test generation problems, such as t-way state or transition coverage, become particular cases of this generic framework. We then present algorithms for generating sets of test sequences providing guaranteed full coverage with respect to a metric, by building and processing a special type of graph called a Cayley graph. An implementation of these concepts is then experimentally evaluated against existing techniques, and shows it provides better performance in terms of running time and test suite size.
Efficient Offline Monitoring of LTL with Bit Vectors (Talk at SAC 2021)Sylvain Hallé
We describe an extension of the BeepBeep stream processing library for the offline verification of arbitrary expressions of Linear Temporal Logic using bitmap manipulations. Experimental results show that, for complex LTL formulæ containing up to 20 operators, event traces can be evaluated at a throughput of millions of events per second and provide a considerable speed-up compared to the current implementation of the tool.
A Generic Explainability Framework for Function CircuitsSylvain Hallé
The document describes a framework for explaining the output of function circuits. It introduces the concept of functions as basic processing units that take inputs and produce outputs. Functions can be composed into circuits where the output of one function is the input of another. The framework represents circuits using designation graphs that trace the propagation of values between function inputs and outputs. It defines derivation operators that take a designation graph and reconstruct the derivation of an output value from input values through the functions in the circuit. This allows explaining how a circuit produced a particular output from its inputs.
Detecting Responsive Web Design Bugs with Declarative SpecificationsSylvain Hallé
Responsive Web Design (RWD) is a concept that is born from the need to provide users with a positive and intuitive experience, no matter what device they use. Complex Cascading Style Sheets (CSS) are used in RWD to smoothly change the appearance of a website based on the window width of the device being used. The paper presents an automated approach for testing these dynamic web applications, where a combination of dynamic crawling and back-end testing is used to automatically detect RWD bugs.
Streamlining the Inclusion of Computer Experiments in Research PapersSylvain Hallé
To run experiments on a computer, you probably write command-line scripts for various tasks: generate your data, save it into files, process and display them as plots or tables to include in a paper. But soon enough, your handful of “quick and dirty” files becomes a bunch of poorly documented scripts that generate and pass around all kinds of obscure temporary files. LabPal is a library that allows you to set up an environment for running experiments, collating their results and processing them.
Writing Domain-Specific Languages for BeepBeepSylvain Hallé
This paper describes a plug-in extension of the BeepBeep 3 event stream processing engine. The extension allows one to write a custom grammar defining a particular specification language on event traces. A built-in interpreter can then convert expressions of the language into chains of BeepBeep processors through just a few lines of code, making it easy for users to create their own domain-specific languages.
Real-Time Data Mining for Event StreamsSylvain Hallé
Information systems produce different types of event logs; in many situations, it may be desirable to look for trends inside these logs. We show how trends of various kinds can be computed over such logs in real time, using a generic framework called the trend distance workflow. Many common computations on event streams turn out to be special cases of this workflow, depending on how a handful of workflow parameters are defined. This process has been implemented and tested in a real-world event stream processing tool, called BeepBeep.
Technologies intelligentes d'aide au développement d'applications web (WAQ 2018)Sylvain Hallé
Surfez sur le web quelques heures, et vous trouverez sûrement un site ou une application qui contient un bogue dans son interface graphique. Que ce soit un bouton qui ne fonctionne pas, un rectangle partiellement caché ou mal positionné, il semble que les problèmes d’interface soient notoirement difficiles à traquer! Des technologies intelligentes pourraient-elles aider les concepteurs et les développeurs à mieux tester leurs interfaces? Au Laboratoire d’informatique formelle de l’Université du Québec à Chicoutimi, nous le croyons. Nous avons développé Cornipickle, un logiciel permettant à un développeur d’énoncer, dans un langage simple et lisible, une foule de contraintes sur le positionnement et le contenu des éléments d’une interface web. Nous verrons comment Cornipickle peut s’intégrer à une application existante, détecter des problèmes, identifier les éléments qui sont fautifs et même suggérer des correctifs. Ceci permet donc à un développeur de gagner beaucoup de temps lors de la recherche des problèmes.
This document provides an overview of BeepBeep 3, an open source event stream query engine developed for processing and analyzing event streams. It describes some key concepts including events, traces, functions, processors, synchronous processing, and various built-in processors like Filter, Window, and Cumulative. Processors can be composed together to perform multi-step queries on event streams. The engine aims to combine strengths from rule-based and complex event processing systems while providing extensibility through additional processor and function palettes.
A "Do-It-Yourself" Specification Language with BeepBeep 3 (Talk @ Dagstuhl 2017)Sylvain Hallé
This talk reviews the basic principles behind the BeepBeep 3 event stream processing engine, and the facilities it provides to help you design you own, domain-specific query language.
Event Stream Processing with Multiple ThreadsSylvain Hallé
The document discusses event stream processing using multiple threads. It presents the problem of processing an input event stream through a computation P to produce an output event stream as a single task. The solution involves splitting the computation P into parts that can be processed in parallel by multiple threads to improve efficiency.
The system is based on connecting simple computing units called processors into a pipeline. New thread-aware processors are introduced, including ones for non-blocking pushing of events, pull pipelines, and preemptive pulling. These allow existing queries to gain multi-threading capabilities with minimal changes. Experimental results on sample queries show speedups from 5% to 400% by adding just one thread-aware processor.
A Few Things We Heard About RV Tools (Position Paper)Sylvain Hallé
This document discusses feedback received about RV tools from various sources. It includes comments on making a profit from clicking buttons, whether the tools can already do certain things, if tasks only require a boolean, writing properties, how long tasks take, and if the data can be considered big data. The document also notes that some of the feedback is not specific to RV tools.
Solving Equations on Words with Morphisms and AntimorphismsSylvain Hallé
Word equations are combinatorial equalities between strings of symbols, variables and functions, which can be used to model problems in a wide range of domains. While some complexity results for the solving of specific classes of equations are known, currently there does not exist a systematic equation solver. We present in this paper a reduction of the problem of solving word equations to Boolean satisfiability, and describe the implementation of a general-purpose tool that leverages existing SAT solvers for this purpose. Our solver will prove useful in the resolution of word equations, and in the computer-based exploration of various combinatorial conjectures.
OpenID AuthZEN Interop Read Out - AuthorizationDavid Brossard
During Identiverse 2024 and EIC 2024, members of the OpenID AuthZEN WG got together and demoed their authorization endpoints conforming to the AuthZEN API
Programming Foundation Models with DSPy - Meetup SlidesZilliz
Prompting language models is hard, while programming language models is easy. In this talk, I will discuss the state-of-the-art framework DSPy for programming foundation models with its powerful optimizers and runtime constraint system.
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc
How does your privacy program stack up against your peers? What challenges are privacy teams tackling and prioritizing in 2024?
In the fifth annual Global Privacy Benchmarks Survey, we asked over 1,800 global privacy professionals and business executives to share their perspectives on the current state of privacy inside and outside of their organizations. This year’s report focused on emerging areas of importance for privacy and compliance professionals, including considerations and implications of Artificial Intelligence (AI) technologies, building brand trust, and different approaches for achieving higher privacy competence scores.
See how organizational priorities and strategic approaches to data security and privacy are evolving around the globe.
This webinar will review:
- The top 10 privacy insights from the fifth annual Global Privacy Benchmarks Survey
- The top challenges for privacy leaders, practitioners, and organizations in 2024
- Key themes to consider in developing and maintaining your privacy program
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfMalak Abu Hammad
Discover how MongoDB Atlas and vector search technology can revolutionize your application's search capabilities. This comprehensive presentation covers:
* What is Vector Search?
* Importance and benefits of vector search
* Practical use cases across various industries
* Step-by-step implementation guide
* Live demos with code snippets
* Enhancing LLM capabilities with vector search
* Best practices and optimization strategies
Perfect for developers, AI enthusiasts, and tech leaders. Learn how to leverage MongoDB Atlas to deliver highly relevant, context-aware search results, transforming your data retrieval process. Stay ahead in tech innovation and maximize the potential of your applications.
#MongoDB #VectorSearch #AI #SemanticSearch #TechInnovation #DataScience #LLM #MachineLearning #SearchTechnology
In the rapidly evolving landscape of technologies, XML continues to play a vital role in structuring, storing, and transporting data across diverse systems. The recent advancements in artificial intelligence (AI) present new methodologies for enhancing XML development workflows, introducing efficiency, automation, and intelligent capabilities. This presentation will outline the scope and perspective of utilizing AI in XML development. The potential benefits and the possible pitfalls will be highlighted, providing a balanced view of the subject.
We will explore the capabilities of AI in understanding XML markup languages and autonomously creating structured XML content. Additionally, we will examine the capacity of AI to enrich plain text with appropriate XML markup. Practical examples and methodological guidelines will be provided to elucidate how AI can be effectively prompted to interpret and generate accurate XML markup.
Further emphasis will be placed on the role of AI in developing XSLT, or schemas such as XSD and Schematron. We will address the techniques and strategies adopted to create prompts for generating code, explaining code, or refactoring the code, and the results achieved.
The discussion will extend to how AI can be used to transform XML content. In particular, the focus will be on the use of AI XPath extension functions in XSLT, Schematron, Schematron Quick Fixes, or for XML content refactoring.
The presentation aims to deliver a comprehensive overview of AI usage in XML development, providing attendees with the necessary knowledge to make informed decisions. Whether you’re at the early stages of adopting AI or considering integrating it in advanced XML development, this presentation will cover all levels of expertise.
By highlighting the potential advantages and challenges of integrating AI with XML development tools and languages, the presentation seeks to inspire thoughtful conversation around the future of XML development. We’ll not only delve into the technical aspects of AI-powered XML development but also discuss practical implications and possible future directions.
Building Production Ready Search Pipelines with Spark and MilvusZilliz
Spark is the widely used ETL tool for processing, indexing and ingesting data to serving stack for search. Milvus is the production-ready open-source vector database. In this talk we will show how to use Spark to process unstructured data to extract vector representations, and push the vectors to Milvus vector database for search serving.
Monitoring and Managing Anomaly Detection on OpenShift.pdfTosin Akinosho
Monitoring and Managing Anomaly Detection on OpenShift
Overview
Dive into the world of anomaly detection on edge devices with our comprehensive hands-on tutorial. This SlideShare presentation will guide you through the entire process, from data collection and model training to edge deployment and real-time monitoring. Perfect for those looking to implement robust anomaly detection systems on resource-constrained IoT/edge devices.
Key Topics Covered
1. Introduction to Anomaly Detection
- Understand the fundamentals of anomaly detection and its importance in identifying unusual behavior or failures in systems.
2. Understanding Edge (IoT)
- Learn about edge computing and IoT, and how they enable real-time data processing and decision-making at the source.
3. What is ArgoCD?
- Discover ArgoCD, a declarative, GitOps continuous delivery tool for Kubernetes, and its role in deploying applications on edge devices.
4. Deployment Using ArgoCD for Edge Devices
- Step-by-step guide on deploying anomaly detection models on edge devices using ArgoCD.
5. Introduction to Apache Kafka and S3
- Explore Apache Kafka for real-time data streaming and Amazon S3 for scalable storage solutions.
6. Viewing Kafka Messages in the Data Lake
- Learn how to view and analyze Kafka messages stored in a data lake for better insights.
7. What is Prometheus?
- Get to know Prometheus, an open-source monitoring and alerting toolkit, and its application in monitoring edge devices.
8. Monitoring Application Metrics with Prometheus
- Detailed instructions on setting up Prometheus to monitor the performance and health of your anomaly detection system.
9. What is Camel K?
- Introduction to Camel K, a lightweight integration framework built on Apache Camel, designed for Kubernetes.
10. Configuring Camel K Integrations for Data Pipelines
- Learn how to configure Camel K for seamless data pipeline integrations in your anomaly detection workflow.
11. What is a Jupyter Notebook?
- Overview of Jupyter Notebooks, an open-source web application for creating and sharing documents with live code, equations, visualizations, and narrative text.
12. Jupyter Notebooks with Code Examples
- Hands-on examples and code snippets in Jupyter Notebooks to help you implement and test anomaly detection models.
Your One-Stop Shop for Python Success: Top 10 US Python Development Providersakankshawande
Simplify your search for a reliable Python development partner! This list presents the top 10 trusted US providers offering comprehensive Python development services, ensuring your project's success from conception to completion.
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Speck&Tech
ABSTRACT: A prima vista, un mattoncino Lego e la backdoor XZ potrebbero avere in comune il fatto di essere entrambi blocchi di costruzione, o dipendenze di progetti creativi e software. La realtà è che un mattoncino Lego e il caso della backdoor XZ hanno molto di più di tutto ciò in comune.
Partecipate alla presentazione per immergervi in una storia di interoperabilità, standard e formati aperti, per poi discutere del ruolo importante che i contributori hanno in una comunità open source sostenibile.
BIO: Sostenitrice del software libero e dei formati standard e aperti. È stata un membro attivo dei progetti Fedora e openSUSE e ha co-fondato l'Associazione LibreItalia dove è stata coinvolta in diversi eventi, migrazioni e formazione relativi a LibreOffice. In precedenza ha lavorato a migrazioni e corsi di formazione su LibreOffice per diverse amministrazioni pubbliche e privati. Da gennaio 2020 lavora in SUSE come Software Release Engineer per Uyuni e SUSE Manager e quando non segue la sua passione per i computer e per Geeko coltiva la sua curiosità per l'astronomia (da cui deriva il suo nickname deneb_alpha).
Skybuffer SAM4U tool for SAP license adoptionTatiana Kojar
Manage and optimize your license adoption and consumption with SAM4U, an SAP free customer software asset management tool.
SAM4U, an SAP complimentary software asset management tool for customers, delivers a detailed and well-structured overview of license inventory and usage with a user-friendly interface. We offer a hosted, cost-effective, and performance-optimized SAM4U setup in the Skybuffer Cloud environment. You retain ownership of the system and data, while we manage the ABAP 7.58 infrastructure, ensuring fixed Total Cost of Ownership (TCO) and exceptional services through the SAP Fiori interface.
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...Jeffrey Haguewood
Sidekick Solutions uses Bonterra Impact Management (fka Social Solutions Apricot) and automation solutions to integrate data for business workflows.
We believe integration and automation are essential to user experience and the promise of efficient work through technology. Automation is the critical ingredient to realizing that full vision. We develop integration products and services for Bonterra Case Management software to support the deployment of automations for a variety of use cases.
This video focuses on integration of Salesforce with Bonterra Impact Management.
Interested in deploying an integration with Salesforce for Bonterra Impact Management? Contact us at sales@sidekicksolutionsllc.com to discuss next steps.
Ivanti’s Patch Tuesday breakdown goes beyond patching your applications and brings you the intelligence and guidance needed to prioritize where to focus your attention first. Catch early analysis on our Ivanti blog, then join industry expert Chris Goettl for the Patch Tuesday Webinar Event. There we’ll do a deep dive into each of the bulletins and give guidance on the risks associated with the newly-identified vulnerabilities.
Model-Based Simulation of SOAP Web Services From Temporal Logic Specifications (Talk @ ICECCS 2011)
1. Model-Based Simulation of SOAP Web
Services From Temporal Logic Specifications
Sylvain Hallé
Université du Québec à Chicoutimi
CANADA
Fonds de recherche
sur la nature
et les technologies NSERC
CRSNG
Sylvain Hallé
10. A motivating scenario
We want to do, as automatically as possible...
DRIVER STUB
...impersonate the client, send ...impersonate the service,
test sequences to the service generate responses to the client
?
Check if service does what ? closed
Environment
we expect/understand Þ model checking possible
Sylvain Hallé
11. A motivating scenario
Some reasons for creating a stub:
· a cilent under development,
Test
without performing real actions on STUB
the actual service
Provide a closed environment for model checking
·
Alternative to sandboxes: the stub's responses are
·
under the developer's control
Sylvain Hallé
12. A SOAP web service
<CartAdd>
<CartID>ID123</CartID>
<Items>
<ItemID>123</ItemID>
<ItemID>456</ItemID>
<ItemID>789</ItemID>
...
</Items>
</CartAdd>
Request message in XML format:
· elements
Nested
· occurrences of the same element name
Many
· structure
Flexible
Sylvain Hallé
13. A SOAP web service
Requests and
responses form a
transaction...
Sylvain Hallé
14. A SOAP web service
Requests and
<ItemSearch>
<Term>abc</Term>
responses form a
</ItemSearch>
transaction...
Sylvain Hallé
15. A SOAP web service
Requests and
<ItemSearch>
<Term>abc</Term>
responses form a
</ItemSearch>
transaction...
<ItemSearchResponse>
<Items>
<ItemID>123</ItemID>
<ItemID>456</ItemID>
...
</Items>
</ItemSearchResponse>
Sylvain Hallé
16. A SOAP web service
Requests and
<ItemSearch>
<Term>abc</Term>
responses form a
</ItemSearch>
transaction...
<ItemSearchResponse>
<Items>
<ItemID>123</ItemID>
<ItemID>456</ItemID>
...
</Items>
</ItemSearchResponse>
<CartAdd>
<CartID>ID123</CartID>
<Items>
<ItemID>123</ItemID>
<ItemID>456</ItemID>
<ItemID>789</ItemID>
...
</Items>
</CartAdd>
Sylvain Hallé
17. A SOAP web service
Requests and
<ItemSearch>
<Term>abc</Term>
responses form a
</ItemSearch>
transaction...
<ItemSearchResponse>
<Items>
<ItemID>123</ItemID>
<ItemID>456</ItemID>
...
</Items>
</ItemSearchResponse>
<CartAdd>
<CartID>ID123</CartID>
<Items>
<ItemID>123</ItemID>
<ItemID>456</ItemID>
<ItemID>789</ItemID>
...
</Items>
</CartAdd>
Sylvain Hallé
18. A SOAP web service
Requests and
<ItemSearch>
<Term>abc</Term>
responses form a
</ItemSearch>
transaction...
<ItemSearchResponse>
<Items>
<ItemID>123</ItemID>
<ItemID>456</ItemID>
...but not all
...
</Items>
</ItemSearchResponse> sequences are
valid!
<CartAdd>
<CartID>ID123</CartID>
<Items>
<ItemID>123</ItemID>
<ItemID>456</ItemID>
<ItemID>789</ItemID>
...
</Items>
</CartAdd>
Sylvain Hallé
19. A SOAP web service
1. Cart
<ItemSearch>
<Term>abc</Term>
operations must
</ItemSearch>
begin with a
<ItemSearchResponse>
CartCreate
<Items>
<ItemID>123</ItemID>
<ItemID>456</ItemID>
message
...
</Items>
</ItemSearchResponse>
<CartAdd>
<CartID>ID123</CartID>
<Items>
<ItemID>123</ItemID>
<ItemID>456</ItemID>
<ItemID>789</ItemID>
...
</Items>
</CartAdd>
Sylvain Hallé
21. A SOAP web service
<CartCreate>
</CartCreate>
Sylvain Hallé
22. A SOAP web service
<CartCreate>
</CartCreate>
<CartCreateResponse>
<CartID>ID123</CartID>
</CartCreateResponse>
Sylvain Hallé
23. A SOAP web service
<CartCreate>
</CartCreate>
<CartCreateResponse>
<CartID>ID123</CartID>
</CartCreateResponse>
<CartAdd>
<CartID>ID456</CartID>
<Items>
<ItemID>123</ItemID>
<ItemID>456</ItemID>
...
</Items>
</CartAdd>
Sylvain Hallé
24. A SOAP web service
<CartCreate>
</CartCreate>
<CartCreateResponse>
<CartID>ID123</CartID>
</CartCreateResponse>
<CartAdd>
<CartID>ID456</CartID>
<Items>
<ItemID>123</ItemID>
<ItemID>456</ItemID>
...
</Items>
</CartAdd>
Sylvain Hallé
25. A SOAP web service
2. Once a cart is
<CartCreate>
created, the
</CartCreate>
same CartID
<CartCreateResponse>
<CartID>ID123</CartID>
must be passed
</CartCreateResponse>
in all requests
<CartAdd>
<CartID>ID456</CartID>
and responses
<Items>
<ItemID>123</ItemID>
<ItemID>456</ItemID>
...
</Items>
</CartAdd>
Sylvain Hallé
26. A SOAP web service
<CartCreate>
</CartCreate>
<CartCreateResponse>
<CartID>ID123</CartID>
</CartCreateResponse>
<CartAdd>
<CartID>ID123</CartID>
<Items>
<ItemID>123</ItemID>
<ItemID>456</ItemID>
...
</Items>
</CartAdd>
Sylvain Hallé
27. A SOAP web service
<CartCreate>
</CartCreate>
<CartCreateResponse>
<CartID>ID123</CartID>
</CartCreateResponse>
<CartAdd>
<CartID>ID123</CartID>
<Items>
<ItemID>123</ItemID>
<ItemID>456</ItemID>
...
</Items>
</CartAdd>
...
<CartAdd>
<CartID>ID123</CartID>
<Items>
<ItemID>456</ItemID>
</Items>
</CartAdd>
Sylvain Hallé
28. A SOAP web service
<CartCreate>
</CartCreate>
<CartCreateResponse>
<CartID>ID123</CartID>
</CartCreateResponse>
<CartAdd>
<CartID>ID123</CartID>
<Items>
<ItemID>123</ItemID>
<ItemID>456</ItemID>
...
</Items>
</CartAdd>
...
<CartAdd>
<CartID>ID123</CartID>
<Items>
<ItemID>456</ItemID>
</Items>
</CartAdd>
Sylvain Hallé
29. A SOAP web service
3. The same item
<CartCreate>
cannot be added
</CartCreate>
via CartAdd
<CartCreateResponse>
<CartID>ID123</CartID>
twice to
</CartCreateResponse>
the same
<CartAdd>
<CartID>ID123</CartID>
shopping cart
<Items>
<ItemID>123</ItemID>
<ItemID>456</ItemID>
...
</Items>
</CartAdd>
...
<CartAdd>
<CartID>ID123</CartID>
<Items>
<ItemID>456</ItemID>
</Items>
</CartAdd>
Sylvain Hallé
30. Challenge
The real service's behaviour follows constraints on:
1. Sequences of operations only
2. Parameter values only
3. Both at the same time
How can we create a realistic stub that
follows these constraints?
Sylvain Hallé
39. Current solutions
<CartAdd>
<CartID>ID123</CartID>
<Items>
<ItemID>123</ItemID>
</Items>
</CartAdd>
<CartAddResponse>
Problem
<CartID>ID123</CartID>
.
<Items>
<ItemID>123</ItemID>
</Items>
Responses are
</CartAdd>
hard-coded
<CartAdd>
<CartID>ID123</CartID>
messages: for
<Items>
<ItemID>456</ItemID>
</Items>
each request
</CartAdd>
type, same
<CartAddResponse>
?!? response every
<CartID>ID123</CartID>
<Items>
<ItemID>123</ItemID>
</Items> time!
</CartAdd>
Sylvain Hallé
40. Current solutions
Other way:
program a
realistic stub in a
programming
language
Sylvain Hallé
41. Current solutions
struct m_cart;
if (m_cart.item
add(m_item.id)
else
return XML("<
Other way:
program a
realistic stub in a
programming
language
Sylvain Hallé
42. Specification of service behaviour
LTL-FO+: extension of LTL with quantifiers on message
parameters (Hallé & Villemaire, IEEE Trans. on Services
Computing 2011)
Can be used to express constraints on sequences of messages
and their values
For example, constraint 2:
.
G ("
CartCreateResponse/CartID/x : .
X G (" CartAddResponse/CartID/y : x=y))
.
...detailed semantics in the paper!
Sylvain Hallé
43. Problem
Using LTL-FO+ as the specification language, producing a web
service stub becomes an application of LTL-FO+ satisfiability
solving
Given...
A pre-existing trace of requests
·
· LTL-FO+ formula
An
Produce:
· extension of the trace (by one message) that
An
satisfies the formula
Sylvain Hallé
44. Initial solution*
A model checker can find a counter-example trace of a formula,
if there is one
.
Create a Kripke structure whose first n transitions are
unique (and correspond to the pre-existing trace)
.
Don't give any constraints for the (n+1)-th state
.
Run the model checker on that system with the
negated specification
.
The counter-example found gives us a possible
extension of the existing trace
* S. Hallé, WS-FM 2010
Sylvain Hallé
45. New solution
Don't rely on external tools, devise an algorithm to produce
sequences directly from a formula
Interpret assertions on sequences of messages...
...as directions to produce sequences of messages
The trick: decompose the formula into a tree of nodes
sub-formulas that sub-formulas that must
must be true now be true next time
= conditions on = conditions on
the current message the remainder of the
to generate transaction
Sylvain Hallé
47. Decomposition rules
Decomposition rules for some operators:
"j must hold
in every message"
Sylvain Hallé
48. Decomposition rules
Decomposition rules for some operators:
"j must hold
in every message"
Create a message that
fulfills j
Sylvain Hallé
49. Decomposition rules
Decomposition rules for some operators:
"j must hold
in every message"
Create a message that And next time, make
fulfills j sure that G j
holds
Sylvain Hallé
50. Decomposition rules
Decomposition rules for some operators:
"j must hold "j must hold
in every message" in the next
message"
Create a message that And next time, make
fulfills j sure that G j
holds
Sylvain Hallé
51. Decomposition rules
Decomposition rules for some operators:
"j must hold "j must hold
in every message" in the next
message"
Create a message that And next time, make
fulfills j sure that G j
holds (No condition on
current message)
Sylvain Hallé
52. Decomposition rules
Decomposition rules for some operators:
"j must hold "j must hold
in every message" in the next
message"
Create a message that And next time, make
fulfills j sure that G j
holds (No condition on Next time, make
current message) sure that jholds
Sylvain Hallé
54. Decomposition rules
Multiple branches = alternatives
"j must hold
eventually"
In the current
message... In a future
message...
Sylvain Hallé
55. Decomposition rules
Example: G (a ®
X b)
G (a ®
X b) ?
a ®®
X b ?b)
G (a X
Ø ®a, X b ?b)
a ?b)
G (a X G (a ®
X
a ?b), b
G (a ®
X
Sylvain Hallé
56. Decomposition rules
Example: G (a ®
X b)
G (a ®
X b) ?
a ®®
X b ?b)
G (a X
Ø ®a, X b ?b)
a ?b)
G (a X G (a ®
X
- Create a message that a ?b), b
G (a ®
X
fulfills Ø
a
- Next time G (a ® X b)
must hold
Sylvain Hallé
57. Decomposition rules
Example: G (a ®
X b)
G (a ®
X b) ?
a ®®
X b ?b)
G (a X
- Create a message that
Ø ®a, X b ?b)
a ?b)
G (a X G (a ® fulfills a
X
- Next time G (a ® X b)
and b must hold
- Create a message that a ?b), b
G (a ®
X
fulfills Ø
a
- Next time G (a ® X b)
must hold
Sylvain Hallé
58. Decomposition rules
Once we exhaust the decomposition rules to apply...
- Create a message that
a ?b)
G (a X
Ø ® fulfills a
- Next time G (a ® X b)
and b must hold
- Create a message that a ?b), b
G (a ®
X
fulfills Ø
a
- Next time G (a ® X b)
must hold
Sylvain Hallé
59. Decomposition rules
Once we exhaust the decomposition rules to apply...
...we pick (arbitrarily) one of the alternatives
- Create a message that
fulfills a
- Next time G (a ® X b)
and b must hold
a ?b), b
G (a ®
X
Sylvain Hallé
60. Decomposition rules
Once we exhaust the decomposition rules to apply...
...we pick (arbitrarily) one of the alternatives and
create a message based on the conditions
- Create a message that
fulfills a
- Next time G (a ® X b)
and b must hold
a ?b), b
G (a ®
X
a
Sylvain Hallé
61. Decomposition rules
Once we exhaust the decomposition rules to apply...
...we pick (arbitrarily) one of the alternatives and
create a message based on the conditions
The right-hand side
G (a ®
X b), b ?
conditions become the
starting base for the
next message to produce
a ?b), b
G (a ®
X
a
Sylvain Hallé
62. Values inside messages
The decomposition rule for the existential quantifier creates
values inside messages
p
Å
p
Sylvain Hallé
63. Values inside messages
The decomposition rule for the existential quantifier creates
values inside messages
"There exists an x at
the end of path p such p
that j(x) is true"
Å
p
Sylvain Hallé
64. Values inside messages
The decomposition rule for the existential quantifier creates
values inside messages
"There exists an x at
the end of path p such p
that j(x) is true"
Å
p
"Add some value bi at
the end of path p"
Sylvain Hallé
65. Values inside messages
The decomposition rule for the existential quantifier creates
values inside messages
"There exists an x at
the end of path p such p
that j(x) is true"
Å
p
"Add some value bi at "Make sure that j
(x) is
the end of path p" true when x=bi"
Sylvain Hallé
66. Values inside messages
The decomposition rule for the existential quantifier creates
values inside messages
"There exists an x at
the end of path p such p
that j(x) is true"
Å
p
"Add some value bi at "Make sure that j
(x) is
the end of path p" true when x=bi"
...and repeat this for all possible values of bi
Sylvain Hallé
67. Values inside messages
The decomposition rule for the universal quantifier ranges over
values that are present in the message + potentially new values
p
Å
p
Sylvain Hallé
68. Values inside messages
The decomposition rule for the universal quantifier ranges over
values that are present in the message + potentially new values
"All values x at the
end of path p are such p
that j (x) is true"
Å
p
Sylvain Hallé
69. Values inside messages
The decomposition rule for the universal quantifier ranges over
values that are present in the message + potentially new values
"All values x at the
end of path p are such p
that j (x) is true"
Å
p
"Let Si = set of all values
already added at the end
of path p number of
+ any
other values"
Sylvain Hallé
70. Values inside messages
The decomposition rule for the universal quantifier ranges over
values that are present in the message + potentially new values
"All values x at the
end of path p are such p
that j (x) is true"
Å
p
"Let Si = set of all values "Make sure that j (x) is
already added at the end true for all values in Si"
of path p number of
+ any
other values"
Sylvain Hallé
71. Values inside messages
Conditions may add up and contradict themselves
Å
pÅ
Ø
p
Sylvain Hallé
72. Values inside messages
Conditions may add up and contradict themselves
"Value bi must be at
the end of path p"
Å
pÅ
Ø
p
Sylvain Hallé
73. Values inside messages
Conditions may add up and contradict themselves
"Value bi must be at "Value bi must not be at
the end of path p" the end of path p "
Å
pÅ
Ø
p
Sylvain Hallé
74. Values inside messages
Conditions may add up and contradict themselves
"Value bi must be at "Value bi must not be at
the end of path p" the end of path p "
Å
pÅ
Ø
p
"Stop exploring that
alternative"
Sylvain Hallé
75. Soundness and completeness
Problem
The rule for " values that were added by
checks all
previous applications of the rule for $
What if we add new values after?
Example: (" 0) Ù: y = 0)
p/x : x > ($
p/y
Consequence: soundness is guaranteed only if all $
are
processed before any "
(cf. Theorem 1 in the paper)
Sylvain Hallé
76. Implementation
Universal stub: web service that takes as input a declarative
specification of its behaviour
MESSAGES
move[ Structure of each
put[row,col], possible message
player];
DOMAINS
player: X,O,empty; Range of values
row,col: 1,2,3; for each element
SPECS
[move/board/A1 x] ((x) = ({empty})); LTL-FO+ formulas
...
The stub dynamically produces sequences of messages following
the specification
Sylvain Hallé
77. Implementation
Implemented in Java
·
· on a runtime monitor for LTL-FO+ "running in
Based
reverse"
SPEC
STUB
· stub dynamically produces sequences of messages
The
following the specification
Sylvain Hallé
78. Earlier solution*
A model checker can find a counter-example trace of a formula,
if there is one
.
Create a Kripke structure whose first n transitions are
unique (and correspond to the pre-existing trace)
.
Don't give any constraints for the (n+1)-th state
.
Run the model checker on that system with the
negated specification
.
The counter-example found gives us a possible
extension of the existing trace
* S. Hallé, WS-FM 2010
Sylvain Hallé
79. Showdown
We compared both approaches on the same input specification
Messages of the form
MESSAGES
m[p*]; } <m>
<p>0</p>
<p>2</p>
...
DOMAINS </m>
p : 1,2,...;
SPEC
G (" G ($: x=y))
m/p/x : X m/p/y
"Every value occurring in
some <p> must reappear
in all future messages"
Sylvain Hallé
80. Experiments
Exhibit A: we vary the size of the domain (i.e. the set of
possible values in message parameters)
MESSAGES
m[p*];
DOMAINS
p : 1,2,...,n;
SPEC
G (" G ($: x=y))
m/p/x : X m/p/y
Sylvain Hallé
81. Experiments
Exhibit A: we vary the size of the domain (i.e. the set of
possible values in message parameters)
1,000,000 With model checker
» 1.65 x
1300 ×
10,000
Time (ms)
100
1
0 2 4 6 8 10
Domain size
Sylvain Hallé
82. Experiments
Exhibit A: we vary the size of the domain (i.e. the set of
possible values in message parameters)
1,000,000 With model checker
» 1.65 x
1300 ×
10,000
Time (ms)
This paper's algorithm
» x
6.5 ×1.42
100
1
0 2 4 6 8 10
Domain size
Sylvain Hallé
83. Experiments
Exhibit A: we vary the size of the domain (i.e. the set of
possible values in message parameters)
1,000,000 With model checker
6:50 » 1.65 x
1300 ×
10,000
Time (ms)
This paper's algorithm
» x
6.5 ×1.42
100
0:00.375
1
0 2 4 6 8 10
Domain size
Sylvain Hallé
84. Experiments
Exhibit B: we vary the message arity (i.e. the maximum number
of parameters in messages)
MESSAGES
m[p{0,n}];
DOMAINS
p : 1,2,...;
SPEC
G (" G ($: x=y))
m/p/x : X m/p/y
Sylvain Hallé
85. Experiments
Exhibit B: we vary the message arity (i.e. the maximum number
of parameters in messages)
1,000,000 With model checker
» 1.64 x
8500 ×
10,000
Time (ms)
100
1
0 2 4 6 8 10
Message arity
Sylvain Hallé
86. Experiments
Exhibit B: we vary the message arity (i.e. the maximum number
of parameters in messages)
1,000,000 With model checker
» 1.64 x
8500 ×
10,000
Time (ms)
This paper's algorithm
= 375
100
1
0 2 4 6 8 10
Message arity
Sylvain Hallé
87. Experiments
Exhibit C: we measure processing time for each new message as
the trace lengthens
900
800
700
600
Time (ms)
500
400
300
200
100
0
0 2 4 6 8 10 12 14 16 18 20
Message #
Sylvain Hallé
88. Experiments
Exhibit C: we measure processing time for each new message as
the trace lengthens
900 With model checker
800 » 511
16x +
700
600
Time (ms)
500
400
300
200
100
0
0 2 4 6 8 10 12 14 16 18 20
Message #
Sylvain Hallé
89. Experiments
Exhibit C: we measure processing time for each new message as
the trace lengthens
900 With model checker
800 » 511
16x +
700
600
Time (ms)
500
400 This paper's algorithm
300 » 3.5
-0.2x +
200
100
0
0 2 4 6 8 10 12 14 16 18 20
Message #
Sylvain Hallé
90. Take-home points
1. Long-running web service transactions involve constraints
over message structure, values and sequence
.
2. Typical web service stubs only allow basic, pre-recorded
interactions
.
3. The logic LTL-FO+ can model these constraints
declaratively
.
4. Simulating a web service becomes a problem of
satisfiability solving over a set of LTL-FO+
formulas
.
5. An algorithm can generate realistic
sequences of messages
Sylvain Hallé