Walkthrough
Lets say we're designing a snazzy new home audio system. We might start off by picturing it in the home, and the systems it might talk to:
Happy in the knowledge that we know what our system will talk to, we open it up and define the innards:
Now what's going on in that amplifier?
Notice how there is no connection between 'speaker' and 'user'? The amplifier doesn't care about that, it just cares about its inputs and outputs, so that is removed from the diagram. Don't try to say too much!
All of those diagrams, and more, are enabled by the existence of a single model file:
config:
writer: graphviz
model:
elements:
- name: user
kind: actor
- name: sound-system
children:
- name: speaker
children:
- name: enclosure
tags: [mechanical]
- name: driver
tags: [electronic, mechanical]
- connector
- cable
associations:
- source: cable
destination: connector
- source: connector
destination: driver
- source: driver
destination: enclosure
- name: amplifier
children:
- name: connector
tags: [electronic]
- name: bluetooth receiver
tags: [electronic]
- name: ac-dc converter
tags: [electronic]
- name: mixer
tags: [electronic]
- name: amplifier
tags: [electronic]
- name: power button
tags: [electronic, mechanical]
associations:
- source: bluetooth receiver
destination: amplifier
- source: ac-dc converter
destination: bluetooth receiver
- source: mixer
destination: amplifier
- source: ac-dc converter
destination: amplifier
- source: amplifier
destination: connector
- source: power button
destination: ac-dc converter
associations:
- source: amplifier/connector
destination: speaker/cable
- name: app
children:
- bluetooth driver
- spotify client
- ui
associations:
- source: ui
destination: spotify client
- source: spotify client
destination: bluetooth driver
associations:
# Sound system
- source: sound-system/speaker/driver
destination: user
tags: [sound]
- source: user
destination: sound-system/amplifier/power button
tags: [press]
# App
- source: user
destination: app/ui
- source: app/bluetooth driver
destination: sound-system/amplifier/bluetooth receiver
tags: [control]
Installation