Chapter 4 - Fundamentals of Software Design

  • Software Design: the creative process of transforming a problem described by the requirements specification into a software solution
    • High-Level Design
      • software architecture
      • overall structure
      • relations among components
      • properties of components/relations
    • Low-Level Design
      • logical, detailed design of individual components
  • Software design is a heuristic, sloppy process
    • a good solution may only be subtly different from a poor one
  • In agile development, software design is seldom a separate phase as in the waterfall model
    • intertwined with other activities
    • developers make many design decisions while coding