|
We have developed a Pattern Catalog
to be used within PSiGene. Our patterns form a "System of Patterns"
in the sense, that all patterns can work together to model a complete
building simulator
(see /BMR96/ and below).
| Before you start to examine the catalog, one warning: As we are actively working on PSiGene, the catalog is far from being complete or consistent. You'll find patterns we use a lot as well as out-of-date, redundant patterns and patterns in their early stages, which are not yet suitable for modelling. |
The pattern catalog has been gained from a set of prototypical buyilding simulators. It is divided into three categories dealing with different views of the application. These categories are: behavior, flow of control, and structural adaptation (see table 1).
|
||
|---|---|---|
Framework Structural Adaption | Primitive | VariableValue |
| BufferedValue | ||
| ... | ||
| Indirection | FollowRelation | |
| Traversal | ||
| ... | ||
| Redirection | MethodBranch | |
| MethodAlias | ||
| ... | ||
Software Architecture | Creational | Singleton |
| Dataflow | Pipe | |
| Filter | ||
| ... | ||
| Distribution | AttributeProxy | |
| ... | ||
Simulation Control |
Control | Observer |
| ContinuousComputation | ||
| ... | ||
| State Machines | StateMachine | |
| ... | ||
User Interface |
Display | DisplayAttribute |
| DisplaySlider | ||
| ... | ||
Domain-Speific |
Simulation | ThermalMass |
| ThermalJunction | ||
| ... | ||
| Control-System | GenericControl | |
| PIDControl | ||
| ... | ||
| Sensors and Actuators | SensuatorServer | |
| SensuatorClient | ||
| BinarySensorServer | ||
| ... | ||
Patterns in the Behavior category contain algorithms and
methodologies describing an object's behavior. In particular, patterns
for the calculation and visualization of physical effects are included.
Examples of physical effects patterns are
Patterns from the category Flow Of Control are used to control
the simulator. These patterns, like
The last category of our pattern catalog contains patterns that are
needed to adapt the class structure of the simulator's application model
to specific needs. For example, to simulate a room's temperature, it
somehow has to be known which heat flows affect that room. If this
information cannot be obtained locally in the class Room, some kind
of delegation mechanism must be used in order to import data from other
objects. Our
Although our pattern catalog is intended to be domain specific, many of
our patterns can be used in other domains as well, or are specializations
of patterns found in other (more abstract) catalogs. The patterns and
the catalog form a pattern system (see /BMR96/): each
pattern provides just a partial solution to the simulation problem.
In order to form a working simulator, all patterns must work together (e.g.
ThermalMass must cooperate with ThermalJunction,
Thermal Exchange, and ContinuousComputation).
This collaboration is obtained as follows: first,
all patterns are able to work together with certain other patterns
by construction. Second, the formal interface definition of the
patterns is used to ensure that all bindings are complete and
correct.
|
|
|