Introduction Definition of Software Architecture Core Conceptsdonatas... · 2016-11-21 ·...

20
Introduction Definition of Software Architecture Core Concepts

Transcript of Introduction Definition of Software Architecture Core Conceptsdonatas... · 2016-11-21 ·...

Page 1: Introduction Definition of Software Architecture Core Conceptsdonatas... · 2016-11-21 · Architecture definition The architecture of a system is the set of fundamental properties

Introduction

Definition of Software Architecture

Core Concepts

Page 2: Introduction Definition of Software Architecture Core Conceptsdonatas... · 2016-11-21 · Architecture definition The architecture of a system is the set of fundamental properties

Career - architect Career in IT company:

Programmer, …, designer, …, architect, …, project manager, …

Responsibilities of an architect (simplified): knowing requirements for a system, decide: how and into what parts to break down the system

what technologies/tools to select for part construction

how the parts will be interconnected

how to organize software process Version control system, build system, automated tests,

continuous integration, etc.

Introduction to Architecture 2

Page 3: Introduction Definition of Software Architecture Core Conceptsdonatas... · 2016-11-21 · Architecture definition The architecture of a system is the set of fundamental properties

Career - architect What factors influence these decisions?

Functional requirements (obviously)

Non-functional/quality requirements (often left out of consideration)

Security, performance, availability, modifiability, …

IT company’s experience

What technological platforms were used before?

Project’s budget and schedule

Everyone wants it good, fast and cheap

Introduction to Architecture 3

Page 4: Introduction Definition of Software Architecture Core Conceptsdonatas... · 2016-11-21 · Architecture definition The architecture of a system is the set of fundamental properties

Career - architect Designers are usually responsible for decision regarding

one or several subsystems/modules Architect is responsible for decisions regarding the whole

system Knowledge about all parts of the system is required:

UI technologies – desktop, web, mobile, etc. Business logic implementation – business components,

technological platforms Databases – relational, object-oriented, XML, NoSQL, … and so on: application development frameworks, portals,

warehouses, business process management suites, …

Architect needs to continuously track technological advancements and be able to compare them with old technologies

Introduction to Architecture 4

Page 5: Introduction Definition of Software Architecture Core Conceptsdonatas... · 2016-11-21 · Architecture definition The architecture of a system is the set of fundamental properties

Architect vs. Designer Classes, components

Packages

Modules

Subsystems

System

Introduction to Architecture 5

Designer‘s responsibility

Architect’s responsibility

Page 6: Introduction Definition of Software Architecture Core Conceptsdonatas... · 2016-11-21 · Architecture definition The architecture of a system is the set of fundamental properties

Architect vs. Development Team(Book “Java Application Architecture”, Kirk Knoernschild, 2012)

Introduction to Architecture 6

Focusing exclusively on top-level abstractions is not enough. Emphasizing only code quality is not enough either. We must bridge the gap through other means, including module and

package design

Page 7: Introduction Definition of Software Architecture Core Conceptsdonatas... · 2016-11-21 · Architecture definition The architecture of a system is the set of fundamental properties

Architecture definition The architecture of a system is the set of fundamental

properties of the system in its environment, embodied in its: elements, relationships, and the principles of its design and evolution [ISO/IEC 42010]

The software architecture of a program or computing system is the structure or structures of the system, which comprise software elements, the externally visible properties of those elements, and the relationships among them. [Bass]

Architecture is the organizational structure and associated behavior of a system. An architecture can be recursively decomposed into parts that interact through interfaces, relationships that connect parts, and constraints for assembling parts. Parts that interact through interfaces include classes, components and subsystems. [UML 1.5]

Introduction to Architecture 7

Page 8: Introduction Definition of Software Architecture Core Conceptsdonatas... · 2016-11-21 · Architecture definition The architecture of a system is the set of fundamental properties

Architecture versus Design All architecture is design but not all design is

architecture. Architecture represents the significant design decisions that shape a system, where significant is measured by cost of change. [Grady Booch]

Introduction to Architecture 8

Page 9: Introduction Definition of Software Architecture Core Conceptsdonatas... · 2016-11-21 · Architecture definition The architecture of a system is the set of fundamental properties

Analogy with structure of a building

Introduction to Architecture 9

Page 10: Introduction Definition of Software Architecture Core Conceptsdonatas... · 2016-11-21 · Architecture definition The architecture of a system is the set of fundamental properties

Fundamental System Properties The fundamental properties of a system manifest

themselves in two different ways:

externally visible behavior (what the system does) and

functional interactions between the system and its environment (users and other systems)

Defined by functional requirements

quality properties (how the system does it).

Nonfunctional property of a system such as performance, security, or availability

Introduction to Architecture 10

Page 11: Introduction Definition of Software Architecture Core Conceptsdonatas... · 2016-11-21 · Architecture definition The architecture of a system is the set of fundamental properties

Conclusion Every system has an architecture, whether or not it is

documented and understood.

The architecture of a system is an intrinsic, fundamental property that is present whether or not it has been documented and is understood.

Every system has precisely one architecture—although it can be represented in a number of ways

Introduction to Architecture 11

Page 12: Introduction Definition of Software Architecture Core Conceptsdonatas... · 2016-11-21 · Architecture definition The architecture of a system is the set of fundamental properties

Stakeholders Traditional software development has been driven by the need of

the delivered software to meet the requirements of users. However, software systems are not just used: They have to be:

built and tested, operated, repaired, enhanced, paid for.

Each of these activities involves a number of people in addition to the users. Each of these groups of people has its own requirements, interests,

and needs to be met by the software system.

A stakeholder is an individual, team, organization, or classes thereof, having an interest in the realization of the system.

Introduction to Architecture 12

Page 13: Introduction Definition of Software Architecture Core Conceptsdonatas... · 2016-11-21 · Architecture definition The architecture of a system is the set of fundamental properties

Stakeholders – Interests and Concerns A concern about a system is a requirement, an

objective, a constraint, or an intention a stakeholder has for that system

Many concerns will be common among stakeholders, but some concerns will be distinct and may even conflict.

Resolving such conflicts in a way that leaves stakeholders satisfied can be a significant challenge.

Introduction to Architecture 13

Page 14: Introduction Definition of Software Architecture Core Conceptsdonatas... · 2016-11-21 · Architecture definition The architecture of a system is the set of fundamental properties

Concerns – the quality triangle

Introduction to Architecture 14

Page 15: Introduction Definition of Software Architecture Core Conceptsdonatas... · 2016-11-21 · Architecture definition The architecture of a system is the set of fundamental properties

Importance of stakeholders Architectures are created solely to meet

stakeholder needs

It follows that if a system does not adequately meet the needs of its stakeholders, it cannot be considered a success—no matter how well it conforms to good architectural practice.

Architectures must be evaluated with respect to:

stakeholder needs as well as

software engineering principles

Introduction to Architecture 15

Page 16: Introduction Definition of Software Architecture Core Conceptsdonatas... · 2016-11-21 · Architecture definition The architecture of a system is the set of fundamental properties

Architectural Description An architectural description (AD) is a set of products

that: documents an architecture in a way its stakeholders can

understand and

demonstrates that the architecture has met their concerns.

“Products” in this context consist of: architectural models,

scope definition,

constraints, and

principles

Introduction to Architecture 16

Page 17: Introduction Definition of Software Architecture Core Conceptsdonatas... · 2016-11-21 · Architecture definition The architecture of a system is the set of fundamental properties

Architectural Description A good architectural description is one that effectively

and consistently communicates the key aspects of the architecture to the appropriate stakeholders

Nowadays there is a plethora of techniques, models, architecture description languages (ADL), and other ways to document architectures

Choosing the right ones for a particular system development is a significant challenge in its own right;

You need to take into account the characteristics of the system and the skills and capabilities of its stakeholders

Introduction to Architecture 17

Page 18: Introduction Definition of Software Architecture Core Conceptsdonatas... · 2016-11-21 · Architecture definition The architecture of a system is the set of fundamental properties

Relationships between the core concepts

Introduction to Architecture 18

Page 19: Introduction Definition of Software Architecture Core Conceptsdonatas... · 2016-11-21 · Architecture definition The architecture of a system is the set of fundamental properties

Architecture as a research field“The Golden Age of Software Architecture”, Mary Shaw and Paul Clements, 2006

Introduction to Architecture 19

Page 20: Introduction Definition of Software Architecture Core Conceptsdonatas... · 2016-11-21 · Architecture definition The architecture of a system is the set of fundamental properties

Self-study Book “Software Systems Architecture”:

Chapter 1 “Introduction”

Chapter 2 “Software Architecture Concepts”

Introduction to Architecture 20