Intro to Software Architecture - Software Engineering at...

18
J. Scott Hawker/R.Kuehl p. 1 Some material © Pearson Education R I T Software Engineering Software Architecture Introduction

Transcript of Intro to Software Architecture - Software Engineering at...

Page 1: Intro to Software Architecture - Software Engineering at RITswen-440/slides/instructor-specific...Software Engineering “Architecture” Terminology Architecture pattern –description

J. Scott Hawker/R.Kuehl p. 1 Some material © Pearson EducationR I T

Software Engineering

Software Architecture Introduction

Page 2: Intro to Software Architecture - Software Engineering at RITswen-440/slides/instructor-specific...Software Engineering “Architecture” Terminology Architecture pattern –description

J. Scott Hawker/R.Kuehl p. 2 Some material © Pearson EducationR I T

Software Engineering

What is Architecture?

Vision and Structure

Page 3: Intro to Software Architecture - Software Engineering at RITswen-440/slides/instructor-specific...Software Engineering “Architecture” Terminology Architecture pattern –description

J. Scott Hawker/R.Kuehl p. 3 Some material © Pearson EducationR I T

Software Engineering

What is Software Architecture?

Page 4: Intro to Software Architecture - Software Engineering at RITswen-440/slides/instructor-specific...Software Engineering “Architecture” Terminology Architecture pattern –description

J. Scott Hawker/R.Kuehl p. 4 Some material © Pearson EducationR I T

Software Engineering

A Typical View of Software Architecture

“Components and Connectors”

“Overall structure of the system”

X

A B C

Page 5: Intro to Software Architecture - Software Engineering at RITswen-440/slides/instructor-specific...Software Engineering “Architecture” Terminology Architecture pattern –description

J. Scott Hawker/R.Kuehl p. 5 Some material © Pearson EducationR I T

Software Engineering

What’s Wrong with This Description?

Component meaning?

Task, process, module, object, program, function, library, processor, server, subsystem …?

Connector meaning?

Calls, invokes, signals, uses, data flow, subclass, runs with, excludes, co-located with, ….?

Overall structure meaning (boxes and lines)?

What is the significance of the topological layout?

Pattern?

Conclusion – the diagram is not the architecture but a starting point, one view

Page 6: Intro to Software Architecture - Software Engineering at RITswen-440/slides/instructor-specific...Software Engineering “Architecture” Terminology Architecture pattern –description

J. Scott Hawker/R.Kuehl p. 6 Some material © Pearson EducationR I T

Software Engineering

Definitions

Bass, Clements, Kazman p. 4;

“The software architecture of a system is the set of structures needed to reason about the system, which comprise software elements, relations among them, and properties of both.”

Martin Fowler in Patterns of Enterprise Application Architecture

“The highest-level breakdown of a system into its parts; the decisions that are hard to change; there are multiple architectures in a system; what is architecturally significant can change over a system's lifetime; and, in the end, architecture boils down to whatever the important stuff is.”

Fowler again (Who Needs an Architect? Martin Fowler 2003 IEEE SOFTWARE 3 DESIGN)

“…expert developers … have a shared understanding of the system design. This shared understanding is called ‘architecture.’ This understanding includes how the system is divided into components and how the components interact through interfaces.”

Page 7: Intro to Software Architecture - Software Engineering at RITswen-440/slides/instructor-specific...Software Engineering “Architecture” Terminology Architecture pattern –description

J. Scott Hawker/R.Kuehl p. 7 Some material © Pearson EducationR I T

Software Engineering

Another Definition

Philippe Kruchten, Grady Booch, Kurt Bittner, and Rich Reitman - based on work by Mary Shaw and David Garlan (Shaw and Garlan 1996)

“Software architecture encompasses the set of significant decisions about the organization of a software system including the selection of the structural elements and their interfaces by which the system is composed; behavior as specified in collaboration among those elements; composition of these structural and behavioral elements into larger subsystems; and an architectural style that guides this organization. Software architecture also involves functionality, usability, resilience, performance, reuse, comprehensibility, economic and technology

constraints, tradeoffs and aesthetic concerns.”

Real world analog examples of system

architecture – structure, elements,

properties, relationships?

Page 8: Intro to Software Architecture - Software Engineering at RITswen-440/slides/instructor-specific...Software Engineering “Architecture” Terminology Architecture pattern –description

J. Scott Hawker/R.Kuehl p. 8 Some material © Pearson EducationR I T

Software Engineering

Typical Software Architecture Diagram

Page 9: Intro to Software Architecture - Software Engineering at RITswen-440/slides/instructor-specific...Software Engineering “Architecture” Terminology Architecture pattern –description

J. Scott Hawker/R.Kuehl p. 9 Some material © Pearson EducationR I T

Software Engineering

Observations

Every system has a software architecture

Is it known, is it engineered?

Architectural anti-pattern: Big Ball of Mud

Architecture is a structural abstraction of (usually large) systems

Systems have many structural representations (views)

Components, connectors (interfaces)

No single view completely represents the architecture

Principles and guidelines governing designconformance and evolution are needed

Page 10: Intro to Software Architecture - Software Engineering at RITswen-440/slides/instructor-specific...Software Engineering “Architecture” Terminology Architecture pattern –description

J. Scott Hawker/R.Kuehl p. 10 Some material © Pearson EducationR I T

Software Engineering

Observations, continued

Architecture styles (patterns) - reoccurring reusable architecture designs

The underlying intuition or decision rationalebehind the pattern, or the system model

The kinds of components that are used in developing a system according to the pattern

The connectors, or kinds of interactions among the components

The control structure or execution discipline

From Mary Shaw, “Some Patterns for Software Architectures,” Pattern

Languages of Program Design, Vol 2, John Vlissides, James Coplien, Norman

Kerth (eds), Addison-Wesley 1996, pp. 255-269.

Example?

Page 11: Intro to Software Architecture - Software Engineering at RITswen-440/slides/instructor-specific...Software Engineering “Architecture” Terminology Architecture pattern –description

J. Scott Hawker/R.Kuehl p. 11 Some material © Pearson EducationR I T

Software Engineering

Why is Architecture Important (Essential)?

1. Solution communication and consensus among stakeholders

2. Earliest and most fundamental design analysis and decisions Directs and constrains remaining software

development, deployment, and maintenance

Dictates structure of development organization

Enables early evolutionary prototyping

Enables more accurate cost and schedule estimation

3. Transferable (reusable) abstraction of a system Training - relatively small, intellectually

understandable model of the software system

Enables software product lines

Enables component reuse and integration, subsystem interoperability

Page 12: Intro to Software Architecture - Software Engineering at RITswen-440/slides/instructor-specific...Software Engineering “Architecture” Terminology Architecture pattern –description

J. Scott Hawker/R.Kuehl p. 12 Some material © Pearson EducationR I T

Software Engineering

What Makes a “Good” Architecture?Process Guidelines

Single architect or small group with identified leader

Based on validated business, functional, and non-functional (quality attributes) requirements

Actively reviewed and understood by stakeholders

“Evangelized”

Well-documented using understandable views

Incremental construction is enabled

Page 13: Intro to Software Architecture - Software Engineering at RITswen-440/slides/instructor-specific...Software Engineering “Architecture” Terminology Architecture pattern –description

J. Scott Hawker/R.Kuehl p. 13 Some material © Pearson EducationR I T

Software Engineering

What Makes a “Good” Architecture?Product (Structural) Guidelines

Well defined functional modules using information hiding, and separation of concerns

Encapsulates changeable aspects to facilitate change

Enables independent concurrent development by separate teams

Quality attributes achieved using well-known architectural patterns and tactics specific to each attribute

Limited dependencies on a particular technology or commercial product or tool

Page 14: Intro to Software Architecture - Software Engineering at RITswen-440/slides/instructor-specific...Software Engineering “Architecture” Terminology Architecture pattern –description

J. Scott Hawker/R.Kuehl p. 14 Some material © Pearson EducationR I T

Software Engineering

Account for the runtime environment (quality attributes)

Logical modules assigned to processes and tasks to accommodate real time, distributed, transactional, computational, parallel, etc. needs

Process assignment to processors easily changed

Small set of resource contention areas (memory, bandwidth, time, etc.)

Consistency – do the same things in the same ways

What Makes a “Good” Architecture?Product (Structural) Guidelines (cont)

What is a common theme? There is a planned structure based on

good design principles

Page 15: Intro to Software Architecture - Software Engineering at RITswen-440/slides/instructor-specific...Software Engineering “Architecture” Terminology Architecture pattern –description

J. Scott Hawker/R.Kuehl p. 15 Some material © Pearson EducationR I T

Software Engineering

Claims

Architecture design gives the highest return on investment (ROI) with respect to quality, schedule and cost

Relatively inexpensive to check and fix, upstream

Substantial downstream consequences

Conceptual integrity promotes sound system design that contributes to system success

Conceptual integrity can only be had by a small number of minds coming together to design the system’s architecture [Brooks]

Design decisions that are hard to change

Page 16: Intro to Software Architecture - Software Engineering at RITswen-440/slides/instructor-specific...Software Engineering “Architecture” Terminology Architecture pattern –description

J. Scott Hawker/R.Kuehl p. 16 Some material © Pearson EducationR I T

Software Engineering

The Benefit of Good Architecture

Value of reuse

Requirements DesignArchitecture Code

Cost of defects

Increase

Increase

Page 17: Intro to Software Architecture - Software Engineering at RITswen-440/slides/instructor-specific...Software Engineering “Architecture” Terminology Architecture pattern –description

J. Scott Hawker/R.Kuehl p. 17 Some material © Pearson EducationR I T

Software Engineering

Architecture or Design Work?

Architecture Design

Fitness for purpose – heuristic

analysis based on non-quantified

information

Engineering optimization - find

optimal solutions to well defined

problems

Architect’s role - make correct

inferences (general design

solution derived from specific

requirements)

Designers role – make correct

design decisions compliant to

the architecture (deduction)

Essentials dictated by needs Choices compatible with

architecture

Different architectures imply

different needs

Many different designs may

satisfy the same need

Roberto Rivera, Am I Doing Architecture or Design Work?, IT Professional, 12/2007

Page 18: Intro to Software Architecture - Software Engineering at RITswen-440/slides/instructor-specific...Software Engineering “Architecture” Terminology Architecture pattern –description

J. Scott Hawker/R.Kuehl p. 18 Some material © Pearson EducationR I T

Software Engineering

“Architecture” Terminology

Architecture pattern – description of element and relationship types, and a set of constraints on how they can be used; e.g., layered; design patterns are lower level

Architecture style – an architecture pattern (most authors)

Reference model – partition of functionality into parts with associated data flow between them; e.g., protocol stack

Reference architecture – reference model mapped onto software elements that implement the model

Framework – an architecture of reusable components for building applications in a particular domain; platform

Architecture framework – establishes common practices and resources for designing architectures for some (information) domain

System architecture – the architecture of holistic systems

Enterprise Architecture – the architecture of a business processes, organization, and information