La interacción es la acción que se ejerce recíprocamente entre dos o más objetos, agentes, fuerzas, funciones, etc.
Se puede llegar a confundir lo interactivo con lo reactivo ya que en informática lo interactivo se entiende como el resultado de un diálogo entre la computadora y el usuario. La imagen mental de esta afirmación puede resultar una acción aparentemente bidireccional y pobre. Si este fuera el caso, estaríamos hablando de una relación reactiva más que interactiva: el mensaje se relaciona solamente con un mensaje inmediatamente anterior, por ejemplo: clic> abre; clic> cierra.
Esta relación entre acción y tarea es interactiva cuando, además, no se basa solo en la interacción directa del usuario con el mensaje u objeto, sino también en la relación de los objetos mismos entre sí. A este conjunto de procesos, diálogos y acciones mediante los cuales un usuario utiliza el ordenador e interactúa con él se le denomina interacción humano-máquina y se realiza por medio de una interfaz (mediador) que es el conjunto de los productos informáticos.
Cuando la interacción se da a través de la pantalla, los productos son de naturaleza gráfica y se denominan interfaces gráficas de usuario (GUI, graphical user interface).
La disciplina de estudio de estos parámetros se denomina HCI (human computer interaction) y tiene como objetivo fundamental lograr la facilidad en el uso, la eficiencia y la seguridad en la relación entre el humano y la máquina en el nivel gráfico o en el físico. En la HCI el usuario siempre es lo primero.
En esa relación interactiva se aprecian tres niveles básicos de interacción:
- Navegación: permite al usuario moverse en diferentes líneas y rutas a través de contenidos preestablecidos que no varían (por ejemplo en CD-ROM, páginas web o DVD).
- Generación: la interacción provoca comportamientos nuevos que determinan el curso de la aplicación (por ejemplo en los videojuegos).
- Modificación: la interacción no solamente permite lecturas multilineales y nuevos comportamientos, sino que además su resultado modifica permanentemente la naturaleza de la aplicación (por ejemplo se inserta el nombre del usuario en una base de datos y a partir de entonces modifica el lenguaje para adaptarlo al nombre del usuario).