+ All Categories
Home > Documents > 111 Subsystems CS 4311 Wirfs Brock et al., Designing Object-Oriented Software, Prentice Hall, 1990....

111 Subsystems CS 4311 Wirfs Brock et al., Designing Object-Oriented Software, Prentice Hall, 1990....

Date post: 28-Dec-2015
Category:
Upload: darcy-fisher
View: 214 times
Download: 0 times
Share this document with a friend
Popular Tags:
35
1 Subsystems CS 4311 Wirfs Brock et al., Designing Object-Oriented Software, Prentice Hall, 1990. (Chapter 7)
Transcript

111

Subsystems

CS 4311

Wirfs Brock et al., Designing Object-Oriented Software, Prentice Hall, 1990. (Chapter 7)

222

Outline

Subsystems: what and why? Subsystem documentation

Subsystems cards Collaboration graphs

Guidelines for defining subsystems

333

Steps for Producing Initial Designs

Identify Classes Responsibilities Collaborations

Analyze Class hierarchies Contracts Collaboration graphs

4

Motivation: Collaboration Graph

Account1 2

Balance Deposit Withdrawal TransferTransaction 8

Display Device

Input Device

BCR

Output Device

3

5

7

ATM

Form

Menu

UserMessage

User Interaction

4

6

9

5

Problem

Collaboration graphs get very complicated. Too many lines (i.e., interactions or communications)

Designs become incomprehensible. How to simply the design, esp. patterns of

communications?

6

Solution

Need an abstraction tool to provide macro views Collect classes together to form subsystems that

Behave like a class. Support services to outside via contracts.

7

What Are Subsystems?

Groups of classes that collaborate among themselves to support a set of contracts

Goal: To simplify patterns of communications

8

What Are Subsystems? (Cont.)

Subsystems are not super classes. Subsystems are not “just a bunch of classes.” Subsystems should provide a good abstraction. Subsystems should provide a clearly defined

interface, called subsystem contracts.

9

Subsystem Contracts

All contracts supported by things inside a

subsystem for things outside the

subsystem.

Delegation of contracts

Printing Subsystem

Print Server

Printer

LaserPrinter

InkJetPrinter

1

1

2

10

Subsystem Cards for Documenting Subsystems Write the subsystem name at the top List all classes in the subsystem Include ref. to the subsystem’s position in the

collaborations graphs Describe the purpose of the subsystem List contracts for which it is a server For each contract, identify the class or

subsystem to which the contract is delegated

11

Subsystem Cards (Cont.)

Subsystem: Drawing Subsystem

Classes: Control Point, Drawing, Drawing Element, …

Collaborations Graphs: see Figure 4-6

Description: Responsible for displaying and maintaining

the contents of the drawing…

Contracts

1. Display itself

Server: Drawing

2. Access and modify the contents of a drawing

Server: Drawing

3. Modify the attributes of a Drawing Element

Server: Control Point

12

How to Identify Subsystems?

Bottom-up and top-down approaches Bottom up

Start with classes and responsibilities Identify collaborations Partition the classes based on patterns of

collaborations

This approach is useful when managing the complexity as a system grows.

13

Subsystem Identification

Draw collaboration graph (use white board). Look for strongly coupled classes. Look for ways to simplify your description of the

system. Look for clean separations. Look for good abstractions.

14

How to Identify Subsystems?

Top down Look at high level functions of system Look at data sources and uses Look at supporting technologies Partition to manage complexity and reduce

coupling

This approach may be useful when managing the complexity imposed by initial specification.

15

Guidelines for Simplifying Interactions Minimize number of collaborations a class has

with other classes or subsystems. Minimize number of classes and subsystems to

which a subsystem delegates. Minimize number of contracts supported by a

class or subsystem.

16

G-1: Minimize Number of Collaborations Class should collaborate with as few other

classes and subsystems as possible. (Why?) Heuristic: Centralize communications

17

Example

Printing Subsystem

PrintServer

Printer

LaserPrinter

ColorPrinter

1

1

2

3

File

3

Printing Subsystem

PrintServer

Printer

LaserPrinter

ColorPrinter

1

1

2

File

3

18

G-2: Minimize Delegations of Subsystem Contracts Keep the number of classes inside the

subsystem that support subsystem contracts to a minimum

Again, centralize communications into and out of the subsystem

19

G-3: Minimize Number of Contracts Too many contracts in one place indicate too

much intelligence concentrated in one place: split the functionality between two or more classes.

Re-examine the collaboration patterns

20

Example

CashRegister

Warehouse

InventoryItem

TransactionLog

AccountingSubsystem

21 3

21

Example

CashRegister

Warehouse

InventoryItem

TransactionLog

AccountingSubsystem

21 3

22

Example Refined

CashRegister

Warehouse

InventoryItem

TransactionLog

AccountingSubsystem

21 3

1 2 3InventorySubsystem

23

InventoryManager

Example Refined Again

CashRegister

Warehouse

InventoryItem

TransactionLog

AccountingSubsystem

21 3

5

5

InventorySubsystem

4 6

4 6

24

InventoryManager

Example Refined Further

CashRegister

Warehouse

InventoryItem

TransactionLog

AccountingSubsystem

21 3

4

4

InventorySubsystem

25

If You Have to Redesign ...

Redraw the graphs Re-examine the collaboration patterns Walk through scenarios (all of them) Verify that things are simpler, have improved

cohesion and reduced coupling

26

ATM Example: Contracts

1. Account: access and modify balance2. Account: commit result to database3. Display: display information4. Form: get numeric value from user5. Input Device: accept user input6. Menu: get user selection7. Output Device: output to the user8. Transaction: execute financial transaction9. User Message: display message and wait

27

Collaboration Graph

Account1 2

Balance Deposit Withdrawal TransferTransaction 8

Display Device

Input Device

BCR

Output Device

3

5

7

ATM

Form

Menu

UserMessage

User Interaction

4

6

9

28

Refining

Account1 2

Balance Deposit Withdrawal TransferTransaction 8

Display Device

Input Device

BCR

Output Device

3

5

7

ATM

Form

Menu

UserMessage

User Interaction

4

6

9

29

9

6

Simplified Graph 1FinancialSubsystem

8

Display Device

Input Device

BCR

Output Device

3

5

7

ATM

Form

Menu

UserMessage

User Interaction

4

30

9

6

RefiningFinancialSubsystem

8

Display Device

Input Device

BCR

Output Device

3

5

7

ATM

Form

Menu

UserMessage

User Interaction

4

31

9

6

Simplified Graph 2Financial

Subsystem8

3

5

7

ATM

4

I/OSubsystem

UserInteractionSubsystem

32

ATM

Even More Simplified Graph

FinancialSubsystem

User InterfaceSubsystem

8

3 5 64 7 9

33

ATM

Even More Simplified Graph

FinancialSubsystem

User InterfaceSubsystem

8

3 5 64 7 9

Any critique?

34

Rework

Rework your design. If it isn’t changing, you’re not working.

Do not change just to change, but change based on recognition of better design.

Take pride in your work.

3535

Group Work and Assignment

Group work (see handout) Subsystems for the project

Due: Mar. ?, 2015 Leader: Architect Contents

Class diagram showing all classes and their relationships (inheritance and associations)

Contracts by refining your CRC cards Subsystems by grouping classes and identifying subsystem

contracts (subsystem cards) Collaboration graphs


Recommended