introduction definition of software architecture core conceptsdonatas... · 2016-11-21 ·...
TRANSCRIPT
Introduction
Definition of Software Architecture
Core Concepts
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
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
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
Architect vs. Designer Classes, components
…
Packages
…
Modules
…
Subsystems
…
System
Introduction to Architecture 5
Designer‘s responsibility
Architect’s responsibility
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
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
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
Analogy with structure of a building
Introduction to Architecture 9
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
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
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
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
Concerns – the quality triangle
Introduction to Architecture 14
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
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
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
Relationships between the core concepts
Introduction to Architecture 18
Architecture as a research field“The Golden Age of Software Architecture”, Mary Shaw and Paul Clements, 2006
Introduction to Architecture 19
Self-study Book “Software Systems Architecture”:
Chapter 1 “Introduction”
Chapter 2 “Software Architecture Concepts”
Introduction to Architecture 20