basic concepts software architecture. what is software architecture? definition: – a software...

24
Basic Concepts Software Architecture

Upload: nathaniel-riley

Post on 31-Dec-2015

224 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Basic Concepts Software Architecture. What is Software Architecture? Definition: – A software architecture is the set of principal design decisions about

Basic Concepts

Software Architecture

Page 2: Basic Concepts Software Architecture. What is Software Architecture? Definition: – A software architecture is the set of principal design decisions about

What is Software Architecture?• Definition:

– A software architecture is the set of principal design decisions about the system

• Software architecture is the blueprint for a software system’s construction and evolution

• Design decisions encompass every facet of the system under development– Structure– Behavior– Interaction– Non-functional properties 2

Page 3: Basic Concepts Software Architecture. What is Software Architecture? Definition: – A software architecture is the set of principal design decisions about

PRINCIPAL Design Decision!

• Set of PRINCIPAL design decisions about the system is software

• “Principal” implies a degree of importance that grants a design decision “architectural status”– It implies that not all design decisions are

architectural– That is, they do not necessarily impact a system’s

architecture• How one defines “principal” will depend on what

the stakeholders define as the system goals

Page 4: Basic Concepts Software Architecture. What is Software Architecture? Definition: – A software architecture is the set of principal design decisions about

Stakeholders in a System’s Architecture

• Architects• Developers• Testers• Managers• Customers• Users• Vendors

4

Page 5: Basic Concepts Software Architecture. What is Software Architecture? Definition: – A software architecture is the set of principal design decisions about

Reference Architecture

• Definition:– Set of principal design decisions that are

simultaneously applicable to multiple related systems, typically within the application domain with explicitly defined points of variation is called as reference architecture

Page 6: Basic Concepts Software Architecture. What is Software Architecture? Definition: – A software architecture is the set of principal design decisions about

Temporal Aspect

• Design decisions are made and unmade over a system’s lifetime Architecture has a temporal aspect

• At any given point in time the system has only one architecture

• A system’s architecture will change over time

6

Page 7: Basic Concepts Software Architecture. What is Software Architecture? Definition: – A software architecture is the set of principal design decisions about

Prescriptive vs. Descriptive Architecture

• Prescriptive Architecture:– During the process of engineering a s/w system,

system architects will have made a set of design decisions that reflect their intent. These design decisions comprise the system’s prescriptive architecture.

• A system’s prescriptive architecture captures the design decisions made prior to the system’s construction– It is the as-conceived or as-intended architecture

7

Page 8: Basic Concepts Software Architecture. What is Software Architecture? Definition: – A software architecture is the set of principal design decisions about

• Descriptive Architecture:– The full set of principal design decisions D,

embodied in the set of artifacts A, is referred to as the system’s descriptive architecture

• A system’s descriptive architecture describes how the system has been built– It is the as-implemented or as-realized

architecture

Prescriptive vs. Descriptive Architecture

Page 9: Basic Concepts Software Architecture. What is Software Architecture? Definition: – A software architecture is the set of principal design decisions about

Architectural Evolution• When a system evolves, ideally its prescriptive architecture is

modified first• In practice, the system – and thus its descriptive architecture

– is often directly modified • This happens because of

– Developer sloppiness– Perception of short deadlines which prevent thinking through and

documenting – Lack of documented prescriptive architecture– Need or desire for code optimizations– Inadequate techniques or tool support

9

Page 10: Basic Concepts Software Architecture. What is Software Architecture? Definition: – A software architecture is the set of principal design decisions about

• P- Principal design decisions• A -artifacts• D -corresponding design decisions• As these three grows architecture becomes

more complete• At any point of time any pair of PA and DA

represents system’s software architecture

Page 11: Basic Concepts Software Architecture. What is Software Architecture? Definition: – A software architecture is the set of principal design decisions about

Architectural Degradation• At any point of time difference in

prescriptive architecture and descriptive architecture of the system is architectural degradation

• Causes:– Carelessness of developers, time limit, compact

deadlines etc… • Two related concepts– Architectural drift– Architectural erosion

11

Page 12: Basic Concepts Software Architecture. What is Software Architecture? Definition: – A software architecture is the set of principal design decisions about

Types of Architectural Degradation

• Architectural drift is introduction of principal design decisions into a system’s descriptive architecture that – are not included in, encompassed by, or implied by the

prescriptive architecture– but which do not violate any of the prescriptive

architecture’s design decisions– Example: Addition of decisions which are not prohibited

• Architectural erosion is the introduction of architectural design decisions into a system’s descriptive architecture that violate its prescriptive architecture– Too much drift causes erosion

Page 13: Basic Concepts Software Architecture. What is Software Architecture? Definition: – A software architecture is the set of principal design decisions about

Architectural Recovery

• Architectural recovery is the process of determining a software system’s architecture from its implementation-level artifacts

• Implementation-level artifacts can be– Source code– Executable files– Java .class files

13

Page 14: Basic Concepts Software Architecture. What is Software Architecture? Definition: – A software architecture is the set of principal design decisions about

Architectural Perspective

• Definition:– It is non empty set of types of architectural design

decisions• Perspective has to be fixed for getting a proper

view• Examples:– Deployment Perspective– Structural Perspective– Behavioral Perspective

Page 15: Basic Concepts Software Architecture. What is Software Architecture? Definition: – A software architecture is the set of principal design decisions about

Software Architecture’s Elements

• A software system’s architecture should be a composition and rich interplay of different elements

• Elements address key system concerns like:– Processing / functionality/ behavior– Data, also referred as information or state– Interaction

15

Page 16: Basic Concepts Software Architecture. What is Software Architecture? Definition: – A software architecture is the set of principal design decisions about

Components• Elements that encapsulate processing and data in a system’s

architecture are referred to as software components (application specific)

• Definition– A software component is an architectural entity that

• encapsulates a subset of the system’s functionality and/or data

• restricts access to that subset via an explicitly defined interface

• has explicitly defined dependencies on its required execution context

• Components typically provide application-specific services

16

Page 17: Basic Concepts Software Architecture. What is Software Architecture? Definition: – A software architecture is the set of principal design decisions about

Components

• Components can be complex or simple depending upon:– perspective, – architecture taken by developers – need of the system

• Visible only via interface, without interface it is black box (abstract entity)

• Abstraction, modularity and encapsulation• Reusable and evolvable• Reusability sometimes result into drift (major reason for

drift)

Page 18: Basic Concepts Software Architecture. What is Software Architecture? Definition: – A software architecture is the set of principal design decisions about

Connectors

• In complex systems interaction may become more important and challenging than the functionality of the individual components

• Definition:– A software connector is an architectural building block

tasked with effecting and regulating interactions among components

• In many software systems connectors are usually simple procedure calls or shared data accesses

• Connectors typically provide application-independent interaction facilities

18

Page 19: Basic Concepts Software Architecture. What is Software Architecture? Definition: – A software architecture is the set of principal design decisions about

Examples of Connectors

• Procedure call connectors • Shared memory connectors • Message passing connectors • Streaming connectors • Distribution connectors• Wrapper/adaptor connectors

19

Page 20: Basic Concepts Software Architecture. What is Software Architecture? Definition: – A software architecture is the set of principal design decisions about

Configurations

• Components and connectors are composed in a specific way in a given system’s architecture to accomplish that system’s objective

• Definition– An architectural configuration, or topology, is a set

of specific associations between the components and connectors of a software system’s architecture

20

Page 21: Basic Concepts Software Architecture. What is Software Architecture? Definition: – A software architecture is the set of principal design decisions about

Architectural Styles• Certain Design decisions are tested to be good for the system and some

design decisions are resulting not beneficial• These decisions related to development context results into different

styles

• Definition– An architectural style is a named collection of architectural design

decisions that • are applicable in a given development context• constrain architectural design decisions that are specific to a

particular system within that context• elicit beneficial qualities in each resulting system

21

Page 22: Basic Concepts Software Architecture. What is Software Architecture? Definition: – A software architecture is the set of principal design decisions about

Architectural Patterns

• Definition:– An architectural pattern is a set of architectural design decisions

that are applicable to a recurring design problem, and parameterized to account for different software development contexts in which that problem appears

• A widely used pattern in modern distributed systems is the three-tiered system pattern – Science

– Banking

– E-commerce

– Reservation systems 22

Page 23: Basic Concepts Software Architecture. What is Software Architecture? Definition: – A software architecture is the set of principal design decisions about

Style vs. Pattern

• Scope: – Style : development, general

– Pattern : Design, limited

• Example: distributed system is result of style, presenting state in multiple way is pattern

• Abstraction: style require human interpretation (not abstract). Patterns are highly abstract in nature

• Relationship: Patterns are not used as it is. Patterns has to be used as per the guidelines in the style.

Page 24: Basic Concepts Software Architecture. What is Software Architecture? Definition: – A software architecture is the set of principal design decisions about

Architectural Models, Views, and Visualizations

• Architecture Model– An artifact documenting some or all of the

architectural design decisions about a system• Architecture Visualization– A way of depicting some or all of the architectural

design decisions about a system to a stakeholder• Architecture View– A subset of related architectural design decisions

24