Decomposition

Decomposition can be important to break a problem down into smaller parts

A decomposition can be nested, having a hierarchy where each lower decomposition contains more and more details.

Functional Decomposition

Functional decompostion creates modules and places functions/requirements in them
Top-level functions are the ones listed in the requirements specification
Then, lower level designs can divide the functions into subfunctions assigned to smaller modules
Functional decomposition describes which modules call each other

Data-Oriented Decomposition

Data-oriented decomposition provides insight into data structure.
The high-level design describes the data structures.
With lower-level designs describing how they are used in modules and how real-world data matches the modelled data types.

Process-Oriented Decomposition

  • Focuses on concurrent processes
  • High level design focusses on tasks and assigns them to runtime processes
  • High level design describes how tasks can coordinate
  • Lower level design describes processes in more detail

Event-Oriented Decomposition

  • Focuses on system events
  • Assigns event handling responsiblity to modules
  • High-level overview catlaogues the expected input events
  • Lower level descriptions decompose the system into states and describe how events trigger state transformations

Object-Oriented Decomposition

  • Assigns objects to modules
  • High-level design identifies objects, object types and object relations
  • Lower-level designs describe object attributes and operations

Modularity

  • A modular design is defined as a design with atomic software units with well-defined inputs and outputs
  • A software unit is well-defined if it is accurately specified and describes externally visible behaviour properly