Chapter 17 – Distributed software engineering Chapter 17 Distributed software engineering120/11/2014.

Slides:



Advertisements
Similar presentations
Distributed Systems Architectures
Advertisements

Chapter 18 – Distributed software engineering
Distributed Systems Major Design Issues Presented by: Christopher Hector CS8320 – Advanced Operating Systems Spring 2007 – Section 2.6 Presentation Dr.
COM vs. CORBA.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 12 Slide 1 Distributed Systems Design 2.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 9 Distributed Systems Architectures Slide 1 1 Chapter 9 Distributed Systems Architectures.
CORBA - Common Object Request Broker Architecture.
Distributed Systems Architectures
Distributed components
Distributed Systems Architectures
Tutorials 2 A programmer can use two approaches when designing a distributed application. Describe what are they? Communication-Oriented Design Begin with.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 12 Slide 1 Distributed Systems Architectures.
OCT1 Principles From Chapter One of “Distributed Systems Concepts and Design”
EEC-681/781 Distributed Computing Systems Lecture 3 Wenbing Zhao Department of Electrical and Computer Engineering Cleveland State University
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 12 Slide 1 Distributed Systems Architectures.
16: Distributed Systems1 DISTRIBUTED SYSTEM STRUCTURES NETWORK OPERATING SYSTEMS The users are aware of the physical structure of the network. Each site.
.NET Mobile Application Development Introduction to Mobile and Distributed Applications.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 12 Slide 1 Distributed Systems Design 1.
Distributed Software Engineering
Distributed Software Engineering To explain the advantages and disadvantages of different distributed systems architectures To discuss client-server and.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 12 Slide 1 Distributed Systems Architectures.
Distributed Systems Architectures ©Ian Sommerville 2006.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 12 Slide 1 Distributed Systems Architectures.
1 소프트웨어공학 강좌 Chap 9. Distributed Systems Architectures - Architectural design for software that executes on more than one processor -
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 12 Slide 1 Distributed Systems Architectures.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 11Slide 1 Chapter 11 Distributed Systems Architectures.
Distributed Systems Architectures
©Ian Sommerville 2000 Software Engineering, 6th edition. Slide 1 Component-based development l Building software from reusable components l Objectives.
Lecture 3: Sun: 16/4/1435 Distributed Computing Technologies and Middleware Lecturer/ Kawther Abas CS- 492 : Distributed system.
CS 390- Unix Programming Environment CS 390 Unix Programming Environment Topics to be covered: Distributed Computing Fundamentals.
Distributed Systems: Concepts and Design Chapter 1 Pages
Advanced Computer Networks Topic 2: Characterization of Distributed Systems.
Introduction to CORBA University of Mazandran Science & Tecnology By : Esmaill Khanlarpour January
CSC 480 Software Engineering Lecture 18 Nov 6, 2002.
9 Systems Analysis and Design in a Changing World, Fourth Edition.
Distribution and components. 2 What is the problem? Enterprise computing is Large scale & complex: It supports large scale and complex organisations Spanning.
Hwajung Lee.  Interprocess Communication (IPC) is at the heart of distributed computing.  Processes and Threads  Process is the execution of a program.
CS 240, Prof. Sarwar Slide 1 CS 240: Software Project Fall 2003 Sections 1 & 2 Dr. Badrul M. Sarwar San Jose State University Lecture #23.
Shuman Guo CSc 8320 Advanced Operating Systems
Chapter 18 – Distributed software engineering Lecture 1 1Chapter 18 Distributed software engineering.
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
Chapter 17 – Distributed software engineering Chapter 17 Distributed software engineering120/11/2014.
Slide 1 Service-centric Software Engineering. Slide 2 Objectives To explain the notion of a reusable service, based on web service standards, that provides.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 12 Slide 1 Distributed Systems Architectures.
CSC 480 Software Engineering Lecture 17 Nov 4, 2002.
©Ian Sommerville 2000, Tom Dietterich 2001 Slide 1 Distributed Systems Architectures l Architectural design for software that executes on more than one.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 12 Slide 1 Distributed Systems Architectures.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 12 Slide 1 Distributed Systems Architectures.
Software Engineering 1.  Distributed systems issues   Client–server computing  Architectural patterns for distributed systems  Software as a service.
Operating Systems Distributed-System Structures. Topics –Network-Operating Systems –Distributed-Operating Systems –Remote Services –Robustness –Design.
Dr D. Greer, Queens University Belfast ) Software Engineering Chapter 7 Software Architectural Design Learning Outcomes Understand.
Topic 4: Distributed Objects Dr. Ayman Srour Faculty of Applied Engineering and Urban Planning University of Palestine.
1 Distributed Systems Architectures Distributed object architectures Reference: ©Ian Sommerville 2000 Software Engineering, 6th edition.
Distributed Systems Architectures Chapter 12. Objectives  To explain the advantages and disadvantages of different distributed systems architectures.
Distributed Systems Architectures. Topics covered l Client-server architectures l Distributed object architectures l Inter-organisational computing.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 12 Slide 1 Distributed Systems Architectures.
Distributed Systems Architectures
Distribution and components
CSC 480 Software Engineering
CHAPTER 3 Architectures for Distributed Systems
CORBA Within the OS & Its Implementation
#01 Client/Server Computing
Chapter 17 – Distributed software engineering
Service-centric Software Engineering
Introduction To Distributed Systems
Distributed Systems and Concurrency: Distributed Systems
Distributed Systems Architectures
#01 Client/Server Computing
Presentation transcript:

Chapter 17 – Distributed software engineering Chapter 17 Distributed software engineering120/11/2014

Distributed systems  Virtually all large computer-based systems are now distributed systems[Tanenbaum and Van Steen (2007)]. “… 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. 20/11/2014Chapter 17 Distributed software engineering2

Distributed system characteristics  Resource sharing  Sharing of hardware and software resources such as disks, printers, files, and compilers—that are associated with computers on a network..  Openness  Use of equipment and software from different vendors. they are designed around standard protocols  Concurrency  several processes may operate at the same time on separate computers on the network. These processes may (but need not) communicate with each other during their normal operation. 20/11/2014Chapter 17 Distributed software engineering3

Distributed system characteristics  Scalability  The capabilities of the system can be increased by adding new resources to cope with new demands on the system.  The network linking the individual computers in the system may limit the system scalability  Fault tolerance  Since the availability of several computers and the potential for replicating information, distributed systems can be tolerant of some hardware and software failures  A degraded service can be provided when failures occur  Complete loss of service only occurs when there is a network failure. 20/11/2014Chapter 17 Distributed software engineering4

Distributed systems Chapter 17 Distributed software engineering520/11/2014

Distributed systems issues  Distributed systems are inherently more complex than centralized systems.  This makes them more difficult to design, implement, and test.  It is harder to understand the emergent properties of distributed systems  The reason is the complexity of the interactions between system components and the system infrastructure Chapter 17 Distributed software engineering620/11/2014

Distributed systems issues  Complexity arises because different parts of the system are independently managed as is the network.  They cannot be controlled by the owners of systems using the network  There is no single authority in charge of the system so top-down control is impossible.  The network connecting these nodes is a separately managed system  There is an inherent unpredictability in the operation of distributed systems 20/11/2014Chapter 17 Distributed software engineering7

Design issues  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  Should more specialized protocols be used that restrict the freedom of the designer  Scalability How can the system be constructed so that it is scaleable?  How can the overall system be designed So that its capacity can be increased in response to increasing demands made on the system? Chapter 17 Distributed software engineering820/11/2014

Design issues  Security How can usable security policies be defined and implemented?  Quality of service How should the quality of service be specified.  How should the system be implemented to deliver an acceptable quality of service to all users?  Failure management How can system failures be detected,  How can system failures be contained so that they have minimal effects on other components in the system  How can system failures be repaired? 20/11/2014Chapter 17 Distributed software engineering9

Transparency  Ideally, users should not be aware that a system is distributed and services should be independent of distribution characteristics.  In practice, this is impossible because parts of the system are independently managed and because of network delays.  Often better to make users aware of distribution so that they can cope with problems  To achieve transparency, resources should be abstracted and addressed logically rather than physically.  Middleware maps logical to physical resources. Chapter 17 Distributed software engineering1020/11/2014

Openness  Open distributed systems are systems that are built according to generally accepted standards.  Components from any supplier can be integrated into the system and can inter-operate with the other system components.  Openness implies that system components can be independently developed in any programming language and, if these conform to standards, they will work with other components.  Web service standards for service-oriented architectures were developed to be open standards. Chapter 17 Distributed software engineering1120/11/2014

Scalability  The scalability of a system reflects its ability to deliver a high quality service as demands on the system increase  Size It should be possible to add more resources to a system to cope with increasing numbers of users.  Distribution It should be possible to geographically disperse the components of a system without degrading its performance.  Manageability It should be possible to manage a system as it increases in size, even if parts of the system are located in independent organizations. Chapter 17 Distributed software engineering1220/11/2014

scaling-up and scaling-out  There is a distinction between scaling-up and scaling- out.  Scaling up means replacing resources in the system with more powerful resources.  For example, you may increase the memory in a server from 16 GB to 64 GB.  Scaling out means adding additional resources to the system  an extra web server to work alongside an existing server 20/11/2014Chapter 17 Distributed software engineering13

scaling-up and scaling-out  Scaling out is often more cost effective than scaling up  Scaling out means that the system has to be designed so that concurrent processing is possible. Scaling up is more powerful system Scaling out is more system instances. 20/11/2014Chapter 17 Distributed software engineering14

Security  When a system is distributed, the number of ways that the system may be attacked is significantly increased, compared to centralized systems.  If a part of the system is successfully attacked then the attacker may be able to use this as a ‘back door’ into other parts of the system.  Difficulties in a distributed system arise because different organizations may own parts of the system.  These organizations may have mutually incompatible security policies and security mechanisms. Chapter 17 Distributed software engineering1520/11/2014

The types of attacks  Interception, where communications between parts of the system are intercepted by an attacker  there is a loss of confidentiality.  Interruption, where system services are attacked and cannot be delivered as expected.  Denial of service attacks involve bombarding a node with illegitimate service requests it cannot deal with valid requests. 20/11/2014Chapter 17 Distributed software engineering16

The types of attacks  Modification, where data or services in the system are changed by an attacker.  Fabrication, where an attacker generates information that should not exist  then uses this to gain some privileges. an attacker may generate a false password entry and use this to gain access to a system 20/11/2014Chapter 17 Distributed software engineering17

The difficulties in a distributed system  Security mechanisms, such as encryption and authentication, are used to enforce the security policy.  Different organizations may own parts of the system.  These organizations may have mutually incompatible security policies and security mechanisms.  Security compromises may have to be made in order to allow the systems to work together. 20/11/2014Chapter 17 Distributed software engineering18

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. Chapter 17 Distributed software engineering1920/11/2014

QoS is not always practicable  It may not be cost effective to design and configure the system to deliver a high QoS under peak load.  This could involve making resources available that are unused for much of the time.  One of the main arguments for ‘cloud computing’ is that it partially addresses this problem.  Using a cloud, it is easy to add resources as demand increases.  The QoS parameters may be mutually contradictory.  İncreased reliability may mean reduced throughput, as checking procedures are introduced to ensure that all system inputs are valid. 20/11/2014Chapter 17 Distributed software engineering20

Failure management  In a distributed system, it is inevitable that failures will occur, so the system has to be designed to be resilient to these failures. “You know that you have a distributed system when the crash of a system that you’ve never heard of stops you getting any work done.”  Distributed systems should include mechanisms for discovering if a component of the system has failed,  Distributed systems should continue to deliver as many services as possible in spite of that failure and, as far as possible, automatically recover from the failure. Chapter 17 Distributed software engineering2120/11/2014

CORBA – Common Object Request Broker Architecture  CORBA is a standard for an object request broker architecture that was developed by the Object Management Group in the 1990s.  It was hoped that this would be widely adopted and that implementations of the standard would be available from competing vendors.  The OMG standards are available from their website 20/11/2014Chapter 17 Distributed software engineering22

The structure of a CORBA-based distributed application 20/11/2014Chapter 17 Distributed software engineering23

The components of Distributed Application  Application objects that are designed and implemented for this application.  Standard objects that are defined by the OMG for a specific domain.  These domain object standards cover finance/insurance, electronic commerce, healthcare, and a number of other areas.  Fundamental CORBA services that provide basic distributed computing services such as directories, security management, etc. 20/11/2014Chapter 17 Distributed software engineering24

The components of Distributed Application  Horizontal CORBA facilities such as user interface facilities, system management facilities, etc.  The term horizontal facilities suggests that these facilities are common to many application domains  the facilities are therefore used in many different applications. 20/11/2014Chapter 17 Distributed software engineering25

Four major elements of CORBA standards  An object model for application objects where a CORBA object is an encapsulation of state with a well-defined, language-neutral interface described in an IDL (Interface Definition Language).  An object request broker (ORB) that manages requests for object services.  The ORB locates the object providing the service,  The ORB prepares it for the request  The ORB sends the service request  The ORB returns the results to the requester. 20/11/2014Chapter 17 Distributed software engineering26

Four major elements of CORBA standards  A set of object services that are general services likely to be required by many distributed applications.  Examples of services are directory services, transaction services and persistence services.  A set of common components built on top of these basic services that may be required by applications  These may be vertical domain-specific components or horizontal, general-purpose components that are used by many applications. 20/11/2014Chapter 17 Distributed software engineering27

Models of interaction  Two types of interaction between components in a distributed system  Procedural interaction, where one computer calls on a known service offered by another computer and waits for a response.  Message-based interaction, involves the sending computer sending information about what is required to another computer. There is no necessity to wait for a response. Chapter 17 Distributed software engineering2820/11/2014

Procedural interaction between a diner and a waiter Chapter 17 Distributed software engineering2920/11/2014 Synchronous ordering process as a series of calls

Message-based interaction between a waiter and the kitchen Chapter 17 Distributed software engineering30 20/11/2014 Hypothetical XML message that defines an order made by the table of three people

 The waiter takes the order as a series of interactions, with each interaction defining part of the order.  However, the waiter has a single interaction with the kitchen where the message defines the complete order. 20/11/2014Chapter 17 Distributed software engineering31

Remote procedure calls (RPC)  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  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. Chapter 17 Distributed software engineering3220/11/2014

The Steps: Remote procedure calls (RPC)  RPCs require a ‘stub’ for the called procedure to be accessible on the computer that is initiating the call.  The stub is called and it translates the procedure parameters into a standard representation for transmission to the remote procedure.  Through the middleware, it then sends the request for execution to the remote procedure.  The remote procedure uses library functions to convert the parameters into the required format, carries out the computation,  And it communicates the results via the ‘stub’ that is representing the caller. Chapter 17 Distributed software engineering33

remote method invocations (RMI)  In Java, remote method invocations (RMI) are comparable with, though not identical to, RPCs.  The RMI framework handles the invocation of remote methods in a Java program. 20/11/2014Chapter 17 Distributed software engineering34

Message passing  Message-based interaction normally involves one component creating a message that details the services required from another component.  Through the system middleware, this is sent to the receiving component.  The receiver parses the message, carries out the computations and creates a message for the sending component with the required results.  In a message-based approach, it is not necessary for the sender and receiver of the message to be aware of each other.  They simple communicate with the middleware. Chapter 17 Distributed software engineering3520/11/2014

Middleware  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.  Middleware is software that can manage these diverse parts, and ensure that they can communicate and exchange data. Chapter 17 Distributed software engineering3620/11/2014

Middleware in a distributed system Chapter 17 Distributed software engineering3720/11/2014

Middleware support  Interaction support, where the middleware coordinates interactions between different components in the system  The middleware provides location transparency in that it isn’t necessary for components to know the physical locations of other components.  The provision of common services, where the middleware provides reusable implementations of services that may be required by several components in the distributed system.  By using these common services, components can easily inter- operate and provide user services in a consistent way. Chapter 17 Distributed software engineering3820/11/2014