Cognitivedimensions

are design principles for notations and programming language design, described by researcher Thomas R.G. Green. The dimensions can be used to evaluate the usability of an existing notation, or as heuristics to guide the design of a new one. They provide a common vocabulary for discussing many factors in notation or programming language design.
 * Cognitive dimensions**

T.R.G. Green emphasizes that because there are tradeoffs among these, they cannot be "guidelines" but must be viewed as discussion points, but of course, all guidelines involve tradeoffs.
 * abstraction gradient
 * closeness of mapping
 * consistency
 * diffuseness/terseness
 * error-proneness
 * hard operations: hard mental processing
 * hidden dependencies
 * premature commitment
 * progressive evaluation
 * role-expressiveness
 * secondary notation & escape from formalism
 * viscosity: difficulty making changes
 * visibility
 * side by side ability: making comparisons (juxtaposability)

//**Cognitive Dimensions have many advantages:**//


 * they illuminate notions that are vaguely known but unformulated;
 * they encourage a greater level of discourse;
 * they prompt the re-use of ideas in different contexts;
 * they give a good foundation for informed critique;
 * they provide standard examples that become common currency (that which is commonly used amongst peers or colleagues)
 * they allow viable inter-relationships of concepts to be appreciated.

//**Sources:**//
 * http://en.wikipedia.org/wiki/Cognitive_dimensions
 * http://www.usabilityfirst.com/glossary/term_1193.txl
 * "An Introduction to the Cognitive Dimensions Framework." Extended Abstract of Invited talk at MIRA workshop. November 1996 