Patterns in Software Engineering

Similar documents
Architectural Patterns. Layers: Pattern. Architectural Pattern Examples. Layer 3. Component 3.1. Layer 2. Component 2.1 Component 2.2.

Architectural Patterns: From Mud to Structure

Pattern. seconda parte. Types of patterns. ...other good guidance... some GRASP. design patterns (software design) Types of software patterns

Architectural patterns

Software Life-Cycle Management

Deployment Pattern. Youngsu Son 1,JiwonKim 2, DongukKim 3, Jinho Jang 4

Introduction to Embedded Systems. Software Update Problem

Information Systems Analysis and Design CSC John Mylopoulos. Software Architectures Information Systems Analysis and Design CSC340

Decomposition into Parts. Software Engineering, Lecture 4. Data and Function Cohesion. Allocation of Functions and Data. Component Interfaces

A Review of an MVC Framework based Software Development

Patterns in. Lecture 2 GoF Design Patterns Creational. Sharif University of Technology. Department of Computer Engineering

Fast Innovation requires Fast IT

Architecture Design & Sequence Diagram. Week 7

Architecture. Reda Bendraou

Chapter Outline. Chapter 2 Distributed Information Systems Architecture. Middleware for Heterogeneous and Distributed Information Systems

Event-based middleware services

A refined architecture for DRM

Software Engineering

Advanced Analysis and Design

Structural Patterns. Structural Patterns. Fritz Solms. October 16, 2015

Chap 1. Introduction to Software Architecture

Chapter 2: Remote Procedure Call (RPC)

Manager-Agent and Remote Operation: Two Key Patterns for Network Management Interfaces

Génie Logiciel et Gestion de Projets. Patterns

Definition: Software Architecture

Aerospace Software Engineering

An MDA Approach for the Development of Web applications

Chapter 11: Integrationand System Testing

Introduction to Service Oriented Architectures (SOA)

Service Oriented Architecture

CHAPTER 2 MODELLING FOR DISTRIBUTED NETWORK SYSTEMS: THE CLIENT- SERVER MODEL

SOACertifiedProfessional.Braindumps.S90-03A.v by.JANET.100q. Exam Code: S90-03A. Exam Name: SOA Design & Architecture

Motivation Definitions EAI Architectures Elements Integration Technologies. Part I. EAI: Foundations, Concepts, and Architectures

UNIFACE Component-based. Development Methodology UNIFACE V Revision 0 Dec 2000 UMET

Scientific versus Business Workflows

Service Virtualization: Managing Change in a Service-Oriented Architecture

Web Application Architectures

Service-Oriented Architecture and Software Engineering

Objectives. Distributed Databases and Client/Server Architecture. Distributed Database. Data Fragmentation

Broker Revisited Michael Kircher, Markus Voelter, Klaus Jank, Christa Schwanninger, Michael Stal

CS 389 Software Engineering. Lecture 2 Chapter 2 Software Processes. Adapted from: Chap 1. Sommerville 9 th ed. Chap 1. Pressman 6 th ed.

Software Architecture. New wine in old bottles? (i.e., software architecture global design?, architect designer)

Service Oriented Architectures

Data Management in an International Data Grid Project. Timur Chabuk 04/09/2007

PATTERN-ORIENTED ARCHITECTURE FOR WEB APPLICATIONS

Basic Trends of Modern Software Development

An Oracle White Paper October Oracle Data Integrator 12c New Features Overview

Service Oriented Architecture

ebay : How is it a hit

A distributed system is defined as

SOFT 437. Software Performance Analysis. Ch 5:Web Applications and Other Distributed Systems

Definition of SOA. Capgemini University Technology Services School Capgemini - All rights reserved November 2006 SOA for Software Architects/ 2

JOURNAL OF OBJECT TECHNOLOGY

The Security Framework 4.1 Programming and Design

Customer Bank Account Management System Technical Specification Document

E-Commerce Supply Chain Management Domain Research and Standard Architectures Kunal Chopra, Jeff Elrod, Bill Glenn, Barry Jones.

HexaCorp. White Paper. SOA with.net. Ser vice O rient ed Ar c hit ecture

Encapsulating Crosscutting Concerns in System Software

A methodology for secure software design

Object-Oriented Middleware for Distributed Systems

OpenMI 'in a nutshell'

Developing SOA solutions using IBM SOA Foundation

CS550. Distributed Operating Systems (Advanced Operating Systems) Instructor: Xian-He Sun

Software Engineering. Software Development Process Models. Lecturer: Giuseppe Santucci

Architectural Patterns (3)

Software design (Cont.)

Load Balancing in CORBA: A Survey. Response to the Aggregated Computing RFI

Using Patterns with WMBv8 and IIBv9

FOUNDATION Fieldbus High Speed Ethernet Control System

Distributed Database Design

How To Understand The Concept Of A Distributed System

A MODEL OF HETEROGENEOUS DISTRIBUTED SYSTEM FOR FOREIGN EXCHANGE PORTFOLIO ANALYSIS

Component Based Development in Software Engineering

e-gov Architecture Architectural Blueprint

The Data Grid: Towards an Architecture for Distributed Management and Analysis of Large Scientific Datasets

CORBAservices. Naming. Part of the CORBA Naming Service Interface in IDL. CORBA Naming Service

The Software Container pattern

RMON, the New SNMP Remote Monitoring Standard Nathan J. Muller

Chapter 6 Essentials of Design and the Design Activities

Client/Server Computing Distributed Processing, Client/Server, and Clusters

CHAPTER 4: PATTERNS AND STYLES IN SOFTWARE ARCHITECTURE

Chapter 11: Integration- and System Testing

A Process View on Architecture-Based Software Development

Requirements engineering

Real Time Programming: Concepts

To introduce software process models To describe three generic process models and when they may be used

The ebbits project: from the Internet of Things to Food Traceability

Transcription:

Patterns in Software Engineering Lecturer: Raman Ramsin Lecture 7 GoV Patterns Architectural Part 1 1

GoV Patterns for Software Architecture According to Buschmann et al.: A pattern for software architecture describes a particular recurring design problem that arises in specific design contexts, and presents a well-proven generic scheme for its solution. The solution scheme is specified by describing the constituent components The responsibilities and relationships of the components the ways in which the components collaborate. 2

GoV Patterns: Pattern Schema Context: Design situation giving rise to a design problem Problem: Set of forces (requirements, constraints, and desirable properties) repeatedly arising in the context that need to be addressed Solution: Configuration to balance the forces Structure with components and relationships Run-time behavior 3

GoV Patterns: Categories Architectural Expresses a fundamental structural organization schema for software systems. Design Provides a set of predefined subsystems (or components), specifies their responsibilities, and includes rules and guidelines for organizing the relationships between them. Provides a scheme for refining the subsystems or components of a software system, or the relationships between them. Idiom Describes a commonly-recurring structure of communicating components that solves a general design problem within a particular context. Low-level pattern specific to a programming language. Describes how to implement particular aspects of components or the relationships between them using the features of the given language. 4

Architectural Patterns: Categories From Mud to Structure Support a controlled decomposition of a system task into cooperating subtasks. Layers, Pipes and Filters, and Blackboard Distributed Systems Deal with the infrastructure of distributed applications. Broker; also Microkernel and Pipes and Filters, which only consider distribution as a secondary concern. Interactive Systems Support the structuring of systems that feature human-computer interaction. Model-View-Controller and Presentation-Abstraction-Control Adaptable Systems Support extension of applications and their adaptation to evolving technology and changing functional requirements. Reflection and Microkernel 5

Architectural: From Mud to Structure Layers: Helps to structure applications that can be decomposed into groups of subtasks. Each group of subtasks is at a particular level of abstraction. Pipes and Filters: Provides a structure for systems that process a stream of data. Each processing step is encapsulated in a filter component. Data is passed through pipes between adjacent filters. Recombining filters allows you to build families of related systems. Blackboard: Useful for problems for which no deterministic solution strategies are known. Several specialized subsystems assemble their knowledge to build a possibly partial or approximate solution. 6

From Mud to Structure: Layers Helps to structure applications that can be decomposed into groups of subtasks in which each group of subtasks is at a particular level of abstraction. 7

From Mud to Structure: Layers Context - A large system that requires decomposition. Problem - Forces are as follows: Late source code changes should not ripple through the system. Interfaces should be stable. Parts of the system should be exchangeable. It may be necessary to build other systems at a later date with the same low-level issues as the system you are currently designing. Similar responsibilities should be grouped to help understandability and maintainability. There is no 'standard' component granularity. Complex components need further decomposition. Crossing component boundaries may impede performance. The system will be built by a team of programmers, and work has to be subdivided along clear boundaries. 8

Layers: Structure 9

Layers: Dynamics Scenario I: Top-down communication initiated by a client. Scenario II: Bottom-up communication, when a chain of actions starts at Layer 1; for example when a device driver detects input. Scenarios III and IV: Requests only travel through a subset of the layers. III: A top-level request may only go to level N-1 lf this level can satisfy the request; e.g. when level N-1 acts as a cache. IV: A bottom-level request may only travel through the next few upper-level layers. Scenario V: involves two stacks of N layers communicating with each other. 10

Layers: Consequences Reuse of layers Support for standardization Dependencies are kept local Exchangeability Cascades of changing behavior Lower efficiency Potential for unnecessary work Difficulty of establishing the correct granularity of layers 11

From Mud to Structure: Pipes and Filters Provides a structure for systems that process a stream of data. Each processing step is encapsulated in a filter component. Data is passed through pipes between adjacent filters. 12

From Mud to Structure: Pipes and Filters Context - Processing data streams. Problem - Forces are as follows: Future system enhancements should be possible by exchanging processing steps or by recombination of steps, even by users. Small processing steps are easier to reuse in different contexts than large ones. Non-adjacent processing steps do not share information. Different sources of input data exist. It should be possible to present or store final results in various ways. Explicit storage of intermediate results for further processing in files clutters directories and is error-prone, if done by users. You may not want to rule out multi-processing the steps, for example running them in parallel. 13

Pipes and Filters: Structure 14

Pipes and Filters: Structure Filters and Pipes Filter: processing unit of the pipeline. Enriches, refines or transforms its input data. Its activity can be triggered by several events: subsequent pipeline element pulls output data from the filter (passive). The previous pipeline element pushes new input data to the filter (passive). Most commonly, the filter is active in a loop. Pipe: connection between filters. If two active components are joined, the pipe synchronizes them. This synchronization is done with a first-in- first-out buffer. 15

Pipes and Filters: Structure Sources and Sinks The data source represents the input to the system, and provides a sequence of data values of the same structure or type. Examples of such data sources are a file consisting of lines of text, or a sensor delivering a sequence of numbers. The data sink collects the results from the end of the pipeline. 16

Pipes and Filters: Dynamics Scenario I Push pipeline in which activity starts with the data source. Filter activity is triggered by writing data to the passive filters. 17

Pipes and Filters: Dynamics Scenario II Pull pipeline in which the control flow is started by the data sink calling for data. 18

Pipes and Filters: Dynamics Scenario III mixed push-pull pipeline with passive data source and sink. 19

Pipes and Filters: Dynamics Scenario IV All filters actively pull, compute. and push data in a loop. 20

Pipes and Filters: Consequences No intermediate files necessary, but possible Flexibility by filter exchange and recombination Reuse of filter components Rapid prototyping of pipelines Efficiency by parallel processing Sharing state information is expensive or inflexible Efficiency gain by parallel processing is often an illusion Data transformation overhead Error handling is difficult 21

Architectural: Distributed Systems Broker: Used to structure distributed software systems with decoupled components that interact by remote service invocations. A broker component is responsible for coordinating communication, such as forwarding requests, as well as for transmitting results and exceptions. Microkernel: Separates a minimal functional core (microkernel) from extended functionality and customer-specific parts. Applies to software systems that must be able to adapt to changing system requirements. Microkernel systems employ a Client-Server architecture in which clients and servers run on top of the microkernel component. Pipes and Filters: Provides a structure (possibly distributed) for systems that process a stream of data. 22

Distributed Systems: Broker Used to structure distributed software systems with decoupled components that interact by remote service invocations. A broker component is responsible for coordinating communication, such as forwarding requests, as well as for transmitting results and exceptions. 23

Distributed Systems: Broker Context - Your environment is a distributed and possibly heterogeneous system with independent cooperating components. Problem - Forces are as follows: Components should be able to access services provided by others through remote, location-transparent service invocations. You need to exchange, add, or remove components at run-time. The architecture should hide system- and implementation-specific details from the users of components and services. 24

Broker: Structure Brokers and Bridges Brokers are messengers that are responsible for the transmission of requests from clients to servers, and responses and exceptions back to the client. Bridges are optional components used for hiding implementation details when two brokers interoperate. 25

Broker: Structure Clients and Servers Servers implement objects that expose their functionality through interfaces that consist of operations and attributes. Clients are applications that access the services of at least one server. 26

Broker: Structure Proxies Proxies represent a layer between clients/servers and the broker. This additional layer provides transparency, in that a remote object appears to the client/server as a local one. 27

Broker: Dynamics Scenario I A server registers itself with the local broker component. 28

Broker: Dynamics Scenario II A client sends a request to a local server. 29

Broker: Dynamics Scenario III interaction of different brokers via bridge components. 30

Broker: Consequences Location Transparency Changeability and extensibility of components Portability of a Broker system Interoperability between different Broker systems Reusability Restricted efficiency Lower fault tolerance Testing and Debugging 31

Reference Buschmann, F., Meunier, R., Rohnert, H., Sommerlad, P., and Stal, M., Pattern-Oriented Software Architecture: A System of Patterns, Vol. 1. Wiley, 1996. 32