Checklist: Capsule
This checklist helps make sure that a Capsule is specified correctly
CollapseRelationships  
CollapseMain Description  
CollapseCheck 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  
Expand 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.