Cognitive dimensions of notations
From Seo Wiki - Search Engine Optimization and Programming Languages
Cognitive dimensions or Cognitive dimensions of notations  are design principles for notations, user interfaces and programming language design, described by researchers Thomas R.G. Green and Marian Petre. The dimensions can be used to evaluate the usability of an existing information artefact, or as heuristics to guide the design of a new one.
Cognitive dimensions are designed to provide a lightweight approach to analysis of a design quality, rather than an in-depth, detailed description. They provide a common vocabulary for discussing many factors in notation, UI or programming language design. Also, cognitive dimensions help in exploring the space of possible designs through design manoeuvers.
The authors identify four main user activities with interactive artifacts: incrementation [creation], transcription, modification and exploratory design. Each activity is best served by a different trade-off in the usability on each dimension. For example, a high viscosity (resistance to change) is harmful for modification and exploration activities, but less severe for the one-off tasks performed in transcription and incrementation.
List of the cognitive dimensions
What are the minimum and maximum levels of abstraction exposed by the notation? Can details be encapsulated?
Closeness of mapping
How closely does the notation correspond to the problem world?
After part of the notation has been learned, how much of the rest can be successfully guessed?
Diffuseness / terseness
How many symbols or how much space does the notation require to produce a certain result or express a meaning?
To what extent does the notation influence the likelihood of the user making a mistake?
Hard mental operations
How much hard mental processing lies at the notational level, rather than at the semantic level? Are there places where the user needs to resort to fingers or pencilled annotation to keep track of what’s happening?
Are dependencies between entities in the notation visible or hidden? Is every dependency indicated in both directions? Does a change in one area of the notation lead to unexpected side-effects?
Can different parts of the notation be compared side-by-side at the same time?
Are there strong constraints on the order with which tasks must be accomplished? Are there decisions that must be made before all the necessary information is available? Can those decisions be reversed or corrected later?
How easy is it to evaluate and obtain feedback on an incomplete solution?
How obvious is the role of each component of the notation in the solution as a whole?
Secondary notation and escape from formalism
Can the notation carry extra information by means not related to syntax, such as layout, colour, or other cues?
Are there in the notation any inherent barriers to change? How much effort is required to make a change to a program expressed in the notation?
This dimension can be further classified into the following types:
- 'Knock-On viscosity': a change in the code violates internal constraints in the program, whose resolution may violate further internal constraints.
- 'Repetition viscosity': a single action within the user’s conceptual model requires many, repetitive device actions.
- 'Scope viscosity': a change in the size of the input data set requires changes to the program structure itself.
How readily can required parts of the notation be identified, accessed and made visible?
A design manoeuvre is a change in the notation design to alter its position within a particular dimension. Dimensions are created to be pairwise independent, so that the design can be altered in one dimension while keeping a second one constant.
But this usually results in a trade-off between dimensions. A modification increasing the usability of the notation in one dimension (while keeping a second one constant) will typically reduce its usability in a third dimension. This reflects an assumption in the framework that there is no perfect interface and that trade-offs are a fundamental part of usability design.
An example of a design manoeuvre is reducing the viscosity of a notation by adding abstraction mechanisms. Stylesheets are an example of a notation where this trade-off is made.
- Software visualization
- Cognitive Walkthrough, another method for evaluating the usability of an interface.
- Homoiconicity, a representation feature of some programming languages.
- T. R. G. Green and M. Petre. Usability analysis of visual programming environments: A `cognitive dimensions' framework. Journal of Visual Languages and Computing, 7:131--174, 1996.
- ↑ T. R. G. Green. [http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.32.8003 "Instructions and Descriptions: some cognitive aspects of programming and similar activities"]. http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.32.8003.
- ↑ http://acm.org/sigchi/chi96/proceedings/shortpap/Wilde/wn_txt.html