3 - architetture software - architectural styles

143
Paolo Ciancarini Architectural styles

Upload: majong-devjfu

Post on 29-Nov-2014

5.544 views

Category:

Technology


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: 3 - Architetture Software - Architectural styles

Paolo Ciancarini

Architectural styles

Page 2: 3 - Architetture Software - Architectural styles

2

Agenda   Types of architectural styles   Basic decomposition techniques

  layering, tiering

  Architectural styles   Pipes and filters   Repository   Client/Server

  two-tiers; three-tiers; n-tiers   Model/View/Controller   Service-Oriented   Peer-To-Peer

Page 3: 3 - Architetture Software - Architectural styles

3

Layers and tiers   The architectural definition of a system is generally

achieved by decomposing the architecture into subsystems, following a layered and/or a partition based approach (tiers)

  These are orthogonal approaches:   A layer is a level in an architectural stack in charge of

providing services (e.g., a kernel)   A tier is the organization of several peer modules within

the same layer (e.g., a user interface)

Page 4: 3 - Architetture Software - Architectural styles

4

Layers   An architecture which has a hierarchical structure,

consisting of an ordered set of layers, is layered   A layer is a set of subsystems which are able to provide

related services, that can be realized by exploiting services from other layers

  A layer depends only from its lower layers (i.e., layers which are located at a lower level into the architecture)   A layer is only aware of lower layers

Page 5: 3 - Architetture Software - Architectural styles

Layers of virtual machines

5

Page 6: 3 - Architetture Software - Architectural styles

Layers: component diagram   Connectors for layered systems

are often procedure calls   Each level implements a

different VM with a specific input language

6

Page 7: 3 - Architetture Software - Architectural styles

Closed vs open layers   Closed architecture: the i-th layer can only have

access to the layer (i-1)-th   Open architecture: the i-th layer can have access

to all the underlying layers (i.e., the layers lower than i)

7

Page 8: 3 - Architetture Software - Architectural styles

8

Layers – Closed architecture   The i-th layer can only invoke the services and the

operations which are provided by the layer (i-1)-th   The main goals are the system maintainability and

high portability (eg. Virtualization: each layer i defines a Virtual Machine - VMi)

VM4

VM3

VM2

VM1 C1

attr op

C1 attr op

C1 attr op

C1 attr op

C1 attr op

C1 attr op

C1 attr op

C1 attr op

C1 attr op

Page 9: 3 - Architetture Software - Architectural styles

9

Closed layers: ISO/OSI stack

The ISO/OSI reference model defines 7 network layers, characterized by an increasing level of abstraction Eg. The Internet Protocol (IP) defines a VM at the network level able to identify net hosts and transmit single packets from host to host

Application

Presentation

Session

Transport

Network

DataLink

Physical

Leve

l of a

bstra

ctio

n

Page 10: 3 - Architetture Software - Architectural styles

10

Layers – Open architecture   The i-th layer can invoke the services and the

operations which are provided by all the lower layers (the layers lower than i)

  The main goals are the execution time and efficiency

C1 attr op

C1 attr op

C1 attr op

C1 attr op

C1 attr op

C1 attr op

C1 attr op

C1 attr op

C1 attr op

Page 11: 3 - Architetture Software - Architectural styles

Xlib

Xt

Motif

Application Open layers: OSF/Motif

Xlib provides low-level drawing facilities; Xt provides basic user interface widget management; Motif provides a large number of sophisticated widgets; The Application can access each layer independently

Page 12: 3 - Architetture Software - Architectural styles

Creating layers: façade

12

Page 13: 3 - Architetture Software - Architectural styles

Creating layers: façade

13

Page 14: 3 - Architetture Software - Architectural styles

14

Tiers   Another approach to managing complexity consists

of partitioning a system into sub-systems (peers), which are responsible for a class of services

Page 15: 3 - Architetture Software - Architectural styles

15

Page 16: 3 - Architetture Software - Architectural styles

Typical tiered architecture

16

Page 17: 3 - Architetture Software - Architectural styles

4 tiers architecture

17

Page 18: 3 - Architetture Software - Architectural styles

Layers and tiers   Typically, a complete decomposition of a given

system comes from both layering and partitioning   First, the system in divided into top level subsystems

which are responsible for certain functionalities (partitioning)

  Second, each subsystem is organized into several layers, if necessary, up to the definition of simple enough layers

18

Page 19: 3 - Architetture Software - Architectural styles

19

Architectural styles   Several architectural styles have been defined in

the literature of software engineering.   They can be used as the basis for configuring

software architectures.   The basic styles include:

  Pipes and filters   Repository   Client/Server: two-tiers; three-tiers; n-tiers   Model/View/Controller   Service-Oriented   Peer-To-Peer

Page 20: 3 - Architetture Software - Architectural styles

Architectural variants

Page 21: 3 - Architetture Software - Architectural styles

Pipes and Filters style

Page 22: 3 - Architetture Software - Architectural styles

Pipe and Filter Architecture

  Main components:   Filter: process the a stream of input data to some out

put data   Pipe: a channel that allows the flow of data

read input file process file

filter

pipe

This architecture style focuses on the dynamic (interaction) rather than the structural

Page 23: 3 - Architetture Software - Architectural styles

Batch sequential data flow

23

222 U 111 I 333 D -123 U

Validate 222 U 111 I 333 D

sort111 I 222 U 333 D

Update100 ----111 ----200 ----222 ----444 ----

100 ---200 ---222 ---333 ---444 ---

Generate Report

Sortedtransaction

Validated transaction

Updated Master file

Rejected transaction

-123 U

Master file

Reports

Transaction File

Page 24: 3 - Architetture Software - Architectural styles

Pipe and Filter : UNIX shell   UNIX shell command line processing of the pipe symbol: “l”

the output from the command to the left of the symbol, l, is to be sent as input to the command to the right of the pipe;

this mechanism got rid of specifying a file as std output of a command and then specifying that same file as the std input to another command, including possibly removing this intermediate file afterwards

Example : counting occurrences in a file I have a mailinglist file called “swarch.txt” cat swarch.txt | grep studio | wc

Note the pipe symbol, l

Page 25: 3 - Architetture Software - Architectural styles

More Modern Version of Pipe-filter

  Consider the MS Office Product

  Specifically --- think about how the component called “copy” works in conjunction with the component called “paste” across office product (e.g. spread sheet to word document )

  The clipboard as a “pipe”

How may this be extended to the way e-mail with file attachment work?

Page 26: 3 - Architetture Software - Architectural styles

Pipe-Filter example

  The high level design solution is decomposed into 2 parts (filters and pipes):   Filter is a service that transforms a stream of input data into a stream of

output data   Pipe is a mechanism or conduit through which the data flows from one

filter to another

Input time cards

Prepare for Check processing Process Checks

Problems that require batch file processing seem to fit this: payroll and compilers

Page 27: 3 - Architetture Software - Architectural styles

Pipe – Filter with error processing

  Even if interactive error processing is difficult, batch error processing can be done with a pipe and filter architecture

Input time cards

Validate for payroll processing

Automatically Process Checks

Manually Reprocess Card and Cut Check

Payroll report Do the data streams need to be synchronized here for report?

Splitting the good time cards from the bad ones

Page 28: 3 - Architetture Software - Architectural styles

Pipes and filters   Pipe: communication channel   Filter: computing component

  Filter 1 may only send data to Filter 2   Filter 2 may only receive data from Filter 1   Filter 1 may not receive data   Filter 2 may not send data   Pipe is the data transport mechanism

Filter 1 (Source)

Filter 2 (Sink)

Pipe

Pipe input output

output input * 1

* 1

Filter

+Read() +Write()

Page 29: 3 - Architetture Software - Architectural styles

Pipe and Filter Class Diagram

Filter+Read()+Write()

Pipe

+read()

Data Source

+write()

Data Sink

Page 30: 3 - Architetture Software - Architectural styles

Pipe and Filter Sequence Diagram

data source:Data Source

filter1:Filter

pipe:pipe

filter2:Filter

data sink:Data Sink

R

write

W

read

Filter1

Data Source Filter1 Filter2 Data Sink

pipe

Filter2

Page 31: 3 - Architetture Software - Architectural styles

Data flow types There are three ways to make the data flow:

  Push only (Write only)   A data source may pushes data in a downstream   A filter may push data in a downstream

  Pull only (Read only)   A data sink may pull data from an upstream   A filter may pull data from an upstream

  Pull/Push (Read/Write)   A filter may pull data from an upstream and push

transformed data in a downstream

Page 32: 3 - Architetture Software - Architectural styles

Active or passive filters   An active filter pulls in data and push out the transformed

data (pull/push); it works with a passive pipe which provides read/write mechanisms for pulling and pushing.   The pipe & filter mechanism in Unix adopts this mode.   The PipedWriter and PipedReader classes in Java are also passive

pipes that active filters must use to drive the data stream forward

  A passive filter lets connected pipes to push data in and pull data out. It works with active pipes that pull data out from a filter and push data into the next filter. The filter must provide the read/write mechanisms in this case.   This is very similar to the data flow hardware architecture

Page 33: 3 - Architetture Software - Architectural styles

Pipe and Filter Sequence Diagram

data source Filter 1 Pipe Filter 2 data sink

Read

Read Read

Write

Write

Read

Write

Read

( blocking )

active Pull /push

passive Pull /push Push only Pull only

active Pull /push

Page 34: 3 - Architetture Software - Architectural styles

“Architectural” package diagram

34

<<metaclass>> Component

<<metaclass>> Connector

<<stereotype>> Filter

<<stereotype>> Pipe

UML

Pipes&filters

Page 35: 3 - Architetture Software - Architectural styles

Component diagram

35

<<filter>> <<component>>

pic

<<filter>> <<component>>

eqn

<<pipe>> <<pipe>>

<<filter>> <<component>>

tbl

<<filter>> <<component>>

troff

<<pipe>> <<pipe>> <<pipe>> <<pipe>> <<pipe>> <<pipe>>

Page 36: 3 - Architetture Software - Architectural styles

Pipes and Filters: pro and cons

  Advantages:   Filters are self containing processing services that perform a

specific function thus the style is cohesive   Filters communicate (pass data most of the time) through pipes

only, thus the style results in low coupling

  Disadvantages:   The architecture is static (no dynamic reconfiguration)   Filter processes which send streams of data over pipes is a

solution that fits well with heavy batch processing, but may not do well with any kind of user-interaction.

  Anything that requires quick and short error processing is still restricted to sending data through the pipes, possibly making it difficult to interactively react to error-events.

Page 37: 3 - Architetture Software - Architectural styles

Repository-based style

Page 38: 3 - Architetture Software - Architectural styles

Shared Data   Very common in information systems where data is shared

among different functions   A repository is a shared data-store with two variants:

  Repository style: the participating parties check the data-store for changes

  Blackboard (or tuple space) style: the data-store alerts the participating parties whenever there is a data-store change (trigger)

Patient database

Physician diagnosis

Pharmacy & drug processing

Lab testing

Accounting & administration

Problems that fit this style have the following properties:

1. All the functionalities work off a shared data-store 2. Any change to the data-store may affect all or some of the functions

3. All the functionalities need the information from the data-store

Page 39: 3 - Architetture Software - Architectural styles

Repository Architecture

39

Agent 1

Agent 3

Agent 2

Agent n

Agent 4

Repository

Page 40: 3 - Architetture Software - Architectural styles

Repository Architecture   The subsystems use and modify (i.e., they have

access to) a shared data structure named repository

  The subsystems are relatively independent, in that they interact only through the repository

Subsystem

Repository

createData() setData() getData() searchData()

Page 41: 3 - Architetture Software - Architectural styles

41

Example: a compiler architecture based on a repository

LexicalAnalyzer

SyntacticAnalyzer SemanticAnalyzer

CodeGenerator

Compiler

SyntacticEditor

ParseTree SymbolTable

Repository

SourceLevelDebugger

Optimizer

Page 42: 3 - Architetture Software - Architectural styles

Repository: two flavors Data-centered style supporting user interactions   The control flow into the system can be managed

both by the repository (if stored data have to be modified) and by the subsystems (independent control flow)

  Passive repository (blackboard, tuple space): agents write or read items in the repository

  Active repository: the repository calls registered agents. This can be implemented with publish/subscribe

42

Page 43: 3 - Architetture Software - Architectural styles

publish/subscribe   Agents interact by broadcast or multicast

messages   Each agent notifies a state change via a message

(it “raises an event”)   All agents interested to the event (“observers”)

receive a copy of the message   Event generators do not know the observers

(decoupling)   Examplex: device drivers, JavaBeans

43

Page 44: 3 - Architetture Software - Architectural styles

publish/subscribe

44

Page 45: 3 - Architetture Software - Architectural styles

Observer pattern

45

Page 46: 3 - Architetture Software - Architectural styles

Publish subscribe variants

46

Page 47: 3 - Architetture Software - Architectural styles

Tuple space   A tuple space is a repository where agents

(“Workers”) read or write tuples by pattern matching   Main primitives:

  out(tuple) non blocking, creates new tuple!  rd(tuple pattern) blocking, does not delete matching tuple   in(tuple pattern) blocking, deletes matching tuple   eval(tuple) non blocking, creates new worker

47

Page 48: 3 - Architetture Software - Architectural styles

48

Repository: pro and cons   Benefits

  It is an effective way to share huge amounts of data: write once for all to read   Each subsystem has not to take care of how data are produced/consumed by

other subsystems   It allows a centralized management of system backups, as well as of security

and recovery procedures   The data sharing model is available as the repository schema, hence it is

easy to plug new subsystems   Pitfalls

  Subsystems have to agree on a data model, thus impacting on performance   Data evolution: it is “expensive” to adopt a new data model since (a) it has to

be applied on the entire repository, and (b) all the subsystems have to be updated

  Not for all the subsystems’ requirements in terms of backup and security are always supported by the repository

  It is tricky to deploy the repository on several machines, preserving the logical vision of a centralized entity, due to redundancy and data consistency matters

Page 49: 3 - Architetture Software - Architectural styles

Client-Server style

Page 50: 3 - Architetture Software - Architectural styles

Client server

50

remote remote remote

Page 51: 3 - Architetture Software - Architectural styles

51

Client-server paradigm   It has been conceived in the context of distributed

systems, aiming to solve a synchronization issue:   A protocol was needed to allow the communication

between two different programs   The driving idea is to make unbalanced the

partners’ roles within a communication process   Reactive entities (named servers):

  They cannot initiate a communication   … they can only answer to incoming requests (reactive entities)

  Active entities (named clients):   They trigger the communication process   They forward requests to the servers, then they wait for

responses

Page 52: 3 - Architetture Software - Architectural styles

52

Client-server paradigm   The first generation of distributed systems was

based on the client server style

Mainframe Monolithic

1st Generation Client/Server

2nd Generation Distributed Objects

Complexity & adaptability

Deg

ree

of

dist

ribut

ion

Page 53: 3 - Architetture Software - Architectural styles

53

Client-server style   From the architectural viewpoint, a client/server system

is made up of components which can be classified according to the service abstraction:   Who provides services is a server;   Who requires a service is a client;

  A client is a program used by a user to communicate with a system   …but a server can be a client for a different service

  Clients are aware of the server interface   Servers cannot foresee clients’ requests

Client Server

service1() service2() serviceN()

* * requester! provider!

Page 54: 3 - Architetture Software - Architectural styles

54

Client-server style   Most systems can be logically divided into three parts:

  The presentation, which is in charge of managing the user interface (graphic events, input fields check, help..)

  The actual application logic   The data management tier for the management of persistent data.

  The system architecture is defined according to how these parts are organized :   2-tiered, 3-tiered, or n-tiered

Presentation

Application

processing

Data management

Page 55: 3 - Architetture Software - Architectural styles

55

Client-server style   2 tiers Client/Server architectures

Fat client Fat server

Page 56: 3 - Architetture Software - Architectural styles

Web has a Client-Server style   HTTP (Hypertext Transfer Protocol), ASCII-based request/reply protocol

that runs over TCP   HTTPS: variant that first establishes symmetrically-encrypted channel via

public-key handshake, so suitable for sensitive info

  By convention, servers listen on TCP port 80 (HTTP) or 443 (HTTPS)   Universal Resource Identifier (URI) format: scheme, host, port,

resource, parameters, fragment http://search.com:80/img/search/file?t=banana&client=firefox#p2

Web browser Web server A series of tubes

DNS server

1. 2.

56

Page 57: 3 - Architetture Software - Architectural styles

A Conversation With a Web Server GET /index.html HTTP/1.0 User-Agent: Mozilla/4.73 [en] (X11; U; Linux 2.0.35 i686) Host: www.yahoo.com Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,

image/png, */* Accept-Language: en Accept-Charset: iso-8859-1,*,utf-8

  Server replies: HTTP/1.0 200 OK Content-Length: 16018 Set-Cookie: B=2vsconq5p0h2n Content-Type: text/html <html><head><title>Yahoo!</title><base href=http://www.yahoo.com/>

…etc.

  Repeat for embedded content (images, stylesheets, scripts...) <img width=230 height=33 src="http://us.a1.yimg.com/us.yimg.com/a/an/anchor/icons2.gif">

HTTP method & URI

Cookie data: up to 4KiB

MIME content type

57

Page 58: 3 - Architetture Software - Architectural styles

Cookies   On first visit to a server, a browser may receive a cookie

from the server in HTTP header   Data is arbitrary   typically opaque, interpretation is up to the server   Usually encrypted, since the client is untrusted

  The browser automatically passes appropriate cookie back to server on each request   Server may update cookie value with any response   Simulates a concept of “session”

  Many uses   track user’s ID (canonical use: authentication)   track session state or a handle to it   in Web 1.0, before cookies, “fat URL’s” were used for this

58

Page 59: 3 - Architetture Software - Architectural styles

59

Two-tier C/S architectures – 1/2   Pitfalls:

  Two-tiers C/S architectures exhibit a heavy message traffic since the front-ends and the servers communicate intensively

  The business logic is not managed by an ad-hoc component, but is it “shared” by front-end and back-end

  client and server depend one from each other   It is difficult to reuse the same interface to access different data   It is difficult to interact with databases which have different front-

ends   The business logic is encapsulated into the user interface

  If the logic changes, the interface has to change as well

Page 60: 3 - Architetture Software - Architectural styles

60

Two-tier C/S architectures – 2/2   Recurrent problem:

  Business and presentation logic are not clearly separate   E.g., if there is a service which can be accessed by several

devices (e.g., mobile phone, desktop PC)   The same logic but different interface

Page 61: 3 - Architetture Software - Architectural styles

Design pattern: dispatcher   Context: a set of servers   Problem: A client should not need to know where

servers are located   Solution: a dispatcher implementing a naming

service acts as an intermediate layer between clients and servers

61

Client do_task

Server run_service

Dispatcher Location_map locate_Server

request service

establish connection

request connection

Page 62: 3 - Architetture Software - Architectural styles

62

Three-tier architectures – 1/6   Early 90’s; they propose a clear separation among logics:

  Tier 1: data management (DBMS, XML files, …..)   Tier 2: business logic (application processing, …)   Tier 3: user interface (data presentation and services)

  Each tier has its own goals, as well as specific design constraints

  No assumptions at all about the structure and/or the implementation of the other tiers , i.e.:   Tier 2 does not make any assumptions neither on how data are

represented, nor on how user interfaces are made   Tier 3 does not make any assumptions on how business logic works

Page 63: 3 - Architetture Software - Architectural styles

63

Three-tier architectures – 2/6   Tiers 1 and 3 do not communicate, i.e.:

  The user interface neither receives any data from data management, nor it can write data

  Information passing (in both the directions) are filterer by the business logic

  Tiers work as they were not part of a specific application:   Applications are conceived as collections of interacting

components   Each component can take part to several applications at

the same time

Page 64: 3 - Architetture Software - Architectural styles

64

Three-tier architectures – 3/6

Page 65: 3 - Architetture Software - Architectural styles

65

Three-tier architectures – 4/6   Benefits:

  They leverage the flexibility of and the high modifiability of modular systems

  Components can be used in several systems   A change into a given component do not have any impacts on

the system (apart from changes into the API)   It is easier to localize a bug since the system functionalities are

isolated   New functionalities can be added to the system by only

modifying the components which are in charge of realizing them, or by plugging new components

Page 66: 3 - Architetture Software - Architectural styles

66

Three-tier architectures – 5/6   Pitfalls:

  Application dimensions and efficiency:   Heavy network traffic

  High latency for service delivering   Ad hoc software libraries have to be used to allow the

communication among components   Many LoCs!

  Legacy software   Many companies make use of preexisting software, monolithic,

systems to manage data   Adapters have to be implemented to interoperate with the legacy

SW

Page 67: 3 - Architetture Software - Architectural styles

67

Three-tier architectures – 6/6   Tiers are logical abstractions, not physical entities

  Three-tier architectures can be realized by using only one or two levels of machines

Page 68: 3 - Architetture Software - Architectural styles

68

N-tier architectures   They provide high flexibility   Fundamental items:

  User Interface (UI): e.g., a browser, a WAP minibrowser, a graphical user interface (GUI)

  Presentation logic, which defines what the UI has to show and how to manage users’ requests

  Business logic, which manages the application business rules

  Infrastructure services   The provides further functionalities to the application

components ( messaging, transactions support);   Data tier:

  Application Data level

Page 69: 3 - Architetture Software - Architectural styles

Example N-tiers

69

Page 70: 3 - Architetture Software - Architectural styles

Model/View/Controller style

Page 71: 3 - Architetture Software - Architectural styles

MVC

71

Page 72: 3 - Architetture Software - Architectural styles

72

The MVC style   Three kinds of subsystems:

  Model, which has the knowledge about the application domain - also called business logic

  View, which takes care of making application objects visible to system users

  Controller, which manages the interactions between the system and it users

Controller

Model

subscriber notifier

initiator

*

repository 1

1

*

View

Page 73: 3 - Architetture Software - Architectural styles

MVC goal   The goal of MVC is, by decoupling models and

views, to reduce the complexity in architectural design and to increase flexibility and maintainability

73

Page 74: 3 - Architetture Software - Architectural styles

Basic interaction for MVC

74

Page 75: 3 - Architetture Software - Architectural styles

Initialization for MVC

75

Page 76: 3 - Architetture Software - Architectural styles

MVC interactions

76

Page 77: 3 - Architetture Software - Architectural styles

MVC: component diagram example

77

Page 78: 3 - Architetture Software - Architectural styles

78

MVC Architectures   The Model does not depend on any View and/or

Controller   Changes to the Model state are communicated to

the View subsystems by means of a “subscribe/notify” protocol (eg. Observer pattern)

  MVC is a combination of the repository and three-tiers architectures:   The Model implements a centralized data structure;   The Controller manages the control flow: it receives

inputs from users and forwards messages to the Model   The Viewer pictures the model

Page 79: 3 - Architetture Software - Architectural styles

79

MVC: An example   Two different views of a

file system:   The bottom window

visualizes a folder named Comp-Based Software Engineering

  The up window visualizes file info related to file named 90DesignPatterns2.ppt

  The file name is visualized into three different places

Page 80: 3 - Architetture Software - Architectural styles

80

MVC: communication diagram   1. Both InfoView and FolderView subscribe the changes to the model File

when created   2. The user enters the new filename   3. The Controller forwards the request to the model   4. The model actually changes the filename and notifies the operation to

subscribers   5. InfoView and FolderView are updated so that the user perceives the

changes in a consistent way

:Controller

:InfoView

:Model

2.User types new filename

1. Views subscribe to event

3. Request name change in model

4. Notify subscribers 5. Updated views

:FolderView

Page 81: 3 - Architetture Software - Architectural styles

ClientServer 3-tiers vs MVC   The CS 3-tiers style may seem similar to the

model-view-controller (MVC) style; however, they are different

  A fundamental rule in a 3-tiers architecture is: the client tier never communicates directly with the data tier; all communication must go through the middleware tier: the 3-tiers architecture is linear

  Instead, the MVC architecture is triangular: the View sends updates to the Controller, the Controller updates the Model, and the Views get updated directly from the Model

81

Page 82: 3 - Architetture Software - Architectural styles

MVC vs tiers

82

Page 83: 3 - Architetture Software - Architectural styles

83

The benefits of the MVC style   The main reason behind the separation (Model,

View and Controller) is that the user interfaces (Views) are changed much more frequently than the knowledge about the application domain (Model)

  This style is easy to reuse, to maintain, and to extend

  The MVC style is especially effective in the case of interactive systems, when multiple synchronous views of the same model have to be provided

Page 84: 3 - Architetture Software - Architectural styles

Alternatives to MVC

84

Page 85: 3 - Architetture Software - Architectural styles

Service-Oriented style

(SOA)

Page 86: 3 - Architetture Software - Architectural styles

A world of services

86

Page 87: 3 - Architetture Software - Architectural styles

The service-oriented architecture model

87

Page 88: 3 - Architetture Software - Architectural styles

SOA, web service style (use cases)

88

Page 89: 3 - Architetture Software - Architectural styles

89

Service-oriented architectures   SOAs represent an evolution of client-server

architectures   3rd generation of distributed software systems D

istri

butio

n de

gree

and

mob

ility

2 levels

3 levels

client-server

Complexity

Distributed objects

Distributed components

1st generation 2nd generation 3rd generation

C4 C5

C3 C2 C1

SOAs

Page 90: 3 - Architetture Software - Architectural styles

90

Service-oriented architectures   Service-oriented architecture (SOA) is an

approach to loosely coupled, protocol independent, standards-based distributed computing where a software resource available on the network is considered as a service

  SOA is a technology solution that provides an enterprise with the agility and flexibility its users have been looking for

  The integration process is based on a composition of services spanning multiple enterprises

Page 91: 3 - Architetture Software - Architectural styles

91

Service-oriented architectures   The following principles define the rules for

development, maintenance, and usage of a SOA:   Reuse, granularity, modularity, composability,

componentization, and interoperability   Compliance to standards (either cross-industry or

industry-specific)   Services identification and categorization, provisioning

and delivery, and monitoring and tracking

Page 92: 3 - Architetture Software - Architectural styles

Service computing: layered style

92

Page 93: 3 - Architetture Software - Architectural styles

SOA layers, IBM style

93

Page 94: 3 - Architetture Software - Architectural styles

94

SOA principles – 1/2   Service encapsulation - Many web-services are

consolidated to be used under the SOA Architecture. Often such services have not been planned to be under SOA

  Service loose coupling - Services maintain a relationship that minimizes dependencies and only requires that they maintain an awareness of each other

  Service contract - Services adhere to a communications agreement, as defined collectively by one or more service description documents

  Service abstraction - Beyond what is described in the service contract, services hide logic from the outside world

Page 95: 3 - Architetture Software - Architectural styles

95

SOA principles – 2/2   Service reusability - Logic is divided into services

with the intention of promoting reuse   Service composability - Services can be

coordinated/assembled to form composite services   Service autonomy – Services have control over the

logic they encapsulate   Service optimization – All else equal, high-quality

services are generally considered preferable to low-quality ones

  Service discoverability – Services are designed to be outwardly descriptive so that they can be found and assessed via available discovery mechanisms

Page 96: 3 - Architetture Software - Architectural styles

96

SOA building blocks – 1/2   Service Consumer (also known as Service

Requestor): it locates entries in the Registry using various find operations and then binds to the service provider in order to invoke one of its services

  Service Provider: it creates a service and publishes its interface and access information to the Service registry

  Service Registry (also known as Service Broker): it is responsible for making the Service interface and implementation access information available to any potential service requestor

Page 97: 3 - Architetture Software - Architectural styles

Interaction: State diagram

97

Page 98: 3 - Architetture Software - Architectural styles

98

SOA building blocks – 2/2   Service registration (provider) and lookup (requestor) in the

registry   Service access

Desktop Computer PDA

SERVICE REQUESTOR

SERVICE REGISTRY

SERVICE PROVIDER

Service lookup

Service access

Service registration

Laptop

Page 99: 3 - Architetture Software - Architectural styles

99

SOA model   1 Service Consumer   2 Service Provider   3 Service Registry   4 Service Contract   5 Service Proxy   6 Service Lease

Page 100: 3 - Architetture Software - Architectural styles

SOA in UML

100

Page 101: 3 - Architetture Software - Architectural styles

SOA elements

101

Page 102: 3 - Architetture Software - Architectural styles

102

SOA characteristics   The software components in a SOA are services

based on standard protocols   Services in SOA have minimum amount of

interdependencies   Communication infrastructure used within an SOA

should be designed to be independent of the underlying protocol layer

  Offers coarse-grained business services, as opposed to fine-grained software-oriented function calls

  Uses service granularity to provide effective composition, encapsulation and management of services

Page 103: 3 - Architetture Software - Architectural styles

103

Service granularity   Service granularity refers to the scope of

functionality a service exposes   Fine-grained services provide a small amount of

business-process usefulness, such as basic data access

  Coarse-grained services are constructed from fine-grained services that are intelligently structured to meet specific business needs.

Page 104: 3 - Architetture Software - Architectural styles

104

Service composition

Jeff Hanson, Coarse-grained Interfaces Enable Service Composition in SOA, JavaOne, August 29, 2003

Page 105: 3 - Architetture Software - Architectural styles

105

Web Services   A W3C standard defining an API accessed via

HTTP and executed on a remote host   Definition:

  ‘A Web service is a software application identified by a URI, whose interfaces and bindings are capable of being defined, described, and discovered as XML artifacts. A Web service supports direct interactions with other software agents using XML based messages exchanged via internet-based protocols.’

  Two flavors: big services, RESTful services

Page 106: 3 - Architetture Software - Architectural styles

106

WS underlying technologies   The basic standards for

web services are:   XML (Extensible Markup

Language)   SOAP (Simple Object

Access Protocol)   WSDL (Web Services

Description Language)   UDDI (Universal

Description, Discovery and Integration)

Page 107: 3 - Architetture Software - Architectural styles

107

SOA-related standards   XML 1.0 fairly stable, although Schema are in the

process of replacing DTDs (currently Schema 1.1 being worked on).

  SOAP 1.2   WSDL 2.0 (coming out, 1.2 current)   UDDI version 3 (Aug 2003)   BPEL 1.1 (Business Process Execution Language)   choreography description language (web services

work flows)   started January 2003

Page 108: 3 - Architetture Software - Architectural styles

108

Web Services Architecture   Web Services involve three major roles

  Service Provider   Service Registry   Service Consumer

  Three major operations surround web services   Publishing – making a service available   Finding – locating web services   Binding – using web services

Page 109: 3 - Architetture Software - Architectural styles

Use cases for Web services

109

Page 110: 3 - Architetture Software - Architectural styles

110

Service publication   In order for someone to use your service they have

to know about it   To allow users to discover a service it is published

to a registry (UDDI)   To allow users to interact with a service you must

publish a description of it’s interface (methods & arguments)

  This is done using WSDL

Page 111: 3 - Architetture Software - Architectural styles

WSDL

111

Page 112: 3 - Architetture Software - Architectural styles

112

Making a service available   Once you have published a description of your

service you must have a host set up to serve it.   A web server is often used to deliver services

(although custom application – application communication is also possible).

  This functionality has to be added to the web server. In the case of the Apache web server a ‘container’ application (Tomcat) can be used to make the application (servlet) available to Apache (deploying).

Page 113: 3 - Architetture Software - Architectural styles

113

WS and existing protocols   Web services are layered on top of existing, mature

transfer protocols   HTTP, SMTP are still used over TCP/IP to pass the

messages   Web services (like grids) can be seen as a

functionality enhancement to the existing technologies

Page 114: 3 - Architetture Software - Architectural styles

114

WS and XML   All Web Services documents are written in XML   XML Schema are used to define the elements used

in Web Services communication

Page 115: 3 - Architetture Software - Architectural styles

115

WS and SOAP   SOAP is the protocol actually used to communicate

with the Web Service   Both the request and the response are SOAP

messages   The body of the message (whose grammar is

defined by the WSDL) is contained within a SOAP “envelope”

  “Binds” the client to the web service

Page 116: 3 - Architetture Software - Architectural styles

116

WSDL   Describes the Web Service and defines the

functions that are exposed in the Web Service   Defines the XML grammar to be used in the

messages   Uses the W3C Schema language

Page 117: 3 - Architetture Software - Architectural styles

117

WS and UDDI   UDDI is used to register and look up services with

a central registry   Service Providers can publish information about

their business and the services that they offer   Service consumers can look up services that are

available by   Business   Service category   Specific service

Page 118: 3 - Architetture Software - Architectural styles

118

Web Services and SOAs   Web Services are an open standards-based way of

creating and offering SOAs   Web Services are able to exchange structured

documents that contain different amounts of information, as well as information about that information, known as metadata

  In other words, Web Services can be coarse grained. Such coarse granularity is one of the most important features of SOAs

Page 119: 3 - Architetture Software - Architectural styles

119

Re-architecture to SOA: benefits   Provides location independence: Services need not be associated with

a particular system on a particular network   Protocol-independent communication framework renders code

reusability   Offers better adaptability and faster response rate to changing business

requirements   Allows easier application development, run-time deployment and better

service management   Loosely coupled system architecture allows easy integration by

composition of applications, processes, or more complex services from other less complex services

  Provides authentication and authorization of Service consumers, and all security functionality via Services interfaces rather than tightly-coupled mechanisms

  Allows service consumers (ex. Web Services) to find and connect to available Services dynamically

Page 120: 3 - Architetture Software - Architectural styles

120

Why not SOA   For a stable or homogeneous enterprise IT

environment, SOA may not be important or cost effective to implement

  If an organization is not offering software functionality as services to external parties or not using external services, which require flexibility and standard-based accessibility, SOA may not be useful

  SOA is not desirable in case of real time requirements because SOA relies on loosely coupled asynchronous communication

Page 121: 3 - Architetture Software - Architectural styles

Cloud computing   Software as a service, like Web services   Platform as a service, like mashups   Infrastructure as a service (or hardware as a

service)

121

Page 122: 3 - Architetture Software - Architectural styles

Peer-to-peer style

P2P

Page 123: 3 - Architetture Software - Architectural styles

123

Peer-to-peer architectures   They can be considered a generalization of the

client/server architecture   Each subsystem is able to provide services, as

well as to make requests   Each subsystem acts both as a server and as a client

Peer

service1() service2()

serviceN() …

requester

provider

*

*

Page 124: 3 - Architetture Software - Architectural styles

124

Peer-to-peer architectures   In such an architecture, all nodes have the same

abilities, as well as the same responsibilities. All communications are (potentially) bidirectional

  The goal:   To share resources and services (data, CPU cycles,

disk space, …)   P2P systems are characterized by:

  Decentralized control   Adaptability   Self-organization and self-management capabilities

Page 125: 3 - Architetture Software - Architectural styles

125

Peer-to-peer architectures   Typical functional characteristics of P2P systems

  File sharing system   File storage system   Distributed file system   Redundant storage   Distributed computation

  Typical non-functional requirements   Availability   Reliability   Performance   Scalability   Anonymity

Page 126: 3 - Architetture Software - Architectural styles

126

P2P architectures: brief history   Although they were proposed 30 years ago, they

mainly evolved in the last decade   File sharing systems contributed to increase the

interest (Napster, 1999; Gnutella, 2000)   In 2000, the Napster client was downloaded by 50

millions users   Traffic peak of 7 TB in a day

  Gnutella followed Napster’s footprint   The first release was delivered in 2003   In June 2005, Gnutella's population was 1.81 million

computers; in 2007, it was the most popular file sharing network with an estimated market share > 40%

  Host servers are listed at gnutellahost.com

Page 127: 3 - Architetture Software - Architectural styles

127

The phases of a P2P application A P2P application is organized in three phases:

  Boot, during which a peer connects to the network and actually performs the connections (P2P boot is rare)

  Lookup, during which a peer looks for a provider of a given service or information (generally providers are SuperPeers)

  Resource sharing, during which requested resources are delivered, usually in several segments

Page 128: 3 - Architetture Software - Architectural styles

128

P2P classification – 1/2   P2P applications can be categorized as follows:

  Pure P2P applications   All the phases are based on P2P

  P2P applications   lookup and resource sharing are performed according to the P2P

paradigm;   Some servers are used to make the boot

  Hybrid P2P applications :   The resource sharing is performed according to the P2P

paradigm   Some servers are used to make the boot;   Specific peers are used to perform lookup.

Page 129: 3 - Architetture Software - Architectural styles

129

P2P classification – 2/2   With respect to lookup phase:

  Centralized Lookup   Centralized index of providers

  Decentralized Lookup   Distributed index

  Hybrid Lookup   Several centralized systems which are linked

into a decentralized system

Page 130: 3 - Architetture Software - Architectural styles

Napster

Page 131: 3 - Architetture Software - Architectural styles

Gnutella (original)

Page 132: 3 - Architetture Software - Architectural styles

Gnutella

132

Page 133: 3 - Architetture Software - Architectural styles

Gnutella: search

133

Page 134: 3 - Architetture Software - Architectural styles

Gnutella: reply

134

Page 135: 3 - Architetture Software - Architectural styles

Skype

Page 136: 3 - Architetture Software - Architectural styles

Skype   A mixed client-server and peer-to-peer architecture addresses

the discovery problem   Replication and distribution of the directories, in the form of

supernodes, addresses the scalability problem and robustness problem encountered in Napster

  Promotion of ordinary peers to supernodes based upon network and processing capabilities addresses another aspect of system performance: “not just any peer” is relied upon for important services

  A proprietary protocol employing encryption provides privacy for calls that are relayed through supernode intermediaries

  Restriction of participants to clients issued by Skype, and making those clients highly resistant to inspection or modification, prevents malicious clients from entering the network

Page 137: 3 - Architetture Software - Architectural styles

137

P2P: scalability – 1/2   The performances of a P2P system (e.g., the time

to find a file) become worse as the number of nodes increases (linearly)   The “work” for a node increases linearly with respect to

the number of nodes   The protocols used by Napster and Gnutella are

not scalable   A second generation of P2P protocols has been

realized which support DHT (Distributed Hash Table) in order to improve their scalability   Examples are Tapestry, Chord, Can, Viceroy, Koorde,

Kademlia, Kelips …

Page 138: 3 - Architetture Software - Architectural styles

138

P2P: scalability – 2/2   The degree of scalability of a given protocol

depends on the efficiency of the adopted routing algorithm (lookup)

  Two main objectives:   To minimize the number of message to complete the

lookup   To minimize, for each node, information about other

nodes in the network

  DHT P2P differ into the routing strategy they adopt

Page 139: 3 - Architetture Software - Architectural styles

Summary   The basic architectural styles are few and their

properties should be studied and exploited   Their descriptions and properties are better

understood using a modeling notation   The architectural models and descriptions can be

exploited by a technology like UML via automatic transformations: see the Model Driven Architecture

139

Page 140: 3 - Architetture Software - Architectural styles

Self test questions

140

  Describe an example application architecture for each of the following styles: pipe-and-filter, repository, client-server, peer-to-peer

  Discuss the difference between the active and passive repository styles

  What are the advantages of P2P over client-server style?

Page 141: 3 - Architetture Software - Architectural styles

References

  Taylor et al., Software Architecture, Wiley 2009   Qian et al., Software Architecture and Design Illuminated, Jones

and Bartlett, 2009   Garland, Large-Scale Software Architecture: A Practical Guide

using UML, Addison-Wesley, 2005   Fielding & Taylor, Principled Design of the Modern Web

Architecture, ACM Trans. on Internet Technology, 2:2, 2002   Rao, Using UML service components to represent the SOA

architecture pattern, 2007 www.ibm.com/developerworks/architecture/library/ar-logsoa/

Page 142: 3 - Architetture Software - Architectural styles

Useful sites   www.softwarearchitectureportal.org!  www.dossier-andreas.net/software_architecture/!

  www.bredemeyer.com/links.htm!  www.opengroup.org/architecture/!  www.iasahome.org!  alistair.cockburn.us!

Page 143: 3 - Architetture Software - Architectural styles

Questions?

"We are searching for some kind of harmony between two intangibles: a form which we have not yet designed and a context which we cannot properly describe.”

Christopher Alexander