CSCI 3130 Software Architectures 1/3. February 5, 2013

Similar documents
Architectural Blueprint The 4+1 View Model of Software Architecture. Philippe Kruchten

Architectural Blueprint

Chapter 13: Architecture Patterns

ADVANCED SOFTWARE DESIGN LECTURE 4 SOFTWARE ARCHITECTURE

Internet of Things Workshop ST 2015/2016

Software MEIC. (Lesson 20)

Advanced Lectures on knowledge Engineering

Software Architecture

6/20/2018 CS5386 SOFTWARE DESIGN & ARCHITECTURE LECTURE 5: ARCHITECTURAL VIEWS C&C STYLES. Outline for Today. Architecture views C&C Views

Architectural Design

Distributed Objects. Object-Oriented Application Development

WHAT IS SOFTWARE ARCHITECTURE?

A Comparison of Service-oriented, Resource-oriented, and Object-oriented Architecture Styles

CHAPTER 1: OPERATING SYSTEM FUNDAMENTALS

Basic Properties of Styles

Software MEIC. (Lesson 4)

SOFTWARE ARCHITECTURES ARCHITECTURAL STYLES SCALING UP PERFORMANCE

Lesson 5 Web Service Interface Definition (Part II)

Architectural Styles. Software Architecture Lecture 5. Copyright Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved.

SWE 760 Lecture 1: Introduction to Analysis & Design of Real-Time Embedded Systems

Ch 1: The Architecture Business Cycle

Today. Architectural Styles

SWE 621: Software Modeling and Architectural Design. Lecture Notes on Software Design. Lecture 8 Architectural Design of Distributed Applications

Introduction to Software Engineering

Design Patterns for Net- Centric Applications

Fundamentals to Creating Architectures using ISO/IEC/IEEE Standards

Today. Architectural Styles

Software Architecture

An Introduction to Software Architecture. David Garlan & Mary Shaw 94

Architecture CSE 403. Fallingwater by Frank Lloyd Wright

5/9/2014. Recall the design process. Lecture 1. Establishing the overall structureof a software system. Topics covered

Architectures in Context

Introduction to AMQP Business messaging without lock-in

Software Architectures

Architectures for distributed systems (Chapter 2)

Introduction to Software Engineering 10. Software Architecture

Software MEIC. (Lesson 20)

Design Patterns. Observations. Electrical Engineering Patterns. Mechanical Engineering Patterns

Software Architectures. Lecture 6 (part 1)

COMMUNICATION PROTOCOLS

Achieving Scalability and High Availability for clustered Web Services using Apache Synapse. Ruwan Linton WSO2 Inc.

Software Paradigms (Lesson 10) Selected Topics in Software Architecture

Software Architecture Patterns

Software Architecture

SOFTWARE ARCHITECTURE INTRODUCTION TO SOFTWARE ENGINEERING PHILIPPE LALANDA

Software Architecture

Ch 1: The Architecture Business Cycle

DISTRIBUTED COMPUTER SYSTEMS ARCHITECTURES

Software Architecture. Definition of Software Architecture. The importance of software architecture. Contents of a good architectural model

Produced by. Design Patterns. MSc in Computer Science. Eamonn de Leastar

Chapter 6 Architectural Design. Lecture 1. Chapter 6 Architectural design

WebSphere 4.0 General Introduction

Architectural Design. Architectural Design. Software Architecture. Architectural Models

ESE Einführung in Software Engineering!

CAS 703 Software Design

Architecture of Software Intensive Systems

Software Architecture

Architectural Design. Topics covered. Architectural Design. Software architecture. Recall the design process

Overview (and reorientation) of SE

XVIII. Software Architectures

Software Architecture

Designing Component-Based Architectures with Rational Rose RealTime

Describing the architecture: Creating and Using Architectural Description Languages (ADLs): What are the attributes and R-forms?

Service-Oriented Architecture

(9A05803) WEB SERVICES (ELECTIVE - III)

Chapter 6 Architectural Design. Chapter 6 Architectural design

DS 2009: middleware. David Evans

How Do You Design? Where do architectures come from? Creativity. Method

Architectural Patterns. Architectural Patterns. Layers: Pattern. Architectural Pattern Examples. Layer 3. Component 3.1. Layer 2

Architectural Patterns

Application Connectivity Strategies

Describing Information Systems Moving Beyond UML

Engr. M. Fahad Khan Lecturer Software Engineering Department University Of Engineering & Technology Taxila

COPYRIGHTED MATERIAL. Table of Contents. Foreword... xv. About This Book... xvii. About The Authors... xxiii. Guide To The Reader...

Software Architecture

Credit where Credit is Due. Goals for this Lecture. Introduction to Design

3C05 - Advanced Software Engineering Thursday, April 29, 2004

Architectural Design Outline

MODELS OF DISTRIBUTED SYSTEMS

Unit Wise Questions. Unit-1 Concepts

Topic : Object Oriented Design Principles

Developing Software Applications Using Middleware Infrastructure: Role Based and Coordination Component Framework Approach

TECHNISCHE UNIVERSITEIT EINDHOVEN Faculteit Wiskunde en Informatica

Architectural Design

What is Software Architecture

1.264 Lecture 16. Legacy Middleware

Introduction to software architecture Revision : 732

Software Engineering (CSC 4350/6350) Rao Casturi

Architectural Styles: Definitions

Connect Applications and Services Together with the Enterprise Service Bus

Chapter 6 Architectural Design

An Introduction to Software Architecture By David Garlan & Mary Shaw 94

Introduction. ADL Roles

XIX. Software Architectures

CHAPTER 9 DESIGN ENGINEERING. Overview

Electronic Payment Systems (1) E-cash

Enterprise Integration Using IEC

Refresher: Lifecycle models. Lecture 22: Moving into Design. Analysis vs. Design. Refresher: different worlds. Analysis vs. Design.

Architectural Styles II

Chapter 2 System Models

Transcription:

CSCI 3130 Software Architectures 1/3 February 5, 2013

Software Architecture What is a Software Architecture? The description of the structure of a software system, which is composed of software elements, their externally visible properties and their relationships to each other. Software system design at the highest level. Closely related to Software Design boundaries are very fuzzy. Iterative and incremental The is no one unique architecture for a given problem Why do we need it?

Understanding and Communication Software systems are too complex Abstraction of details Break a complex system into smaller, less complex sub-systems (Divide & Conquer) Individual sub-systems are better understood 50% of your time you deal with people who probably don't understand you. Buffalo buffalo Buffalo buffalo buffalo buffalo Buffalo buffalo.

Understanding and Communication [Those] (Buffalo buffalo) [whom] (Buffalo buffalo) buffalo, buffalo (Buffalo buffalo).

Reuse Identifying the individual parts of the system facilitates encapsulation Encapsulation facilitates reuse Many small problems have been solved before Sub-systems are designed and implemented for a specific purpose / task with generalized interfaces Generalized interfaces allow the reuse of the same subsystem in a different complex system Software Product Lines The more reuse, the less money it costs, the safer your job

Construction and Evolution Individual sub-systems and well defined interfaces allow: Independent development of multiple sub-systems in parallel by different teams Independent testing of multiple sub-systems with much less test cases Replace one implementation of a sub-system with another implementation Easily estimate the impact of a change You won't get it right the first time software evolves

Analysis Up-front analysis prevents undesired surprises: Design decisions Performance requirements Reliability Usability Does each sub-system satisfy its specific requirements? Under which conditions? Implementation restrictions Hardware Storage Interconnect Support

Software Architecture Models Various formal models / frameworks exist: 4+1 RM-ODP SOMF IEEE 1471-2000 ISO/IEC 42010-2007 (standards) Languages to describe the architecture: Acme Wright UML Pick and choose All have in common: Views

Architecture Views Description of the architecture from different perspectives (viewpoints) Facilitates communication: Business Owner Client Software Designer Developer System Builder Everyone has their own vocabulary

Architecture Views

Architecture Views Component & Connector View Very universal, easy to understand, high-level Module View Often the result of the software design Allocation Used by integrators and system engineers

Component & Connector View Graph-like diagram of the parts of a system and their relationships Parts = Components Relationships = Connectors

Component & Connector View

Components Units of computation or data storage Distinct names Choose them wisely! Components have types, the C&C view shows specific instances Interfaces (ports) to communicate with other components Describe components independent of the system

Component Types

Connectors Connect components that interact with each other Distinct names Choose them wisely! All communication between components is done through connectors not only remote. Mechanisms: Function call RPC Broker-based Provided and implemented by middleware Beware: Easily slips into the component implementation!

Connectors Middleware connects components Hardware (CPU instructions) OS infrastructure (pipes, shared-memory) Domain specific middleware (CORBA, HTTP, etc.) Different communication patterns and protocols Point-to-point Broadcast Multicast HTTP / REST CORBA (IIOP), SOAP AMQP Use different notation for different types of connectors

Connectors

Example: Todo List

Architecture Styles Design Patterns for Software Architectures Best practices to solve common problems Architecture is a combination of many Module View (Software Design): Decomposition Uses Generalization Layered

Pipe & Filter Producer-consumer pattern Good encapsulation Asynchronous processing at each component Pipe connector responsible for synchronization Parallel processing (Map/Reduce) Document processing, signal processing, ETL

Shared-data Data repository + data accessors Communication through data repository Data repository responsible for data consistency and synchronization Add / remove components easily Passive / active data repositories Database applications, Web applications

Client-Server Client requests a response Response is generated by an action executed by the server Client waits for response Server itself might be a client Often stateless Client initiated Lightweight clients WWW, HTTP, REST

Publish-Subscribe Producers publish messages on a shared medium (e.g. message bus) Consumers subscribe to certain types of messages Brokers may connect independent bus systems Scalable, transaction safe, easily extensible IRC, ESB, AMQP

Peer-to-Peer Like client-server, but every component is both client and server Intermediate components can act as proxies and/or caches Distribution of load Highly scalable for specific applications ICP, CDNs, BitTorrent, Gnutella, etc.

EOF Tuesday, February 12, 2013: Architecture Integrity: Why you should listen to the architect? Architecture Analysis: What can you learn from an architecture? Architecture Documentation: How to communicate an architecture?