# Bounded Contexts ```plantuml @startuml package "configuration" { [TargetCommand] } package "desktop" { [DesktopCommand] } package "server" { [ServerCommand] } server ..> configuration desktop ..> configuration using ..> used @enduml ``` # DDD in Provs ```plantuml @startuml 'https://plantuml.com/class-diagram package application { class Application } package domain { class Service { cleanup (): means remove parts (install & configuration) to enable e.g. re-provision in some cases, results in an error otherwise. provision (): means install & configure. install (): install packages, files but not configuration files. Fire & forget (re-) installation is possible. configure (): install and apply configuration. } class Domain } Application ..> Service Application ..> Domain package infrastructure { class Repository class Provs { create(): create a new item - might also have a parameter like: skipIfExisting delete(): delete an item - might also have a parameter like: failIfNotExisting check(): check if an item exists (returns true resp. false) checkContent(): check content of item (returns true resp. false), e.g. checkFileContent checkRuns(): check if container/service is running (returns true resp. false) start(): start e.g. a container (or a service) stop(): stop a container/service remove(): remove e.g. a container or image —————————————————————————————————————————————————————— () Remark1: types can be e.g.: "file", "dir", "user", "container" (depending on the command) Remark2: References to external software (or modules) should generally follow the external naming conventions. (E.g. for kubectl commands the verbs might include: apply, delete, get, describe, etc) } } Service ..> Domain Service ..> Service Service ..> Repository Service ..> Provs using ..> used @enduml ```