* Consistency
* The use of standardised components. In this way the developer can be assured that look and feel of the software will be harmonious with the best practice of the operating system.
* Familiarity
* Mapping real-world to virtual world concepts, using common terms and jargon, by making the look and feel of the new system similar to that of an old system – or an old manual way of doing things (such as forms which look similar).
* Stability
* Make sure that interactions are stable, that they can be resumed if they break, that data will not be lost, that the place someone is at, in an interaction (the stage for the step), can be returned to in the event of a failure. Example: previews.
* Learnability
* Make sure system behaviour is predictable
* Robustness
* Error recovery, error-prone systems
* Progressive Disclosure
* Have clear hierarchy of interface, if it looks complicated - simplify
* Scalability
* An interface should handle scaling data without issues.
* Self-Description
* The user should not need to refer to help or the documentation.
* Simplicity
* An interface which is too simplistic will be seen as boring, or only utilitarian, one that is too complex will be perceived as being overly complicated and aesthetically displeasing.
* Situational Awareness
* Situational awareness involves a perception of the environment critical to making decisions in complex and dynamic situations.