Vista de implementación

La representación del sistema por medio de la Vista de Implementación muestra cómo los componentes del sistema y las dependencias de terceros se implementan en los nodos de hardware.

SWIM se compone de dos componentes principales denominados "artefactos". Estos componentes son la interfaz de SWIM (frontend del sistema) y el Distribuidor de Modelos de Agua (backend del sistema).

Los servidores físicos y las computadoras se conocen como nodos de hardware. Cada nodo de hardware contiene paquetes de software de terceros que forman parte del entorno de ejecución de los componentes de SWIM.

Representación Primaria

Deployment View Figure

Catálogo de Elementos

Nodos de Hardware

Cliente
El cliente es cualquier tipo de dispositivo que pueda tener acceso a Internet y comunicarse a través de protocolos http. Ejemplos de este tipo de dispositivos pueden ser, y no están limitados a: computadoras personales, tabletas y teléfonos inteligentes.

Servidor CentOS 6.3
Esta máquina se usa como un servidor para aplicaciones web. El entorno de ejecución está compuesto por una pila LAMP que será descrita más abajo.

Servidor CentOS Este servidor se usa como base de datos y servidor de modelado. Actualmente aloja una instancia de MongoDB y una licencia completa de instalación de GAMS. Además, el servicio de distribución se implementa en este servidor para interactuar directamente con GAMS a través de su API basada en Java.

Paquetes de Software de Terceros

Navegador Web
Este artefacto puede ser cualquier navegador web que pueda actuar como cliente para comunicarse con la interfaz de modelado de agua.

LAMP
LAMP es un paquete de software de terceros para sistemas operativos Linux. El paquete incluye el Servidor Apache HTTP, la base de datos relacional MySQL e intérpretes para el lenguaje de programación PHP. Estos componentes de software forman parte del entorno de ejecución para el Interfaz de modelado de agua. Además, Apache se utiliza como un servidor proxy para redirigir las solicitudes entrantes (https://services.cybershare.utep.edu/water/distributor/) al Servicio web del distribuidor de modelos de agua.

Versiones Utilizadas: Apache 2.2.15, PHP 5.3.3

PHP MongoDB
El controlador PHP MongoDB es un paquete de extensión PHP actualmente disponible de PECL. La implementación actual usa el controlador heredado mongo-1.6 debido a la compatibilidad con la biblioteca CodeIgniter actual para manejar la lógica de negocio de MongoDB (CIMongo).

Referencias:
Manejador PHP MongoDB (Driver): https://docs.mongodb.com/ecosystem/drivers/php/#access-mongodb-from-php
CIMongo: http://intekhabrizvi.github.io/mongodb-library-for-codeigniter.html

JVM
Una máquina virtual Java (JVM) es una máquina informática abstracta que permite ejecutar el artefacto Distribuidor de Modelos de Agua.

Versión Utilizada: Java SE Runtime Environment 8

Referencias:
https://en.wikipedia.org/wiki/Java_virtual_machine

MongoDB
MongoDB es un sistema de base de datos NoSQL utilizado para controlar el SWIM al almacenar colecciones de documentos de metadatos del modelo, especificaciones del escenario base y escenarios generados por el usuario.

Versión Utilizada: 2.6.12

Referencias: https://www.mongodb.com/

GAMS
El Sistema de Modelado Algebraico General (GAMS) es un sistema de modelado de alto nivel para la programación matemática. Actualmente se utiliza para la implementación del Prototipo Hidroecónomico de la Cuenca del Río Bravo, también denominado "Modelo de Cubeta" en este proyecto.

Versión Utilizada: GAMS Distribuition 24.7.4

Referencias:
http://www.gams.de/

Paquetes de Componentes del Sistema

Interfaz de Modelado de Agua
La interfaz de modelado de agua es un proyecto PHP CodeIgniter que se ejecuta en un servidor web Apache. Se incluyen bibliotecas front-end adicionales para la implementación de la interfaz de modelado tales como: Angular 1, Bootstrap 3, JQuery, Chart JS, D3, ArcGIS API, entre otros.

Distribuidor de Modelos de Agua
El distribuidor de modelos de agua es una aplicación autónoma de servicio web dropwizard empaquetada como un archivo .jar. La aplicación se ejecuta en Java SE Runtime Environment.

Referencias: http://www.dropwizard.io/1.2.0/docs/