0% found this document useful (0 votes)
10 views20 pages

Lecture 21 -Distributed SWE

The document discusses distributed software engineering, highlighting key topics such as client-server computing, architectural patterns, and Software as a Service (SaaS). It emphasizes the importance of distributed systems in enterprise computing, their characteristics like resource sharing and fault tolerance, and the need for Quality of Service. Additionally, it covers various architectural models including master-slave and peer-to-peer systems, along with the implications of SaaS in remote software access.

Uploaded by

faridamsarhank
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)
10 views20 pages

Lecture 21 -Distributed SWE

The document discusses distributed software engineering, highlighting key topics such as client-server computing, architectural patterns, and Software as a Service (SaaS). It emphasizes the importance of distributed systems in enterprise computing, their characteristics like resource sharing and fault tolerance, and the need for Quality of Service. Additionally, it covers various architectural models including master-slave and peer-to-peer systems, along with the implications of SaaS in remote software access.

Uploaded by

faridamsarhank
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/ 20

Software Engineering

CSCI 3701

Lecture 21: Distributed software


engineering

Presented By:
Prof. Sally Mohamed Elghamrawy

1
Chapter 18 – Distributed
software engineering

2
Topics covered

• Distributed systems issues


• Client–server computing
• Architectural patterns for distributed systems
• Software as a service

3
Distributed systems

• Virtually all large computer-based systems are now distributed


systems.
“… a collection of independent computers that appears to the user
as a single coherent system.”
• Information processing is distributed over several computers rather
than confined to a single machine.
• Distributed software engineering is therefore very important for
enterprise computing systems.

5
Distributed system characteristics

• Resource sharing
– Sharing of hardware and software resources.
• Openness
– Use of equipment and software from different vendors.
• Concurrency
– Concurrent processing to enhance performance.
• Scalability
– Increased throughput by adding new resources.
• Fault tolerance
– The ability to continue in operation after a fault has occurred.

7
Quality of Service

• The Quality of Service (QoS) offered by a distributed system reflects the


system’s ability to deliver its services dependably and with a response
time and throughput that is acceptable to its users.

• Quality of service is particularly critical when the system is dealing with


time-critical data such as sound or video streams.

– In these circumstances, if the quality of service falls below a


threshold value then the sound or video may become so degraded
that it is impossible to understand.

9
Remote Procedure Calls

• Procedural communication in a distributed system is implemented


using Remote Procedure Calls (RPC).
• In a remote procedure call, one component calls another
component as if it was a local procedure or method. The middleware
in the system intercepts this call and passes it to a remote
component.
• This carries out the required computation and, via the middleware,
returns the result to the calling component.
• A problem with RPCs is that the caller and the callee need to be
available at the time of the communication, and they must know
how to refer to each other.

11
Client-server computing

• Distributed systems that are accessed over the Internet are normally
organized as client-server systems.

• In a client-server system, the user interacts with a program running


on their local computer (e.g. a web browser or phone-based
application). This interacts with another program running on a
remote computer (e.g. a web server).

• The remote computer provides services, such as access to web


pages, which are available to external clients.

12
Client–server interaction

13
Mapping of clients and servers to
networked computers

14
Layered architectural model for
client–server applications

15
Master-slave architectures

• Master-slave architectures are commonly used in real-time systems


where there may be separate processors associated with data
acquisition from the system’s environment, data processing and
computation and actuator management.
• The ‘master’ process is usually responsible for computation,
coordination and communications and it controls the ‘slave’
processes.
• ‘Slave’ processes are dedicated to specific actions, such as the
acquisition of data from an array of sensors.

17
A traffic management system with a
master-slave architecture
Peer-to-peer architectures

• Peer to peer (p2p) systems are decentralised systems where


computations may be carried out by any node in the
network.
• The overall system is designed to take advantage of the
computational power and storage of a large number of
networked computers.
• Most p2p systems have been personal systems but there is
increasing business use of this technology.

20
A decentralized p2p architecture

21
Software as a Service (SaaS)

• Software as a Service (SaaS) involves hosting the software remotely


and providing access to it over the Internet.
– Software is deployed on a server (or more commonly a number of
servers) and is accessed through a web browser. It is not deployed
on a local PC.
– The software is owned and managed by a software provider,
rather than the organizations using the software.
– Users may pay for the software according to the amount of use
they make of it or through an annual or monthly subscription.

23
SaaS and SOA

• SaaS is a way of providing functionality on a remote server with client


access through a web browser. The server maintains the user’s data and
state during an interaction session. Transactions are usually long
transactions e.g. editing a document.

• Service-oriented Architecture is an approach to structuring a software


system as a set of separate, stateless services. These may be provided by
multiple providers and may be distributed. Typically, transactions are
short transactions where a service is called, does something then returns
a result.

24
Key points

• The benefits of distributed systems are that they can be scaled to


cope with increasing demand, can continue to provide user
services if parts of the system fail, and they enable resources to
be shared.
• Issues to be considered in the design of distributed systems
include transparency, openness, scalability, security, quality of
service and failure management.
• Client–server systems are structured into layers, with the
presentation layer implemented on a client computer. Servers
provide data management, application and database services.
• Client-server systems may have several tiers, with different layers
of the system distributed to different computers.

25
Key points

• Architectural patterns for distributed systems include master-


slave architectures, two-tier and multi-tier client-server
architectures, distributed component architectures and peer-to-
peer architectures.
• Distributed component systems require middleware to handle
component communications and to allow components to be
added to and removed from the system.
• Peer-to-peer architectures are decentralized with no distinguished
clients and servers. Computations can be distributed over many
systems in different organizations.
• Software as a service is a way of deploying applications as thin
client- server systems, where the client is a web browser.

26

You might also like