0% found this document useful (0 votes)
73 views19 pages

Software Architecture Essentials

The document discusses different types of software architectures including architectural styles like layered, object-based, data-centered, and event-based. It also covers centralized and decentralized system architectures, providing examples of client-server and peer-to-peer models.

Uploaded by

Habtamu Asayto
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
73 views19 pages

Software Architecture Essentials

The document discusses different types of software architectures including architectural styles like layered, object-based, data-centered, and event-based. It also covers centralized and decentralized system architectures, providing examples of client-server and peer-to-peer models.

Uploaded by

Habtamu Asayto
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 19

Chapter 2 - Architectures

Outline

1. Architectural Styles
2. System Architecture

2
Introduction

 How to organize the collection of software components


 logical organization and
 physical organization
 i.e., software architectures: how they are organized and how
they communicate
 We will discuss
 Architectural styles
 System architectures: centralized vs decentralized ones

3
2.1 Architectural Styles
 Need to consider the logical organization of distributed
systems into software components- Software
Architecture
 The notion of an architectural style is important

 Such a style is formulated in terms of components, the

way that components are connected to each other, the


data exchanged between components and finally how
these elements are jointly configured into a system
 Basic ideas:
 a component is a modular unit with well-defined
required and provided interfaces that is replaceable
within its environment (OMG, 2004b).
 a connector is a mechanism that mediates
communication, coordination, or cooperation among
components, e.g., facilities for RPC, message
passing, or streaming data
4
2.1 Architectural Styles …
 There are various architectural styles
 Layered architectures
 Object-based architectures
 Data-centered architectures
 Event-based architectures

5
 Layered architectures
 components are organized in a layered fashion where a
component at layer Li is allowed to call components at
the underlying layer Li-1, but not the other way around;
e.g., network layers

the layered architectural style


6
 Object-based architectures
 each object corresponds to a component and these
components are connected through a (remote)
procedure call mechanism (client-server paradigm)

the object-based architectural style

7
 Data-centered architectures
 processes communicate through a common (passive or
active )repository; e.g., a shared distributed file system
 Event-based architectures
 processes communicate through the propagation of events
 publish/subscribe systems
 processes publish events and the middleware ensures that
only those processes that subscribed to those events will
receive them

the event-based architectural style 8


 A shared data spaces
 event-based architectures combined with data-centered
architectures
 processes are decoupled in time

the shared data-space architectural style

9
2.2 System Architectures
 how many distributed systems are actually organized by

considering where software components are placed.


 the logical organization of distributed systems into
software components or how are processes organized in a
system
 Two forms of Software architecture also called a system
architecture
 Centralized Architecture
 Decentralized Architecture

10
2.2.1 Centralized Architectures
 thinking in terms of clients requesting services from
servers
 In the basic client-server model, processes in a distributed system are
divided into two (possibly overlapping) groups.
 A server is a process implementing a specific service, for example, a file
system service or a database service.
 A client is a process that requests a service from a server by sending it a
request and subsequently waiting for the server's reply.
 This client-server interaction, also known as request-reply

general interaction between a client and a server


11
 Communication between client and server can be
 by a connectionless protocol if the underlying network is
fairly reliable (LAN);
 efficient since there is no much overhead
 but assuring reliability is difficult
 when messages are lost or corrupted let the client
send the request again; applicable only for
idempotent operations
 an operation is idempotent if it can be repeated
multiple times without harm; e.g., reading a record
in a database
 see later in Chapter 8: Fault Tolerance
 by reliable connection-oriented protocol if the underlying
network is unreliable (WAN)
 establishing and terminating connections is
expensive 12
 Application Layering
 no clear distinction between a client and a server;
 for instance a server for a distributed database may act
as a client when it forwards requests to different file
servers
 three levels exist
 the user-interface level: implemented by clients and
contains all that is required by a client; usually
through GUIs, but not necessarily
 the processing level: contains the applications
 the data level: contains the programs that maintain
the actual data dealt with

13
 e.g., the general organization of an Internet search engine
into three different layers

14
 Client-Server Architectures
 how to physically distribute a client-server application
across several machines
 Multitiered Architectures

15
Two-tiered architecture: alternative client-server organizations
(a) put only terminal-dependent part of the user interface on the
client machine and let the applications remotely control the
presentation
(b) put the entire user-interface software on the client side
(c) move part of the application to the client, e.g. checking
correctness in filling forms
16
(d) and (e) are for powerful client machines (more popular)
three tiered architecture: an example of a server acting as a client
 an example is the organization of Web sites

17
2.2.2 Decentralized Architectures
 vertical distribution: the ones discussed so far
where the different tiers correspond directly with the
logical organization of applications; place logically
different components on different machines
 horizontal distribution: physically split up the client
or the server into logically equivalent parts
 an example is a peer-to-peer system where
processes are equal and hence each process acts
as a client and a server at the same time (servent)
 read about the different approaches of peer-to-
peer architecture - pages 44 - 51 and about
Architectures versus Middleware - pages 54 - 66

18
 another example is the horizontal distribution of a Web
service

19

You might also like