introduction to software architecture

28
© Yuriy Guts, 2013 Software Architecture Introduction to

Upload: yuriy-guts

Post on 29-Nov-2014

609 views

Category:

Technology


5 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Introduction to Software Architecture

© Yuriy Guts, 2013

Software Architecture

Introduction to

Page 2: Introduction to Software Architecture

What is

Software

Architecture?

Page 3: Introduction to Software Architecture

Modules, connections, dependencies and interfaces?

Page 4: Introduction to Software Architecture

Modules, connections, dependencies and interfaces?

The relationship between the elements that make up the product?

Page 5: Introduction to Software Architecture

Modules, connections, dependencies and interfaces?

The relationship between the elements that make up the product?

The decomposition of the problem into smaller implementable elements?

Page 6: Introduction to Software Architecture

Modules, connections, dependencies and interfaces?

The relationship between the elements that make up the product?

The decomposition of the problem into smaller implementable elements?

The skeleton/backbone of the product?

An abstract view?

An approach to achieve a goal?

A blueprint?

The big picture?

Page 7: Introduction to Software Architecture

Modules, connections, dependencies and interfaces?

The relationship between the elements that make up the product?

The decomposition of the problem into smaller implementable elements?

The skeleton/backbone of the product?

An abstract view?

An approach to achieve a goal?

A blueprint?

The big picture?

Page 8: Introduction to Software Architecture

There are literally hundreds of

definitions of Software Architecture

http://tinyurl.com/sei-definitions

Page 9: Introduction to Software Architecture

Is there anything in common?

Page 10: Introduction to Software Architecture

The structure or structures of the system,

which comprise software elements, the

externally visible properties of those

elements, and the relationships among them.

“Software Architecture in Practice” book

Software Engineering Institute

Page 11: Introduction to Software Architecture

The structure or structures of the system,

which comprise software elements, the

externally visible properties of those

elements, and the relationships among them.

“Software Architecture in Practice” book

Software Engineering Institute

”“ Those aspects that are the hardest to change.

Chris Verhoef; Martin Fowler

Page 12: Introduction to Software Architecture

The structure or structures of the system,

which comprise software elements, the

externally visible properties of those

elements, and the relationships among them.

“Software Architecture in Practice” book

Software Engineering Institute

”“ Those aspects that are the hardest to change.

Chris Verhoef; Martin Fowler

STRUCTURE

VISION

Page 13: Introduction to Software Architecture

Structure + Vision

Regardless of the domain,

architectural work is about

Page 14: Introduction to Software Architecture

Developing

Organization

Stakeholders

Marketing

Stakeholders

Maintenance

StakeholdersCustomer

Stakeholders

End-User

Stakeholders

Page 15: Introduction to Software Architecture

There are no “good” and “bad” architectures

There are ones that are more suitable

given current constraints,

and the ones that are less suitable.

Page 16: Introduction to Software Architecture

Levels of Architecture

Component Designer

Page 17: Introduction to Software Architecture

Levels of Architecture

Component Designer

Application Architect

Page 18: Introduction to Software Architecture

Levels of Architecture

Component Designer

Application Architect

Solutions Architect

Page 19: Introduction to Software Architecture

Levels of Architecture

Component Designer

Application Architect

Solutions Architect

Business (Enterprise) Architect

Page 20: Introduction to Software Architecture

The Software Architect Role

Page 21: Introduction to Software Architecture

Anti-pattern:

“The Ivory Tower Architect”

Development team

Page 22: Introduction to Software Architecture

Do Agile teams need architects?

Page 23: Introduction to Software Architecture

Architectural

Drivers

Understanding requirements

and constraints

Technology

Selection

Choosing and evaluating

technologies

Architecting

Designing software

Architecture

Evaluation

Verifying that the architecture

actually works

Architecture

Evolution

Ownership of the architecture

throughout the delivery

Coaching &

Mentoring

Providing guidance and

assistance to teams

Coding

Involvement in hands-on

software delivery

Quality

Assurance

Introduction and adherence to

standards and principles

Even in the agilest of teams

you need someone

to take care of all this!

Otherwise it would get messy.

Page 24: Introduction to Software Architecture

“Agile” Architect

It may not be a dedicated person.

Responsibilities can be split among multiple people.

Involvement varies depending on team maturity:

1. Chaos (survival mode): requires direct authoritative leadership.

2. Learning: requires a coaching leadership style.

3. Self-organizing (mature): requires facilitation to keep balance.

Page 25: Introduction to Software Architecture

Choosing a reference architecture

Page 26: Introduction to Software Architecture

Architecture Visualization:

The 4+1 Model

Page 27: Introduction to Software Architecture

SA involvement within the company

• Support for Sales and Marketing

• Bootstrapping new projects

• Technology consulting for existing projects

• Investigating new technologies, developing PoC

• Internal training, competence development

Page 28: Introduction to Software Architecture

Q & A

[email protected]

Acknowledgements

• Len Bass, Paul Clements, Rick Kazman. Software Architecture in Practice, 2nd edition [2003].

• Paul Clements et al. Documenting Software Architectures: Views and Beyond, 2nd edition [2010].

• Simon Brown. Software Architecture for Developers [2013].