Copyright 2021 Evident Systems LLC
Bobby Calderwood — September 15, 2021
Model-driven and low-code development


for event-based systems
The goal and the problem
• My name is Bobby, and my team makes https://oNote.com


• Our goal is to help software teams design, implement, and operate event-driven
systems


• Design with your team on our collaborative Event Modeling canvas


• Operate via platform integrations and streaming data visualizations


• Implement is a tricky one…
A brief (and incomplete) review


of model-driven and low-code approaches
Visual programming languages
• Notably Visual Basic, Scratch, Xojo, Xcode IDE and languages


• Not much to say here other than, “cool!”


• Often focused on UI and/or low-level program
fl
ow


• Designed for single-process, non-situated programs with transient state


• Still in common use, lots to learn from these tools
System modeling languages
• Notably UML


• In theory: comprehensive round-trip engineering, integrated documentation, shared model that
improves system comprehension among stakeholders


• In practice:


• Very little business stakeholder involvement/comprehension


• Mostly about system-level concerns (nerd stuff), not so much business and user concerns


• Lots of static nouns and OOP stuff, not great at describing state change over time


• Some helpful stuff: sequence diagrams, state machine diagrams
Business workflow and rules systems
• Notably BPMN, BPEL, jBPM, YAWL, Drools, RETE/Clara etc.


• Primarily about composing business logic rather than recording the business narrative of state
change over time


• Business events are transient and merely transition the FSM among states


• de facto: poorly named states that are more like events (“Approved by Management”)


• Business process diagramming is complex, and often devs confound business-process scale
constructs with programming-language constructs


• Initially intended for business users, but in reality end up being programmed by developers (tying
devs hands)
— Martin Fowler
Often the central pitch for a rules engine is that it
will allow the business people to specify the rules
themselves, so they can build the rules without
involving programmers. As so often, this can
sound plausible but rarely works out in practice.
Full stack low-code/no-code
• Lots of commercial offerings here, many as outgrowths of Business Work
fl
ow systems


• Designed to empower a legion of non-developer citizen coders, implicitly to work
around slow or unresponsive IT departments


• Often end up creating systems that don’t
fi
t in well with DevSecOps practice/ethos


• Black box ops, analytics, and security increases reliance on vendor


• Often very in
fl
exible and inextensible


• Easy to get going, but hit a wall if you want to go outside of well-trodden path
Open and standard interface definition languages
• Notably WSDL, OpenAPI/Swagger, GraphQL, gRPC, AsyncAPI


• Declarative and data-oriented rather than visual


• De
fi
ne (usually transient) communication protocols


• Not much structure/opinion around state over time via business events


• Great for de
fi
ning pieces of technical infrastructure and automating boring, repetitive
tasks
UI wire-framing tools
• Notably Figma, Adobe XD, Sketch.app, Balsamiq, etc.


• Similar to older visual programming environments like Visual Basic, Xcode, etc. but
almost exclusively focused on UI/UX design


• Some limited code generation, especially for UI-components-as-functions ecosystems
like React, Elm, other FRP-ish


• Emerging class of schema-driven form UI tooling
What has changed to justify a new approach to
model-driven and low-code development?
The need to understand the customer journey
Web
Call Center
Location
Mobile
Social Media
Email
The need to understand the customer journey
Web
Call Center
Location
Mobile
Social Media
Email
Business Event Log
The need to understand the customer journey
Web
Call Center
Location
Mobile
Social Media
Email
Business Event Log
The need for real-time
• Customer noti
fi
cation


• Decision making


• Analytics and machine learning


• Systems and data integration
Other factors
• Polyglot persistence


• Resurgence of functional programming ideas


• Better
fi
t for distributed computing


• Heavy in
fl
uence on UI development


• Components as functions that specify their data requirements


• Functional reactive state-management patterns, driven by business events


• Useful ideas emerging from Domain-Driven Design, and related communities
In short:


Business event-based application design
Requirements for event-based model-driven/low-code development
• A model for describing how state changes over time


• An extensible schema language for describing data: state, transition, transfer/
protocol


• Suitable output targets


• Intermediate representations


• Runtime languages, libraries, frameworks
Event Modeling describes state changes over time
Event Modeling describes state changes over time
• Focus on state change over time rather than business logic or system concerns


• Explicit patterns for integrating with external systems not under our control


• User experience design is
fi
rst-class


• Semantic data transfer objects (DTOs)


• Business logic
fi
ts into:


• Limited places


• Speci
fi
c types
Schema languages describe immutable data values
• Neutral: can target many output languages and formats


• Powerful and Flexible: can describe a wide variety of data structures


• Serializable and transmittable: can be saved and sent as part of an Event Model


• Extensible: can be extended to
fi
t new use-cases and output targets
What makes a suitable output target?
• DevSecOps friendliness!


• Git/SCM-amenable


• Easily integrated with CI/CD pipelines


• Change-log auditable


• No black-boxes!


• Intermediate representations vs. runtime code


• Programming-language neutral and/or broad coverage and support
Full-stack output targets
UI Components
Figma, etc. HTML/React output


Declarative, schema-based forms
Web Services


Interface De
fi
nition
gRPC via Protobufs/Avro


GraphQL


OpenAPI/Swagger
Event Processing
KSQL & ksqlDB


AsyncAPI


Event schemas as Avro/Protobufs/json-schema
It all comes together:


oNote generates Avro Protocol and


Event Schemas
Conclusion
• Model-driven and Low-code development are worthwhile pursuits, and need a refresh for
modern constraints and practices


• Don’t pursue low-code development to replace dev teams with citizen coders!


• Instead:


• Accelerate development with robust models and generation of real code and open-standard
intermediate representations


• Facilitate feedback from ops/production (coming to oNote soon!)


• Facilitate communication and learning along value chain via shared goals, incentives, and
models
Thank you!

Model-driven and low-code development for event-based systems | Bobby Calderwood, Evident Systems LLC

  • 1.
    Copyright 2021 EvidentSystems LLC Bobby Calderwood — September 15, 2021 Model-driven and low-code development for event-based systems
  • 2.
    The goal andthe problem • My name is Bobby, and my team makes https://oNote.com • Our goal is to help software teams design, implement, and operate event-driven systems • Design with your team on our collaborative Event Modeling canvas • Operate via platform integrations and streaming data visualizations • Implement is a tricky one…
  • 3.
    A brief (andincomplete) review of model-driven and low-code approaches
  • 4.
    Visual programming languages •Notably Visual Basic, Scratch, Xojo, Xcode IDE and languages • Not much to say here other than, “cool!” • Often focused on UI and/or low-level program fl ow • Designed for single-process, non-situated programs with transient state • Still in common use, lots to learn from these tools
  • 5.
    System modeling languages •Notably UML • In theory: comprehensive round-trip engineering, integrated documentation, shared model that improves system comprehension among stakeholders • In practice: • Very little business stakeholder involvement/comprehension • Mostly about system-level concerns (nerd stuff), not so much business and user concerns • Lots of static nouns and OOP stuff, not great at describing state change over time • Some helpful stuff: sequence diagrams, state machine diagrams
  • 6.
    Business workflow andrules systems • Notably BPMN, BPEL, jBPM, YAWL, Drools, RETE/Clara etc. • Primarily about composing business logic rather than recording the business narrative of state change over time • Business events are transient and merely transition the FSM among states • de facto: poorly named states that are more like events (“Approved by Management”) • Business process diagramming is complex, and often devs confound business-process scale constructs with programming-language constructs • Initially intended for business users, but in reality end up being programmed by developers (tying devs hands)
  • 7.
    — Martin Fowler Oftenthe central pitch for a rules engine is that it will allow the business people to specify the rules themselves, so they can build the rules without involving programmers. As so often, this can sound plausible but rarely works out in practice.
  • 8.
    Full stack low-code/no-code •Lots of commercial offerings here, many as outgrowths of Business Work fl ow systems • Designed to empower a legion of non-developer citizen coders, implicitly to work around slow or unresponsive IT departments • Often end up creating systems that don’t fi t in well with DevSecOps practice/ethos • Black box ops, analytics, and security increases reliance on vendor • Often very in fl exible and inextensible • Easy to get going, but hit a wall if you want to go outside of well-trodden path
  • 9.
    Open and standardinterface definition languages • Notably WSDL, OpenAPI/Swagger, GraphQL, gRPC, AsyncAPI • Declarative and data-oriented rather than visual • De fi ne (usually transient) communication protocols • Not much structure/opinion around state over time via business events • Great for de fi ning pieces of technical infrastructure and automating boring, repetitive tasks
  • 10.
    UI wire-framing tools •Notably Figma, Adobe XD, Sketch.app, Balsamiq, etc. • Similar to older visual programming environments like Visual Basic, Xcode, etc. but almost exclusively focused on UI/UX design • Some limited code generation, especially for UI-components-as-functions ecosystems like React, Elm, other FRP-ish • Emerging class of schema-driven form UI tooling
  • 11.
    What has changedto justify a new approach to model-driven and low-code development?
  • 12.
    The need tounderstand the customer journey Web Call Center Location Mobile Social Media Email
  • 13.
    The need tounderstand the customer journey Web Call Center Location Mobile Social Media Email Business Event Log
  • 14.
    The need tounderstand the customer journey Web Call Center Location Mobile Social Media Email Business Event Log
  • 15.
    The need forreal-time • Customer noti fi cation • Decision making • Analytics and machine learning • Systems and data integration
  • 16.
    Other factors • Polyglotpersistence • Resurgence of functional programming ideas • Better fi t for distributed computing • Heavy in fl uence on UI development • Components as functions that specify their data requirements • Functional reactive state-management patterns, driven by business events • Useful ideas emerging from Domain-Driven Design, and related communities
  • 17.
  • 18.
    Requirements for event-basedmodel-driven/low-code development • A model for describing how state changes over time • An extensible schema language for describing data: state, transition, transfer/ protocol • Suitable output targets • Intermediate representations • Runtime languages, libraries, frameworks
  • 19.
    Event Modeling describesstate changes over time
  • 20.
    Event Modeling describesstate changes over time • Focus on state change over time rather than business logic or system concerns • Explicit patterns for integrating with external systems not under our control • User experience design is fi rst-class • Semantic data transfer objects (DTOs) • Business logic fi ts into: • Limited places • Speci fi c types
  • 21.
    Schema languages describeimmutable data values • Neutral: can target many output languages and formats • Powerful and Flexible: can describe a wide variety of data structures • Serializable and transmittable: can be saved and sent as part of an Event Model • Extensible: can be extended to fi t new use-cases and output targets
  • 22.
    What makes asuitable output target? • DevSecOps friendliness! • Git/SCM-amenable • Easily integrated with CI/CD pipelines • Change-log auditable • No black-boxes! • Intermediate representations vs. runtime code • Programming-language neutral and/or broad coverage and support
  • 23.
    Full-stack output targets UIComponents Figma, etc. HTML/React output Declarative, schema-based forms Web Services Interface De fi nition gRPC via Protobufs/Avro GraphQL OpenAPI/Swagger Event Processing KSQL & ksqlDB AsyncAPI Event schemas as Avro/Protobufs/json-schema
  • 24.
    It all comestogether: oNote generates Avro Protocol and Event Schemas
  • 25.
    Conclusion • Model-driven andLow-code development are worthwhile pursuits, and need a refresh for modern constraints and practices • Don’t pursue low-code development to replace dev teams with citizen coders! • Instead: • Accelerate development with robust models and generation of real code and open-standard intermediate representations • Facilitate feedback from ops/production (coming to oNote soon!) • Facilitate communication and learning along value chain via shared goals, incentives, and models
  • 26.