Chapter 10: Architectural Design Presented By: Andy Carroll.

32
Chapter 10: Architectural Design Presented By: Andy Carroll

Transcript of Chapter 10: Architectural Design Presented By: Andy Carroll.

Page 1: Chapter 10: Architectural Design Presented By: Andy Carroll.

Chapter 10: Architectural Design

Presented By:Andy Carroll

Page 2: Chapter 10: Architectural Design Presented By: Andy Carroll.

Software Architecture: What is it? Structure or structures of the system, which

comprise software components, the externally visible properties of those components, and the relationships among them

Two Levels Data Design Architectural Design

Page 3: Chapter 10: Architectural Design Presented By: Andy Carroll.

Software Architecture The architecture is not the operational

software. Rather, it is a representation that enables a software engineer to: Analyze the effectiveness of the design in meeting its

stated requirements, Consider architectural alternatives at a stage when

making design changes is still relatively easy, and Reduce the risks associated with the construction of the

software.

Page 4: Chapter 10: Architectural Design Presented By: Andy Carroll.

Importance? Representations of software architecture are

enablers for communication The architecture highlights early design decisions Architecture “constitutes a relatively small,

intellectually graspable model of how the system is structured and how its components work together”

Most important?

Page 5: Chapter 10: Architectural Design Presented By: Andy Carroll.

Data Design: Architectural Level Multiple Databases Data mining: Knowledge Discovery in

Databases (KDD) Data Warehousing

Page 6: Chapter 10: Architectural Design Presented By: Andy Carroll.

Data Design: Component Level Focuses on representation of data structures

that are directly accessed by software components

Best practices: Develop data abstractions Ensure relationships established Simplify where possible

Examples?

Page 7: Chapter 10: Architectural Design Presented By: Andy Carroll.

Principles of Data Design

1. The systematic analysis principles applied to function and behavior should also be applied to data.

2. All data structures and the operations to be performed on each should be identified

3. A mechanism for defining the content of each data object should be established and used to define both data and the operations applied to it.

4. Low-level design decisions should be deferred until late in the design process.

5. The representation of a data structure should be known only to those modules that must make direct use of the data contained within the structure.

6. A library of useful data structures and the operations that may be applied to them should be developed.

7. A software design and programming language should support the specification and realization of abstract data types.

Page 8: Chapter 10: Architectural Design Presented By: Andy Carroll.

Architectural Styles Styles describe a category defined by:

A set of components that perform a function Set of connectors that enable communication Constraints on integration of components Semantic models that help the understanding of overall

properties of a system Types of Architectures

Data-centered Data flow Call and Return ( Main Program/Subprogram and Remote

Procedure Call) Object Oriented Layered

Page 9: Chapter 10: Architectural Design Presented By: Andy Carroll.

Data-Centered

Example?

Page 10: Chapter 10: Architectural Design Presented By: Andy Carroll.

Data Flow

Examples?

Page 11: Chapter 10: Architectural Design Presented By: Andy Carroll.

Call and Return

Page 12: Chapter 10: Architectural Design Presented By: Andy Carroll.

Layered

Page 13: Chapter 10: Architectural Design Presented By: Andy Carroll.

Architectural Patterns Concurrency: applications must handle

multiple tasks in a manner that simulates parallelism

Persistence: Data persists if it survives past the execution of the process that created it. Two patterns are common: DBMS Pattern Application Level Persistence Pattern

Distribution: the manner in which systems or components within systems communicate with one another in a distributed environment

Page 14: Chapter 10: Architectural Design Presented By: Andy Carroll.

Organization and Refinement Assessing architectural style:

Control How is control managed? Does a hierarchy exist? How is control transferred?

Data How is data communicated? Is flow continuous? Sporadic? Component interaction with data?

When might data flow be continuous? Sporadic?

Page 15: Chapter 10: Architectural Design Presented By: Andy Carroll.

Architectural Design Representing in context: interaction with

target system Superordinate Systems Subordinate Systems Peer-Level Systems Actors

Archetypes: one element of the system Nodes, Detectors, Indicators, Controllers

Refining: implementation of previously defined archetypes

Page 16: Chapter 10: Architectural Design Presented By: Andy Carroll.

Architectural Context Example

target system: Security Function

uses

uses peershomeowner

Safehome Product

Internet-based system

surveillance function

sensors

control panel

sensors

uses

Page 17: Chapter 10: Architectural Design Presented By: Andy Carroll.

Archetype Example

Figure 10.7 UML relationships for SafeHome security function archetypes (adapted from [BOS00])

Controller

Node

communicates with

Detector Indicator

Page 18: Chapter 10: Architectural Design Presented By: Andy Carroll.

Components Example

SafeHome Executive

External Communication Management

GUI Internet Interface

Function selection

Security Surveillance Home management

Control panel

processing

detector management

alarm processing

Page 19: Chapter 10: Architectural Design Presented By: Andy Carroll.

Refined Components Example

sensorsensorsensorsensor

sensorsensorsensor

sensor

External Communication Management

GUI Internet Interface

Security

Control

panelprocessing

detector

managementalarm

processing

Keypad processing

CP display functions

scheduler

sensorsensorsensorsensor

phone communication

alarm

SafeHome Executive

Page 20: Chapter 10: Architectural Design Presented By: Andy Carroll.

Analyzing the Design Collect scenarios Elicit requirements, constraints,

environment description Describe architectural designs or

patterns that have been chosen Evaluate quality attributes in isolation Identify the sensitivity of quality

attributes to various attributes for a specific style

Critique candidate architectures

Page 21: Chapter 10: Architectural Design Presented By: Andy Carroll.

Architectural Complexity Sharing dependencies Flow dependencies Constrained dependencies

Could these be related or causal?

Page 22: Chapter 10: Architectural Design Presented By: Andy Carroll.

Mapping Data Flow to Architecture Transform Mapping

1. Review the fundamental system model.2. Review and refine data flow diagrams for the

software3. Determine whether the DFD has transform or

transaction flow characteristics.4. Isolate the transform center by specifying

incoming and outgoing flow boundaries.5. Perform “first-level factoring”6. Perform “second-level factoring”7. Refine the first-iteration architecture using

design heuristics for improved software quality.

Page 23: Chapter 10: Architectural Design Presented By: Andy Carroll.

Flow Characteristics

Transform flow

Transactionflow

Page 24: Chapter 10: Architectural Design Presented By: Andy Carroll.

Transform Mapping

data flow model

"Transform" mapping

ab

c

d e fg h

ij

x1

x2 x3 x4

b c

a

d e f g i

h j

Page 25: Chapter 10: Architectural Design Presented By: Andy Carroll.

Factoring

typical "worker" modules

typical "decision making" modules

direction of increasing decision making

Page 26: Chapter 10: Architectural Design Presented By: Andy Carroll.

First Level Factoring

main programcontroller

inputcontroller

processingcontroller

outputcontroller

Page 27: Chapter 10: Architectural Design Presented By: Andy Carroll.

Second Level Factoring

D

C

B A

A

C

B

Dmapping from the flow boundary outward

main

control

Page 28: Chapter 10: Architectural Design Presented By: Andy Carroll.

Mapping Data Flow to Architecture Transaction Mapping

1. Review the fundamental system model.2. Review and refine data flow diagrams for the

software3. Determine whether the DFD has transform or

transaction flow characteristics.4. Isolate the transaction center and the flow

characteristics along each of the action paths.5. Map the DFD in a program structure amenable

to transaction processing.6. Factor and refine the transaction structure and

the structure of each action path.7. Refine the first-iteration architecture using

design heuristics for improved software quality.

Page 29: Chapter 10: Architectural Design Presented By: Andy Carroll.

Transaction Mapping

a

b

t

g

h

d

e

f

i

k

j

l

m

n

Data flow model

x1

b

a

t

x2 x3 x4

d e f g h x3.1 l m n

i j

k

mapping

program structure

Page 30: Chapter 10: Architectural Design Presented By: Andy Carroll.

Isolate Flow Paths

readcommand

validatecommand

determinetype

readrecord

calculateoutputvalues

formatreport

produceerror msg

readfixturestatus

determinesetting

formatsetting

sendcontrolvalue

command

commandinvalid command

error msg

status

combinedstatus

raw setting

fixture setting

robot control

start/stop

assemblyrecord

record

values

report

valid command

Page 31: Chapter 10: Architectural Design Presented By: Andy Carroll.

Map the Flow Model

process operator

commands

command input

controller

read command

validate command

produce error

message

determine type

fixture status

controller

report generation controller

send control value

each of the action paths must be expanded further

Page 32: Chapter 10: Architectural Design Presented By: Andy Carroll.

Refining

process operator

commands

command input

controller

read command

validate command

produce error

message

determine type

send control value

read fixture status

determine setting

format setting

read record

calculate output values

format report

fixture status

controller

report generation controller