This document discusses tips and tricks for building robust and scalable modeling workbenches with Sirius. It covers how to help Sirius find elements to display, using the best query language like AQL, synchronization options, advanced tools, style customization, and contributing additional mappings and tools. Interpreted expressions and provided interpreters like AQL, features, services, and Acceleo3 expressions are also discussed. The key is to write efficient semantic expressions, leverage inverse references, and use contextual diagrams for large models.
How to Make Robust and Scalable Modeling Workbenches with Sirius - EclipseCon...mporhel
You have already built a modeling workbench thanks to Sirius and you are going to deploy it on a large scale?
So you may need a deeper understanding on how Sirius works and learn about how to make your tool more robust and more scalable.
During this talk, we will give some insights about internal Sirius mechanisms, for example how Sirius computes the elements which are displayed in your modeler.
Then we will explain some design and configuration choices that can impact the performance of your tool:
- how to write efficient expressions?
- how to avoid useless evaluations?
- etc.
But deploying a tool also means that you will have to face maintenance and evolution challenges. This talk will also be the opportunity for me to share some best practices that will make your modeling tool stronger and more flexible.
This talk is targeted to people who have already played a little with Sirius and created their own modelers with it (even very simple ones), and want to go to the next step
This Presentation is the intro. to java programming.
This presentation contain the basics of Java with example in simple language.
This presentation clear your all concept about programming in java and then you can easily make programs in java.
How to Make Robust and Scalable Modeling Workbenches with Sirius - EclipseCon...mporhel
You have already built a modeling workbench thanks to Sirius and you are going to deploy it on a large scale?
So you may need a deeper understanding on how Sirius works and learn about how to make your tool more robust and more scalable.
During this talk, we will give some insights about internal Sirius mechanisms, for example how Sirius computes the elements which are displayed in your modeler.
Then we will explain some design and configuration choices that can impact the performance of your tool:
- how to write efficient expressions?
- how to avoid useless evaluations?
- etc.
But deploying a tool also means that you will have to face maintenance and evolution challenges. This talk will also be the opportunity for me to share some best practices that will make your modeling tool stronger and more flexible.
This talk is targeted to people who have already played a little with Sirius and created their own modelers with it (even very simple ones), and want to go to the next step
This Presentation is the intro. to java programming.
This presentation contain the basics of Java with example in simple language.
This presentation clear your all concept about programming in java and then you can easily make programs in java.
Functional programming in kotlin with Arrow [Sunnytech 2018]Emmanuel Nhan
Slides from my talk about Kotlin & Functional programming with Arrow which I gave at Sunny Tech 2018 (http://sunny-tech.io)
It showcases how Kotlin is a good fit for functional programming, thanks to Arrow.
As the author of an open-source serialization library in Scala, I've undergone a lot of struggle to understand and harness the power of Scala's type system. My library was based on parsing pickled Scala signatures, which was a subterranean and sparely documented feature of Scala 2.8. I wanted to serialize and deserialize options, lists and maps, which required defeating type erasure when serializing while skating by on type erasure when deserializing. I struggled with multiple constructors, checking for annotation types, specialization, more. The new reflection libraries introduced in Scala 2.10 provided easier access to the same information I had been getting from the pickled signatures. This talk will address practical aspects of type mining, providing a library of hands-on examples using the Scala 2.10 reflection API.
Eclipse Modeling Framework (EMF) and Graphical Modeling Framework (GMF)Dimitris Kolovos
Lecture slides from the Model-Driven Engineering module of York's MSc in Software Engineering: http://www.cs.york.ac.uk/postgraduate/taught-courses/msc-swe/
Do you want to upgrade your GWT application or write a sizable web application? Dart is the efficient choice.
As a brief example, check out http://lightningdart.com
This presentation is updated October 2015 for Silicon Valley Code Camp
Java is a computer programming language that is concurrent, class-based, object-oriented, and specifically designed to have as few implementation dependencies as possible.
Mixing Diagram, Tree, Text, Table and Form editors to build a kick-ass modeli...Chauvin Mariot
The last few years Obeo has built - mainly for corporate customers - several modeling workbenches dedicated to various domains : from enterprise applications to embedded system going through the insurance portfolios management. For each of those project defining a specific vocabulary leveraging the domain concepts was a key success factor but was not the only one : the ability to easily adapt the associated meta-model and the associated workbench, to support rich user interactions hiding some complexity and leveraging several kind of representations in a coherent environment were important factors too : they allowed us to adapt the tooling to the customer's methodology.
These are the slides to the webinar about Custom Pregel algorithms in ArangoDB https://youtu.be/DWJ-nWUxsO8. It provides a brief introduction to the capabilities and use cases for Pregel.
A seminar in advanced Software Engineering concerning using models to guide the development process, and QVT to transfer a model into another model automatically
Standardizing on a single N-dimensional array API for PythonRalf Gommers
MXNet workshop Dec 2020 presentation on the array API standardization effort ongoing in the Consortium for Python Data API Standards - see data-apis.org
Functional programming in kotlin with Arrow [Sunnytech 2018]Emmanuel Nhan
Slides from my talk about Kotlin & Functional programming with Arrow which I gave at Sunny Tech 2018 (http://sunny-tech.io)
It showcases how Kotlin is a good fit for functional programming, thanks to Arrow.
As the author of an open-source serialization library in Scala, I've undergone a lot of struggle to understand and harness the power of Scala's type system. My library was based on parsing pickled Scala signatures, which was a subterranean and sparely documented feature of Scala 2.8. I wanted to serialize and deserialize options, lists and maps, which required defeating type erasure when serializing while skating by on type erasure when deserializing. I struggled with multiple constructors, checking for annotation types, specialization, more. The new reflection libraries introduced in Scala 2.10 provided easier access to the same information I had been getting from the pickled signatures. This talk will address practical aspects of type mining, providing a library of hands-on examples using the Scala 2.10 reflection API.
Eclipse Modeling Framework (EMF) and Graphical Modeling Framework (GMF)Dimitris Kolovos
Lecture slides from the Model-Driven Engineering module of York's MSc in Software Engineering: http://www.cs.york.ac.uk/postgraduate/taught-courses/msc-swe/
Do you want to upgrade your GWT application or write a sizable web application? Dart is the efficient choice.
As a brief example, check out http://lightningdart.com
This presentation is updated October 2015 for Silicon Valley Code Camp
Java is a computer programming language that is concurrent, class-based, object-oriented, and specifically designed to have as few implementation dependencies as possible.
Mixing Diagram, Tree, Text, Table and Form editors to build a kick-ass modeli...Chauvin Mariot
The last few years Obeo has built - mainly for corporate customers - several modeling workbenches dedicated to various domains : from enterprise applications to embedded system going through the insurance portfolios management. For each of those project defining a specific vocabulary leveraging the domain concepts was a key success factor but was not the only one : the ability to easily adapt the associated meta-model and the associated workbench, to support rich user interactions hiding some complexity and leveraging several kind of representations in a coherent environment were important factors too : they allowed us to adapt the tooling to the customer's methodology.
These are the slides to the webinar about Custom Pregel algorithms in ArangoDB https://youtu.be/DWJ-nWUxsO8. It provides a brief introduction to the capabilities and use cases for Pregel.
A seminar in advanced Software Engineering concerning using models to guide the development process, and QVT to transfer a model into another model automatically
Standardizing on a single N-dimensional array API for PythonRalf Gommers
MXNet workshop Dec 2020 presentation on the array API standardization effort ongoing in the Consortium for Python Data API Standards - see data-apis.org
Functional Patterns for C++ Multithreading (C++ Dev Meetup Iasi)Ovidiu Farauanu
Discussing Design Patterns and OOP popularity,
Multithreading and OOP,
Functional Design for Multithreaded programming
and how Multithreading does not mean always concurency but multicore paralelism.
This is the object oriented lecture nmbr 3rd , if you want lecture 2 or 1 u can check it my account , this is the programing tutorial, please follow me and thank you
Similar to How to make Robust and Scalable Modeling Workbenches with Sirius - SiriusCon 2015 (20)
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.
Elevating Tactical DDD Patterns Through Object CalisthenicsDorra BARTAGUIZ
After immersing yourself in the blue book and its red counterpart, attending DDD-focused conferences, and applying tactical patterns, you're left with a crucial question: How do I ensure my design is effective? Tactical patterns within Domain-Driven Design (DDD) serve as guiding principles for creating clear and manageable domain models. However, achieving success with these patterns requires additional guidance. Interestingly, we've observed that a set of constraints initially designed for training purposes remarkably aligns with effective pattern implementation, offering a more ‘mechanical’ approach. Let's explore together how Object Calisthenics can elevate the design of your tactical DDD patterns, offering concrete help for those venturing into DDD for the first time!
A tale of scale & speed: How the US Navy is enabling software delivery from l...sonjaschweigert1
Rapid and secure feature delivery is a goal across every application team and every branch of the DoD. The Navy’s DevSecOps platform, Party Barge, has achieved:
- Reduction in onboarding time from 5 weeks to 1 day
- Improved developer experience and productivity through actionable findings and reduction of false positives
- Maintenance of superior security standards and inherent policy enforcement with Authorization to Operate (ATO)
Development teams can ship efficiently and ensure applications are cyber ready for Navy Authorizing Officials (AOs). In this webinar, Sigma Defense and Anchore will give attendees a look behind the scenes and demo secure pipeline automation and security artifacts that speed up application ATO and time to production.
We will cover:
- How to remove silos in DevSecOps
- How to build efficient development pipeline roles and component templates
- How to deliver security artifacts that matter for ATO’s (SBOMs, vulnerability reports, and policy evidence)
- How to streamline operations with automated policy checks on container images
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.
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
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/
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...DanBrown980551
Do you want to learn how to model and simulate an electrical network from scratch in under an hour?
Then welcome to this PowSyBl workshop, hosted by Rte, the French Transmission System Operator (TSO)!
During the webinar, you will discover the PowSyBl ecosystem as well as handle and study an electrical network through an interactive Python notebook.
PowSyBl is an open source project hosted by LF Energy, which offers a comprehensive set of features for electrical grid modelling and simulation. Among other advanced features, PowSyBl provides:
- A fully editable and extendable library for grid component modelling;
- Visualization tools to display your network;
- Grid simulation tools, such as power flows, security analyses (with or without remedial actions) and sensitivity analyses;
The framework is mostly written in Java, with a Python binding so that Python developers can access PowSyBl functionalities as well.
What you will learn during the webinar:
- For beginners: discover PowSyBl's functionalities through a quick general presentation and the notebook, without needing any expert coding skills;
- For advanced developers: master the skills to efficiently apply PowSyBl functionalities to your real-world scenarios.
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionAggregage
Join Maher Hanafi, VP of Engineering at Betterworks, in this new session where he'll share a practical framework to transform Gen AI prototypes into impactful products! He'll delve into the complexities of data collection and management, model selection and optimization, and ensuring security, scalability, and responsible use.
4. Help Sirius find the elements to display
Use the best query language for the task
Synchronization options and advanced tools
Style and color customization
Additional mappings and tools contribution
Outline
5. Help Sirius find the elements to display
Use the best query language for the task
Synchronization options and advanced tools
Style and color customization
Additional mappings and tools contribution
Outline
7. ● List
○ node mappings to define list elements
● Free form
Viewpoint specification model
Several kind of containers
● Compartments
○ container mappings to define compartments
○ fixed or dynamic
○ vertical / horizontal stacks
Supported children presentations:
8. Viewpoint specification model
● Domain Class
Naive approach
● No Semantic Candidates Expression
● Precondition expression to filter
elements
Note:
● Green: EClass qualified name
● Yellow: interpreted expression
9. Interpreted expression
● Tooltip: the expected type of result and the available variables
● Completion on empty expression: available interpreters
● var: direct access to Sirius variables
● feature: direct access to the named features of the current element
(and EMF pseudo-features)
● service: direct call of a Java method
(that follows some naming conventions, see documentation)
● aql: Acceleo Query Language
(introduced with Sirius 3.0, recommended since 3.1)
● [ /]: Acceleo3 expression
11. Mapping Evaluation
● Empty semantic candidates expression
-> Sirius looks for candidates into all loaded semantic/domain model
● eAllContents() on each domain resource content
● Not efficient
● No control on the displayed elements
Naive approach
13. Diagram elements computation
From the element to refresh (and its description/mapping):
● Get available mappings to refresh
○ activated Viewpoints, activated Layers
○ children mappings + reused mappings
14. Diagram elements computation
● For each mapping found
○ Evaluation of the semantic candidates expression from the current domain element
(or eAllContents() on each domain resource if empty)
○ Filter with the specified domain class
○ On each candidate, evaluate the precondition
○ Create the diagram element, assign a style
From the element to refresh (and its description/mapping):
15. Diagram elements computation
empty semantic candidates
+ big models
+ many (sub) mappings
+ many complex precondition expressions
⇒ Poor performances
Worst conditions
16. Diagram elements computation
Try as much as possible to write efficient semantic candidates expression:
● Avoid empty semantic candidates expression and eAllContents when possible
● Follow the structural features defined in the meta model
● Use the inverse cross references to look for elements with a reference to another
element.
○ eInverse(Type) in AQL and Acceleo3
○ access to the ECrossReferenceAdapter from a Java service
● Use the specialized interpreters when possible (var: / service: / feature:)
● Try to integrate your precondition in your semantic candidate expression
aql: mainExpression -> select( e | e.precondition)
Your role
18. Help Sirius find the elements to display
Use the best query language for the task
Synchronization options and advanced tools
Style and color customization
Additional mappings and tools contribution
Outline
21. Mapping synchronization
● Synchronized mapping: Sirius looks for mapping candidates
● Unsynchronized mapping: Sirius refreshes styles and sub elements.
● Allows to create contextual diagrams:
○ User controls the elements he wants to see on his diagram
○ Sirius does not create elements for non-synchronized mappings
○ Delete from diagram is enabled
22. Mapping synchronization
● Specifier must create some ‘insertion’ tools
○ Selection Wizards
○ Drop tools (from Model Explorer)
○ Double clics
○ Menus
● Mappings of edge, border nodes, list elements often put as synchronized
23. Advanced tools: Direct edit (F2)
Easy edit mask creation
● {0} : {1}
● split user text into String variables
24. Advanced tools: Java service
Java services can be used to do more.
Ecore Tools:
direct edit of EStructuralFeatures (nodes/edges)
● « Something » => change name of feature
● «:SomeType » => only change the eType
● «1» => only set cardinality to 1..x
● « * » => only set cardinality to x..*
● « /Something » => make the feature derived
● « = something » => set the default value literal
● [...]
25. Advanced tools: Element select variable
Displays a selection dialog
when the user execute a tool
List or tree
Single / Multiple result
26. Advanced tools: Filter listener
To control the visibility of a palette tool
Reacts to model changes
(Sirius or semantic)
28. Help Sirius find the elements to display
Use the best query language for the task
Synchronization options and advanced tools
Style and color customization
Additional mappings and tools contribution
Outline
29. Provide mappings and tools
● Ready to deploy Eclipse plugin
Viewpoint Specification Project
30. Provide mappings and tools
● 1..* per Viewpoint Specification Project
● EMF model, can have links to other VSM
● Possibility to extends/complete VSM defined in other plugins
Viewpoint Specification Model
31. Provide mappings and tools
● Declares Diagram / Table / Tree description
● but also Diagram Extension
Viewpoint
● Activation controlled by the user
32. Provide mappings and tools
● 1 default Layer
● 0..* additional Layers
Diagram Description
● references a diagram description (defined anywhere)
● provides additional Layers
Diagram Extension Description
33. Provide mappings and tools
● optional?
● active per default?
● contains top level mappings and tool section
Layer
● activation controlled by the user if optional
34. Provide mappings and tools
● to spezialize mappings
● provide new styles / children mappings
Node / Container / Edge mapping import
35. Provide mappings and tools
● contains other tool sections
● declares or reuses tools
Tool Section
37. Help Sirius find the elements to display
Use the best query language for the task
Synchronization options and advanced tools
Style and color customization
Additional mappings and tools contribution
Outline
39. User Color Palette
● User fixed color: RGB, System color chooser
● Computed Color: interpreted expression to compute R, G, B
● Interpolated Color
○ Define several color steps (value/color)
○ Expression to compute a value from the element to decorate
40. Conditional Styles
● Available for every kind of mapping
● 0..* conditional style
● Each conditional style contains a different style
43. Conditional Styles
Edge styles
● Routing style (oblique, manhattan, tree)
● Line style
● Source / Target arrows
● Begin / Center / End labels
44. Conditional Styles
● Precondition must be exclusive
● Sirius takes the first whose precondition evaluation returns true.
● The ‘default’ style is taken if no conditional style can be applied
45. Style Customizations
● Defined in a Layer
● Style Customization has a precondition
● More fine grained customization (than the Conditional Styles)
● Property Customization
○ target one EStructuralFeature of the Sirius style descriptions
○ applied on all styles or selected ones
47. Help Sirius find the elements to display
Use the best query language for the task
Synchronization options and advanced tools
Style and color customization
Additional mappings and tools contribution
Outline
48. ● var: direct access to Sirius variables
● feature: direct access to the named features of the current element
(and EMF pseudo-features)
● service: direct call of a Java method
(that follows some naming conventions, see documentation)
● [ /]: Acceleo3 expression
● aql: Acceleo Query Language
(introduced with Sirius 3.0, recommended since 3.1)
Note: extensible through extension point
Provided interpreters
50. Provided interpreters
AQL
● stronger type information than Acceleo3 - allows stronger type analysis
● implementation specifically tailored for the Sirius use case
● complex or custom logic: Java Services
● predicatable ordering and performance overhad
● simple for querying EMF models
● evaluation: fast and collect errors
● validation: strong and precise
Recommended query language for Sirius 3.1.0
51. Takeaways
Help Sirius find the elements to display
Use AQL and the specific interpreters
Think about your models topology
Use inverse cross references
Big models? Remember the contextual diagrams
Help the user with advanced tools
Conditional styles completely change the
appearance of an element
Style customizations allow a more fine grained
customization
Use Viewpoint, Diagram Extensions, Layers to deal with
different aspects in your modelers
Sys2Soft
Performances depends on your .odesign specification
Measure, Improve, Repeat