Software architecture design is the work of deciding a system’s major boundaries, responsibilities, data flow, and operational constraints before implementation details take over.
Questions to explore:
- Which decisions are difficult or expensive to change later?
- What should a design document make explicit before coding starts?
- How can a system stay simple while leaving room for likely change?