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.