 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.
|
|