4 Design Principles I - Mississippi State...

21
Software Architecture – Design Principles I 1 Chapter 4 Design Principles I Correctness and Robustness

Transcript of 4 Design Principles I - Mississippi State...

Page 1: 4 Design Principles I - Mississippi State Universityweb.cse.msstate.edu/.../4_Design_Principles_I.pdf · Software Architecture – Design Principles 6 -- with variables mileage, VehicleID,

Software Architecture – Design Principles I 1

Chapter 4 Design Principles I

Correctness and Robustness

Page 2: 4 Design Principles I - Mississippi State Universityweb.cse.msstate.edu/.../4_Design_Principles_I.pdf · Software Architecture – Design Principles 6 -- with variables mileage, VehicleID,

Software Architecture – Design Principles I 2

Process Phase Affected by This Chapter

Requirements Analysis

Design

Implementation

Architecture Framework Detailed Design

Key: = less affected

Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Page 3: 4 Design Principles I - Mississippi State Universityweb.cse.msstate.edu/.../4_Design_Principles_I.pdf · Software Architecture – Design Principles 6 -- with variables mileage, VehicleID,

Software Architecture – Design Principles I 3

Key Concept: à Correctness ß

Goal: That each artifact satisfies designated requirements, and that together they satisfy all of the application’s requirements.

Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Page 4: 4 Design Principles I - Mississippi State Universityweb.cse.msstate.edu/.../4_Design_Principles_I.pdf · Software Architecture – Design Principles 6 -- with variables mileage, VehicleID,

Software Architecture – Design Principles I 4

Sufficient Designs: Terminology and Rationale

A design sufficient to implement the requirements.

a correct design Sometimes called …

the design must be entirely understandable

It follows that …

the design very modular

A common way to achieve this is to make …

Minimum goal:

Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Page 5: 4 Design Principles I - Mississippi State Universityweb.cse.msstate.edu/.../4_Design_Principles_I.pdf · Software Architecture – Design Principles 6 -- with variables mileage, VehicleID,

Software Architecture – Design Principles I 5

Key Concept: à Correctness by Informal Methods ß

Simplify and modularize designs until they convince.

Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Page 6: 4 Design Principles I - Mississippi State Universityweb.cse.msstate.edu/.../4_Design_Principles_I.pdf · Software Architecture – Design Principles 6 -- with variables mileage, VehicleID,

Software Architecture – Design Principles I 6

-- with variables mileage, VehicleID, value, originalPrice, and type: 

1)  mileage > 0

2)  mileage < 1000000

3)  vehicleID has at least 8 characters

4)  value >= -300

($300 is the disposal cost of a worthless automobile)

5)  originalPrice >= 0

6)  ( type == “REGULAR” && value <= originalPrice ) ||

( type == “VINTAGE” && value >= originalPrice )

Invariants for Class Automobile

Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Page 7: 4 Design Principles I - Mississippi State Universityweb.cse.msstate.edu/.../4_Design_Principles_I.pdf · Software Architecture – Design Principles 6 -- with variables mileage, VehicleID,

Software Architecture – Design Principles I 7

Introducing Interfaces

1 of 2

Shipment setVehicle() perishable() getWidth()

printRoute() describeType()

getLength() getDuration()

setType()

Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Page 8: 4 Design Principles I - Mississippi State Universityweb.cse.msstate.edu/.../4_Design_Principles_I.pdf · Software Architecture – Design Principles 6 -- with variables mileage, VehicleID,

Software Architecture – Design Principles I 8

Introducing Interfaces

2 of 2

Shipment setVehicle() perishable() getWidth()

printRoute() describeType()

getLength() getDuration()

setType()

Shipment

Dimensions getWidth() getLength() getWeight()

TransportationMeans getDuration() setVehicle() printRoute()

GoodsType describeType()

setType() perishable()

Shipment

Dimensions

TransportationMeans

GoodsType

Original form

Forms using interfaces

Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Page 9: 4 Design Principles I - Mississippi State Universityweb.cse.msstate.edu/.../4_Design_Principles_I.pdf · Software Architecture – Design Principles 6 -- with variables mileage, VehicleID,

Software Architecture – Design Principles I 9

Package Interfaces

Pricing

purchases

Furniture

Clothing

Appliance

Selection

ClothingTryout

«singleton» PurchasesIF

Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Page 10: 4 Design Principles I - Mississippi State Universityweb.cse.msstate.edu/.../4_Design_Principles_I.pdf · Software Architecture – Design Principles 6 -- with variables mileage, VehicleID,

Software Architecture – Design Principles I 10

Participant- services

Conversation- services

Example of Package Interfaces

Conversation

chatServer

chatClient

Display

ConversationManager

ClientComm

ServerComm

billing

Accounting Bill Financial

Message- reception

Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Page 11: 4 Design Principles I - Mississippi State Universityweb.cse.msstate.edu/.../4_Design_Principles_I.pdf · Software Architecture – Design Principles 6 -- with variables mileage, VehicleID,

Software Architecture – Design Principles I 11

Key Concept: à Interfaces ß

-- collections of function prototypes: Make designs more understandable.

Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Page 12: 4 Design Principles I - Mississippi State Universityweb.cse.msstate.edu/.../4_Design_Principles_I.pdf · Software Architecture – Design Principles 6 -- with variables mileage, VehicleID,

Software Architecture – Design Principles I 12

Domain vs. Non-Domain Classes

•  Domain classes: Particular to the application –  Examples: BankCustomer, BankTransaction, Teller

–  Typically not GUI classes

–  Sufficient to classify all requirements (see chapter xx)

•  Non-Domain classes: Generic –  Examples: abstract classes, utility classes

–  Arise from design and implementation considerations

Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Page 13: 4 Design Principles I - Mississippi State Universityweb.cse.msstate.edu/.../4_Design_Principles_I.pdf · Software Architecture – Design Principles 6 -- with variables mileage, VehicleID,

Software Architecture – Design Principles I 13

Alternative Modularizations

mechanics

position

ground control

onBoardNavigation

control

trajectory

weather

Application tracking trajectory of rocket carrying orbit-bound satellite into position Alternative 1

Alternative 2

Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Page 14: 4 Design Principles I - Mississippi State Universityweb.cse.msstate.edu/.../4_Design_Principles_I.pdf · Software Architecture – Design Principles 6 -- with variables mileage, VehicleID,

Software Architecture – Design Principles I 14

Protection from faulty Input o  User input o  Input, not from user

•  Data communication •  Function calls made by other applications

Protection from developer error –  Faulty design –  Faulty implementation

Improving Robustness: Sources of Errors

Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Page 15: 4 Design Principles I - Mississippi State Universityweb.cse.msstate.edu/.../4_Design_Principles_I.pdf · Software Architecture – Design Principles 6 -- with variables mileage, VehicleID,

Software Architecture – Design Principles I 15

Example: int computeArea( int aLength, int aBreadth ) { … }

q  Capture parameter constraints in classes if feasible int computeArea( RectangleDimension a RectangleDimension )

q  Specify all parameter constraints in method comments aLength > 0 and aBreadth > 0 and aLength >= aBreadth

q  Callers obey explicit requirements on parameters o  Problem is method programmers have no control over callers

q  Check constraints first within the method code if( aLength <= 0 ) …… –  Throw exception if this is a predictable occurrence –  Otherwise abort if possible –  Otherwise return default if it makes sense in context

•  And generate warning or log to a file

Constraints on Parameters

Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Page 16: 4 Design Principles I - Mississippi State Universityweb.cse.msstate.edu/.../4_Design_Principles_I.pdf · Software Architecture – Design Principles 6 -- with variables mileage, VehicleID,

Software Architecture – Design Principles I 16

Key Concept: à Robustness ß

-- is promoted by verifying data values before using them.

Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Page 17: 4 Design Principles I - Mississippi State Universityweb.cse.msstate.edu/.../4_Design_Principles_I.pdf · Software Architecture – Design Principles 6 -- with variables mileage, VehicleID,

Software Architecture – Design Principles I 17

Wrapping Parameters Replace int computeArea( int aLength, int aBreadth )

{..}

with int computeArea( Rectangle aRectangle )

{..} -- where class Rectangle

{ … Rectangle( int aLength, int aBreadth ) { if( aLength > 0 ) this.length = aLength; else ….. } … }

Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Page 18: 4 Design Principles I - Mississippi State Universityweb.cse.msstate.edu/.../4_Design_Principles_I.pdf · Software Architecture – Design Principles 6 -- with variables mileage, VehicleID,

Software Architecture – Design Principles I 18

Key Concept: à Robustness ß

-- is promoted by enforcing intentions.

Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Page 19: 4 Design Principles I - Mississippi State Universityweb.cse.msstate.edu/.../4_Design_Principles_I.pdf · Software Architecture – Design Principles 6 -- with variables mileage, VehicleID,

Software Architecture – Design Principles I 19

Type of application

How Much Design Detail Before Initial Coding?

0%

Recommen-ded % of design detail before starting to code

Inexperienced designer

Experienced designer

100%

Diminishing ability of designer to

envisage consequences of design decision.

Very simple Very complex

Page 20: 4 Design Principles I - Mississippi State Universityweb.cse.msstate.edu/.../4_Design_Principles_I.pdf · Software Architecture – Design Principles 6 -- with variables mileage, VehicleID,

Software Architecture – Design Principles I 20

Video Store Application: Sufficient Classes?

Video

Customer

BarCodeReader

CheckOutDisplay

RegisterNewVideoDisplay

CheckOutDurationDisplay

Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Page 21: 4 Design Principles I - Mississippi State Universityweb.cse.msstate.edu/.../4_Design_Principles_I.pdf · Software Architecture – Design Principles 6 -- with variables mileage, VehicleID,

Software Architecture – Design Principles I 21

Summary of This Chapter

q  Correctness of a Design or Code o  Supports the requirements o  In general, many correct designs exist

q  Robustness of a Design or Code o  Absorbs errors

o  -- of the user o  -- of developers

Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.