Design rules for Interactive Systems
Tags: design, ux
Published: 2020-12-26 11:55:42

Good user experience is one of the most important characteristics of successful software. So designers must have the ability to determine the usability consequences of their design decisions. 

So there are defined design rules or principles which designers can follow to increase the usability of their product. 

We can divide these rules into two categories by the rule's authority and generality. Principles are abstract design rules, with high generality and low authority. Standards are specific design rules with high authority and limited in applications. 

Here authority means an indication of whether or not the rule must be followed in design or whether it is only suggested. Generality means whether the rule can be applied to many design situations or whether it is focussed on a more limited application.

###**Principles to support usability**

We can divide these principles into three categories. Learnability, Flexibility, and Robustness. 

####Learnability####
>The ease with which new users can begin effective interaction and achieve maximum performance.

* **Predictability** - Support for the user to determine the effect of future action based on past interaction history

* **Synthesizability** - Support for the user to assess the effect of past operations on the current state

* **Familiarity** - The extent to which a user's knowledge and experience in other real-world or computer-based domains can be applied when interacting with a new system

* **Generalizability** - Support for the user to extend knowledge of specific interaction within and across applications to other similar situations

* **Consistency** - Likeness in input-output behavior arising from similar situations or similar task objectives

####Flexibility####
> The multiplicity of ways in which the user and system exchange information

* **Dialog initiative** - Allowing the user freedom from artificial constraints on the input dialog imposed by the system

* **Multi-threading** - Ability of the system to support user interaction pertaining to more than one task at a time

* **Task migratability** - The ability to pass control for the execution of a given task so that it becomes either internalized by the user or the system or shared between them

* **Substutivity** - Allowing equivalent values of input and output to be arbitrarily substituted for each other

* **Customizability** - Modifiability of the user interface by the user or the system


####Robustness####
> The level of support provided to the user in determining successful achievement and assessment of goals

* **Obersarvability** - Ability of the user to evaluate the internal state of the system from its perceivable representation

* **Recoverability** - Ability of the user to take corrective action once an error has been recognized

* **Responsiveness** - How the user perceives the rate of communication with the system

* **Task conformance** - The degree to which the system services support all of the tasks the user wishes to perform and in the way that the user understands them

###**Standards and Guidelines for Interactive systems**

Standards are usually defined by national or international organizations to ensure compliance with a set of design rules by a large community. Standards can apply specifically to either the hardware or the software used to build the interactive system.

Since the incompleteness of theories underlying the design of interactive software makes it difficult to produce authoritative and specific standards. So the majority of design rules are suggestive and more general guidelines.


###**Shneiderman's 8 Golden Rules**

Shneiderman's eight golden rules provide a convenient and succinct summary of the key principles of interface design. They are intended to be used during design but can also be applied for evaluation of the systems.

* **Strive for consistency**
Maintain consistency in action sequences, layout, terminology, command use, and so on.

* **Enable frequent users to use shortcuts**
Introduce abbreviations, special key sequences to perform regular and familiar actions more quickly.

* **Offer informative feedback**
Provide informative feedback for every user action according to the magnitude of the action.
 
* **Design dialogs to yield the closure**
So the users won't be confused about whether their action was successful or not.

* **Offer error prevention and simple error handling**
Give clear instructions to users so they won't do mistakes.

* **Permit easy reversal of actions**
This encourages users to explore the system and learn fast, with this, users know they can return to the previous state if they do a mistake.

* **Support internal locus of control**
So the user is in control of the system, which responded to his actions.

* **Reduce short-term memory load**
This can be done by keeping displays simple, consolidating multiple-page displays, and providing time for learning action sequences.

###**Norman’s Seven Principles**

**1. Use both knowledges in the world and knowledge in the head**
Systems should provide the necessary knowledge within the environment and their operation should be transparent to support the user in building an appropriate mental model of what is going on.

**2. Simplify the structure of tasks.**
Tasks need to be simple in order to avoid complex problem solving and excessive memory load.

**3. Make things visible**
The interface should make clear what the system can do and how this is achieved and should enable the user to see clearly the effect of their actions on the system.

**4. Get the mappings right**
it should be clear what does what and by how much. Controls, sliders, and dials should reflect the task so a small movement has a small effect and a large movement a large effect.

**5. Exploit the power of constraints**
Constraints are things in the world that make it impossible to do anything but the correct action in the correct way. So using constraints can minimalize user mistakes.

**6. Design for error**
To err is human, so anticipate the errors the user could make and design recovery into the system.

**7. When all else fails, standardize**
If there are no natural mappings then arbitrary mappings should be standardized so that users only have to learn them once. 

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/07ce45ssb008awfeg2e4.jpg)