Software Architecture. Agenda " Why architect? " What is architecture? " What does an architect do?...

Post on 23-Dec-2015

217 views 0 download

Tags:

transcript

Software Architecture

Agenda

Why architect? What is architecture? What does an architect do? What principles guide the process of

architecting? What's involved in creating architectural

documents?

Why Architect?

to build a better dog house to handle large, complex tasks

to coordinate work to communicate ideas and design to validate against goals to resolve conflicting goals to reduce costs to improve delivery times

products or product lines

Architecture: Definitions

"the art or science of building" "formation or construction as or as if as the result

of conscious act" "a unifying or coherent form or structure" "a method or style of building" "the manner in which the components of a

computer or computer system are organized and integrated"

Merriam-Webster's Collegiate Dictionary, Tenth Edition

Develop: Definitions

"to set forth or make clear by degrees or in detail" "to work out the possibilities of" "to make available or usable" "to cause to unfold gradually" "to expand by a process of growth" "to come into being gradually"

Merriam-Webster's Collegiate Dictionary, Tenth Edition

What is Architecture?

Form structure, organization

Function behavior, use

Style appearance, elegance, way of doing things (tao)

Examples of Architecture

Building Symphony Musical Device Software

Function enclose space evoke emotion play music process information

Structure foundation, walls, ceiling, roof, rooms, etc.

section, part, movement, tempo, keys, notes, rests, etc.

case, power supply, circuitry, motor, buttons, display, etc.

components, connectors, containers, interfaces, etc.

Style picturesque, formal

classical, romantic

HIFI, boombox, personal

paradigm, patterns, idioms, principles, rules

Score

Layout

SectionPicture

Class

Influences on Architecture

Environment/Context Relationship to surroundings, orientation, and climate

History Changes in technology, materials, and ideals of

beauty over time

Technology Current know-how

Uses of Architecture

Means of communicating design information amongst stakeholders

Embodiment of early design decisions Reusable entity

What Does an Architect Do?

leads champions, coordinates, interfaces, aligns with

business strategies

provides vision translates designs criticizes consults

Guiding Principles

integrity simplicity loose coupling/separation of concerns high cohesion abstraction postponement of decisions

Creating Architectural Documents

Source "Architecture-Based Development", Len Bass & Rick

Kazman, Carnegie Mellon University, 1999

Iterative process, involving both construction and validation

Six-step process

Architectural Document Creation Process Summary

1 Elicit architectural requirements

2 Design the architecture

3 Document the architecture

4 Analyze the architecture

5 Realize the architecture

6 Maintain the architecture

Elicit Architectural Requirements

functional requirements non-functional requirements or qualities

such as: modifiability performance security reliability

includes priorities, relative importance, etc.

Design the Architecture

make design decisions based on: knowledge of architectural styles design patterns use of of particular tools

reason about decisions by considering architectural structures* and views

validate the design by determining if scenarios are achievable

Architectural Structures components, connectors, and properties

Based on: Architectural Blueprints -- The “4+1” View Model of Software Architecture, P. Kruchten, IEEE Software V12N6, 1995

view: perspective; part of or combination of parts of structures

functional structure/logical view concurrency structure/process view physical structure/physical view code structure/development view developmental structure (not in Kruchten) Kruchten includes “scenarios”

Functional Structure

decomposition of functionality system’s services to clients identification of common mechanisms and design

elements

identification of connections represented in UML by class diagrams

Concurrency Structure

processes, threads, distribution, messages some non-functional requirements handled

performance, availability, security, reliability

how functionality maps to processes/threads major tasks use inter-process communication (IPC)

no assumptions about collocation

minor tasks may use shared memory

can be used to estimate message flows and loads

Physical Structure

mapping software to hardware primarily non-functional requirements

e.g., availability, reliability (fault tolerance), performance (throughput), scalability

several different configurations possible

Code Structure

key code abstractions (e.g., packages, classes) addresses:

software reuse, portability software management (work allocation, monitoring, etc.) software development issues

software module organization often, layered subsystem

Scenarios

walk-through scripts sequences of interactions among objects and among

processes

instances of use cases (what a system does from the standpoint of an external observer)

intentionally redundant with other views: to help discover architectural elements to validate and illustrate architecture

Document the Architecture

Key characteristics: complete and navigable includes infrastructure enough use cases to help understand how system will

implement functionality includes constraints on communications, resource

management, time management, etc. publicly available to everyone concerned

Analyze the Architecture

Review by concerned parties Intent is to:

detect problems early improve the architecture

Realize the Architecture

Turn the architecture into code

Maintain the Architecture

Keep the architecture on track over time