Title: Software Design Project Phase 2
1Software Design ProjectPhase 2
- Team 1
- Lisa Anthony
- Luiza da Silva
- Erik Hayes
- Diana Tetelman
2Outline of Discussion
- Overview
- Review predictions from Phase 1
- Data Structure changes
- Implicit Shift Storage
- Input Filter (as a VM concept)
- Style Updates New Structure Diagrams
- Implicit Invocation
- Pipe-and-Filter
- Object Oriented
- Comparison of changeability
- Conclusions about our designs, styles in general
3Phase 1 Predictions Extensibility
Contractability
- Object-Oriented easiest to extend/subset
- 2nd level of uses hierarchy are all independent
- Promotes reuse
- Pipe-and-Filter
- Contraction easy
- Extension not so easy
- Implicit Invocation
- Not at all easy
- Difficult to coordinate new threads and redefine
pipes
4Changes Needed ForImplicit Shift Storage
- Data structure modifications confined to
ObjectCollection - Most changes internal
- Two additional methods
- Change in interface
- Required slight modifications to the Shifter
classes in each style - Original design flexible enough to allow this
modification with little exterior impact
SentenceCollection
extends
ObjectCollection
contains
KWICRow
5Changes Needed ForNoise Words Filter
- Data structure modifications confined to
SentenceCollection - Most changes internal
- One additional method
- Change in interface
- External modification only needed to take
advantage of filter - Layering of data structure provided easy and
transparent modification
SentenceCollection
extends
ObjectCollection
contains
KWICRow
6Implicit Invocation KWIC Uses Diagram
7II Modules Affected by Data Representation Changes
Main
instantiates
Shifter
Shifter
Input
Sorter
Output
extends
implements
creates
manipulates
iterates
SentenceCollection
KWICBroadcaster
KWICListener
extends
receives/sends
receives
ObjectCollection
contains
KWICEvent
KWICRow
8Pipe and Filter KWIC Uses Diagram
instantiates
Main
Sorter
Output
Shifter
Input
fills
instantiates
manipulates
iterates
manipulates
SentenceCollection
extends
ObjectCollection
contains
KWICRow
9PNF Modules Affected by Data Representation
Changes
instantiates
Main
Shifter
Noise
Sorter
Output
Input
fills
instantiates
sets noise filter
manipulates
iterates
manipulates
SentenceCollection
extends
ObjectCollection
contains
KWICRow
10Object Oriented KWIC Uses Diagram
instantiates
Main
Sorter
Output
Shifter
Input
instantiates
manipulates
SentenceCollection
extends
ObjectCollection
contains
KWICRow
11OO Modules Affected by Data Representation Changes
instantiates
Main
Shifter
Sorter
Output
Input
manipulates
instantiates
SentenceCollection
extends
ObjectCollection
contains
KWICRow
12Which was easiest to change?
- OO easiest to change
- Fewer modules affected by each change
- Reuse of original Input module for input of noise
words to filter - Implicit Storage addition affected each the same
due to centralized data structure
Style Noise Words Filter Implicit Shift Storage
Implicit Invocation 4 2
Pipe-and-Filter 3 2
Object Oriented 2 2
Number of modules changed in each style
13Analysis of Designs Styles
Style Pluses Minuses
Implicit Invocation None of mid-level modules communicate Central point of control Mechanism for adding new events requires new handlers for messages
Pipe-and-Filter Did not have to change any original modules True PNF using streams would have been a little different Would have needed to change Shifter (as in II)
Object Oriented Very generic Least effort involved in changes ??
14Conclusions
- We like OO.
- Robust.
- Reusable.
- Changeable.
- Maintainable.
- Generic and flexible.
- Specific Phase 2 werent seriously considered in
our predictions in Phase 1 - May have made some changes easier if we had.