Architecture
System Category Consists of
   A set of components(eg: a database, computational modules) that
    will perform a function required by the system.
   The set of connectors will help in coordination, communication,
    and cooperation between the components.
   Conditions that defines how components can be integrated to
    form the system.
   Semantic models that help the designer to understand the overall
    properties of the system.
The use of architectural styles is to establish a structure for all the
components of the system.
Taxonomy of Architectural Styles
1] Data centered architectures :
   A data store will reside at the center of this architecture and is
    accessed frequently by the other components that update, add,
    delete, or modify the data present within the store.
   The figure illustrates a typical data-centered style. The client
    software accesses a central repository. Variations of this approach
    are used to transform the repository into a blackboard when data
    related to the client or data of interest for the client change the
    notifications to client software.
   This data-centered architecture will promote integrability. This
    means that the existing components can be changed and new
    client components can be added to the architecture without the
    permission or concern of other clients.
   Data can be passed among clients using the blackboard
    mechanism.
Advantages of Data centered architecture:
   Repository of data is independent of clients
   Client work independent of each other
   It may be simple to add additional clients.
   Modification can be very easy
Data centered architecture
2] Data flow architectures:
     This kind of architecture is used when input data is transformed
      into   output   data   through    a   series   of   computational
      manipulative components.
   The figure represents pipe-and-filter architecture since it uses
    both pipe and filter and it has a set of components called filters
    connected by lines.
   Pipes are used to transmitting data from one component to the
    next.
   Each filter will work independently and is designed to take data
    input of a certain form and produces data output to the next filter
    of a specified form. The filters don’t require any knowledge of the
    working of neighboring filters.
   If the data flow degenerates into a single line of transforms, then
    it is termed as batch sequential. This structure accepts the batch
    of data and then applies a series of sequential components to
    transform it.
Advantages of Data Flow architecture:
   It encourages upkeep, repurposing, and modification.
   With this design, concurrent execution is supported.
Disadvantage of Data Flow architecture:
   It frequently degenerates to batch sequential system
   Data flow architecture does not allow applications that require
    greater user engagement.
   It is not easy to coordinate two different but related streams
Data Flow architecture
3] Call and Return architectures
It is used to create a program that is easy to scale and modify. Many
sub-styles exist within this category. Two of them are explained
below.
   Remote procedure call architecture: This components is used to
    present in a main program or sub program architecture
    distributed among multiple computers on a network.
   Main program or Subprogram architectures: The main program
    structure decomposes into number of subprograms or function
    into a control hierarchy. Main program contains number of
    subprograms      that    can     invoke     other     components.
4] Object Oriented architecture
The components of a system encapsulate data and the operations
that must be applied to manipulate the data. The coordination and
communication between the components are established via the
message passing.
Characteristics of Object Oriented architecture:
   Object protect the system’s integrity.
   An object is unaware of the depiction of other items.
Advantage of Object Oriented architecture:
   It enables the designer to separate a challenge into a collection of
    autonomous objects.
   Other objects are aware of the implementation details of the
    object, allowing changes to be made without having an impact on
    other objects.
5] Layered architecture
   A number of different layers are defined with each layer
    performing a well-defined set of operations. Each layer will do
    some operations that becomes closer to machine instruction set
    progressively.
   At the outer layer, components will receive the user interface
    operations and at the inner layers, components will perform the
    operating system interfacing(communication and coordination
    with OS)
   Intermediate layers to utility services and application software
    functions.
   One common example of this architectural style is OSI-ISO (Open
    Systems      Interconnection-International   Organisation    for
    Standardisation) communication system.
Layered architecture