ICS 52: Introduction to Software Engineering

Similar documents
ICS 52: Introduction to Software Engineering

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

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

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

Architecture Styles. Instructor: Yongjie Zheng February 7, CS 5553: Software Architecture and Design

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

Software Architecture in Practice

An Introduction to Software Architecture

An Introduction to Software Architecture

Software Architecture

Architectural Styles. Reid Holmes

Software Architecture

ADVANCED SOFTWARE DESIGN LECTURE 4 SOFTWARE ARCHITECTURE

ICS 52: Introduction to Software Engineering

Software Architecture

CS 575: Software Design

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 Blueprint The 4+1 View Model of Software Architecture. Philippe Kruchten

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

Software Architecture. Lecture 5

Software Architectures. Lecture 3

ICS 52: Introduction to Software Engineering

Architectural Styles I

Software Architecture

B.H. Far

Software Architectures

Architectural Blueprint

Objectives. Architectural Design. Software architecture. Topics covered. Architectural design. Advantages of explicit architecture

Software Architectures. Lecture 6 (part 1)

Software Paradigms S.H. Kaisler, 440 p., Wiley, Chapters 12-17

Architectural Styles - Finale

XVIII. Software Architectures

Architectural Styles I

ICS 52: Introduction to Software Engineering

In his paper of 1972, Parnas proposed the following problem [42]:

Chapter 13: Architecture Patterns

Software Requirements Specification. <Project> for. Version 1.0 approved. Prepared by <author(s)> <Organization> <Date created>

Distributed Objects. Object-Oriented Application Development

Software Requirements Specification. <Project> for. Version 1.0 approved. Prepared by <author> <organization> <date created>

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

CAS 703 Software Design

XVIII. Software Architectures

Element: Relations: Topology: no constraints.

Architectural Design

Presenter: Dong hyun Park

Architectural Design

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

Software Architecture

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

Today s Lecture. Software Architecture. Lecture 21: Introduction to Software Architecture. Introduction and Background of

Ch 1: The Architecture Business Cycle

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

Topics in Object-Oriented Design Patterns

Software architecture: Architectural Styles

Architectural Design

Software Engineering (CSC 4350/6350) Rao Casturi

Introduction to OMNeT++

Part 7 - Object Oriented Concepts Classes, Objects, Properties and Methods

Object-Oriented Design

System Design. Acknowledge: Atlee and Pfleeger (Software Engineering: Theory and Practice)

Naming in OOLs and Storage Layout Comp 412

Establishing the overall structure of a software system

CMSC 132: Object-Oriented Programming II

XIX. Software Architectures

OBJECT ORIENTED SYSTEM DEVELOPMENT Software Development Dynamic System Development Information system solution Steps in System Development Analysis

DEPARTMENT OF COMPUTER SCIENCE

Software Architecture and Design I

Coordination Patterns

Software Architecture. Lecture 4

Creational. Structural

Architecture CSE 403. Fallingwater by Frank Lloyd Wright

Contents. Figures. Tables. Examples. Foreword. Preface. 1 Basics of Java Programming 1. xix. xxi. xxiii. xxvii. xxix

Software Design Fundamentals. CSCE Lecture 11-09/27/2016

COURSE OUTCOMES OF M.Sc(IT)

An Introduction to Software Architecture

Implementing Architectures

Lecture 4: Design Concepts For Responsibility- Driven Design Kenneth M. Anderson January 20, 2005

What is a Programming Paradigm

What is Software Architecture

ASSIGNMENT- I Topic: Functional Modeling, System Design, Object Design. Submitted by, Roll Numbers:-49-70

ESE Einführung in Software Engineering!

Desired Characteristics of Modules. Stefan Resmerita, WS2015

What s Next. INF 117 Project in Software Engineering. Lecture Notes -Spring Quarter, Michele Rousseau Set 6 System Architecture, UML

DISTRIBUTED COMPUTER SYSTEMS ARCHITECTURES

CSE 435: Software Engineering. System Design

New Programming Paradigms

Computer System Overview

CS 307: Software Engineering. Lecture 10: Software Design and Architecture

DISTRIBUTED SYSTEMS. Instructor: Prasun Dewan (FB 150,

Software Architecture

GMU SWE 443 Software Architecture Spring Lab 2: Implicit-invocation System. Sousa Discuss Feb 23, due March 8

Design Concepts. Slide Set to accompany. Software Engineering: A Practitioner s Approach, 7/e by Roger S. Pressman

CS 132 Exam #1 - Study Suggestions

«Computer Science» Requirements for applicants by Innopolis University

Sommerville Chapter 6 The High-Level Structure of a Software Intensive System. Architectural Design. Slides courtesy Prof.

Advanced Lectures on knowledge Engineering

Review Architectural Style. Review Style Properties and Benefits

Architectural Design. Architectural Design. Software Architecture. Architectural Models

Component-Level Design. Slides copyright 1996, 2001, 2005, 2009 by Roger S. Pressman. For non-profit educational use only

Transcription:

ICS 52: Introduction to Software Engineering Fall Quarter 2002 Professor Richard N. Taylor Lecture Notes Week 3: Architectures http://www.ics.uci.edu/~taylor/ics_52_fq02/syllabus.html Copyright 2002, Richard N. Taylor. Duplication of course material for any commercial purpose without written permission is prohibited.

"Magician Coder" View of Development Requirements (Here a Miracle happens) Code

A Professional View Requirements Architecture Code

ICS 52 Life Cycle Requirements phase Verify Architecture/Design phase Verify Implementation phase Test Testing phase Verify

Architecture of Buildings u Types (Domains): office building, shepherd's shelter, detached home, apartment building, aircraft hanger Domain-specific software architectures u Styles: colonial, Victorian, Greek revival, Mediterranean, Bauhaus Software system organization paradigms u Building codes: electrical, structural,... Constraints on how the building can be legally built u Blueprints and drawings Formal specification of supporting details

Architectural Design Buildings Elements Floors Walls Rooms Types Office building Villa Aircraft hanger Styles Colonial Victorian Southwestern Rules and regulations Electrical Structural Software Elements Components Interfaces Connections Types Office automation Game Space shuttle control Styles Pipe and filter Layered Implicit invocation Rules and regulations Use of interfaces Methods of change

Design u Architectural design High-level partitioning of a software system into separate modules (components) Focus on the interactions among parts (connections) Focus on structural properties (architecture)» How does it all fit together? u Module design Detailed design of a component Focus on the internals of a component Focus on computational properties» How does it work?

Comparison to Programming (of Modules) Architecture interactions among parts structural properties system-level performance outside module boundary Modules implementations of parts computational properties algorithmic performance inside module boundary

Software Architecture Topics uessential elements urepertoire of architectural styles uchoosing and/or modifying a style udesigning within a style uarchitecture in support of application families

Software Architecture: Essentials u Components What are the elements? What aspects of the requirements do they correspond to? Where did they come from? Examples: filters, databases, objects, ADTs u Connections How do components communicate? Examples: procedure calls, messages, pipes, event broadcast u Topology How are the components and connections organized topologically? u Constraints (including constraints on change)

We Can Do Anything Big Component Tiny Component B Component Some Component Mrs. Component A Component Mr. Component One Component Yet Component

But Style Has Proven to Help u Architectural styles restrict the way in which components can be connected Prescribe patterns of interaction Promote fundamental principles» Rigor, separation of concerns, anticipation of change, generality, incrementality» Low coupling» High cohesion u Architectural styles are based on success stories Almost all compilers are build as pipe-and-filter Almost all network protocols are build as layers

Common Architectural Idioms u Data flow systems (1) Batch sequential & (2) pipe-and-filter u (3) Data and/or service-centric systems: the Client-Server style u The (pre-1994) WWW Database servers u (4) Hierarchical systems Main program and subroutines; u (5) Data abstraction/oo systems u (6) Peer-to-Peer u (7) Layered systems u (8) Interpreters u (9) Implicit invocation (event-based) u (10) Three-level architectures Note: not all of these are of equal value, current use, or intellectual depth Many of the following slides are from David Garlan, Mary Shaw, and Jose Galmes: Experience with a Course on Architectures for Software Systems, Part II: Educational Materials

Style 1: Batch Sequential Data transformation Validate Sort Update Report tape tape tape tape report tape Data Flow

Batch Sequential u Components components are independent programs each component runs to completion before next step starts u Connections Data transmitted as a whole between components u Topology Connectors define data flow graph u Typical application: classical data processing

Style 2: Pipe and filter Computation Filter ls grep -e exp sort lpr Data Flow as ASCII Stream

Pipe and filter u Components Like batch sequential, but components (filters) incrementally transform some amount of the data at their inputs to data at outputs Little local context used in processing input stream No state preserved between instantiations u Connections Pipes move data from a filter output to a filter input Data is a stream of ASCII characters u Topology Connectors define data flow graph u Pipes and filters run (non-deterministically) until no more computation possible u Typical applications: many Unix applications

Style 3: Client-Server Client Client Client Server Connections are remote procedure calls or remote method invocations

Client-Server Systems u Components 2 distinguished kinds» Clients: towards the user; little persistent state; active (request services)» Servers: in the back office ; maintains persistent state and offers services; passive u Connectors Remote procedure calls or network protocols u Topology Clients surround the server

The pre-1994 WWW as a Client-Server Architecture u Browsers are clients u Web servers maintain state u Connections by HTTP/1.0 protocol

Database Centered Systems u Components Central data repository Schema (how the data is organized) designed for application Independent operators» Operations on database implemented independently, one per transaction type» interact with database by queries and updates u Connections Transaction stream drives operation Operations selected on basis of transaction type May be direct access to data; may be encapsulated

Style 4: Hierarchy: Main Program and Subroutines Main component Subcomponent Subcomponent Subcomponent Subcomponent Subcomponent Subcomponent Subcomponent Subcomponent Connections are function or method calls

Main Program and Subroutines u Components Computational elements as provided by programming language Typically single thread u Connections Call/return as provided by programming language Shared memory u Topology Hierarchical decomposition as provided by language Interaction topologies can vary arbitrarily

Style 5: Data Abstraction/OO Systems

Data Abstraction/OO Systems u Components Components maintain encapsulated state, with public interface Typically single threaded, though not logical u Connections Procedure calls ("method invocations") between components Various degrees of polymorphism and dynamic binding Shared memory a common assumption u Topology Components may share data and interface functions through inheritance hierarchies Interaction topologies can vary arbitrarily

Style 6: Peer-to-Peer Peer Peer Peer Connections are remote procedure calls or remote method invocations

Peer-to-Peer Architectures u Components Autonomous Act as both clients and servers u Connectors Asynchronous and synchronous message passing ("remote procedure calls") By protocols atop TCP/IP No shared memory (except as an optimization when the configuration allows) u Topology Interaction topologies can vary arbitrarily and dynamically

Style 7: Layered Systems, Take 1 Layer 4 Layer 4 Layer 3 Layer 3 Layer 2 Layer 2 Layer 1 Layer 1 Connections are function or method calls + something in between

Layered Systems, Take 2 Inter-level interfaces usually procedure calls Useful Systems Basic Utility Core Level Users

Layered Systems u Components Each layer provides a set of services u Connections Typically procedure calls A layer typically hides the interfaces of all layers below, but others use "translucent" layers u Topology Nested u Typical applications: support for portability, systems with many variations ("core features" v. extended capabilities)

Style 8: Implicit Invocation Component Component Component Component Bus Connections are events on the software bus

Style 9: Interpreters Program Being Interpreted State of Program Being Interpreted Program to be interpreted P Data upon which P is to be executed Output of P Output of interpreter (e.g. error messages) Simulated Interpretation Engine Internal Interpreter State (the interpreter s local variables)

Interpreters u Components Execution engine simulated in software (with its internal data) Program being interpreted State of program being interpreted u Connections program being interpreted determines sequence of actions by interpreter shared memory u Topology u Typical applications: end-user customization; dynamically changing set of capabilities (e.g. HotJava)

Style 10: Three Level Architectures u User interface u Application Logic u Database (server)

Where do Architectures and Components Come From? u Architectures: typically driven by kind of application Often possible to solve one problem many different ways u Components: many design strategies ICS 52 component strategy:» Component design by information hiding» Designing systems for ease of extension and contraction» An OO design approach Rationale: design systems that have a long, useful lifetime

Choosing the Right Style u Ask questions on whether a certain style makes sense The Internet as a blackboard» Does that scale? Stock exchange as a layers» How to deal with the continuous change? Math as hierarchy» How to properly call different modules for different functions? u Draw a picture of the major entities u Look for the natural paradigm u Look for what feels right