Desarrollo basado en modelos de la interfaz de usuario
# Desarrollo basado en modelos de la interfaz de usuario

El Desarrollo basado en modelos de la interfaz de usuario, en inglés Model-based User Interface Development (MB-UID), es una técnica que permite especificar todos los aspectos relacionados con la interfaz de usuario empleando un conjunto de modelos abstractos. Estos modelos son empleados para dirigir todo el proceso de construcción de la interfaz de usuario y permiten generar de forma automática código, documentación, pruebas, etc.

## Modelos

Tradicionalmente no ha existido un consenso sobre el conjunto de modelos a a emplear, pero de forma recurrente aparecen los siguientes modelos en la literatura:

* Modelo de dominio: Define los objetos accesibles a los usuarios a través de la interfaz de usuario. Puede modelarse empleando un diagrama de clases o cualquier otro similar. Los elementos que típicamente aparecen en el modelo de dominio son clases o entidades con sus atributos y relaciones.
* Modelo de usuarios: Especifica una descomposición jerárquica de usuarios en estereotipos que comparten un rol común. Los elementos que suelen aparecen en este modelo son usuarios, grupos, sus características y relaciones.
* Modelo de tareas: Describe el conjunto de tareas que los usuarios pueden realizar. Este modelo suele tener una estructura jerárquica y normalmente se compone de objetivos, acciones, precondiciones y postcondiciones. Suele expresarse en una notación denominada ConcurTaskTrees (CTT).
* Modelo de presentación: Normalmente se divide en dos submodelos:
   * Modelo de presentación abstracta: Incluye una descripción abstracta de la estructura y comportamiento de los elementos visuales de la interfaz de usuario. Está compuesto de Objetos de Interacción Abstractos (Abstract Interaction Objects) e Interfaces de Usuario Abstractas (Abstract User Interfaces).
   * Modelo de presentación concreta: Describe en detalle los elementos visuales de la interfaz de usuario incluyendo, colores, fuentes y Objetos de Interacción Concretos (Concrete Interaction Objects).
