4 Design Principles I x 4
-
Upload
ashwinib1986 -
Category
Documents
-
view
15 -
download
1
Transcript of 4 Design Principles I x 4
![Page 1: 4 Design Principles I x 4](https://reader035.fdocuments.us/reader035/viewer/2022081907/547f38b5b37959532b8b5710/html5/thumbnails/1.jpg)
1
COMP 7700 – Correctness and Robustness1
Chapter 4Design Principles I
Correctness and Robustness
COMP 7700 – Correctness and Robustness2
Process Phase Affected by This Chapter
RequirementsAnalysis
Design
Implementation
ArchitectureFramework Detailed Design
Key: = less affected
Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.
COMP 7700 – Correctness and Robustness3
Key Concept: Correctness
Goal: That each artifact satisfies designatedrequirements, and that together they satisfyall of the application’s requirements.
Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.
COMP 7700 – Correctness and Robustness4
Sufficient Designs: Terminology and Rationale
A design sufficientto implement therequirements.
a correct designSometimescalled …
the design must beentirely understandable
It follows that …
the designvery modular
A common way to achievethis is to make …
Minimumgoal:
Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.
![Page 2: 4 Design Principles I x 4](https://reader035.fdocuments.us/reader035/viewer/2022081907/547f38b5b37959532b8b5710/html5/thumbnails/2.jpg)
2
COMP 7700 – Correctness and Robustness5
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.COMP 7700 – Correctness and Robustness
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 forClass Automobile
Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.
COMP 7700 – Correctness and Robustness7
IntroducingInterfaces
1 of 2
ShipmentsetVehicle()perishable()getWidth()
printRoute()describeType()
getLength()getDuration()
setType()
Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.
COMP 7700 – Correctness and Robustness8
IntroducingInterfaces
2 of 2
ShipmentsetVehicle()perishable()getWidth()
printRoute()describeType()
getLength()getDuration()
setType()
Shipment
DimensionsgetWidth()getLength()getWeight()
TransportationMeansgetDuration()setVehicle()printRoute()
GoodsTypedescribeType()
setType()perishable()
Shipment
Dimensions
TransportationMeans
GoodsType
Originalform
Forms usinginterfaces
Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.
![Page 3: 4 Design Principles I x 4](https://reader035.fdocuments.us/reader035/viewer/2022081907/547f38b5b37959532b8b5710/html5/thumbnails/3.jpg)
3
COMP 7700 – Correctness and Robustness9
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.
COMP 7700 – Correctness and Robustness10
Participant-services
Conversation-services
Example of PackageInterfaces
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.
COMP 7700 – Correctness and Robustness11
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.
COMP 7700 – Correctness and Robustness12
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 4: 4 Design Principles I x 4](https://reader035.fdocuments.us/reader035/viewer/2022081907/547f38b5b37959532b8b5710/html5/thumbnails/4.jpg)
4
COMP 7700 – Correctness and Robustness13
Alternative Modularizations
mechanics
position
ground control
onBoardNavigation
control
trajectory
weather
Application tracking trajectoryof rocket carrying orbit-boundsatellite into positionAlternative 1
Alternative 2
Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.
COMP 7700 – Correctness and Robustness14
Protection from faulty Inputo User inputo Input, not from user
• Data communication• Function calls made by other applications
Protection from developer error– Faulty design– Faulty implementation
Improving Robustness: Sources ofErrors
Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.
COMP 7700 – Correctness and Robustness15
Example:int computeArea( int aLength, int aBreadth ) { … }
Capture parameter constraints in classes if feasibleint computeArea( RectangleDimension a RectangleDimension )
Specify all parameter constraints in method commentsaLength > 0 andaBreadth > 0 andaLength >= aBreadth
Callers obey explicit requirements on parameterso Problem is method programmers have no control over callers
Check constraints first within the method codeif( 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.
COMP 7700 – Correctness and Robustness16
Key Concept: Robustness
-- is promoted by verifying datavalues before using them.
Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.
![Page 5: 4 Design Principles I x 4](https://reader035.fdocuments.us/reader035/viewer/2022081907/547f38b5b37959532b8b5710/html5/thumbnails/5.jpg)
5
COMP 7700 – Correctness and Robustness17
Wrapping ParametersReplace 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.
COMP 7700 – Correctness and Robustness18
Key Concept: Robustness
-- is promoted by enforcing intentions.
Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.
COMP 7700 – Correctness and Robustness19
Type of application
How Much Design Detail Before Initial Coding?
0%
Recommen-ded % ofdesign detailbeforestarting tocode
Inexperienceddesigner
Experienceddesigner
100%
Diminishing abilityof designer to
envisageconsequences ofdesign decision.
Very simple Very complex COMP 7700 – Correctness and Robustness20
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 6: 4 Design Principles I x 4](https://reader035.fdocuments.us/reader035/viewer/2022081907/547f38b5b37959532b8b5710/html5/thumbnails/6.jpg)
6
COMP 7700 – Correctness and Robustness21
Summary of This Chapter
Correctness of a Design or Codeo Supports the requirementso In general, many correct designs exist
Robustness of a Design or Codeo Absorbs errors
o -- of the usero -- of developers
Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.