📝§ Software Design
Software Design is a larger activity that includes both high-level § Software Architecture and low-level component design.
- § Software Architecture
- Constraints as guide rails
- Design Stamina Hypothesis
- Technical design speeds up implementation by avoiding rework
- Conway’s law—architecture reflects communication structure of organization
- Theory Building View of programming
- Metaphors we use influence what solutions we see
- Encapsulation is a subset of Modularity
- “Goto considered harmful” is about unconstrained goto
- Make decisions at the Last Responsible Moment
- Reification
- Intuitive solutions have to be rationalized
- Postel’s Law
- Lexorank
- Data outlives code
- Software development principles
- DRY: Don’t repeat yourself
- Deep/shallow modules
- Separate storage and query layers (data store design)
- Sign-offs encourage Big Design Up Front
Resources
Backlinks
- 📝 Domain-driven design
- 📝 Uniform access principle
- 📝 Design issue vs tool issue
- 📝 § Complexity
- 📝 Intuitive solutions have to be rationalized
- 📝 Involve the team into design
- 📝 By documenting a design, the designer exposes himself to the criticism
- 📝 How to apply architectural knowledge to programming language design?
- 📝 Architecture is a special case of Software Design
- 📝 Deep/shallow modules
- 📝 § Software Architecture
- 📝 Design Stamina Hypothesis
- 📝 API/SLOC
- 📝 Functional requirements do not drive architecture
- 📝 § Software Development
- 📝 Design Patterns
- 📝 § Programming