Now that we have produced architectural designs in three different styles, it is useful to think about comparison between those designs from an architectural point of view. To help you make this comparison fill out the missing entries in the table below:
Object-Oriented KWIC |
Pipe-filter KWIC |
Implicit-invocation KWIC |
|
Driving design issues |
Data redundancy and speed tradeoffs Location of knowledge (e.g., trivial words) |
Selection of processing order to reduce computational complexity |
Use of existing events Minimize changes to components Handle ordering issues |
Nature of extensions to base |
Computing shifts, trivial word removal, different print styles, deletion of lines |
Computing shifts, remove duplicate lines, line splitting |
Computing shifts, trivial word removal, word histogram
|
Global rationale |
Support for interaction |
Transformation of data; independence of processing steps |
Interaction with loose coupling
|
Component types |
Objects Control module (main loop with subprogram calls) |
Incremental filters Nonincremental filters |
Control module Active objects Passive objects |
Connector types |
Procedure call |
Pipes |
Events Procedure calls
|
Topological form |
Mostly hierarchical |
Mostly linear |
At top level, everything can interact with everything else Below, some hierarchy |
Under the Hood (implementation issues that don't belong in architec–ture discussion) |
Class hierarchy OMT diagrams Templates, pointers, and other language issues |
Unix stdio library |
Event Manager |
© 1997 Carnegie Mellon Computer Science
Email the Current Maintainer
Modified: 04/29/97