From Requirements to Architecture Ana Moreira Software - - PDF document

from requirements to architecture
SMART_READER_LITE
LIVE PREVIEW

From Requirements to Architecture Ana Moreira Software - - PDF document

From Requirements to Architecture Ana Moreira Software Architecture - Basics 1 Goals Understanding the importance of software architecture what is software architecture Discussing emerging issues in the transition from requirements to


slide-1
SLIDE 1

1

Software Architecture - Basics 1

From Requirements… to Architecture

Ana Moreira

Software Architecture - Basics 2

Goals

Understanding the importance of software architecture

what is software architecture

Discussing emerging issues in the transition from requirements to architecture

architectural patterns/styles importance of managing requirements requirements traceability

slide-2
SLIDE 2

2

Software Architecture - Basics 3

What is…

Software Architecture ????

Software Architecture - Basics 4

"Magician Coder" View of Development

Detailed Design

Many stakeholders are not interested in such low-level choices

slide-3
SLIDE 3

3

Software Architecture - Basics 5

5

Creating the illusion of simplicity

Software Architecture - Basics 6

6

Can be built by one person Requires Minimal modeling Simple process Simple tools

Architecting a dog house

Kruchten

slide-4
SLIDE 4

4

Software Architecture - Basics 7

7

Architecting a house

Built most efficiently and timely by a team Requires Modeling Well-defined process Power tools

Kruchten

Software Architecture - Basics 8

8

Architecting a high rise

What about this? 452 meters high!

slide-5
SLIDE 5

5

Software Architecture - Basics 9

Architecting Taj Mahal

Taj Mahal : Built by Mogol Shah Cihan (turkish origin) in memory of his beloved wife Mümtaz Mahal 1648

Took 22 years 20.000 workers

Software Architecture - Basics 10

Differences

Scale Process Cost Schedule Skills and development teams Materials and technologies Stakeholders Risks

slide-6
SLIDE 6

6

Software Architecture - Basics 11

So, what is software architecture?

Software Architecture - Basics 12

12

Misconceptions about architecture

Architecture is just paper Architecture and design are the same things Architecture and infrastructure are the same things <my favorite technology> is the architecture A good architecture is the work of a single architect Architecture is simply structure Architecture can be represented in a single blueprint System architecture precedes software architecture Architecture cannot be measured or validated Architecture is a science Architecture is an art

Kruchten

slide-7
SLIDE 7

7

Software Architecture - Basics 13

13

Architecture is just paper

A system’s architecture ultimately resides in executable code A system’s architecture may be visualized in models Every system has an architecture; some architectures are made manifest and visible, many others are not

Software Architecture - Basics 14

14

Architecture is design

All architecture is design, but not all design is architecture Architecture focuses on significant design decisions

decisions that are both structurally and behaviorally important as well as those that have a lasting impact

  • n the performance, reliability, cost, and resilience of

the system

Architecture involves the how and the why, not just the what

slide-8
SLIDE 8

8

Software Architecture - Basics 15

15

Architecture is infrastructure

Infrastructure is an integral and important part of architecture, but there is more to architecture than just infrastructure Significant patterns will manifest themselves at many different levels and dimensions of a system Too narrow a view of architecture will lead to a very pretty infrastructure, but the wrong infrastructure for the problem at hand

Software Architecture - Basics 16

16

<my favorite technology> is the architecture

A given technology only serves to implement some dimension of an architecture

The network is the architecture The database is the architecture The transaction server is the architecture J2EE is the architecture

Architecture is more than just a list of products Technology shapes an architecture, but a resilient architecture should never be bound to all of the technologies that form it

slide-9
SLIDE 9

9

Software Architecture - Basics 17

17

Architecture is the work of a single architect

Conceptual integrity is essential, but the complexity

  • f most interesting systems leads development to

be a team sport Fred Brooks (1975), but then Fred Brooks (1995) The architecture team is

Not a committee Not a problem clearinghouse Not an ivory tower

The architecture team

Needs a clear leader Requires a mix of specialties Manifests itself at many levels in the system

Coplien & Harris, Organizational Patterns

Software Architecture - Basics 18

18

Architecture is structure

Architecture does involve structure, decomposition, and interfaces Architecture also involves behavior A system’s architecture is always projected to a given context

slide-10
SLIDE 10

10

Software Architecture - Basics 19

19

Architecture is flat

Architecture is flat only in trivial systems Multiple stakeholders with multiple concerns lead to multiple views with multiple blueprints Using a single blueprint to represent all or most of system’s architecture leads to a semantic muddle The 4+1 view model has proven to be both necessary and sufficient for most interesting systems

Kruchten, “The 4+1 Model View”

Software Architecture - Basics 20

20

System architecture comes first

Software has a longer life than hardware Complex systems require well-informed hardware/software tradoffs, which cannot be made in a strict sequence Forcing a hardware-first process typically leaves to stove pipe systems

slide-11
SLIDE 11

11

Software Architecture - Basics 21

21

Architecture can’t be measured

The very purpose of a blueprint is to provide a tangible artifact that can be used to visualize, specify, construct, document - and reason about - a system A system’s architecture can be used to

Mitigate technical risks through the release of a continuous stream of executables Improve learning and understanding and communicate important decisions Accelerate testing and attack integration risks Set expectations Break in the development environment and the team

Software Architecture - Basics 22

22

Architecture is a science

There exists only a modest body of knowledge about software architecture Scientific and analytical methods are lacking; those that do exist are hard to apply There is no perfect design; architecture involves the management of extreme ambiguity and contradiction Experience counts: the best architects are grown, not born

Petroski, Small Things Considered

slide-12
SLIDE 12

12

Software Architecture - Basics 23

So, what is architecture (in general)?

Describes (is) structure consisting of components which interact among them forming the foundation of the whole....

Computer Architecture Car Architecture Building Architecture

Software Architecture - Basics 24

What is Architecture?

Architecture (Webster’s): 1: the art or science of building; specifically: the art or practice of designing and building structures and especially habitable ones 2 a>:formation or construction as or as if as the result of conscious act <the architecture of the garden> b: a unifying or coherent form or structure <the novel lacks architecture> 3: architectural product or work 4: a method or style of building 5: the manner in which the components of a computer or computer system are organized and integrated

slide-13
SLIDE 13

13

Software Architecture - Basics 25

25

Architecture defined

Perry and Wolf, 1992

A set of architectural (or design) elements that have a particular form

Boehm et al., 1995

A software system architecture comprises:

A collection of software and system components, connections, and

constraints

A collection of system stakeholders' need statements A rationale which demonstrates that the components, connections, and constraints

define a system that, if implemented, would satisfy the collection of system stakeholders' need statements

Clements et al., 1997

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

http://www.sei.edu/architecture/definitions.html

Software Architecture - Basics 26

Architecture defined

Formal Definition

IEEE 1471-2000

Software architecture is the fundamental

  • rganization of a system, embodied in its

components, their relationships to each other and the environment, and the principles governing its design and evolution

slide-14
SLIDE 14

14

Software Architecture - Basics 27

27

Architecture defined

Software architecture encompasses the set of significant decisions about the organization of a software system

Selection of the structural elements and their interfaces by which a system is composed Behavior as specified in collaborations among those elements Composition of these structural and behavioral elements into larger subsystems Architectural style that guides this organization

Booch, Kruchten, Reitman, Bittner, and Shaw

Software Architecture - Basics 28

Architecture defined

What is software architecture?

“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, L; Clements, P.; Kazman,

  • R. Software Architecture in Practice. 2nd Edition, Boston, MA: Addison-

Wesley, 2003.]

Requirements artefacts are software architects “best friends”.

slide-15
SLIDE 15

15

Software Architecture - Basics 29

Common elements 1/2

Architecture defines major components Architecture defines component relationships (structures) and interactions Architecture omits content information about components that does not pertain to their interactions Behavior of components is a part of architecture insofar as it can be discerned from the point of view of another component

Software Architecture - Basics 30

Common elements 2/2

Every system has an architecture (even a system composed of one component) Architecture defines the rationale behind the components and the structure Architecture definitions do not define what a component is Architecture is not a single structure – no single structure is the architecture

slide-16
SLIDE 16

16

Software Architecture - Basics 31

Basic Architectural Abstractions

Component – locus of computation Interface – locus of contract; e.g. provided and required services Connector – locus of interaction

Component Interface Connector Interface

Software Architecture - Basics 32

Software Architecture: Essentials

Components

What are the elements? Examples: filters, databases, layers, clients, servers…

Connections

How do components communicate? Examples: procedure calls, messages, pipes, event broadcast

Topology

How are the components and connections organized topologically?

Constraints (including constraints on change)

slide-17
SLIDE 17

17

Software Architecture - Basics 33

Influences on the Software Architecture Software architecture is influenced by several dimensions:

Technical environment Business Social … architect’s experience

On the other hand, software architecture also has an impact on the above doimensions

Software Architecture - Basics 34

Influences on the Software Architecture

[Bass, L; Clements, P.; Kazman, R. Software Architecture in Practice. 2nd Edition, Boston, MA: Addison-Wesley, 2003.]

slide-18
SLIDE 18

18

Software Architecture - Basics 35

Stakeholders

A stakeholder refers to anyone/anything that has a direct or indirect interest on the system to be built.

Clients Final users Developers Project managers Consultants …

Software Architecture - Basics 36

Stakeholders’ influence on software architecture

slide-19
SLIDE 19

19

Software Architecture - Basics 37

Importance of Stakeholders’s influences

Each stakeholder has her/his own system goals and expectations. Some may be conflicting… Software architecture should consider those and be able to prioritise conflicting goals.

Many of these goals refer to software qualities (quality attributes/non-functional erquirements)

Software Architecture - Basics 38

38

Forces in Software

Technology churn Scalability Performance Capacity Fail safe/Fault tolerance Reliability/Availability Security Functionality Cost/Schedule Compatibility Resilience

slide-20
SLIDE 20

20

Software Architecture - Basics 39

Architecture vs. Design

non-functional requirements (“ilities”) functional requirements (domains) Important: this is a general guideline – sometimes the borders are blurred

Architecture: where non-functional decisions are cast & functional reqs. are partitioned Design: where functional requirements are accomplished

architecture architecture design design

Software Architecture - Basics 40

Architecture is Early

Architecture represents the set of earliest design decisions

Hardest to change Most critical to get right

Architecture is the first design artifact where a system’s quality attributes are addressed

slide-21
SLIDE 21

21

Software Architecture - Basics 41

Architecture Drives

Architecture serves as the blueprint for the system but also the project:

Team structure Documentation organization Work breakdown structure Scheduling, planning, budgeting Unit testing, integration

Architecture establishes the communication and coordination mechanisms among components

Software Architecture - Basics 42

In Summary: Architectural Design

An early stage of the system design process. Represents the link between specification and design processes. Often carried out in parallel with some specification activities. It involves identifying major system components and their communications.

slide-22
SLIDE 22

22

Software Architecture - Basics 43

Advantages of explicit architecture

Stakeholder communication

Architecture may be used as a focus of discussion by system stakeholders.

System analysis

Means that analysis of whether the system can meet its non-functional requirements is possible.

Large-scale reuse

The architecture may be reusable across a range of systems.

Software Architecture - Basics 44

Architectural Design

slide-23
SLIDE 23

23

Software Architecture - Basics 45

Components Metamodel: syntax

Software Architecture - Basics 46

Components Metamodel: semantics

slide-24
SLIDE 24

24

Software Architecture - Basics 47

Typical architectural design decisions

What are the main system components and respective interfaces? How will the system be distributed? What approach will be used to structure the system? How will the system be decomposed into modules? What communication strategy should be used? What architectural styles are appropriate? How should the architecture be documented? How will the architectural design be evaluated? …