Exercise 5.1

Vitruvius, the Roman architectural theorist, set three goals of architecture:

  • Utilitas
  • Venustas
  • Firmitas

What are these and how do they apply to software design, if at all?

Exercise 5.2

Explain the main point of F. Brooks’s No Silver Bullet, including examples of essential vs. accidental sources of complexity.

Exercise 5.3

Construct a class diagram that models the department website domain.

Exercise 5.4

Explain one of the following design patterns by identifying the problem it solves, specifying its structure and giving an example of its use.

  • Singleton
  • Adapter
  • Iterator
  • Factory Method

Patterns for React Native tend to be higher-level in nature, e.g.:

  • Component Composition
  • Provider
  • Higher-Order Components