Software Architecture

Similar documents
Architecture CSE 403. Fallingwater by Frank Lloyd Wright

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

CSE P503: Principles of Software Engineering

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

An Introduction to Software Architecture

An Introduction to Software Architecture

CS 292 Software Development

ADVANCED SOFTWARE DESIGN LECTURE 4 SOFTWARE ARCHITECTURE

Introduction to Software Engineering 10. Software Architecture

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

ESE Einführung in Software Engineering!

CHAPTER 9 DESIGN ENGINEERING. Overview

Object-Oriented Software Engineering Conquering Complex and Changing Systems. Chapter 6, System Design Lecture 1

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

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

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

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

6. System Design: Decomposing the System

ICS 52: Introduction to Software Engineering

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

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

Software Architecture in Practice

CS560 Lecture: Software Architecture Includes slides by I. Sommerville

Software Architectures

Architectural Design

Architectural Styles I

System Design. Design: HOW to implement a system

Architectural Styles I

Architectural Design

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

CHAPTER 5 GENERAL OOP CONCEPTS

Design Process Overview. At Each Level of Abstraction. Design Phases. Design Phases James M. Bieman

CSC 330 Object Oriented Software Design. Software Design Phase

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

System Design. Design Issues. System Design. System Design. Design: HOW to implement a system. Strategic vs. Local Design Decisions.

Design: HOW to implement a system

CS 575: Software Design

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

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

ICS 52: Introduction to Software Engineering

Ch 1: The Architecture Business Cycle

8 Designing classes. Main concepts to be covered. Software changes. Change or die. The Zuul Classes. World of Zuul

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

10조 이호진 이지 호

CSE 435: Software Engineering. System Design

XVIII. Software Architectures

Architectural Blueprint

Software Architecture and Design I

Object-Oriented and Classical Software Engineering DESIGN 11/12/2017. CET/CSC490 Software Engineering Design CHAPTER 14. Stephen R. Schach.

Software Architecture

Lecture Chapter 2 Software Development

Software Metrics and Design Principles. What is Design?

Modularity Guidelines for design in any programming language

Architectural Design

4/23/2009. Tonight s agenda. CSE P503: Principles of Software Engineering. Information hiding. Functional decomposition

Software Architecture

Chapter 6 Architectural Design

Lecture 1. Chapter 6 Architectural design

Lecture: Modular Design

Software Engineering Principles

Software Architecture

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

Information Expert (or Expert)

Chapter 6 Architectural Design. Chapter 6 Architectural design

Chapter 13: Architecture Patterns

Review of Basic Software Design Concepts. Fethi Rabhi SENG 2021

Chapter 6 System Design: Decomposing the System

The Analysis and Design of the Object-oriented System Li Xin 1, a

Architectural Styles - Finale

Modularity!! Guidelines for design! in any programming language!

CSE 403 Lecture 8. UML Class Diagrams. Thanks to Marty Stepp, Michael Ernst, and other past instructors of CSE 403

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

Design Engineering. Overview

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

Design Concepts and Principles

SOFTWARE ARCHITECTURE INTRODUCTION TO SOFTWARE ENGINEERING PHILIPPE LALANDA

Architectural Styles. Reid Holmes

Chapter : Analysis Modeling

LECTURE 3: SOFTWARE DESIGN. Software Engineering Mike Wooldridge

Architectural Decomposition & Representations Reid Holmes

Architectural Decomposition Reid Holmes

Introduction to Object Oriented Analysis and Design

Patterns and Testing

CMSC 132: Object-Oriented Programming II

Ch 1: The Architecture Business Cycle

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

Introduction to System Design

Abstraction. Abstraction

System Design and Modular Programming

Design Pattern What is a Design Pattern? Design Pattern Elements. Almas Ansari Page 1

THE OBJECT-ORIENTED DESIGN PROCESS AND DESIGN AXIOMS (CH -9)

Mei Nagappan. How the programmer wrote it. How the project leader understood it. How the customer explained it. How the project leader understood it

Architectural Decomposition Mei Nagappan

Capturing Design Expertise in Customized Software Architecture Design Environments

An Introduction to Software Architecture

Architectural Design. Architectural Design. Software Architecture. Architectural Models

Architectures in Context

Presenter: Dong hyun Park

Checklist for Requirements Specification Reviews

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

Transcription:

Software Architecture Good software architecture makes the rest of the project easy. Steve McConnell, Survival Guide There are two ways of constructing a software design: one way is to make it so simple that there are obviously no deficiencies; the other is to make it so complicated that there are no obvious deficiencies. C.A.R. Hoare (1985)

The basic problem Requirements????? How do you bridge the gap between requirements and code? Code

One answer Requirements A miracle happens! Code

A better answer Requirements Software Architecture Provide a high level framework to build and evolve the system Code

Box and arrow diagrams Very common, hugely valuable. But, what does a box represent? an arrow? a layer? adjacent boxes? SW architecture gives these meaning

An architecture is expressed by components and connectors Components define e the ebasic computations o comprising the system, and their behaviors abstract data types, filters, etc. Connectors define the interconnections between components procedure call, event announcement, asynchronous message sends, etc. Thelinebetweenthemmay them may befuzzy at times Ex: A connector might (de)serialize data, but can it perform other, richer computations? An architecture bridges the gap between requirements and code

A good architecture Satisfies functionaland and performance requirements Manages complexity Accommodates future change Also: reliability, safety, understandability, compatibility, robustness, 7

Divide and conquer Benefits of decomposition: Decrease size of tasks Support independent testing and analysis Separatework assignments Ease understanding Use of abstraction leads to modularity Implementation techniques: information hiding, interfaces To achieve modularity, you need: Strong cohesion within a component Loose coupling between components And these properties should be true at each level

Qualities of modular software decomposable can be broken down into pieces composable pieces are useful and can be combined understandable one piece can be examined in isolation has continuity reqs. change affects few modules protected / safe 9 an error affects few other modules

Interface and implementation public interface: data and behavior of the object that can be seen and executed externally by "client" code private implementation: internal data and methods in the object, used to help implement the public interface, but cannot be directly accessed client: code that uses your class/subsystem Example: radio public interface is the speaker, volume buttons, station dial private implementation is the guts of the radio; the transistors, capacitors, voltage readings, frequencies, etc. that user should not see 10

UML module diagrams Express Subclassing Use (dependence)

Loose coupling coupling assesses the kind and quantity of interconnections among modules Modules that are loosely coupled (or uncoupled) are better than those that are tightly coupled The more tightly coupled are two modules, the harder it is to work with them separately, and thus the benefits become more limited

Tightly or loosely coupled? -End21 -End3 -End1 -End2 -End6 -End16 -End4 -End11 -End25 -End26 -End23 -End24 -End5 -End13 -End9 -End7 -End19 -End12 -End14 -End8 -End20 -End10 -End15 -End18 -End17 -End22

Tightly or loosely coupled?

Strong cohesion cohesion refers to how closely the operations in a module are related Tight relationships improve clarity and understanding Classes with good abstraction usually have strong cohension No schizophrenic classes!

Strong or weak cohesion? class Employee { public: FullName GetName() const; Address GetAddress() const; PhoneNumber GetWorkPhone() const; bool IsJobClassificationValid(JobClassification jobclass); bool IsZipCodeValid (Address address); bool IsPhoneNumberValid (PhoneNumber phonenumber); SqlQuery GetQueryToCreateNewEmployee() const; SqlQuery GetQueryToModifyEmployee() const; SqlQuery GetQueryToRetrieveEmployee() const; }

An architecture helps with System understanding describes the interactions between modules Reuse by defining the high level components, we can see if there is opportunity for reuse Construction breaks development down into work items; provides a path from requirements to code Evolution see reuse Management helps understand the work to do, and the work done; track progress Communication gives you a vocabulary; pictures say 1000 words

Architectural style Defines the vocabulary of components and connectors for a family (style) Constraints on the elements and their combination Topological constraints (no cycles, register/announce relationships, etc.) Execution constraints (timing, etc.) By choosing a style, one gets all the known properties of that style (for any architecture in that style) Ex: performance, lack of deadlock, ease of making particular classes of changes, etc.

Not just boxes and arrows Consider pipes pp & filters, for example (Garlan and Shaw) Pipes must compute local transformations Filters must not share state with other filters There must be no cycles If these constraints are not satisfied, it s not a pipe & filter system One can t tell this from a picture One can formalize these constraints scan parse optimize generate

The design and the reality The code is often less clean than the design The design is still useful Communication among team members Selected deviations can be explained more concisely and with clearer reasoning

Architectural mismatch Garlan, Allen, Ockerbloom tried to build a toolset to support software architecture dfiii definition from existing i components OODB (OBST) graphical user interface toolkit (Interviews) RPC mechanism (MIG/Mach RPC) Event based tool integration mechanism (Softbench) It went to hell in a handbasket, not because the pieces didn t work, but becausethey didn t fittogethertogether Excessive code size Poor performance Needed to modify out of the box components (e.g., memory allocation) Error prone construction process Architectural Mismatch: Why Reuse Is So Hard. IEEE Software 12, 6 (Nov. 1995) Architecture should warn about such problems (& identify problems)

Views A view illuminates a set of top-level design decisions how the system is composed of interacting parts where are the main pathways of interaction key properties of the parts information to allow high-level analysis and appraisal

Importance of views Multiple views are needed to understand the different dimensions of systems Functional Requirements Packaging Requirements Performance (execution) Requirements Installation Requirements e e Booch

Web application (client-server) Booch

Model-View-Controller User sees uses View updates Model Controller manipulates Separates the application object (model) from the way it is represented to the user (view) from the way in which the user controls it (controller). Application

Pipe and filter Pipe passes the data top grep $USER grep acrobat,,, Filter - computes on the data Each stage of the pipeline acts independently of the others. Can you think of a system based on this architecture?

Blackboard architectures The knowledge sources: separate, independent d units of application i dependent knowledge. No direct interaction among knowledge sources The blackboard data structure: problemsolving state data. Knowledge sources make changes to the blackboard that lead incrementally to a solution to the problem. Control: driven entirely by state of blackboard. Knowledge sources respond opportunistically to changes in the blackboard. Blackboard systems have traditionally been used for applications requiring complex interpretations of signal processing, such as speech and pattern recognition. 27

Hearsay II: blackboard 28