Pattern Oriented Software Architecture for Networked Objects Based on the book By Douglas Schmidt Michael Stal Hans Roehnert Frank Buschmann.

Slides:



Advertisements
Similar presentations
DISTRIBUTED COMPUTING PARADIGMS
Advertisements

MicroKernel Pattern Presented by Sahibzada Sami ud din Kashif Khurshid.
Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Extensibility, Safety and Performance in the SPIN Operating System Presented by Allen Kerr.
Introduction CSCI 444/544 Operating Systems Fall 2008.
Web Applications Development Using Coldbox Platform Eddie Johnston.
Broker Pattern Pattern-Oriented Software Architecture (POSA 1)
OOAD Using the UML - Use-Case Analysis, v 4.2 Copyright  Rational Software, all rights reserved 1/18 Use Case Analysis – continued Control Classes.
Introduction To System Analysis and Design
Seyed Mohammad Ghaffarian ( ) Computer Engineering Department Amirkabir University of Technology Fall 2010.
A CHAT CLIENT-SERVER MODULE IN JAVA BY MAHTAB M HUSSAIN MAYANK MOHAN ISE 582 FALL 2003 PROJECT.
1 Quality Objects: Advanced Middleware for Wide Area Distributed Applications Rick Schantz Quality Objects: Advanced Middleware for Large Scale Wide Area.
Software Engineering and Middleware: a Roadmap by Wolfgang Emmerich Ebru Dincel Sahitya Gupta.
Course Instructor: Aisha Azeem
1 An introduction to design patterns Based on material produced by John Vlissides and Douglas C. Schmidt.
SEDA: An Architecture for Well-Conditioned, Scalable Internet Services
Introduction to the Enterprise Library. Sounds familiar? Writing a component to encapsulate data access Building a component that allows you to log errors.
Chapter 17 Networking Dave Bremer Otago Polytechnic, N.Z. ©2008, Prentice Hall Operating Systems: Internals and Design Principles, 6/E William Stallings.
Software Design Refinement Using Design Patterns Instructor: Dr. Hany H. Ammar Dept. of Computer Science and Electrical Engineering, WVU.
B.Ramamurthy9/19/20151 Operating Systems u Bina Ramamurthy CS421.
An Introduction to Software Architecture
Jozef Goetz, Application Layer PART VI Jozef Goetz, Position of application layer The application layer enables the user, whether human.
The Grid Component Model: an Overview “Proposal for a Grid Component Model” DPM02 “Basic Features of the Grid Component Model (assessed)” -- DPM04 CoreGrid.
4/2/03I-1 © 2001 T. Horton CS 494 Object-Oriented Analysis & Design Software Architecture and Design Readings: Ambler, Chap. 7 (Sections to start.
Introduction To System Analysis and Design
Patterns in programming 1. What are patterns? “A design pattern is a general, reusable solution to a commonly occurring problem in software. A design.
Architectures of distributed systems Fundamental Models
Track 1: Summary Slides for POSA2 Patterns and Frameworks Distributed Real-Time Systems (TI-DRTS) Version:
DISTRIBUTED COMPUTING PARADIGMS. Paradigm? A MODEL 2for notes
E81 CSE 532S: Advanced Multi-Paradigm Software Development Venkita Subramonian, Christopher Gill, Guandong Wang, Zhenning Hu, Zhenghui Xie Department of.
Proactor Pattern Venkita Subramonian & Christopher Gill
Middleware for FIs Apeego House 4B, Tardeo Rd. Mumbai Tel: Fax:
1 Geospatial and Business Intelligence Jean-Sébastien Turcotte Executive VP San Francisco - April 2007 Streamlining web mapping applications.
SEMINOR. INTRODUCTION 1. Middleware is connectivity software that provides a mechanism for processes to interact with other processes running on multiple.
Software Engineering Prof. Ing. Ivo Vondrak, CSc. Dept. of Computer Science Technical University of Ostrava
Explore Patterns in Context-Aware Applications --Using Reactor Pattern to Develop In/Out Board Fall 2002 Yu Du.
Architectural pattern: Interceptor Source: POSA II pp 109 – 140POSA II Environment: developing frameworks that can be extended transparently Recurring.
Software Design Patterns (1) Introduction. patterns do … & do not … Patterns do... provide common vocabulary provide “shorthand” for effectively communicating.
E81 CSE 532S: Advanced Multi-Paradigm Software Development Chris Gill Department of Computer Science and Engineering Washington University, St. Louis
9 Systems Analysis and Design in a Changing World, Fourth Edition.
Hwajung Lee.  Interprocess Communication (IPC) is at the heart of distributed computing.  Processes and Threads  Process is the execution of a program.
Presented By:- Sudipta Dhara Roll Table of Content Table of Content 1.Introduction 2.How it evolved 3.Need of Middleware 4.Middleware Basic 5.Categories.
Real Time Programming Language. Intro A programming language represents the nexus of design and structure. But misuse of the programming language can.
Shuman Guo CSc 8320 Advanced Operating Systems
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 13. Review Shared Data Software Architectures – Black board Style architecture.
Architectural pattern: Reactor Source: POSA II pp 179 – 214POSA II Environment: an application that receives multiple requests simultaneously but may process.
MODEL-BASED SOFTWARE ARCHITECTURES.  Models of software are used in an increasing number of projects to handle the complexity of application domains.
The Client-Server Model And the Socket API. Client-Server (1) The datagram service does not require cooperation between the peer applications but such.
Developing Adaptable Software Architectures for Real-Time Systems Using Design Patterns Lawrence Chung, Kendra Cooper, Anna Yi The University of Texas.
Session 7: JMS, JCA, JSF Dr. Nipat Jongsawat.
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
Design Reuse Earlier we have covered the re-usable Architectural Styles as design patterns for High-Level Design. At mid-level and low-level, design patterns.
1 BBN Technologies Quality Objects (QuO): Adaptive Management and Control Middleware for End-to-End QoS Craig Rodrigues, Joseph P. Loyall, Richard E. Schantz.
1 Software Design Lecture What’s Design It’s a representation of something that is to be built. i.e. design  implementation.
E81 CSE 532S: Advanced Multi-Paradigm Software Development Venkita Subramonian, Christopher Gill, Ying Huang, Marc Sentany Department of Computer Science.
1 Middleware and future telecom ’platform’ By Lill Kristiansen, ntnu.
Engr 691 Special Topics in Engineering Science Software Architecture Spring Semester 2004 Lecture Notes.
Copyright © 2004, Keith D Swenson, All Rights Reserved. OASIS Asynchronous Service Access Protocol (ASAP) Tutorial Overview, OASIS ASAP TC May 4, 2004.
1 Chapter 2: Operating-System Structures Services Interface provided to users & programmers –System calls (programmer access) –User level access to system.
Software Design Refinement Using Design Patterns
Event Handling Patterns Asynchronous Completion Token
Object-Oriented Analysis and Design
File System Implementation
#01 Client/Server Computing
Half-Sync/Half-Async (HSHA) and Leader/Followers (LF) Patterns
An Introduction to Software Architecture
Review CSE116 2/21/2019 B.Ramamurthy.
#01 Client/Server Computing
Presentation transcript:

Pattern Oriented Software Architecture for Networked Objects Based on the book By Douglas Schmidt Michael Stal Hans Roehnert Frank Buschmann

Scope of application of patterns for Networking and Distributed Systems Applications to “middleware” development. Applications to higher and lower-level systems and applications not based directly on middleware. As hardware capacity and sophistication increases, software needs to keep up. Decrease complexity of the process of software development for complex networks and services. Continuous reinvention of core concepts leads to changes in the underlying software components. Object – oriented approach leads to the modular approach and faster development.

Four important aspects of Networked Application Development Service Access and Configuration - Effectively design and configure application access to the system interface and implementation of evolving service components. Wrapper Façade Pattern – This design pattern shields the developer from having to interface with the low level system specific functions. Component Configurator Pattern – This allows the for the dynamic initialization and stopping of services/components. Interceptor Pattern – Allows for the handling of unexpected events into the software framework so that responses to these events can be handled at run – time. Extension Interface – This allows for the addition of extra interfaces into the applications without affecting applications itself.

Wrapper Façade Pattern Server Client 1.socket();6)thre_cre(); 2.bind(); 3.listen(); 5.accept(); 8.recv(); 9.write(); Handle Factory Logging Handler 4)connect(); send(); Prototype for short throw-away types of applications

Class Wrapper Facade Responsibilty Encapsulates non-object functions And data structures with a cohesive object- oriented abstraction Collaborator -API Functions CRC card for Wrapper Façade Class

Application using Wrapper Façade sequence diagram

Known Uses of Wrapper Façade ACE – This is a set of C++ classes which allow the user to use/extend low-level system API’s. JVM and class libraries – These use the low – level system API’s.The JVM itself is a Wrapper Façade. A simple book organization system – Individual papers and books are organized into various “themes” so that the collection can be easily accessible.

Event Handling -It is important to have efficient event-driven applications. Two patterns which help achieve this are : Reactor pattern :- Allows event-driven applications to demultiplex and dispatch service requests from clients. Acceptor – Connector Design pattern:- Decouples the connection and initialization of co-operating services from the processing done by the services after they are connected and initialized.

Acceptor – Connector Pattern Problem -How to separate initialization and connection establishment from service behavior. Solution -An Acceptor waits for connection requests and dispatches them to a reactor. -A Connector initiates connection with servers and dispatches replies to a Reactor. - Acceptor and Connector decouple passive and active roles during service initialization.

CRC cards for Acceptor – Connector pattern Class Acceptor Responsibility -Passively connects and initializes an associated service Handler. Collaborator -Service handler. -Dispatcher - Transport Endpoint Class Connector Collaborator -Service handler. -Dispatcher - Transport Endpoint Responsibility -Actively connects and initializes an associated service Handler. Responsibility -Registers and removes event handlers and their Handles. -Runs the applications event loop. Collaborator -Handle set. -Event Handlers. -Event Demultiplexer. Class Reactor

Acceptor Sequence Diagram

Connector pattern

Acceptor – Connector pattern Acceptor-Connector is one of the most important of design patterns. Provides reusability – Strict separation of connection handling ensures passive/active connection establishment procedures to be written once and run in any framework. Efficiency – Can be used to establish connections with a large number of hosts asynchronously and efficiently over long-latency wide area networks. Uses 1)Web-browsers. 2) JACE – Java ACE has built – in Acceptors, Connectors and SvcHandlers to implements core aspects of the Acceptor – Connector pattern. 3) Real-life examples such as managers communicating through their secretaries. Secretaries act as acceptors/connectors, while Managers act as service handlers.

Putting it all together in The ACE Framework

Concurrency Patterns Patterns of Interest Half-Sync/Half-Async – Decouples synchronous and asynchronous service processing in concurrent systems. Monitor Object – Synchronizes concurrent method execution to ensure that only one method at time runs within an object. This also helps in scheduling processes. Eg – Readers/Writers problem.

Half-Sync/Half – Async Pattern Problem Two forces to be resolved during the software development process 1)Synchronous processing simplicity and asynchronous processing complexity (and efficiency) 2)Architectures must be able to exploit both the efficiency of asynchronous operations and the simplicity of synchronous operations. Solution Separate synchronous and asynchronous layers. Synchronous operations such as file transfers,write() and read() operations are done in the synchronous layers. If these two layers need to communicate, then they do so through messages that are queued up in the queuing layer

Synch Service1Synch Service2Synch Service3 Queue Async Service External Event Source Queueing layer Synch Service layer Asynch Service layer

Synchronization Patterns Strategized Locking – Parameterized synchronization patterns that protect a component’s critical sections from concurrent access. Uses – File cache access. Eg. File access may be required by many applications at once. Many applications may require access to the file cache. The component (file cache) must contain multiple synchronization mechanisms to support various applications that implement different synchronization primitives.

CRC cards CRC cards are a method to simplify object- oriented programming Each card explains a class,its responsibilities and its collaborators. Each member of the design team has a card or a set of cards for which he/she is responsible.

Important links for Networking patterns ACE – The Adaptive Communications Environment - JACE ( JAVA ACE) – A set of reusable classes which are widely used for the development of networking software. - Documentation - ACE applied to CORBA – A description and few tutorials on the ACE appiled to ORB -

To Summarize Patterns help in tapping the knowledge of software development. Patterns applied to networking simplify the process of software development. Further developments Patterns can be combined together to give pattern languages eg. Reactor – Acceptor – Connector. Reactor Acceptor-Connector Active Object Monitor Object

Conclusion contd.. Pattern languages ?? A pattern language guides a designer by providing workable solutions to all of the problems known to arise in the course of design. A solution is arrived at by combining a set of patterns to solve commonly encountered problem. Alternatively,if we observe a set of patterns being always used in a particular context,then we can say that we have a pattern language for that context. An example of applying pattern languages (using Acceptor- Connector-Reactor) for solving a class of problems (network routing) is described here.