23
©2007 · Georges Merx and Ronald J. Norman Slide 1 Chapter 6 Chapter 6 Introduction to Introduction to Distributed Distributed Computing Computing Concepts Concepts

©2007 · Georges Merx and Ronald J. NormanSlide 1 Chapter 6 Introduction to Distributed Computing Concepts

Embed Size (px)

Citation preview

Page 1: ©2007 · Georges Merx and Ronald J. NormanSlide 1 Chapter 6 Introduction to Distributed Computing Concepts

©2007 · Georges Merx and Ronald J. Norman Slide 1

Chapter 6Chapter 6

Introduction to Introduction to Distributed Distributed Computing Computing ConceptsConcepts

Page 2: ©2007 · Georges Merx and Ronald J. NormanSlide 1 Chapter 6 Introduction to Distributed Computing Concepts

©2007 · Georges Merx and Ronald J. Norman Slide 2

AgendaAgenda

• Distributed application concepts– Enterprise computing

• Overview of agile methodologies

• Information persistence– Files

• Scope

Page 3: ©2007 · Georges Merx and Ronald J. NormanSlide 1 Chapter 6 Introduction to Distributed Computing Concepts

©2007 · Georges Merx and Ronald J. Norman Slide 3

Distributed Computing (1)Distributed Computing (1)

Page 4: ©2007 · Georges Merx and Ronald J. NormanSlide 1 Chapter 6 Introduction to Distributed Computing Concepts

©2007 · Georges Merx and Ronald J. Norman Slide 4

Distributed Computing (2)Distributed Computing (2)

• Java technologies in support of distributed solutions include:– Remote Method Invocation (RMI) for

all-Java applications– Support for the Object Management

Group’s Common Object Request Broker Architecture (OMG CORBA) standard

– Java servlets and Java Server Pages (JSPs)

Page 5: ©2007 · Georges Merx and Ronald J. NormanSlide 1 Chapter 6 Introduction to Distributed Computing Concepts

©2007 · Georges Merx and Ronald J. Norman Slide 5

High-level Distributed High-level Distributed ArchitectureArchitecture

Page 6: ©2007 · Georges Merx and Ronald J. NormanSlide 1 Chapter 6 Introduction to Distributed Computing Concepts

©2007 · Georges Merx and Ronald J. Norman Slide 6

Agile TechniquesAgile Techniques

• Most applicable:– When the project is small and well-

defined– When the team working on the project

is local, relatively small (ten people or fewer), and quite experienced

– When the technology is well-known, such as in a reimplementation or upgrade of an existing product

– When the customers/stakeholders explicitly understand and accept the risks of a streamlined development life cycle

Page 7: ©2007 · Georges Merx and Ronald J. NormanSlide 1 Chapter 6 Introduction to Distributed Computing Concepts

©2007 · Georges Merx and Ronald J. Norman Slide 7

Agile MethodologiesAgile Methodologies

• Extreme Programming• Feature Driven Development• SCRUM– Scrum is an agile, lightweight

process that can be used to manage and control software and product development using iterative, incremental practices. It wraps existing engineering practices, including Extreme Programming and RUP.

Page 8: ©2007 · Georges Merx and Ronald J. NormanSlide 1 Chapter 6 Introduction to Distributed Computing Concepts

©2007 · Georges Merx and Ronald J. Norman Slide 8

Extreme Programming (1)Extreme Programming (1)

When to use-Up: often-Down: rarely

Page 9: ©2007 · Georges Merx and Ronald J. NormanSlide 1 Chapter 6 Introduction to Distributed Computing Concepts

©2007 · Georges Merx and Ronald J. Norman Slide 9

Extreme Programming (2)Extreme Programming (2)

Page 10: ©2007 · Georges Merx and Ronald J. NormanSlide 1 Chapter 6 Introduction to Distributed Computing Concepts

©2007 · Georges Merx and Ronald J. Norman Slide 10

Feature-Driven DevelopmentFeature-Driven Development

Page 11: ©2007 · Georges Merx and Ronald J. NormanSlide 1 Chapter 6 Introduction to Distributed Computing Concepts

©2007 · Georges Merx and Ronald J. Norman Slide 11

Learning LayoutLearning Layout

Page 12: ©2007 · Georges Merx and Ronald J. NormanSlide 1 Chapter 6 Introduction to Distributed Computing Concepts

©2007 · Georges Merx and Ronald J. Norman Slide 12

Learning ConnectionsLearning Connections

Page 13: ©2007 · Georges Merx and Ronald J. NormanSlide 1 Chapter 6 Introduction to Distributed Computing Concepts

©2007 · Georges Merx and Ronald J. Norman Slide 13

Commercial ApplicationsCommercial Applications

• Continuous productivity improvement – process improvement

• Quality improvement, improved support and maintainability

• Better, faster decisions• Cost or resources savings• Centralized data management; reduced

duplication of data; integration of critical information

• Shorter time to market for products and/or services

• Sustainable competitive advantages

Page 14: ©2007 · Georges Merx and Ronald J. NormanSlide 1 Chapter 6 Introduction to Distributed Computing Concepts

©2007 · Georges Merx and Ronald J. Norman Slide 14

Multi-Tier ArchitectureMulti-Tier Architecture

Page 15: ©2007 · Georges Merx and Ronald J. NormanSlide 1 Chapter 6 Introduction to Distributed Computing Concepts

©2007 · Georges Merx and Ronald J. Norman Slide 15

Java RMIJava RMI

• Remote Method Invocation

Page 16: ©2007 · Georges Merx and Ronald J. NormanSlide 1 Chapter 6 Introduction to Distributed Computing Concepts

©2007 · Georges Merx and Ronald J. Norman Slide 16

Java Server Faces (JSF)Java Server Faces (JSF)

• Java Server Faces technology includes: – A set of APIs for representing UI

components and managing their state, handling events and input validation, defining page navigation, and supporting internationalization and accessibility

– A JavaServer Pages (JSP) custom tag library for expressing a JavaServer Faces interface within a JSP page

Page 17: ©2007 · Georges Merx and Ronald J. NormanSlide 1 Chapter 6 Introduction to Distributed Computing Concepts

©2007 · Georges Merx and Ronald J. Norman Slide 17

Persistence (1)Persistence (1)

• Making data persistent is the object-oriented terminology for writing data to a file or database

• A file is an organized data structure on a storage device, often a hard disk (HD), which allows for the preservation of information, even when a system or device is no longer powered

• Files contain data, but also headers with file management information and some end-of-file indication

Page 18: ©2007 · Georges Merx and Ronald J. NormanSlide 1 Chapter 6 Introduction to Distributed Computing Concepts

©2007 · Georges Merx and Ronald J. Norman Slide 18

Persistence (2)Persistence (2)

• Example: reading an object from a file

ObjectInputStream ss = new ObjectInputStream(new FileInputStream(fileName)); try { candidate = (Candidates)ss.readObject(); } catch (IOException e) { // deal with I/O error}

Page 19: ©2007 · Georges Merx and Ronald J. NormanSlide 1 Chapter 6 Introduction to Distributed Computing Concepts

©2007 · Georges Merx and Ronald J. Norman Slide 19

Position in ProcessPosition in Process

• The integration of components occurs at multiple levels:– Class and object-level integration:

parameters and return values must match the design expectations

– Package-level integration: classes are assembled into appropriate, reuse-oriented packages

– Subsystem-level integration: packages are integrated to provide the functionality of an entire subsystem

– System-level integration: all subsystems together provide the system as specified in the Design Specification

Page 20: ©2007 · Georges Merx and Ronald J. NormanSlide 1 Chapter 6 Introduction to Distributed Computing Concepts

©2007 · Georges Merx and Ronald J. Norman Slide 20

Understanding ScopeUnderstanding Scope

Page 21: ©2007 · Georges Merx and Ronald J. NormanSlide 1 Chapter 6 Introduction to Distributed Computing Concepts

©2007 · Georges Merx and Ronald J. Norman Slide 21

Integration TestingIntegration Testing

• Integration testing of– Classes and objects– Packages– Subsystems– interfaces

• Alpha and beta testing

Page 22: ©2007 · Georges Merx and Ronald J. NormanSlide 1 Chapter 6 Introduction to Distributed Computing Concepts

©2007 · Georges Merx and Ronald J. Norman Slide 22

Sample Integration Test Sample Integration Test Specification OutlineSpecification Outline

Page 23: ©2007 · Georges Merx and Ronald J. NormanSlide 1 Chapter 6 Introduction to Distributed Computing Concepts

©2007 · Georges Merx and Ronald J. Norman Slide 23

RefactoringRefactoring

• Refactoring is a disciplined technique for restructuring an existing body of code, altering its internal structure without changing its external behavior.

• Its heart is a series of small behavior preserving transformations. Each transformation (called a 'refactoring') does little, but a sequence of transformations can produce a significant restructuring.

• Since each refactoring is small, it's less likely to go wrong. The system is also kept fully working after each small refactoring, reducing the chances that a system can get seriously broken during the restructuring.