Architectural design workflow
Select scenarios: criticality and risk
Identify main classes and their responsibility
Distribute behavior on classes
Structure in subsystems, layers, define interfaces
Define distribution and concurrency
Implement architectural prototype
Derive tests from use cases