Checklist: Capsule
This checklist helps make sure that a Capsule is specified correctly
Main Description
Check Items
The capsule's name and description accurately portrays the role the capsule plays in the system
The capsule has a well-defined purpose, and encompasses a single set of related responsibilities
The capsule represent a significant focus of control in the system, and represents a significant thread of control in the system
The roles the capsule plays are reflected in its external ports, and each role has one or more separate ports
No port is used in more than one role
Where there is a need to control the interaction of concurrent scenarios, a capsule with multiple distinct ports has been used
Interface capsules have been used to provide decoupling where future change are expected
Capsules used effectively to isolate potential future changes and design decisions
Coordinator capsules are used to manage complex and dynamic relationships between entities (either one-to-many or many-to-many)
Coordinator capsules are used where there is a need to mediate between capsules to encapsulate a process
Initialization order has been considered correctly
The start-up and synchronization of independent threads of control has been considered
Inheritance is used appropriately
There is no evidence of either a very flat or overly deep generalization/specialization hierarchy. Obvious commonality has been reflected in the inheritance hierarchy. Inheritance is not being used primarily for implementation considerations (e.g. code reuse), but rather as a way of capturing common design abstractions. Superclasses are no simply merges of the attributes of the subclasses, but instead represent a logical abstraction. The inheritance hierarchy does not contain intermediate abstract classes with orthogonal properties.