Design Approaches

Top-down and bottom-up design

What

Can explain top-down and bottom-up design

Multi-level design can be done in a top-down manner, bottom-up manner, or as a mix.

  • Top-down: Design the high-level design first and flesh out the lower levels later. This is especially useful when designing big and novel systems where the high-level design needs to be stable before lower-level designs can be created.
  • Bottom-up: Design lower-level components first and put them together to create the higher-level system later. This is not usually scalable for bigger systems. One instance where this approach might work is when designing a variation of an existing system or repurposing existing components to build a new system.
  • Mix: Design the top levels using the top-down approach but switch to a bottom-up approach when designing the bottom levels.

Exercises:

Which is better?




Agile design

What

Can explain agile design

Agile design can be contrasted with full upfront design as follows:

Agile designs are emergent; they are not defined up front. Your overall system design will emerge over time, evolving to fulfill new requirements and take advantage of new technologies as appropriate. Although you will often do some initial architectural modeling at the very beginning of a project, this will be just enough to get your team going. This approach does not produce a fully documented set of models before you can begin coding. -- adapted from agilemodeling.com


Exercises:

Statement about agile design