Styles of Software Architecture
Pipe and filter: input to one component is processed and the
resulting output is passed to next component.
Shared Repository: a data store is accessed by various components.
Buss: data is broadcast over a shared communication medium from which
components can choose to withdraw or ignore the data.
Layered Abstract Machine: components are stratefied into layers, where
data produced at one layer is available only to layers above.