# Tersus

La plataforma de programación Visual Tersus es una plataforma de desarrollo de software que permite el desarrollo de aplicaciones, principalmente aplicaciones web, dibujando diagramas en vez de código escrito.
El lenguaje de modelado Tersus es un lenguaje visual para definir la interfaz de usuario, el comportamiento en el lado del cliente y los procesos del servidor. Este lenguaje comparte varias características de los lenguajes de programación de flujo de datos(Dataflow Programming en inglés).
Cuando es utilizado en desarrollo web, Tersus puede ser clasificado como un Cliente + Servidor (utilizando las técnicas de AJAX).
El Tersus Studio es un entorno de desarrollo integrado, (del inglés IDE) una extensión de la plataforma Eclipse, usado por desarrolladores (modeladores) para definir gráficamente la funcionalidad de las aplicaciones.
Las aplicaciones modeladas son ejecutadas por el Servidor Tersus.
La plataforma contiene también una capacidad de depuración visual. El servidor de Tersus puede registrar cada paso durante la ejecución de la aplicación, y esta grabación ("huella"), puede ser reproducida por el Tersus Studio para ver el flujo de la aplicación y el valor de cada elemento de dato.
Tanto el Studio como el Servidor están disponibles en una variedad de plataformas, que incluyen Microsoft Windows, UNIX, Linux, y Mac OS X. La última versión estable de Tersus es la versión 2.1.8.2, lanzada en mayo de 2012.

## Conceptos

Una aplicación se define por una jerarquía de modelos visuales, donde los modelos de alto nivel se componen de componentes de nivel inferior. El desarrollador (modelador), empleando un "tablero de dibujo infinito" que muestra gráficamente toda la jerarquía del modelo, comienza en un diagrama de nivel superior que representan todo el sistema, y luego continúa con un proceso iterativo de refinamiento (top-down), ingresando dentro de cada modelo para especificar sus componentes. En el nivel inferior es utilizada una biblioteca de componentes atómicos, que incluye, entre otros, los tipos de datos, elementos de interfaz gráfica de usuario, funciones matemáticas, las acciones de base de datos, y las acciones de manipulación de documentos.
Procesos (y en algunos casos también elementos de visualización) pueden recibir y enviar datos a través de entradas "slots" ( "triggers") y ranuras de salida ("exits"). El flujo de datos entre procesos, así como la secuencia de los procesos, se rige por los "flujos" (visualmente representados como flechas que conectan los elementos del modelo).
Al desarrollar una aplicación web, los modelos de alto nivel definen disposición de la pantalla de la aplicación y la interfaz gráfica de usuario, utilizando "elementos de visualización" (texto, enlaces, botones, tablas, imágenes, etc.) Los modelos de menor nivel determinan la lógica de la aplicación, utilizando "elementos de datos" y "elementos del proceso".

## Arquitectura

La plataforma incluye:
* El Tersus Studio, es el IDE utilizado por los modeladores. Gestiona proyectos, cada uno contiene los modelos y los recursos de una aplicación. Los modelos de cada aplicación se guardan como un conjunto de archivos XML, que contienen los detalles de todos los modelos en un paquete en concreto en el proyecto.
* Las librerías de modelos, que contienen bloques de construcción para el montaje de las aplicaciones.
* El servidor Tersus, que ejecuta las aplicaciones modeladas y realiza las actualizaciones requeridas por la base de datos. Incluye un servidor de aplicaciones incrustadas ( Tomcat) y un servidor de base de datos integrada (HSQLDB), que permiten la prueba inmediata de las aplicaciones modeladas. Pueden utilizarse servidores externos de aplicaciones y servidores de base de datos para desplegar aplicaciones de forma operativa.
El Tersus Studio y el servidor Tersus se implementan en Java, mientras que el comportamiento del lado del cliente es ejecutado por JavaScript y HTML, que son generados por el servidor Tersus según el modelo.
Los usuarios finales invocan las aplicaciones desde sus navegadores (para aplicaciones web), o directamente desde sus dispositivos móviles (por ejemplo, para las aplicaciones nativas de iPhone).

## Características

* Independencia del lenguaje (los nombres de los modelos y GUI pueden ser en cualquier idioma)
* Plantillas y prototipos (plantillas con limitaciones) del modelo
* Tipos de datos definidos por el usuario (elemento de datos con contenido restringido)
* Importación de definiciones WSDL definiciones de servicios web como bloques de construcción de Tersus
* Personalización del aspecto visual a través de CSS
* Depuración de Visual (seguimiento) reproduciendo la ejecución de la aplicación
* Las pruebas automatizadas a través de la definición de "paquetes de pruebas"