Lean Architecture and DCI concepts
Source code and architecture should reflect the end user mental model of the world
Enage all stakeholders to get a cross-functional team from the start to get insight and be able to defer decisions to the (last) responsible moment
Design-by-contract gets us closer torunning code even faster
Domain model can be build in a coupleof weeks using abstract base classes
Lightweigh use cases capturessystem functionality
Use case scenarios are implementedas traits/rolemethods/mixins
We go to the code for what and how, but only the authors or theirdocumentation tell us why
What the system is vs. what the system does
Is relates to form/architecture
Does relates to functionality
Lean Principles
Focus on long term results
Everyone has to participate
Code just in time
Continues flow
Software architecture should support the enterprisevalue stream
Agile is about doing. Lean is about thinking before doing (to reduce waste)
Rework during production is waste
Rework in design saves costly rework in production
The hard part of design is the partitioning of a systeminto modules and collections of related APIs
Waiting is waste
Documentation is for communication AND to remember perspectives and decisions
Define the problem: The difference betwen current state and the desired state
First phase
Screen design to ensure a usable system
Input to domain model to scope the domain
Use case, to organize the timing of responsible decisions