Distributed Software Engineering
Distributed Software Engineering
Resource sharing - A distributed system allows the sharing of hardware and software resources.
Openness - Distributed systems are normally open systems.
Concurrency - In a distributed system, several processes may operate at the same time on separate computers
on the network.
Scalability - New resources can be added to cope with new demands on the system.
Fault tolerance - The availability of several computers and the potential for replicating information means
that distributed systems can be tolerant of some hardware and software failures
Distributed systems issues
Issues Focus
Transparency To what extent should the distributed system appear to the user as a single system?
When it is useful for users to understand that the system is distributed?
Openness Should a system be designed using standard protocols that support interoperability or
should more specialized protocols be used that restrict the freedom of the designer?
Scalability How can the system be constructed so that it is scalable?
How can the overall system be designed so that its capacity can be increased in response
to increasing demands made on the system?
Security How can usable security policies be defined and implemented that apply across a set of
independently managed systems?
Distributed systems issues (Contd..)
Issues Focus
Quality of service How should the quality of service that is delivered to system users be specified and
how should the system be implemented to deliver an acceptable quality of service to
all users?
Failure management How can system failures be detected, contained (so that they have minimal effects on
other components in the system), and repaired?
Three dimensions of scalability:
The components in a distributed system may be implemented in different programming languages and may
execute on completely different types of processor.
Models of data, information representation, and protocols for communication may all be different.
A distributed system therefore requires software that can manage these diverse parts, and ensure that they
can communicate and exchange data.
The term ‘middleware’ is used to refer to this software—it sits in the middle between the distributed
components of the system.
Middleware is a layer between the operating system and application programs.
Middleware is normally implemented as a set of libraries, which are installed on each distributed computer,
plus a run-time system to manage communications.
Middleware in a distributed system
Coordinated
Application Components Application Components
Operation
Information
Middleware Exchange and Middleware
Common Services
Logical
Operating System Operating System
Interaction
System1 System2
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.
In a client–server architecture, an application is modeled as a set of services that are provided by servers.
Clients may access these services and present results to end users.
Clients need to be aware of the servers that are available but do not know of the existence of other clients.
Clients and servers are separate processes.
Client–server interaction
C3 C4 C12
C2 Server Process
C11
C1 S1
S4
C10
C5 S2 Client Process
S3
C9
C6 C7 C8
Mapping of clients and servers to networked
computers
C1 S1,S2 C2 C3,C4
A presentation layer - concerned with presenting information to the user and managing all user
interaction
A data management layer - manages the data that is passed to and from the client. This layer may
implement checks on the data, generate web pages, etc.
An application processing layer - concerned with implementing the logic of the application and so
providing the required functionality to end users
A database layer - stores the data and provides transaction management services, etc.
Layered architectural model for client–server application
Presentation Layer
Database Layer
Thin-client model
Where the presentation layer is implemented on the client and all other layers (data management, application
processing, and database) are implemented on a server.
The client software may be a specially written program on the client to handle presentation.
More often, however, a web browser on the client computer is used for presentation of the data.
Thin-client model (Contd..)
Advantages Disadvantages
The advantage of the thin-client model is that it is The disadvantage of the thin-client approach,
simple to manage the clients. however is that it may place a heavy processing load
This is a major issue if there are a large number of on both the server and the network.
clients, as it may be difficult and expensive to The server is responsible for all computation and this
install new software on all of them. may lead to the generation of significant network
If a web browser is used as the client, there is no traffic between the client and the server.
need to install any software. Implementing a system using this model may
therefore require additional investment in network
and server capacity.
Fat Client model
where some or all of the application processing is carried out on the client.
Data management and database functions are implemented on the server.
Fat Client model (Contd..)
Advantages Disadvantages
The fat-client model makes use of available The problem with the fat-client model is that it
processing power on the computer running the requires additional system management to deploy
client software, and distributes some or all of the and maintain the software on the client computer.
application processing and the presentation to the
client.
The server is essentially a transaction server that
manages all database transactions.
Data management is straightforward as there is no
need to manage the interaction between the client
and the application processing system.