Why Good Design Is Like a Map: Strategic vs Tactical Software Design
This article explains how detailed design documentation, the distinction between strategic and tactical design, and the CRC (Class‑Responsibility‑Collaborator) method together form a flexible, evolving blueprint that guides development without over‑prescribing implementation details.
Design Importance
Design documents should be as detailed as possible so that junior developers can implement code directly.
Design documentation should be as detailed as possible so that low‑level developers can simply write code. At a high level, describe object relationships in detail; At a low level, describe object interactions in detail. Include method implementation details and parameter annotations. Do not forget to list all fields in each class. When writing code, never deviate from the design document, no matter what you discover.Strategic vs Tactical Design
Design can be divided into two layers: strategic and tactical. Early‑stage design belongs to the strategic layer and should only describe the overall strategy without delving into detailed specifics.
Precision
If you yourself are unclear about the subject, you cannot describe it precisely.Strategic design should not specify exact methods, parameters, fields, or interaction sequences; those details belong to the tactical phase during development.
A good strategic design acts like a map, guiding direction without dictating exact routes. Design is a starting point that evolves throughout the project lifecycle.
Do not start with tactical design; focus on class responsibilities. The CRC (Class‑Responsibility‑Collaborator) card method helps define class name, responsibilities, and collaborators.
Class name.
Responsibility: what it should do?
Collaborators: which other objects it works with?
A good design provides correct guidance, not precise prescriptions; it should avoid uncertain or changeable details and serve as a goal rather than a detailed recipe.
Good design is like a map that evolves, offering direction without being a colonized path that manipulates you.
Balancing the Art
“Don’t do massive design early” means you should avoid heavy design tasks before code validation, not that you should skip design altogether.
Even if the initial design becomes obsolete, the design process remains essential; planning itself is indispensable.
Whiteboards, sketches, and sticky notes are effective design tools, while complex modeling tools can distract rather than inspire.
Architect's Alchemy Furnace
A comprehensive platform that combines Java development and architecture design, guaranteeing 100% original content. We explore the essence and philosophy of architecture and provide professional technical articles for aspiring architects.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
