dillon: cse470: system design1 design: how to implement a system l goals: »satisfy the requirements...

55
Dillon: CSE470: SYSTEM DESIGN Design: HOW to implement a system Goals: » Satisfy the requirements » Satisfy the customer » Reduce development costs » Provide reliability » Support maintainability » Plan for future modifications

Post on 21-Dec-2015

217 views

Category:

Documents


2 download

TRANSCRIPT

Dillon: CSE470: SYSTEM DESIGN 1

Design: HOW to implement a system

Goals:» Satisfy the requirements

» Satisfy the customer

» Reduce development costs

» Provide reliability

» Support maintainability

» Plan for future modifications

Dillon: CSE470: SYSTEM DESIGN 2

Design Issues

Architecture

User Interface

Data Types

Operations

Data

Representations

Algorithms

Dillon: CSE470: SYSTEM DESIGN 3

Design

System design (high level design)» Focus on architecture

» Identification of subsystems

Object design (lower level design)» Modules and their implementations

» Focus on data representations and

algorithms

Dillon: CSE470: SYSTEM DESIGN 4

System Design

Choose high-level strategy for solving problem and building solution

Decide how to organize the system into subsystems

Identify concurrency / tasks Allocate subsystems to HW and SW

components

Dillon: CSE470: SYSTEM DESIGN 5

System Design

Major conceptual and policy decisions» Approach for management of data stores» Access mechanism for global resources» Software control mechanism

Handle boundary conditions Prioritize trade-offs

Dillon: CSE470: SYSTEM DESIGN 6

Design Principles Consider alternative approaches

» Do pro and con analysis» Delay decisions until superior choice is

clear» Isolate decisions so alternative

implementations can be evaluated later Avoid unnecessary embellishments But don’t oversimplify

Dillon: CSE470: SYSTEM DESIGN 7

Design Principles (cont.)

Make design traceable to requirements

Use uniform documentation style Reuse existing designs when

possible Keep design simple unless

performance, maintainability, etc. DEMAND otherwise

Dillon: CSE470: SYSTEM DESIGN 8

Design Principles (cont.)

Define interfaces between modules carefully

Consider how to handle the unexpected

Don’t code!! Document decisions Review, review, review . . .

Dillon: CSE470: SYSTEM DESIGN 9

System Architecture

Overall organization of system into subsystems

Decide basic interaction patterns Numerous architectural styles

for different applications Architecture provides context for

detailed design decisions

Dillon: CSE470: SYSTEM DESIGN 10

Subsystem Identification

Divide system into a manageable

number of components

Each major component is a

subsystem

Subsystem groups components

with common properties/function

Dillon: CSE470: SYSTEM DESIGN 11

Subsystem

Collection of

» Classes

» Associations

» Operations

» Events

» Constraints

Interrelated » Good cohesion

Well-defined, small interface with other subsystems» Low coupling

Identified by the service it provides

Dillon: CSE470: SYSTEM DESIGN 12

Subsystem Discussion

Provide services for other sub-

systems

» Group of related functions

» Share a common purpose Divide system into components (>20)

Subsystems are decomposed . . .

» Module is the lowest level of subsystem

Dillon: CSE470: SYSTEM DESIGN 13

Subsystem Relationships

Client-Server relationship» Client subsystems actively drive the

system by requesting services provided

by a server subsystem

Peer-to-peer relationship

» Subsystems interact and communicate

to accomplish a common goal

Dillon: CSE470: SYSTEM DESIGN 14

Client-Server Relationship

Server supplies services for clients

» Need not know identity of clients

» Need not know interface of clients

Client calls server

» Client knows interface of server

» Server performs some service and

returns a result

Dillon: CSE470: SYSTEM DESIGN 15

Peer-to-Peer Relationship

Subsystems call one another The results of/responses to calls may

not be immediately visible Subsystems must know the

interfaces of other subsystems More likely to have communication

dependencies

Dillon: CSE470: SYSTEM DESIGN 16

Strategies for Decompositions

Layers: Horizontal decomposition

» Open

» Closed

Partitions: Vertical decomposition

System topology:

» General decompositions

Dillon: CSE470: SYSTEM DESIGN 17

Layered Subsystems

Set of “virtual” worlds Each layer is defined in terms of the

layer(s) below it» Knowledge is one way: Layer knows about

layer(s) below it

Objects within layer can be independent Lower layer (server) supplies services for

objects (clients) in upper layer(s)

Dillon: CSE470: SYSTEM DESIGN 18

Example: Layered architecture

Interactive Graphics Application

Windows Operations

Screen Operations

Pixel Operations

Device I/O Operations

Dillon: CSE470: SYSTEM DESIGN 19

Closed Architectures

Each layer is built only in terms of the immediate lower layer

Reduces dependencies between layers

Facilitates change

Dillon: CSE470: SYSTEM DESIGN 20

Open Architectures

Layer can use any lower layerReduces the need to redefine

operations at each levelMore efficient /compact codeSystem is less robust/harder

to change

Dillon: CSE470: SYSTEM DESIGN 21

Properties of Layered Architectures

Top and bottom layers specified by the problem statement» Top layer is the desired system

» Bottom layer is defined by available resources (e.g. HW, OS, libraries)

Easier to port to other HW/SW platforms

Dillon: CSE470: SYSTEM DESIGN 22

Partitioned Architectures

Divide system into weakly-

coupled subsystems

Each provides specific services

Vertical decomposition of

problem

Dillon: CSE470: SYSTEM DESIGN 23

Ex: Partitioned Architecture

Operating System

File

System

Process

Control

Virtual

Memory

Manage-

ment

Device

Control

Dillon: CSE470: SYSTEM DESIGN 24

Typical Application Architecture

Application package

Window graphics

Screen graphics

Pixel graphics

Operating system

Computer hardware

User dialogue control

Simulation package

Dillon: CSE470: SYSTEM DESIGN 25

System Topology

Describe information flow

» Can use DFD to model flow

Some common topologies

» Pipeline (batch)

» Star topology

Dillon: CSE470: SYSTEM DESIGN 26

Ex: Pipeline Topology

Lexical analyzer

Semantic analyzer

Code generator

Code optimizer

source program token stream

abstract syntax tree

code sequence

object code

Compiler:

Dillon: CSE470: SYSTEM DESIGN 27

Ex: Star Toplogy

Monitoring system:

SafeHome software

Sensors

Control panel

Alarm

Telephone line

sensor status

display information

commands, data

On/Off signals, alarm type

number tones

Dillon: CSE470: SYSTEM DESIGN 28

Modularity

Organize modules according to resources/objects/data types

Provide cleanly defined interfaces» operations, methods, procedures, ...

Hide implementation details Simplify program understanding Simplify program maintainance

Dillon: CSE470: SYSTEM DESIGN 29

Abstraction Control abstraction

» structured control statements» exception handling» concurrency constructs

Procedural abstraction» procedures and functions

Data abstraction» user defined types

Dillon: CSE470: SYSTEM DESIGN 30

Abstraction (cont.)

Abstract data types

» encapsulation of data

Abstract objects

» subtyping

» generalization/inheritance

Dillon: CSE470: SYSTEM DESIGN 31

Cohesion

Contents of a module should be

cohesive

Improves maintainability

» Easier to understand

» Reduces complexity of design

» Supports reuse

Dillon: CSE470: SYSTEM DESIGN 32

(Weak) Types of cohesiveness

Coincidentally cohesive

» contiguous lines of code not exceeding a

maximum size

Logically cohesive

» all output routines

Temporally cohesive

» all initialization routines

Dillon: CSE470: SYSTEM DESIGN 33

(Better) Types of cohesiveness

Procedurally cohesive

» routines called in sequence

Communicationally cohesive

» work on same chunk of data

Functionally cohesive

» work on same data abstraction at a

consistent level of abstraction

Dillon: CSE470: SYSTEM DESIGN 34

Example: Poor Cohesion

package Output is

procedure DisplayDice( . . .);

procedure DisplayBoard( . . .);Dice

Board

I/O device

Output

Dillon: CSE470: SYSTEM DESIGN 35

Example: Good Cohesion

package Dice is

procedure Display ( . . .);

procedure Roll( . . .);

I/O device

Dice

Board

Dillon: CSE470: SYSTEM DESIGN 36

Coupling

Connections between modules

Bad coupling

» Global variables

» Flag parameters

» Direct manipulation of data structures

by multiple classes

Dillon: CSE470: SYSTEM DESIGN 37

Coupling (cont.)

Good coupling» Procedure calls» Short argument lists» Objects as parameters

Good coupling improves maintain-ability» Easier to localize errors, modify

implementations of an objects, ...

Dillon: CSE470: SYSTEM DESIGN 38

Information Hiding Hide decisions likely to change

» Data representations, algorithmic details, system dependencies

Black box» Input is known» Output is predictable» Mechanism is unknown

Improves maintainability

Dillon: CSE470: SYSTEM DESIGN 39

Information Hiding

Dillon: CSE470: SYSTEM DESIGN 40

Abstract data types

Modules (Classes, packages)» Encapsulate data structures and their

operations» Good cohesion

– implement a single abstraction

» Good coupling– pass abstract objects as parameters

» Black boxes– hide data representations and algorithms

Dillon: CSE470: SYSTEM DESIGN 41

Identifying Concurrency

Inherent concurrency» May involve synchronization» Multiple objects receive events at the

same time with out interacting» Example:

– User may issue commands through control panel at same time that the sensor is sending status information to the SafeHome system

Dillon: CSE470: SYSTEM DESIGN 42

Determining Concurrent Tasks

Thread of control» Path through state diagram with only one

active object at any time

Threads of control are implemented as tasks» Interdependent objects

» Examine state diagram to identify objects that can be implemented in a task

Dillon: CSE470: SYSTEM DESIGN 43

Management of Data Stores

Data stores permit separations

between subsystems

» Internal or external

Common types of data stores

» Files

» Databases

Dillon: CSE470: SYSTEM DESIGN 44

File Data Stores

When to use a database» Require access to voluminous data at fine

levels of detail by multiple users» Access can be efficiently managed with

DBMS commands» Application must port across many HW

and OS platforms» Store is to be accessed by multiple

application programs

Dillon: CSE470: SYSTEM DESIGN 45

Database Data Stores

Advantages» Infrastructure support» Common interface» Standard access language (SQL)

Disadvantages» Performance penalty» Awkward programming language

Dillon: CSE470: SYSTEM DESIGN 46

File Data Stores

When to use file data stores

» Data does not fit structure of DBMS» Voluminous data that is low in

information density

» “Raw” data

» Volatile data– only retained for a short time

Dillon: CSE470: SYSTEM DESIGN 47

Global Resources

Identify global resources and determine access patterns

Examples» physical units (processors, tape drives)» available space (disk, screen, buttons)» logical names (object IDs, filenames)» access to shared data (database, file)

Dillon: CSE470: SYSTEM DESIGN 48

Software Control Mechanism

How SW will control interactions between objects» Internal control

– flow of control within a process

» External control– flow of externally-visible events among

objects

Uniform control style for objects

Dillon: CSE470: SYSTEM DESIGN 49

Internal Control

Under control of programmer Structured for convenience

» efficiency, clarity, reliability, . . .

Common types of control flow» Procedure calls» Quasi-concurrent inter-task calls» Concurrent inter-task calls

Dillon: CSE470: SYSTEM DESIGN 50

External Control

Procedure-driven systems

Event-driven systems

Concurrent systems

Dillon: CSE470: SYSTEM DESIGN 51

Procedure-driven systems

Control resides within the program code» procedure issues request, waits for

reply, then continues execution

System state defined by » program counter, stack of procedure

calls, local variables

Dillon: CSE470: SYSTEM DESIGN 52

Event-Driven Systems

Control resides within a central dispatcher» calls to the dispatcher send output or

enable input» dispatcher invokes procedures when

events occur (“call back”)» state maintained

– using global variables, or– by dispatcher for procedures

Dillon: CSE470: SYSTEM DESIGN 53

Concurrent Systems

Control resides concurrently in independent tasks

Events are implemented as messages between tasks

OS schedules tasks for execution

Dillon: CSE470: SYSTEM DESIGN 54

Boundary Conditions

Initialization» Constants, parameters, global variables,

tasks, guardians, class hierarchy

Termination» Release external resources, notify other

tasks

Failure» Clean up and log failure info

Dillon: CSE470: SYSTEM DESIGN 55

Identify Trade-off Priorities

Establish priorities for choosing between incompatible goals

Implement minimal functionality initially and embellish as appropriate

Isolate decision points for later evaluation

Trade efficiency for simplicity, reliability, . . .