Software Architecture Fundamentals: Technical, Business ... · PDF fileSoftware Architecture...

34
© 2010 Carnegie Mellon University Software Architecture Fundamentals: Technical, Business, and Social Influences Rob Wojcik Software Engineering Institute Webinar July 8th, 2010

Transcript of Software Architecture Fundamentals: Technical, Business ... · PDF fileSoftware Architecture...

Page 1: Software Architecture Fundamentals: Technical, Business ... · PDF fileSoftware Architecture Fundamentals: Technical, ... Software Engineering Institute: ... Design Requirements Software

© 2010 Carnegie Mellon University

Software Architecture

Fundamentals: Technical,

Business, and Social

Influences

Rob Wojcik

Software Engineering Institute

Webinar

July 8th, 2010

Page 2: Software Architecture Fundamentals: Technical, Business ... · PDF fileSoftware Architecture Fundamentals: Technical, ... Software Engineering Institute: ... Design Requirements Software

Page 2© 2010 Carnegie Mellon University

Today’s Speaker

Rob Wojcik is a member of the technical staff in the Research,

Technology, and System Solutions Program at the SEI, a

position he has held since 2004. In his current position, he

performs training and consulting in software architecture

technology and software architecture evaluations. Prior to his

position at the SEI, over twenty five years of his career were

dedicated to developing software systems that utilize traditional

as well as artificial intelligence and object oriented technologies.

Page 3: Software Architecture Fundamentals: Technical, Business ... · PDF fileSoftware Architecture Fundamentals: Technical, ... Software Engineering Institute: ... Design Requirements Software

Page 3© 2010 Carnegie Mellon University

Polling Question #1

How did you hear about this webinar?

1.Email invitation from the SEI

2.SEI Website

3.Website with webinar calendar (i.e., www.webinar-directory.com)

4.Social Media (i.e., LinkedIn, Twitter)

5.SEI Member Bulletin

7/8/2010 3Twitter hashtag #seiwebinar

Page 4: Software Architecture Fundamentals: Technical, Business ... · PDF fileSoftware Architecture Fundamentals: Technical, ... Software Engineering Institute: ... Design Requirements Software

Page 4© 2010 Carnegie Mellon University

Software Engineering Institute (SEI)

Department of Defense R&D Laboratory (FFRDC)

Created in 1984

Under contract to Carnegie Mellon University

Offices in Pittsburgh, PA; Washington, DC; and Frankfurt, Germany

SEI Mission: advance software and related disciplines to ensure the

development and operation of systems with predictable and improved cost,

schedule, and quality.

Page 5: Software Architecture Fundamentals: Technical, Business ... · PDF fileSoftware Architecture Fundamentals: Technical, ... Software Engineering Institute: ... Design Requirements Software

Page 5© 2010 Carnegie Mellon University

Research, Technology, and System Solutions (RTSS)Program

Vision

• Enable assured and flexible system capabilities at all scales.

Mission

• Focus on the structure and behavior of software-reliant systems

Page 6: Software Architecture Fundamentals: Technical, Business ... · PDF fileSoftware Architecture Fundamentals: Technical, ... Software Engineering Institute: ... Design Requirements Software

Page 6© 2010 Carnegie Mellon University

Portfolio of RTSS Program Work

Initiatives

• Architecture-Centric Engineering

• System of Systems Practice

• System of Systems Software Assurance

• Product Line Practice

Cross-Cutting Efforts

• Concept Lab

• Integrating Solutions

• Ultra-Large-Scale Systems

Independent Research and Development

Page 7: Software Architecture Fundamentals: Technical, Business ... · PDF fileSoftware Architecture Fundamentals: Technical, ... Software Engineering Institute: ... Design Requirements Software

Page 7© 2010 Carnegie Mellon University

Today’s Topics

• What is Software Architecture?

• Why is Software Architecture Important?

• Which Requirements Are Most Important To Architectural Design?

• What Else Influences Software Architecture?

I’ll take questions at the end of the presentation.

Page 8: Software Architecture Fundamentals: Technical, Business ... · PDF fileSoftware Architecture Fundamentals: Technical, ... Software Engineering Institute: ... Design Requirements Software

Page 8© 2010 Carnegie Mellon University

How Much Do You Know?

a) I know a whole lot about software architecture

b) I know enough about software architecture to get by

c) I know very little about software architecture

d) What the heck is software architecture?

Page 9: Software Architecture Fundamentals: Technical, Business ... · PDF fileSoftware Architecture Fundamentals: Technical, ... Software Engineering Institute: ... Design Requirements Software

Page 9© 2010 Carnegie Mellon University

Today’s Topics

• What is Software Architecture?

• Why is Software Architecture Important?

• Which Requirements Are Most Important To Architectural Design?

• What Else Influences Software Architecture?

Page 10: Software Architecture Fundamentals: Technical, Business ... · PDF fileSoftware Architecture Fundamentals: Technical, ... Software Engineering Institute: ... Design Requirements Software

Page 10© 2010 Carnegie Mellon University

RUP: the set of significant decisions

about the organization of a software

system, the selection of the structural

elements and their interfaces by which

the system is composed, together with

their behavior as specified in the

collaborations among those elements,

the composition of these structural and

behavioral elements into progressively

larger subsystems, and the architectural

style that guides this organization---

these elements and their interfaces,

their collaborations, and their

composition

Pandey: the blueprint of the various

framework components that coordinate

together to satisfy the design guidelines

of a specific domain

Ramanujam: an iterative framework between

software components required to meet the stated

objectives of the business, in terms of cost to

develop/maintain the software components, time

to market, and life expectancy of the components

Alfred: Software architecture consists of the

rules and principles for how a system is

decomposed into its component parts, the

rationale for how responsibilities are

allocated among those parts, and the

policies and mechanisms that coordinate

the interactions between those parts as

they collaborate to fulfill the purpose of the

system. Software architecture is at once

the partitioning of a system into its

significant elements, and the organization

and integration of those elements into a

cohesive whole.

Many Definitions for Software Architecture

ANSI/IEEE: the fundamental

organization of a system,

embodied in its components,

their relationships to each

other and the environment,

and the principles governing

its design and evolution

Adabala: a style that is proven scientifically and

adopted by the engineering discipline, with which a

software is developed so as to sustain and adopt to

the growing needs of the industry from time to time...

Ahmed: a coherent set of

abstract patterns, or principles,

guiding the design of each aspect

of a large software system…

Matthaeus: A configurable skeleton of any kind of software beast on

which you hang implementation specific muscle to make it live

Mulvaney: a set of implementation elements

together with the mechanisms through which they

collaborate to provide the system's required

functionality

Riemenschneider: the mapping from the problem space

to the solution space, where the problem space is

devoid of implementation concerns and the solution

space is the sum total of all implementation concerns

Software Engineering Institute:

the structure or structures of the

system, which comprise the

software elements, the externally

visible properties of those elements,

and the relationships among them

Page 11: Software Architecture Fundamentals: Technical, Business ... · PDF fileSoftware Architecture Fundamentals: Technical, ... Software Engineering Institute: ... Design Requirements Software

Page 11© 2010 Carnegie Mellon University

Some Things Remain Certain - 1

Software architecture

• is an abstraction that describes software elements

• addresses the roles, responsibilities, behaviors and properties of

software elements

• addresses the relationships between software elements

• shows what software elements provide to and require from each

other

• shows the relationship to non-software elements

• is described from many different perspectives

Page 12: Software Architecture Fundamentals: Technical, Business ... · PDF fileSoftware Architecture Fundamentals: Technical, ... Software Engineering Institute: ... Design Requirements Software

Page 12© 2010 Carnegie Mellon University

Some Things Remain Certain - 2

Every software system has an architecture.

A software architecture is not inherently good or bad.

Page 13: Software Architecture Fundamentals: Technical, Business ... · PDF fileSoftware Architecture Fundamentals: Technical, ... Software Engineering Institute: ... Design Requirements Software

Page 13© 2010 Carnegie Mellon University

Today’s Topics

• What is Software Architecture?

• Why is Software Architecture Important?

• Which Requirements Are Most Important To Architectural Design?

• What Else Influences Software Architecture?

Page 14: Software Architecture Fundamentals: Technical, Business ... · PDF fileSoftware Architecture Fundamentals: Technical, ... Software Engineering Institute: ... Design Requirements Software

Page 14© 2010 Carnegie Mellon University

Why Is Software Architecture Important?

It’s a vehicle for communication.

It’s a manifestation of earliest design decisions that

• defines implementation constraints

• relates to organizational structure

• provides the basis for project artifacts and activities

• permits/precludes achieving requirements

• allows us to predict system qualities

• allows us to control complexity

• allows us to reason about and manage change

• allows us to develop a skeletal system

• provides a sound basis for cost and schedule estimates

It’s a transferable, reusable abstraction.

Page 15: Software Architecture Fundamentals: Technical, Business ... · PDF fileSoftware Architecture Fundamentals: Technical, ... Software Engineering Institute: ... Design Requirements Software

Page 15© 2010 Carnegie Mellon University

Today’s Topics

• What is Software Architecture?

• Why is Software Architecture Important?

• Which Requirements Are Most Important To Architectural Design?

• What Else Influences Software Architecture?

Page 16: Software Architecture Fundamentals: Technical, Business ... · PDF fileSoftware Architecture Fundamentals: Technical, ... Software Engineering Institute: ... Design Requirements Software

Page 16© 2010 Carnegie Mellon University

Which Requirements Are Most Important to Architectural Design?

Functional

requirements

Design

constraints

Quality attribute

requirements

Software

Architecture

Architectural

Design

What determines whether these requirements are met?

Which requirements are the most important when it comes to

structuring an architecture?

Page 17: Software Architecture Fundamentals: Technical, Business ... · PDF fileSoftware Architecture Fundamentals: Technical, ... Software Engineering Institute: ... Design Requirements Software

Page 17© 2010 Carnegie Mellon University

Something to Consider

What’s wrong with designing a system that has one big source module, one

big object module, and one big executable as long as it functions properly?

Module1 :

2 :

3 :

.

.

.

1,999,999 :

2,000,000 :

buildability

testability distributability

portability

availability

modifiability

maintainability reusability

reliability

complexity

Others?

Which requirements do you think would be

negatively impacted by this “design”?

Page 18: Software Architecture Fundamentals: Technical, Business ... · PDF fileSoftware Architecture Fundamentals: Technical, ... Software Engineering Institute: ... Design Requirements Software

Page 18© 2010 Carnegie Mellon University

Here’s the Point!

If functionality is the only thing that matters, any software architecture

will do!

It’s the requirements that are above and beyond functionality that

require us to structure an architecture. They include:

• design constraints

• quality attributes

Page 19: Software Architecture Fundamentals: Technical, Business ... · PDF fileSoftware Architecture Fundamentals: Technical, ... Software Engineering Institute: ... Design Requirements Software

Page 19© 2010 Carnegie Mellon University

Eliciting

quality attribute

requirements

Bad Job

Eliciting

quality attribute

requirements

Eliciting

functional requirements

and design constraints

Good Job

Requirements Elicitation

Yet these are critical to

architectural design!

Page 20: Software Architecture Fundamentals: Technical, Business ... · PDF fileSoftware Architecture Fundamentals: Technical, ... Software Engineering Institute: ... Design Requirements Software

Page 20© 2010 Carnegie Mellon University

Difficulties in Eliciting Quality Attribute Requirements

Non-Operational requirements

• “The system must be easy to use.”

• “The system must have high performance.”

• “The system must be portable.”

Debating the quality attribute to which a system behavior belongs

• “The system must process 10,000 messages per second.”

Vocabulary variations

• Everyone knows what “high performance” means, right?

Page 21: Software Architecture Fundamentals: Technical, Business ... · PDF fileSoftware Architecture Fundamentals: Technical, ... Software Engineering Institute: ... Design Requirements Software

Page 21© 2010 Carnegie Mellon University

Today’s Topics

• What is Software Architecture?

• Why is Software Architecture Important?

• Which Requirements Are Most Important To Architectural Design?

• What Else Influences Software Architecture?

Page 22: Software Architecture Fundamentals: Technical, Business ... · PDF fileSoftware Architecture Fundamentals: Technical, ... Software Engineering Institute: ... Design Requirements Software

Page 22© 2010 Carnegie Mellon University

Other Influences on the Architecture

Software architecture is influenced by the technical, business, and

social environment.

Architectural

Design

Requirements

Software

ArchitectureTechnical

Business

Social

Page 23: Software Architecture Fundamentals: Technical, Business ... · PDF fileSoftware Architecture Fundamentals: Technical, ... Software Engineering Institute: ... Design Requirements Software

Page 23© 2010 Carnegie Mellon University

Examples of Other Influences

Stakeholders

• customers, users, managers, marketing, developers, maintainers, etc.

Development organization

• immediate and long term business goals

• organizational structure

Technical environment

• object oriented, WWW, intelligent agents, EJB, service oriented, J2EE,

thin client, .NET, etc.

Background and experience

• architect and organizational experience

• education and training

Page 24: Software Architecture Fundamentals: Technical, Business ... · PDF fileSoftware Architecture Fundamentals: Technical, ... Software Engineering Institute: ... Design Requirements Software

Page 24© 2010 Carnegie Mellon University

What Architecture Influences

An architecture can influence the technical, business, and social

environment.

Architectural

Design

Requirements

Software

ArchitectureTechnical

Business

Social

influences

Page 25: Software Architecture Fundamentals: Technical, Business ... · PDF fileSoftware Architecture Fundamentals: Technical, ... Software Engineering Institute: ... Design Requirements Software

Page 25© 2010 Carnegie Mellon University

Examples of What Architecture Can Influence

Development organization

• structure, goals, artifacts, etc.

Stakeholder requirements

• demand for similar features, existing components and system

Technical environment

• relational databases, WWW, service oriented architectures, etc.

Background and experience

• promote approaches that have been successful

• reject approaches that have failed

Page 26: Software Architecture Fundamentals: Technical, Business ... · PDF fileSoftware Architecture Fundamentals: Technical, ... Software Engineering Institute: ... Design Requirements Software

Page 26© 2010 Carnegie Mellon University

Understanding These Influences

Understanding this cycle of influences helps us to plan for and manage

change throughout the lifetime of a system.

Architectural

Design

Requirements

Software

ArchitectureTechnical

Business

Social

influences

Page 27: Software Architecture Fundamentals: Technical, Business ... · PDF fileSoftware Architecture Fundamentals: Technical, ... Software Engineering Institute: ... Design Requirements Software

Page 27© 2010 Carnegie Mellon University

Conclusion

Software architecture is important!

Every software system has an architecture!

Quality attribute requirements are critical!

Requirements aren’t the only things that influence software architectures!

Page 28: Software Architecture Fundamentals: Technical, Business ... · PDF fileSoftware Architecture Fundamentals: Technical, ... Software Engineering Institute: ... Design Requirements Software

Page 28© 2010 Carnegie Mellon University

For More Information

Software Architecture in Practice, 2nd edition

written by Len Bass, Paul Clements, & Rick Kazman

and published by Addison-Wesley as part of the

SEI Series in Software Engineering

Other information is provided at

http://www.sei.cmu.edu/architecture/.

Contact Rob Wojcik

Software Engineering Institute

[email protected]

Page 29: Software Architecture Fundamentals: Technical, Business ... · PDF fileSoftware Architecture Fundamentals: Technical, ... Software Engineering Institute: ... Design Requirements Software

Page 29© 2010 Carnegie Mellon University

Page 30: Software Architecture Fundamentals: Technical, Business ... · PDF fileSoftware Architecture Fundamentals: Technical, ... Software Engineering Institute: ... Design Requirements Software

Page 30© 2010 Carnegie Mellon University

Page 31: Software Architecture Fundamentals: Technical, Business ... · PDF fileSoftware Architecture Fundamentals: Technical, ... Software Engineering Institute: ... Design Requirements Software

Page 31© 2010 Carnegie Mellon University

CERT's Podcast Series:

Security for Business Leaderswww.cert.org/podcast/

Page 32: Software Architecture Fundamentals: Technical, Business ... · PDF fileSoftware Architecture Fundamentals: Technical, ... Software Engineering Institute: ... Design Requirements Software

Page 32© 2010 Carnegie Mellon University

Page 33: Software Architecture Fundamentals: Technical, Business ... · PDF fileSoftware Architecture Fundamentals: Technical, ... Software Engineering Institute: ... Design Requirements Software

Page 33© 2010 Carnegie Mellon University

Page 34: Software Architecture Fundamentals: Technical, Business ... · PDF fileSoftware Architecture Fundamentals: Technical, ... Software Engineering Institute: ... Design Requirements Software

Page 34© 2010 Carnegie Mellon University

•NO WARRANTY

•THIS MATERIAL OF CARNEGIE MELLON UNIVERSITY AND ITS SOFTWARE ENGINEERING

INSTITUTE IS FURNISHED ON AN “AS-IS" BASIS. CARNEGIE MELLON UNIVERSITY MAKES

NO WARRANTIES OF ANY KIND, EITHER EXPRESSED OR IMPLIED, AS TO ANY MATTER

INCLUDING, BUT NOT LIMITED TO, WARRANTY OF FITNESS FOR PURPOSE OR

MERCHANTABILITY, EXCLUSIVITY, OR RESULTS OBTAINED FROM USE OF THE

MATERIAL. CARNEGIE MELLON UNIVERSITY DOES NOT MAKE ANY WARRANTY OF ANY

KIND WITH RESPECT TO FREEDOM FROM PATENT, TRADEMARK, OR COPYRIGHT

INFRINGEMENT.

•Use of any trademarks in this presentation is not intended in any way to infringe on the rights of

the trademark holder.

•This Presentation may be reproduced in its entirety, without modification, and freely distributed in

written or electronic form without requesting formal permission. Permission is required for any

other use. Requests for permission should be directed to the Software Engineering Institute at

[email protected].

•This work was created in the performance of Federal Government Contract Number FA8721-05-

C-0003 with Carnegie Mellon University for the operation of the Software Engineering Institute, a

federally funded research and development center. The Government of the United States has a

royalty-free government-purpose license to use, duplicate, or disclose the work, in whole or in part

and in any manner, and to have or permit others to do so, for government purposes pursuant to

the copyright license under the clause at 252.227-7013.