The classes at the heart of critic functionality, including classes for general critics that belong in no more specific category.

## Package Specification

### Interfaces

This package defines no interfaces.

### Classes

The key classes are:

- {@link org.argouml.cognitive.Agency}. The central class controlling the critics.

- {@link org.argouml.cognitive.Critic}. The main class for defining critics. Specializations include {@link org.argouml.cognitive.CompoundCritic} for critics built out of several other critics and {@link org.argouml.uml.cognitive.critics.CrUML} for critics relating specifically to UML.

- {@link org.argouml.cognitive.ControlMech}. A control mech is used by the agency to control when a critic is active or not. We use the standard mech.

A number of other classes are provided to support these classes—see the individual classes for more details.

This package also contains critics relating to the overall use of ArgoUML. Each critic has its own class, with naming of the form CrCriticName.

### Subpackages

{@link org.argouml.cognitive.critics.ui} contains classes relating the user interface for the critics mechanism.

## Related Documentation

For more information on the critics mechanism, see the {@link User Manual}, in particular the reference section on {@link Critics}.

Critics specialized to particular areas may be found in the following packages.

- {@link org.argouml.language.java.cognitive.critics}. Critics relating to Java language specific issues.

- {@link org.argouml.pattern.cognitive.critics}. Critics relating to design patterns (in the Gang of Four sense).

- {@link org.argouml.uml.cognitive.critics}. Critics relating to uml specific issues.