marp | theme | class | author |
---|---|---|---|
true |
uncover |
invert |
Ludger Solbach |
Understanding complex systems
- lightweight open source modelling
- data driven and text based -> developer friendly
- visualization
- queries
- reports
System models for
- thinking
- communication
- documentation
- querying
Drawing tools e.g. Visio, Gliffy, ExcaliDraw
- no model, only pretty pictures
- no reuse between diagrams
Commercial modelling tools
- e.g. Enterprise Architect, Magic Draw
- comprehensive but complex
- license needed
- concept models, concept maps and glossaries
- system landscape and architecture, deployment
- use cases, state machines and class models
- hierarchical models and element references
- composable / reusable
- extensible
- selection of model elements for a specific
- context
- audience
- level of detail
- C4 views for system architecture
- system context, container, component
- deployment, system landscape, dynamic
separation of models and views view specific customization of model elements
- queries as data *
- PlantUML
- C4 views, UML views
- use case, state machine and class diagrams
- styling and sprite support
- C4 views, UML views
- GraphViz
- concept maps
- Markdown
- glossaries
- textual representations of graphical views
- exports
- JSON if you need to process models with languages without EDN support
- Structurizr experimental
Similar to JSON but richer set of data literals Subset of Clojure
Numbers: 123
Strings: "Hello"
Keywords: :keyword
, :namespaced/keyword
Vectors: ["a" "b" "c"]
Sets: #{"a" "b" "c"}
Maps: {:a "a" :b "b" :c "c"}
Data structures can be nested
#{ ; set of model elements
{:el :system
:id :example/system1
:name "Example System"
:desc "An example system to show how to model in overarch"
:ct #{ ; set of children
{:el :container
:id :example/container1
:name "Example Container"
:tech "Java"
:desc "Deployable application in the example system"}}}
...
}
C4 Model: Architecture Model, Deployment Model, Dynamic Model UML: Use Case Model, Class Model, State Machines Concept Maps: Concept Model
:person :system :container :component :enterprise-boundary :context-boundary
:request :response :publish :subscribe :send :dataflow :rel
:node :system :container
:deployed-to :link :rel
:package :interface :class :field :method :enum :enum-value :stereotype :annotation :namespace :function :protocol
:inheritance :implementation :composition :aggregation :association :dependency
:use-case :actor :person :system :context-boundary
:uses :include :extends :generalizes
:state-machine :start-state :state :end-state :fork :join :choice :history-state :deep-history-state
:transition
:concept :person :system :container :enterprise-boundary :context-boundary
:is-a :has :rel
- template based
- reports
- project scaffolding
- code
- dynamic views
Criteria map: {:namespace "banking" :el container} Vector of maps: [{:namespace "banking" :el :container} {:namespace "banking" :el :request}]
Views define
- which model elements rendered
- how the model elements are rendered
PlantUML: C4 Views, UML Views Graphviz: Concept Maps Markdown: Glossary
JSON: complete model
Structurizr: architecture/deployment model and views only
EDN: (work in progress)
Overarch CLI