Large systems are decomposed into subsystems Sub-systems provide related services Initial design process includes Identifying sub-systems Establishing a framework for sub-system control and communication Architectural Styles Data-centered architecture style Data-flow architectures Call and return architecture Object-oriented architecture Layered architecture Data-centered architecture style A data store (Ex., a file or database) resides at the center of this architecture and is accessed frequently by other components. Client software accesses a central repository. In some cases the data repository is passive. That is, client software accesses the data independent of any changes to the data or the actions of other client software. Data-flow architectures This architecture is applied when input data are to be transformed. A set of components (called filters) connected by pipes that transmit data from one component to the next. Each filter works independently of those components upstream and downstream, is designed to expect data input of a certain form, and produces data output (to the next filter) of a specified form.