|
I wish there was a bi-modal programming language: a "design" mode, and an "implementation" mode. Design Mode: - Define domain model: entities, relationships, constraints
- Define behaviour: state machines, conditions, triggers, calculations
- Define architecture: systems, subsystems, modules, interfaces/apis
- Define rules for composition and communication
- Define extensibility points, service provider interfaces
- Define access points: ui, cli, api, lib
Implementation Mode: - Map domain model -> db schema, code constructs
- Map behaviour -> code to evolve domain model/state over time
- Map architecture -> libraries, executables, services, network topology
- Map composition rules -> snap-in components from architecture using defined interfaces
- Map extensibility points -> callbacks, hooks, discovery
- Map access points -> connect ui/api to model and behaviour
|