Top Banner
SWE 621: Software Modeling and Architectural Design Lecture Notes on Software Design Lecture 10 - Class Design Hassan Gomaa Dept of Computer Science G M Ui it Copyright 2011 H. Gomaa George Mason University Fairfax, VA Copyright © 2011 Hassan Gomaa All rights reserved. No part of this document may be reproduced in any form or by any means, without the prior written permission of the author. This electronic course material may not be distributed by e-mail or posted on any other World Wide Web site without the prior written permission of the author. Steps in Using COMET/UML 1 Develop Software Requirements Model 2 Develop Software Analysis Model 3 Develop Software Design Model Design Overall Software Architecture (Chapter 12 13) Design Overall Software Architecture (Chapter 12, 13) Design Distributed Component-based Subsystems (Chapter 12-13,15) Structure Subsystems into Concurrent Tasks (Chapter 18) Design Information Hiding Classes (Chapter 14) Develop Detailed Software Design Figure 6.1 COMET object-oriented software life cycle model R i t User 1 Copyright 2011 H. Gomaa 2 15 Copyright 2006 H. Gomaa Requirements Modeling Analysis Modeling Incremental Software Construction Incremental Software Integration Incremental Prototyping System Testing Throwaway Prototyping Design Modeling Customer 1 2 3 4 5 6 7 8 14 9 15 10 11 12 13
21

SWE 621: Software Modeling and Architectural Design ...mason.gmu.edu/~hgomaa/assets/lecturenotes621/SWE621-10...SWE 621: Software Modeling and Architectural Design Lecture 10 - Class

Mar 09, 2021

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: SWE 621: Software Modeling and Architectural Design ...mason.gmu.edu/~hgomaa/assets/lecturenotes621/SWE621-10...SWE 621: Software Modeling and Architectural Design Lecture 10 - Class

SWE 621: Software Modeling and Architectural Design

Lecture Notes on Software Design

Lecture 10 - Class Design

Hassan Gomaa

Dept of Computer ScienceG M U i it

Copyright 2011 H. Gomaa

George Mason UniversityFairfax, VA

Copyright © 2011 Hassan Gomaa

All rights reserved. No part of this document may be reproduced in any form or by any means, without the prior written permission of the author.

This electronic course material may not be distributed by e-mail or posted on any other World Wide Web site without the prior written permission of the author.

Steps in Using COMET/UML 1 Develop Software Requirements Model

2 Develop Software Analysis Model

3 Develop Software Design Model

Design Overall Software Architecture (Chapter 12 13)– Design Overall Software Architecture (Chapter 12, 13)

– Design Distributed Component-based Subsystems (Chapter 12-13,15)

– Structure Subsystems into Concurrent Tasks (Chapter 18)

– Design Information Hiding Classes (Chapter 14)

– Develop Detailed Software Design

Figure 6.1 COMET object-oriented software life cycle model

R i t

User

1

Copyright 2011 H. Gomaa 215

Copyright 2006 H. Gomaa

RequirementsModeling

Analysis Modeling

IncrementalSoftware

ConstructionIncremental

SoftwareIntegration

IncrementalPrototyping

System Testing

ThrowawayPrototyping

DesignModeling

Customer

12

34 5

6

7

8

149

15

10111213

Page 2: SWE 621: Software Modeling and Architectural Design ...mason.gmu.edu/~hgomaa/assets/lecturenotes621/SWE621-10...SWE 621: Software Modeling and Architectural Design Lecture 10 - Class

SWE 621: Software Modeling and Architectural Design

Lecture 10 - Class Design

Hassan Gomaa

Reference: H. Gomaa, Chapters 14 - Software Modeling and Design, Cambridge University Press, February 2011

Reference: H. Gomaa, Chapter 15 - Designing Concurrent,

Copyright 2011 H. Gomaa 3

Distributed, and Real-Time Applications with UML, Addison Wesley Object Technology Series, July, 2000

Copyright © 2011 Hassan Gomaa

All rights reserved. No part of this document may be reproduced in any form or by any means, without the prior written permission of the author.

Design Information Hiding Classes

• Design of passive classes

– Initially determined from Analysis Model– Each class hides design decision– Each class hides design decision

– Encapsulates information

– Accessed by operations

• Design class operations

– Primarily from Communication Model

– Shows direction of message from sender object to receiver

Copyright 2011 H. Gomaa

g jobject

• Develop class hierarchies using inheritance– Subclass inherits attributes & operations from superclass– Subclass may add attributes and operations, redefine

operations

Page 3: SWE 621: Software Modeling and Architectural Design ...mason.gmu.edu/~hgomaa/assets/lecturenotes621/SWE621-10...SWE 621: Software Modeling and Architectural Design Lecture 10 - Class

Active and Passive Objects• Objects may be active or passive• Active object

– Concurrent Task– Has thread of control

<<Task>>

• Passive object– a.ka. Information Hiding Object– Has no thread of control– Operations of passive object are

executed by task– Operations execute in task’s thread of

controlDi l i di l

<<Object>>

Copyright 2011 H. Gomaa5

• Directly or indirectly• Software Design terminology

– Task refers to active object– Object refers to passive object

Example of Information Hiding

• Example of Stack object

I f ti hidi l ti• Information hiding solution

– Hide stack data structure and internal linkage

– Specify operations on stack data structure

– Access to stack only via operations

– push (x), pop (x), empty, full

• Consider

Copyright 2011 H. Gomaa

• Consider

– Array implementation changed to

– Linked list implementation

Page 4: SWE 621: Software Modeling and Architectural Design ...mason.gmu.edu/~hgomaa/assets/lecturenotes621/SWE621-10...SWE 621: Software Modeling and Architectural Design Lecture 10 - Class

Figure 3.5 Example of Information Hiding

Pop (X)Push (X) FullEmpty

MAX SIZE

INDEXStack Information

HidingObject

X

Copyright 2011 H. Gomaa

Stack Array

Object

Figure 3.7 Example of Information Hiding

Pop (X)Push (X) FullEmpty

Stack Information

HidingObject

Top# Entries

X

Copyright 2011 H. Gomaa

Bottom

Stack Linked List

Max Size

Page 5: SWE 621: Software Modeling and Architectural Design ...mason.gmu.edu/~hgomaa/assets/lecturenotes621/SWE621-10...SWE 621: Software Modeling and Architectural Design Lecture 10 - Class

Example of Information Hiding

• Example of Stack object

I f ti hidi l ti• Information hiding solution

• Consider

– Array implementation changed to

– Linked list implementation

• Change to stack only impacts Stack object

• Interface unchanged

Copyright 2011 H. Gomaa

• Interface unchanged

– push (x), pop (x), empty, full

• Implementation (internals) modified

Classes and Operations

• Class

Represents a collection of identical objects (instances)– Represents a collection of identical objects (instances)

– Described by means of attributes (data items)

– Has one or more operations to access internal data

– Each object instance can be uniquely identified

• Operation (also known as method)

• Function or procedure that manipulates values of attributes

Copyright 2011 H. Gomaa

u ct o o p ocedu e t at a pu ates va ues o att butesmaintained by object

• All objects in class have same operations

Page 6: SWE 621: Software Modeling and Architectural Design ...mason.gmu.edu/~hgomaa/assets/lecturenotes621/SWE621-10...SWE 621: Software Modeling and Architectural Design Lecture 10 - Class

Figure 3.3 Class with attributes and operations

readBalance () : Realcredit (amount : Real)debit (amount : Real)open (accountNumber : Integer)close ()

accountNumber : Integerbalance : Real

Account

Copyright 2011 H. Gomaa

()

Design Class Operations

• Design Class Operations from Communication Model

– Shows direction of message from sender object to g jreceiver object

• Design Class Operations from Finite State Machine Model

– Statechart actions are mapped to operations

• Design Class Operations from Static Model

– May be used for entity classes

Copyright 2011 H. Gomaa

– Standard operations

• Create, Read, Update, Delete

– Specific operations

• Based on services provided by class

Page 7: SWE 621: Software Modeling and Architectural Design ...mason.gmu.edu/~hgomaa/assets/lecturenotes621/SWE621-10...SWE 621: Software Modeling and Architectural Design Lecture 10 - Class

Information Hiding Class Structuring

• Class Design

– Initially determined from Analysis Model

– Each class hides design decision– Each class hides design decision

• Design of Information Hiding Classes

– Entity classes are categorized further

• Data abstraction classes

• Database wrapper classes

• Design class operations

Copyright 2011 H. Gomaa 13

g p

– Primarily from communication Model

– Shows direction of message from sender object to receiver object

Data Abstraction Class

• Encapsulates data structureEncapsulates data structure

– Hides internal structure and content of data structure

– Attributes provided by static model (class diagram)

• Design Class interface

– Data accessed indirectly via operations

– Consider services required by client objects that interact

Copyright 2011 H. Gomaa 14

q y jwith data abstraction object

– Consider communication model

Page 8: SWE 621: Software Modeling and Architectural Design ...mason.gmu.edu/~hgomaa/assets/lecturenotes621/SWE621-10...SWE 621: Software Modeling and Architectural Design Lecture 10 - Class

Figure 14.2 Example of data abstraction class

Copyright 2011 H. Gomaa 15

Figure 14.2c Design model - class diagram

Figure 14.2 Example of data abstraction class

Copyright 2011 H. Gomaa 16

Page 9: SWE 621: Software Modeling and Architectural Design ...mason.gmu.edu/~hgomaa/assets/lecturenotes621/SWE621-10...SWE 621: Software Modeling and Architectural Design Lecture 10 - Class

State Machine ClassHides contents of statechart / state transition table

Maintains current state of object

Process Event Operation

Called to process input eventCalled to process input event

Depending on current state and conditions

Might change state of object

Might return action(s) to be performed

Current State OperationReturns the state stored in state transition table

Copyright 2011 H. Gomaa 17

If state transition table changes Only this class is impacted

Figure 14.2 Example of State Machine class

Business Logic Class

– Hides business application logicHides business application logic

– Encapsulate business rules

– Business rules could change

– Independently of other business logic classes

– Independently of entity classes

– E.g., Bank Withdrawal Transaction Manager business

Copyright 2011 H. Gomaa

g grules

– Account must have positive (or zero) balance after withdrawal

– Maximum daily withdrawal limit is $300

Page 10: SWE 621: Software Modeling and Architectural Design ...mason.gmu.edu/~hgomaa/assets/lecturenotes621/SWE621-10...SWE 621: Software Modeling and Architectural Design Lecture 10 - Class

Figure 14.5: Example of business logic class

«coordinator» :BankTransaction

Coordinator

Withdraw,Confirm,

Figure 14.5a: Analysis model - communication diagram

WithdrawResponse

Confirm, Abort

«business logic» :Withdrawal

TransactionManager

«coordinator» :BankTransaction

Coordinator

Figure 14.5b: Design model -communication diagram

Copyright 2011 H. Gomaa

withdraw (in accountNumber, in amount, out response),

confirm (accountNumber,amount), abort (accountNumber, amount)

«business logic» :Withdrawal

TransactionManager

Figure 14.5: Example of business logic class

«business logic»WithdrawalTransactionManager

Figure 14.5c: Design model - class diagram

+ initialize ( )+ withdraw (in accountNumber, in amount, out response)+ confirm(accountNumber, amount)+ abort (accountNumber, amount)

Copyright 2011 H. Gomaa

Page 11: SWE 621: Software Modeling and Architectural Design ...mason.gmu.edu/~hgomaa/assets/lecturenotes621/SWE621-10...SWE 621: Software Modeling and Architectural Design Lecture 10 - Class

Database Wrapper Class• Entity class in Analysis Model

– Encapsulated data is actually stored in database

• Analysis Model class mapped to

b l– Database Wrapper Class

• Hides interface to database (e.g., relational)

– Attributes of class mapped to

• Relation (flat file) stored in database

• Database Wrapper Class

Provides OO interface to database

Copyright 2011 H. Gomaa

– Provides OO interface to database

– Hides details of how to access data in database

• Hides SQL statements

– May hide details of one relation or

• Database view (join of two or more relations)

Figure 15.14: Example of database wrapper class

«entity»DebitCard

15.14a Analysis model«database wrapper»

DebitCard

+ t ( dId)

15.14b Design model

DebitCard

cardId: StringPIN: StringstartDate: DateexpirationDate: Datestatus:Integerlimit: Realtotal: Real

+ create (cardId)+ validate (in cardID, in PIN, out status)+ updatePIN (cardId, PIN)+ checkDailyLimit (cardId, amount)+ updateDailyTotal (cardId, amount)+ updateExpirationDate (cardId, expirationDate)+ updateCardStatus (cardId, status)+ updateDailyLimit (cardId, newLimit)+ clearTotal (cardId)+ read (in cardId, out PIN, out expirationDate,

Copyright 2011 H. Gomaa

DebitCard (cardId, PIN, startDate, expirationDate, status, limit, total, customerId)

(underline = primary key, italic = foreign key)

Relation in relational database :

read (in cardId, out PIN, out expirationDate,out status, out limit, out total)

+ delete (cardId)

Page 12: SWE 621: Software Modeling and Architectural Design ...mason.gmu.edu/~hgomaa/assets/lecturenotes621/SWE621-10...SWE 621: Software Modeling and Architectural Design Lecture 10 - Class

Inheritance in Design

• Subclass inherits generalized properties from superclass

• Property is Attribute or OperationProperty is Attribute or Operation

• Inheritance

– Allows sharing of properties between classes

– Allows adaptation of parent class (superclass) to form child class (subclass)

• Subclass inherits attributes & operations from superclass

Copyright 2011 H. Gomaa

– May add attributes

– May add operations

– May redefine operations

Abstract Class

• Abstract Class

– Template for creating subclasses

– Has no instances

– Only used as superclass

– Defines common interface for subclasses

• Abstract operation

– Operation declared in abstract class but not implemented

Copyright 2011 H. Gomaa

implemented

• Abstract Class defers implementation of some or all of its operations to subclasses

• Different subclasses can define different implementations of same abstract operation

Page 13: SWE 621: Software Modeling and Architectural Design ...mason.gmu.edu/~hgomaa/assets/lecturenotes621/SWE621-10...SWE 621: Software Modeling and Architectural Design Lecture 10 - Class

Example of Inheritance

• Attributes of Account Superclass

tN b b l– accountNumber, balance

• Operations of Account Superclass– open (accountNumber : Integer)

– close ()

– readBalance () :Real

– credit (amount :Real) {abstract}

Copyright 2011 H. Gomaa

credit (amount :Real) {abstract}

– debit (amount :Real) {abstract}

Account# accountNumber : Integer# balance : Real = 0

+ open (accountNumber : Integer)# credit (amount : Real) {abstract}

Figure 14.7: Example of superclass and subclass

# debit (amount : Real) {abstract}+ readBalance () : Real+ close ()

Copyright 2011 H. Gomaa

CheckingAccount

+ credit (amount : Real)+ debit (amount : Real) + readLastDepositAmount () : Real

SavingsAccount- cumulativeInterest : Real = 0- debitCount : Integer = 0- maxFreeDebits : Integer = 3- bankCharge : Real = 2.50+ credit (amount : Real)+ debit (amount : Real) + clearDebitCount ()+ addInterest (interestRate : Real)+ readCumulativeInterest () : Real

- lastDepositAmount : Real = 0

Page 14: SWE 621: Software Modeling and Architectural Design ...mason.gmu.edu/~hgomaa/assets/lecturenotes621/SWE621-10...SWE 621: Software Modeling and Architectural Design Lecture 10 - Class

Example of Inheritance

• Attributes of Checking Account SubclassAttributes of Checking Account Subclass

– Inherits accountNumber, balance

– Adds lastDepositAmount

• Operations of Checking Account Subclass

– Inherits specification and implementation of open, readBalance, close

Copyright 2011 H. Gomaa

– Inherits specification of credit and debit but defines implementation

– Adds readLastDepositAmount () : Real

Example of Inheritance• Attributes of Savings Account Subclass

– Inherits accountNumber, balance

– Adds instance attributes cumulativeInterest, debitCount

– Adds static class attributes maxFreeDebits, bankCharge

O i f S i A S b l• Operations of Savings Account Subclass

– Inherits specification & implementation of open, readBalance, close

– Inherits specification of credit and debit but defines implementation

– debit

• Debit balance

Copyright 2011 H. Gomaa

• Deduct bank Charge if debit Count > max Free Debits

– Adds Operations

• addInterest (interestRate) Add daily interest

• readCumulativeInterest () :Real

• clearDebitCount () Reinitialize debit Count to zero

Page 15: SWE 621: Software Modeling and Architectural Design ...mason.gmu.edu/~hgomaa/assets/lecturenotes621/SWE621-10...SWE 621: Software Modeling and Architectural Design Lecture 10 - Class

Class Interface Specification• Information hidden by class• Class structuring criterion • Assumptions made in specifying class

A i i d h• Anticipated changes• Superclass (if applicable)• Inherited Operations (if applicable)• Operations provided by class

• Function performed• Precondition

Copyright 2011 H. Gomaa

• Postcondition• Invariant• Input parameters• Output parameters• Operations used by class (provided by other classes)

Example of class defined by class interface specification

«data abstraction»SensorActuatorRepository

+ readSensor (in sensorID, out sensorValue)+ updateActuator (in actuatorID, in actuatorValue)+ updateSensor (in sensorID, in sensorValue)+ readActuator (in actuatorID, out actuatorValue)

Copyright 2011 H. Gomaa

Page 16: SWE 621: Software Modeling and Architectural Design ...mason.gmu.edu/~hgomaa/assets/lecturenotes621/SWE621-10...SWE 621: Software Modeling and Architectural Design Lecture 10 - Class

Information Hiding Class: Sensor Actuator Repository

Information Hidden: Encapsulates sensor/actuator data structure. Stores currentvalues of sensors and actuators.

Class structuring criterion: Data abstraction class.

Assumptions: Operations may be concurrently accessed by more than one task.

Anticipated changes: Currently supports Boolean sensors and actuators only.Possible extension to support analog sensors and actuators.

Superclass: None

Example of Class Interface Specification

Superclass: None

Inherited operations: None

Operations provided:

1) readSensor (in sensorID, out sensorValue)

Function: Given the sensor id, returns the current value of the sensor

Precondition: Sensor value has previously been updated.

Invariant: Sensor value remains unchanged.

Postcondition: Sensor value has been read.

Input parameters: sensorID

Output parameters: sensorValue

Copyright 2011 H. Gomaa

Output parameters: sensorValue

Operations used: None

2) updateActuator (in actuatorID, in actuatorValue)

Function: Used to update the value of the actuator in preparation for output

Precondition: Actuator exists.

Postcondition: Actuator value has been updated.

Input parameters: actuatorID, actuatorValue

Output parameters: None

Operations used: None

Example of Class Interface Specification

3) updateSensor (in sensorID, in sensorValue)

Function: Used to update sensor value with new reading from the externalenvironment

Precondition: Sensor exists.

Postcondition: Sensor value has been updated.

Input parameter: sensorID, sensorValue

Output parameters: None

Operations used: None

4) readActuator (in actuatorID, out actuatorValue)

Function: Used to read the new value of the actuator to output to the externalenvironment

Precondition: Actuator value has previously been updated.

Invariant: Actuator value remains unchanged.

Postcondition: Actuator value has been read

Copyright 2011 H. Gomaa

Postcondition: Actuator value has been read.

Input parameters: actuatorID

Output parameters: actuatorValue

Operations used: None

Page 17: SWE 621: Software Modeling and Architectural Design ...mason.gmu.edu/~hgomaa/assets/lecturenotes621/SWE621-10...SWE 621: Software Modeling and Architectural Design Lecture 10 - Class

ATM Client Subsystem -Information Hiding Class Categorization

• Data Abstraction Classes

• ATM Card

• ATM Transaction• ATM Transaction

• ATM Cash

• State Machine Class

• ATM Control

• Reference: Chapter 21

Copyright 2011 H. Gomaa

Figure 18.13 Task architecture – initial concurrent communication diagram for ATM Client (after task structuring)

Copyright 2011 H. Gomaa 34

Page 18: SWE 621: Software Modeling and Architectural Design ...mason.gmu.edu/~hgomaa/assets/lecturenotes621/SWE621-10...SWE 621: Software Modeling and Architectural Design Lecture 10 - Class

Figure 21.31 Design of ATM Client information hiding classes

Copyright 2011 H. Gomaa 35

Figure 21.32 Initial concurrent communication diagram

for Banking Service subsystem

Copyright 2011 H. Gomaa

Page 19: SWE 621: Software Modeling and Architectural Design ...mason.gmu.edu/~hgomaa/assets/lecturenotes621/SWE621-10...SWE 621: Software Modeling and Architectural Design Lecture 10 - Class

Bank Server Subsystem -Information Hiding Class Categorization

– Business Logic Classes

• PIN Validation Transaction Manager

• Query Transaction Manager

• Transfer Transaction Manager

• Withdrawal Transaction Manager

– Database Wrapper Classes

• Checking Account

i

Copyright 2011 H. Gomaa

• Savings Account

• Debit Card

• Card Account

• Transaction Log• Reference: Chapter 21

Figure 21.34 Banking Service information hiding classes

«business logic»WithdrawalTransactionManager

+ initialize ( )+ withdraw (in accountNumber,

i t )

«business logic»PINValidationTransactionManager

+ initialize ( )

«business logic»TransferTransactionManager

+ initialize ( )+ transfer (

«business logic»QueryTransactionManager

+ initialize ( )in amount, out w_response)

+ confirm (accountNumber, amount)+ abort (accountNumber, amount)

e ( )+ validatePIN (in cardId, in PIN,

out v_response)

s e (in fromAccountNumber, in toAccountNumber, in amount, out t_response)

e ( )+ query (in accountNumber,

out q_response)

«database wrapper»TransactionLog

Copyright 2011 H. Gomaa

+ read (out transaction )+ log (in transaction )

Page 20: SWE 621: Software Modeling and Architectural Design ...mason.gmu.edu/~hgomaa/assets/lecturenotes621/SWE621-10...SWE 621: Software Modeling and Architectural Design Lecture 10 - Class

Figures21.33 Banking Service information hiding classes

«database wrapper»CardAccount

«database wrapper»DebitCard

+ read ( in cardId, out accountNumber)+ update (in cardId, in accountNumber)

+ create (cardId)+ validate (in cardID, in PIN, out status)+ updatePIN (cardId, PIN)+ checkDailyLimit (cardId, amount)+ updateDailyTotal (cardId, amount)+ updateExpirationDate (cardId, expirationDate)+ updateCardStatus (cardId, status)+ updateDailyLimit (cardId, newLimit)+ clearTotal (cardId)

d (i dId t PIN t i i D

Copyright 2011 H. Gomaa

+ read (in cardId, out PIN, out expirationDate,out status, out limit, out total)

+ delete (cardId)

Figure 21.33 Banking Service information hiding classes

«database wrapper»Account

+ readBalance (accountNumber): Real+ credit (accountNumber, amount)+ d bit ( tN b t)+ debit (accountNumber, amount)+ open (accountNumber)+ close (accountNumber)

d t b «database wrapper»

Copyright 2011 H. Gomaa

+ credit (accountNumber, amount)+ readLastDepositAmount (accountNumber) : Real

+ debit (accountNumber, amount)+clearDebitCount (accountNumber)+ addInterest (accountNumber, interestRate)+ readCumulativeInterest (accountNumber) : Real

«database wrapper»CheckingAccount

«database wrapper»SavingsAccount

Page 21: SWE 621: Software Modeling and Architectural Design ...mason.gmu.edu/~hgomaa/assets/lecturenotes621/SWE621-10...SWE 621: Software Modeling and Architectural Design Lecture 10 - Class

Figure 21.35 Revised concurrent communication diagram for Banking

Service subsystem

Copyright 2011 H. Gomaa

Steps in Using COMET/UML 1 Develop Software Requirements Model

2 Develop Software Analysis Model

3 Develop Software Design Model

Design Overall Software Architecture (Chapter 12 13)– Design Overall Software Architecture (Chapter 12, 13)

– Design Distributed Component-based Subsystems (Chapter 12-13,15)

– Structure Subsystems into Concurrent Tasks (Chapter 18)

– Design Information Hiding Classes (Chapter 14)

– Develop Detailed Software Design

Figure 6.1 COMET object-oriented software life cycle model

R i t

User

1

Copyright 2011 H. Gomaa 4215

Copyright 2006 H. Gomaa

RequirementsModeling

Analysis Modeling

IncrementalSoftware

ConstructionIncremental

SoftwareIntegration

IncrementalPrototyping

System Testing

ThrowawayPrototyping

DesignModeling

Customer

12

34 5

6

7

8

149

15

10111213