Universidad de Costa Rica Facultad de Ingeniería Escuela de Ingeniería Eléctrica SIMULADOR DE SISTEMAS EMPOTRADOS BASADO EN UNA INTERFAZ WEB



Documentos relacionados
La utilización de las diferentes aplicaciones o servicios de Internet se lleva a cabo respondiendo al llamado modelo cliente-servidor.

Plataforma e-ducativa Aragonesa. Manual de Administración. Bitácora

Capitulo 5. Implementación del sistema MDM

Propuesta de Portal de la Red de Laboratorios Virtuales y Remotos de CEA

Modulo I. Introducción a la Programación Web. 1.1 Servidor Web.

Studium, Campus Virtual de la Universidad de Salamanca.

GLOSARIO. Arquitectura: Funcionamiento, estructura y diseño de una plataforma de desarrollo.

Guía de uso del Cloud Datacenter de acens

WINDOWS : TERMINAL SERVER

Capítulo 5. Cliente-Servidor.

Sesión No. 4. Contextualización INFORMÁTICA 1. Nombre: Procesador de Texto

1 Itinerario. 2 Descripción y funcionalidades principales. Google Docs. 1.1 Qué vamos a hacer? 1.2 Qué pasos vamos a seguir?

Workflows? Sí, cuántos quiere?

Guía de Inicio Respaldo Cloud

Internet Information Server

INTRODUCCIÓN A LA PROGRAMACIÓN WEB UNIDAD. Estructura de contenidos: cisvirtual@ucv.edu.pe. 1.

DOCUMENTOS COMPARTIDOS CON GOOGLE DOCS

CAPÍTULO 3 VISUAL BASIC

Objetivo: Introducción conceptual y aplicación básica de los lenguajes del lado del servidor.

Guía de instalación de la carpeta Datos de IslaWin

Introducción a las redes de computadores

FACULTAD DE INFORMATICA MATERIA: GESTION DE CONTENIDO ELECTRONICO PROFESOR: JONATHAN VEGA ALUMNOS: LUISA ROSERO JAIME CAMACHO DATOS INFORMATIVOS:

Manual de usuario de IBAI BackupRemoto

Crear un servidor Web en IIS

Sistema de SaaS (Software as a Service) para centros educativos

Accede a su DISCO Virtual del mismo modo como lo Hace a su disco duro, a través de:

Elementos requeridos para crearlos (ejemplo: el compilador)

WINDOWS. Iniciando Windows. El mouse

Formularios. Formularios Diapositiva 1

Microsoft Access proporciona dos métodos para crear una Base de datos.

Qué necesito saber para tener mi sitio web en Internet?

Haga clic en los recuadros donde indica la mano y regrese al inicio del capítulo al hacer clic en el título de la sección donde se encuentra

INTRANET DE UNA EMPRESA RESUMEN DEL PROYECTO. PALABRAS CLAVE: Aplicación cliente-servidor, Intranet, Área reservada, Red INTRODUCCIÓN

Entre los más conocidos editores con interfaz de desarrollo tenemos:

LiLa Portal Guía para profesores

AGREGAR COMPONENTES ADICIONALES DE WINDOWS

MANUAL DE USUARIO APLICACIÓN SYSACTIVOS

Guía Rápida de Inicio

Anexos de Bases de Presentación de Propuestas. Consultoría para la implementación de sistemas de gestión de contenidos para comunidades de RedCLARA

(PHP y APACHE), y el programa de comunicación Skype, para controlar de manera

Tema: INSTALACIÓN Y PARTICIONAMIENTO DE DISCOS DUROS.

Oficina Online. Manual del administrador

Sistema de Gestión Portuaria Sistema de Gestión Portuaria Uso General del Sistema

MANUAL DE NAVEGACIÓN DEL SIIA-WEB versión PRONAD

MANUAL DE USUARIO CMS- PLONE

Manual para usuarios USO DE ONEDRIVE. Universidad Central del Este

Para ingresar a la aplicación Microsoft PowerPoint 97, los pasos que se deben seguir pueden ser los siguientes:

Proyecto Fortalecimiento de las capacidades TIC en PyMEs y Gobiernos Locales mediante el uso de software libre Manual de Instalación Openbravo POS

CAPÍTULO 4 ANÁLISIS DE IMPLEMENTACIONES

Versión 1.0. BOLETÍN (JUNIO 2009) a2móvil PC. a2 softway C. A.

CÓMO MANEJAR SU NUEVO SITIO WEB SOBRE DRUPAL Manual técnico y de usuario. Pontificia Universidad Javeriana Grupo PSU CDI

Acá vamos a ocuparnos de cómo realizar la instalación de una red intra-aula sobre Linux, concretamente en la distribución de GNU/Linux Ubuntu 9.04.

PROCEDIMIENTO ESPECÍFICO. Código G Edición 0

La pestaña Inicio contiene las operaciones más comunes sobre copiar, cortar y pegar, además de las operaciones de Fuente, Párrafo, Estilo y Edición.

Entidad Formadora: Plan Local De Formación Convocatoria 2010

ENTORNO DE DESARROLLO MICROSOFT.NET 2010

Comisión Nacional de Bancos y Seguros

Guía de instalación de la carpeta Datos de ContaWin

PUCV - Pontificia Universidad Católica de Valparaíso

Curso de PHP con MySQL Gratis

Plataforma Helvia. Manual de Administración. Bitácora. Versión

LENGUAJES DE PROGRAMACIÓN WEB (PHP1, HTML52)

Trabajo TICO Unidad 2: Sistemas Operativos. Guillermo Jarne Bueno.

UF0513 Gestión auxiliar de archivo en soporte convencional o informático

Capitulo VI. Conclusiones.

3. Qué necesitamos para usar Wordpress?

UNIVERSIDAD COOPERATIVA DE COLOMBIA POSTGRADO MULTIMEDIA PARA LA DOCENCIA ELECTIVA I CREACIÓN DE AMBIENTES VIRTUALES

UAM MANUAL DE EMPRESA. Universidad Autónoma de Madrid

PROYECTO FINAL Manual de Configuración Organización: Juan Lomo

CAPÍTULO 4. EL EXPLORADOR DE WINDOWS XP

Creado dentro de la línea de sistemas operativos producida por Microsoft Corporation.

MANUAL SISTEMA ENCRIPTACIÓN DE HECHOS RESERVADOS

Virtual-C: Una Herramienta para Administración de Contenidos en Sitios Web

Manual de usuario Versión: 1.3 Edición: 05/02/2015 1

UNIVERSIDAD TECNICA DEL NORTE

App para realizar consultas al Sistema de Información Estadística de Castilla y León

Manual del Alumno de la plataforma de e-learning.

SISTEMA DE GESTIÓN DE INCIDENCIAS Y REQUERIMIENTOS MESA DE AYUDA SINAT MANUAL DE USUARIO

Introducción a Google Calendar Breve guía sobre algunas de sus funcionalidades destacables.

Utilización del sistema operativo GNU/ Linux en las netbooks

Informática 4º ESO Tema 1: Sistemas Informáticos. Sistemas Operativos (Parte 2)

Módulo 1 El lenguaje Java

Operación Microsoft Access 97

Figura 4.6: Prototipo de la pantalla de inicio.


Práctica de introducción a

Ayuda para la instalación Componente Firma Digital INDICE. 1 Configuración previa Configuración Internet Explorer para ActiveX...

CARACTERISTICAS DEL SISTEMA

Archivo de correo con Microsoft Outlook contra Exchange Server

A continuación resolveremos parte de estas dudas, las no resueltas las trataremos adelante

Guía de Laboratorio Base de Datos I.

IDENTIFICACIÓN DE LA ACTIVIDAD PEDAGÓGICA

MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD

UNIVERSIDAD DE SALAMANCA

Servicio de Informática Vicerrectorado de Tecnologías de la Información y la Comunicación

Capítulo I. Definición del problema y objetivos de la tesis. En la actualidad Internet se ha convertido en una herramienta necesaria para todas

Introducción a la Firma Electrónica en MIDAS

INDICE. Página 2 de 23

Gestión de Permisos. Bizagi Suite. Copyright 2014 Bizagi

Infraestructura Tecnológica. Sesión 8: Configurar y administrar almacenamiento virtual

Transcripción:

Universidad de Costa Rica Facultad de Ingeniería Escuela de Ingeniería Eléctrica IE 0502 Proyecto Eléctrico SIMULADOR DE SISTEMAS EMPOTRADOS BASADO EN UNA INTERFAZ WEB Por: RONALD PORTOCARRERO PORRAS Ciudad Universitaria Rodrigo Facio Diciembre de 2010

SIMULADOR DE SISTEMAS EMPOTRADOS BASADO EN UNA INTERFAZ WEB Por: RONALD PORTOCARRERO PORRAS Sometido a la Escuela de Ingeniería Eléctrica de la Facultad de Ingeniería de la Universidad de Costa Rica como requisito parcial para optar por el grado de: BACHILLER EN INGENIERÍA ELÉCTRICA Aprobado por el Tribunal: Ph.D Lucky Lochi Yu Lo Profesor Guía Ph.D Jaime Cascante Vindas Profesor Lector Ing. Fabián Abarca Calderón. Profesor Lector ii

DEDICATORIA A mis padres y hermanos por tantos años de esfuerzo para darme lo necesario para salir adelante. A mis amigos que me han brindado su apoyo durante los últimos años. A la memoria de JDAC. iii

RECONOCIMIENTOS Al autor de la edición anterior por la gran y valiosa ayuda que me brindó en momentos en que estaba estancado con el desarrollo del proyecto. iv

ÍNDICE GENERAL NOMENCLATURA...viii RESUMEN... x CAPÍTULO 1: Introducción... 1 1.1 Objetivos... 3 1.1.1 Objetivo General... 3 1.1.2 Objetivos específicos... 3 1.2 Metodología... 4 CAPÍTULO 2: Desarrollo teórico... 5 2.1 Computación en la nube (cloud computing)... 6 2.1.1 Beneficios... 7 2.1.2 Desventajas... 7 2.1.3 Capas del servicio... 8 2.2 Lenguaje ActionScript... 9 2.3 Lenguaje PHP... 10 2.4 Lenguaje C++... 11 2.4.1 Tuberías en C++... 12 2.5 Eclipse (software)... 13 2.6 Flex Builder... 16 2.7 Apache... 17 2.8 Zend Framework... 18 2.9 Formato de archivo XML... 19 CAPÍTULO 3: Desarrollo de código... 22 3.1 Distribución de directorios... 22 3.2 Creación de un Grid Layout... 27 3.3 Adición de nuevos dispositivos... 29 3.4 Adición de nuevos botones de función... 33 3.4.1 Construcción de la librería C++... 36 3.5 Salvar y cargar en un archivo XML... 39 CAPÍTULO 4: Conclusiones y recomendaciones... 41 4.1 Conclusiones... 41 4.1.1 Herramientas Web y ActionScript... 41 4.1.2 Logros alcanzados en la aplicación ActionScript... 41 4.1.3 Interfaz PHP / C++... 42 4.2 Recomendaciones... 43 4.2.1 Lectura del proyecto... 43 4.2.2 Desarrollo de código... 43 BIBLIOGRAFÍA... 44 v

ANEXOS... 47 Anexo 1. Código de ActionScript: archivo simulator.mxml... 47 Anexo 2. Código de PHP: archivo simulator.php... 61 Anexo 3. Código de C++: archivo utils.cc... 65 Anexo 4. Código de C++: archivo processor.cc... 70 vi

ÍNDICE DE FIGURAS Figura 2.1 Concepto de computación en la nube...6 Figura 2.2 Comunicación full-duplex de dos procesos con tuberías...12 Figura 2.3 Diagrama de la estructura MVC...19 Figura 3.1 Jerarquía del directorio principal (/var/www/simulator/)...22 Figura 3.2 Jerarquía del directorio application...24 Figura 3.3 Jerarquía del directorio public...25 Figura 3.4 Jerarquía del directorio tests...26 Figura 3.5 Grid en el área de dibujo...28 Figura 3.6 Diagrama de flujo de datos en una ejecución de C++ desde ActionScript...35 Figura 3.7 Archivos a modificar para añadir o modificar funciones con la librería C++ desde ActionScript...358 38 Figura 3.8 Muestra del aspecto final de la aplicación del simulador...40 vii

NOMENCLATURA ACTIONSCRIPT Lenguaje de programación de alto nivel orientado a objetos web. ANSI American National Standards Institute Organización sin ánimo de lucro que supervisa el desarrollo de estándares para productos, servicios, procesos y sistemas en los Estados Unidos APACHE Programa servidor para protocolo HTTP en la web. API Application Programming Interface Conjunto de funciones y procedimientos que ofrece una librería para ser utilizado por otro software C++ Lenguaje de programación de bajo nivel orientado a objetos. ECMA European Computer Manufacturers Association Organización internacional basada en membrecías de estándares para la comunicación y la información FLEX Ambiente para desarrollar aplicaciones enriquecidas de internet. GRID Serie de celdas adyacentes que divide un área de 2 dimensiones en areas definidas de menor tamaño viii

HTML HyperText Markup Language Lenguaje de programación para dar formato a páginas web. HTTP Hypertext Transfer Protocol Protocolo de redes de computadoras usado para la transacción de datos en la Web. IEEE Institute of Electrical and Electronics Engineers Asociación técnicoprofesional mundial dedicada a la estandarización, entre otras cosas PHP PHP Hypertext Preprocessor Lenguaje de programación orientado a crear páginas web dinámicas. UNIX Uniplexed Information and Computing System Sistema operativo de código libre, portable, multitarea y multiusuario. WEB Sistema interconectado de documentos en hipertexto que son accedidos vía a través de Internet. ix

RESUMEN Este proyecto tuvo el fin de enlazar un simulador de sistemas empotrados con una aplicación Web. Para ello se basó en un Proyecto Eléctrico realizado el semestre anterior en el cual se sentaron las bases para la estructura del simulador. El mismo consiste en un conjunto de código de diferentes lenguajes de programación (ActionScript, PHP y C++) los cuales crean las aplicaciones que constituyen un flujo de datos entre una y la otra. Se estudió el proyecto creado anteriormente y se procedió a hacer modificaciones a los códigos existentes para ir agregando más características y funcionalidades al sistema y así acercarse más a la meta final de tener un simulador 100% funcional. Al finalizar este proyecto se logró aportar conocimiento en cuanto al proceso de creación de nuevos componentes a simular y además de nuevos botones de aplicación que puedan ejecutar funciones de la librería de C++ a través de la plataforma de PHP. En el documento se encuentra una guía de cómo realizar esto. También se logró crear un grid en el área de dibujo de la aplicación, de esta manera los componentes se pueden colocar en posiciones predefinidas según se ajusten los parámetros en el código de ActionScript. x

CAPÍTULO 1: Introducción Uno de los avances tecnológicos más importantes que ha visto la primera década del siglo XXI es, sin lugar a dudas, el desarrollo del Internet. A pesar de que la idea y la implementación de interconectar computadoras en redes para compartir información data desde la década de 1960 1, es desde el año 2000 aproximadamente cuando se da un aumento muy significativo en cuanto el acceso de la población mundial al Internet, además se da un desarrollo de nuevas herramientas que sacan provecho de la tecnología de redes de computadoras. Mientras que en la década de 1990 el aumento de clientes de Internet fue de aproximadamente 100 millones, en la década del 2000 este aumento fue de cerca de 700 millones 2 lo que ha creado un mercado muy importante de aplicaciones y servicios en este campo. Por otro lado, para acceder a un sitio Web ya no es necesario hacerlo sentado frente a una computadora de escritorio, pues hoy día es más frecuente utilizar dispositivos para conectarse de forma inalámbrica a una red tal como netbooks, iphones, y hasta teléfonos celulares. La gran utilidad que tiene un simulador de sistemas empotrados con interfaz Web es precisamente la facilidad de acceso. La idea es que el usuario pueda ingresar desde cualquier dispositivo con acceso a Internet y con un navegador capaz de soportar aplicaciones Java y pueda realizar una simulación on-line sin necesidad de pasar por el 1 2 http://redeslanabedulmo.galeon.com/historia.html http://www.isc.org/solutions/survey 1

proceso de descargar e instalar un programa, ya que esto se ha complicado debido al creciente número de sistemas operativos y sus distintas versiones, lo que hace prácticamente imposible que un mismo archivo pueda instalar un programa en cualquier plataforma. El alcance de este proyecto comprende habilitar una página en formato Web capaz de enlazar a un simulador que funcione con un conjunto de funciones en C++ las cuales se encuentran alojadas en un servidor de Internet. 2

1.1 Objetivos 1.1.1 Objetivo General Habilitar la simulación de sistemas electrónicos por medio de interfaz Web 1.1.2 Objetivos específicos Obtener conocimiento sobre el desarrollo de herramientas Web y ActionScript. Crear una aplicación gráfica capaz de construir sistemas empotrados para ser simulados. Desarrollar interfaz Web que se comunique con aplicaciones en C++ por medio de PHP. 3

1.2 Metodología El presente proyecto comprende una extensión del proyecto eléctrico SIMULADOR DE CIRCUITOS BASADO EN WEB, realizado por Ricardo Herrera Moreno en julio de 2010. Por tanto el primer paso fue realizar una lectura completa de dicho documento para tratar de comprender al máximo el trabajo que Ricardo realizó. En el mismo se encontró algunos conceptos de los que se tenía poco o ningún conocimiento por tanto se realizó una consulta a la bibliografía para tener una idea general de los mismos. Posteriormente se investigó más acerca de los conceptos y otros temas más, como las herramientas de software y lenguajes de programación que tienen relevancia con el proyecto que se desarrolló y que constan este documento. Después se procedió a modificar los códigos de ActionScript principalmente realizados por Ricardo para ir cumpliendo con las metas que se fijó en conjunto con el profesor guía en el transcurso de las semanas. Los códigos de los lenguajes PHP y C++ también fueron modificados pero a menor escala. 4

CAPÍTULO 2: Desarrollo teórico Es importante para el desarrollo del proyecto contar con información necesaria que tenga relación al tema, por lo tanto se recopiló información sobre los lenguajes de programación y el software que se utilizó en el desarrollo del proyecto. Se quiso recopilar la información necesaria para que es caso de que un proyecto posterior tratara de un tema similar, el presente documento fuese una guía lo más completa posible al menos en el aspecto teórico y evitar el trabajo de hacer la revisión de las fuentes bibliográficas, dando paso así a poder dedicar más el recurso del tiempo al desarrollo mismo de los programas desde sus códigos fuente y scripts. 5

2.1 Computación en la nube (cloud computing) Es una nueva tendencia en el uso de sistemas informáticos con el fin de facilitar el acceso a diversas aplicaciones, el usuario hace uso de ellos desde la nube de Internet. Este último término se ha puesto de moda para referirse al enorme conjunto de servidores y clientes que conforman el Internet. Según el IEEE, la computación en la nube es un paradigma en el que la información se almacena de manera permanente en servidores en Internet y se envía a cachés temporales de cliente, lo que incluye equipos de escritorio, centros de ocio, portátiles, etc.. Esto se ha logrado gracias al aumento en la capacidad de proceso y almacenamiento de las máquinas, además de un crecimiento en el acceso con banda ancha. Uno de los proveedores pioneros de la computación en la nube fue Google, quien invirtió en construir su propia infraestructura. Figura 2.1 Concepto de computación en la nube 6

2.1.1 Beneficios La computación en la nube ya cuenta con la posibilidad de integrarse fácilmente con muchas aplicaciones empresariales. El usuario se ahorra el tener que instalar algún tipo de hardware, ya que el hardware necesario para ejecutar las aplicaciones se encuentra en la nube. Las actualizaciones traen menos efectos colaterales, ya que ningún usuario va a hacer uso de versiones anteriores de las aplicaciones ya que las mismas no van a existir. Ahorro en el uso de energía eléctrica. El usuario no tiene que invertir recursos en asegurar la energía para los equipos (servidores por ejemplo) pues estos se encuentran en otra parte del mundo. Además el uso de la energía es más eficiente puesto que un servidor en la nube puede suplir a varios clientes en vez de que cada cliente tenga su propio servidor. 2.1.2 Desventajas La dependencia hacia los proveedores de servicio es muy grande. Si el acceso a Internet se interrumpe no se puede hacer uso de las aplicaciones. No se asegura la privacidad de los datos. La información confidencial de un usuario pudiera ser vulnerable. Habría que invertir tiempo de proceso en encriptar datos para transportarlos en protocolos seguros, como HTTPS. Las empresas proveedoras de servicios deben tener un plan estratégico para 7

asegurar su crecimiento conforme las exigencias. Una sobrecarga de trabajo a los servidores puede dar como consecuencia indeseables fallas en el servicio. 2.1.3 Capas del servicio Dentro de los servicios en la nube se pueden distinguir tres tipos: SaaS, Sotftware como un servicio: Visto las capas como una jerarquía, el SaaS se encuentra en la capa más alta. Se da cuando un software en la nube se ejecuta desde la infraestructura de un proveedor y sirve a varios usuarios. Por ejemplo la administración de las cuentas de correo electrónico como Gmail, Hotmail, Yahoomail, entre otros. PaaS, Plataforma como un servicio: A diferencia del anterior, la plataforma engloba una cantidad de servicios a disposición del usuario. Por ejemplo una distribución de Linux o un servidor Web (Apache). IaaS, Infraestructura como un Servicio: Es la capa inferior y se refiere a la parte del almacenamiento y proceso de cómputo de los servicios que se provee en Internet, tal como servidores, discos duros, enrutadores, entre otros. 8

2.2 Lenguaje ActionScript Es un lenguaje de programación orientado a objetos, desde su creación ha sido muy utilizado en animaciones para páginas Web, uno de los programas más conocidos en los que se desarrolla ActionScript es el Adobe Flash. Es de tipo script, lo que significa que no es necesario crear un programa completo para realizar alguna función, sólo basta con unas cuantas líneas para realizar funciones. Se basa en el estándar ECMA-262, al igual que el lenguaje JavaScript, por esta razón ambos lenguajes tienen muchas similitudes. La última versión estable es ActionScript 3.0 la cual aporta beneficios como el de una mejor y más amplia interfaz de programación, y una base de código de compilador actualizada que concuerda mejor con el estándar ECMA-262. Además es compatible con scripts de versiones anteriores del mismo lenguaje, facilita el manejo de aplicaciones con gran cantidad de datos y el código tiene una velocidad de ejecución mucho mayor. 9

2.3 Lenguaje PHP Es un lenguaje de programación interpretado, utilizado ampliamente para el desarrollo de páginas Web dinámicas ya que puede ser incrustado fácilmente dentro del código HTML. Lo típico es que el código en PHP se ejecute del lado del servidor y esto genere el código HTML que recibirá el cliente y que, gracias al navegador, lo podrá ver en forma de página Web. Algo que lo hace atractivo es la forma de programación estructurada, parecida a la de lenguajes como Perl o C, lo que permite realizar operaciones complejas con una mejor claridad en el código. Permite la interacción con muchos manejadores de base de datos tal como MySQL, ORACLE, Postgres, entre otros. Es soportado por la mayoría de los sistemas operativos y es una alternativa libre y gratuita para el Microsoft ASP o el Adobe ColdFusion, a pesar de esto existen herramientas de desarrollo integrado (IDEs) comerciales como el Zend Studio o el Eclipse. La versión reciente más estable es el PHP 5 (5.3.3), lanzada en julio de 2010, presenta una mejoría del soporte a la programación orientada a objetos, a MySQL, XML, SQLite, ORACLE, entre otros. 10

2.4 Lenguaje C++ Es un lenguaje definido por el estándar ANSI C de 1983, su aparición tuvo el objetivo de crear un lenguaje uniforme a partir del lenguaje C original, desarrollado en 1972 por los científicos estadounidenses de la computación Brian Kernighan y Dennis Ritchie en 1972. Hasta aquel entonces el estándar estaba definido por el libro escrito en 1978 por estos dos autores. El lenguaje C++ comenzó su desarrollo con la década de 1980. Como su autor se reconoce a Bjarne Stroustrup, un científico de la computación nacido en Dinamarca. Todos los tres creadores mencionados anteriormente realizaron sus logros mientras laboraban para AT&T. Al inicio se consideró como una extensión del lenguaje C y fue denominada C con clases, y comenzó a ser utilizado fuera de la AT&T en 1983. El nombre C++ se definió también en ese año, y hace referencia al carácter del operador incremento de C (++). Ante la gran difusión y éxito que iba obteniendo en el mundo de los programadores, AT&T comenzó a estandarizarlo con carácter interno en 1987. Ya para el año 1989 fue formado un comité ANSI para crear un estándar a nivel americano y posteriormente a nivel internacional. Actualmente, C++ es un lenguaje bastante versátil y de mucha potencia. Su éxito entre los programadores profesionales lo ha llevado a ocupar el primer puesto como herramienta de desarrollo de todo tipo de aplicaciones. El C++ hereda las ventajas del 11

lenguaje C en cuanto a la utilidad de los operadores y las expresiones, su flexibilidad permite obtener un código fuente conciso y eficiente para los programas pues con él se ha eliminado algunas de las limitaciones del antiguo lenguaje C de los años 1970s. El desarrollo del Internet trajo consigo el desarrollo de una continuación del las características de C++ con la aparición del lenguaje Java, el cual es el preferido para realizar aplicaciones en Internet ya que simplificando algunas cosas del lenguaje C++ y añade algunas otras. 2.4.1 Tuberías en C++ Las tuberías (pipes en idioma inglés) tienen la función de conectar la salida estándar de un proceso con la entrada estándar de otro proceso. Habitualmente las tuberías manejan el flujo de los datos en un único sentido (half-duplex) por lo tanto solo pueden ser leídas de un lado y escritas por el otro o viceversa. De este modo, cuando se necesita que exista un flujo bi-direccional de datos se debe proveer de dos tuberías, una para cada sentido (fullduplex). Proceso A Proceso B Figura 2.1 Comunicación full-duplex de dos procesos con tuberías El uso de tuberías es totalmente transparente a la ejecución de los procesos. El proceso que escribe y el que lee utiliza funciones que normalmente usan para los descriptores de salida y entrada estándar, respectivamente. La diferencia es que estas ya no 12

corresponden a la pantalla y al teclado sino a los extremos de una tubería. En sistemas basados en UNIX los descriptores de entrada y salida son simples números enteros, por tanto una tubería en C++ se define como un arreglo de dos enteros: int tubería[2]; pipe(tubería); Posteriormente es necesario crear la tubería. Para esto se utiliza la función pipe() que abre dos descriptores y guarda su valor en los enteros del arreglo recién creado. El primero de ellos, tubería[0], es abierto sólo para lecturas mientras que tubería[1] es utilizado sólo para escrituras. De esta manera se asegura que el flujo de los datos se dé en una sola dirección. 2.5 Eclipse (software) El Eclipse comprende una plataforma de trabajo sobre la que se pueden montar herramientas de desarrollo para cualquier lenguaje de programación, mediante la adición adecuada de los complementos necesarios. La arquitectura de los complementos de Eclipse permite, además de integrar diversos lenguajes sobre un mismo IDE, introducir otras aplicaciones adicionales que pueden resultar útiles durante el proceso de desarrollo de programas como: herramientas UML, editores visuales de interfaces, ayuda en línea para librerías, etc. 13

En sus comienzos, Eclipse era un proyecto de desarrollo OpenSource, soportado y mantenido en su totalidad por IBM. Bajo la dirección de esta compañía, se fundó el Consorcio Eclipse al cual se unieron algunas empresas importantes como Rational, Hewlett Packard y Borland. A partir del año 2004, el Consorcio Eclipse es independiente de IBM y ahora lo conforman empresas de alto calibre en el tema de tecnología como lo son: Hewlett Packard, Intel, Fujitsu, Hitachi, Oracle, Palm, Ericsson, RedHat, entre otras. Además de algunas de las universidades más importantes e institutos tecnológicos. El entorno de desarrollo Eclipse, incluyendo los complementos, está desarrollado por completo en el lenguaje Java. Padece un inconveniente común en herramientas Java tal como es que requieren muchos recursos de la computadora. Es necesaria una máquina de gran capacidad de proceso para poder ejecutarse de forma satisfactoria, en gran medida, estas necesidades vienen determinadas por el uso del API Swing para su interfaz gráfico. El API Swing es una librería de widgets portable para cualquier plataforma que disponga de una máquina virtual Java, sin embargo a costa de ello no aprovecha las capacidades propias del sistema donde se ejecuta, lo cual supone una ejecución notablemente más lenta que la de las aplicaciones propias del sistema. 14

Debido a esto existe SWT, que es una librería de widgets equivalente a Swing en la cual sí se aprovechan las capacidades propias del sistema sobre el que se ejecuta lo que le permite una ejecución de APIs más rápida y fluida. Sin embargo es necesario disponer de una librería SWT específica para cada sistema operativo. El IDE Eclipse se puede obtener descargándolo directamente del sitio Web oficial del proyecto Eclipse www.eclipse.org o desde cualquier mirror autorizado. Existen versiones instalables para cualquier plataforma que soporte la librería SWT, descargas que incluyen el código fuente y descargas que incluyen los complementos más comúnmente utilizados. Además, del mismo sitio, se puede descargar la librería SWT independientemente para el sistema operativo que se requiera. Debido a que Eclipse está escrito en Java, en necesario para su ejecución que exista un JRE (Java Runtime Environment) instalado previamente en el sistema. La instalación es muy sencilla pues sólo basta con descomprimir el archivo descargado en el directorio que se estime conveniente. Ya que no está orientado específicamente hacia ningún lenguaje de programación en concreto, el uso de un determinado lenguaje, requerirá la existencia de un complemento que le dé soporte. Con la versión estándar del entorno Eclipse se distribuye el complemento necesario para programar en lenguaje Java (JDT). Del sitio oficial se puede descargar los complementos para lenguajes muy utilizados como C/C++, Perl o Python. 15

2.6 Flex Builder Flex es un término que agrupa una serie de tecnologías publicadas desde el año 2004 por la compañía Macromedia para brindar soporte al diseño y desarrollo de Aplicaciones de Internet Enriquesidas (RIA por sus siglas en ingles), basadas en su plataforma propietaria Flash. Las RIA son una nueva tendencia de aplicaciones Web enfocadas en facilitar su manejo por parte del usuario y mejorar el rendimiento del uso de la red, al principio se trata de cargar todos los datos necesarios de la aplicación para evitar que la página se recargue constantemente y que sólo lo haga en casos necesarios, como al acceder una base de datos en el servidor. El Flex fue lanzado inicialmente como una aplicación de la plataforma de Java J2EE (o biblioteca de etiquetas JSP) que compilaba el lenguaje de marcas Flex (de formato MXML) y ejecutaba mediante ActionScript aplicaciones Flash (archivos SWF binarios). Versiones posteriores de Flex soportaban la creación de archivos estáticos que son compilados, y que pueden ser distribuidos en línea sin la necesidad de tener una licencia del servidor. Flex tiene varios componentes y características que aportan funcionalidades tales como Servicios Web, objetos remotos, arrastrar y soltar, columnas ordenables, gráficas, efectos de animación y otras interacciones simples. El cliente solo carga la aplicación una vez, mejorando así el flujo de datos frente a aplicaciones basadas en HTML (PHP, ASP, JSP, CFMX), las cuales requieren de ejecutar plantillas en el servidor para cada acción. El 16

lenguaje y la estructura de archivos de Flex buscan el desacoplamiento de la lógica y el diseño. Algunas opciones alternas al Flex son Google Web Toolkit, JavaFX, Microsoft Silverlight, entre otros. 2.7 Apache Apache es un servidor Web HTTP de código abierto para plataformas disponible para múltiples plataformas (Unix GNU/Linux, Microsoft Windows, Macintosh, entre otras), que implementa el protocolo de red HTTP/1.1 y permite emular la noción de un sitio virtual. Su desarrollo comenzó en 1995 basándose inicialmente en el código del servidor Web más popular de la época, el NCSA HTTPd 1.3, sin embargo, posteriormente fue reescrito de nuevo completamente. Presenta como principales características su gran capacidad de configuración y un manejo eficaz de bases de datos, sin embargo ha sido criticado por la falta de una interfaz gráfica que ayude en su configuración. Tiene amplia aceptación dentro de los usuarios de la red. Desde el año 1996, Apache es el servidor HTTP más usado, alcanzó su máxima cifra de mercado en el 2005 llegando a ser el servidor empleado en el 70% de los sitios Web en el mundo. 17

Si bien se sabe que posee vulnerabilidades de la seguridad, la mayoría de las han sido descubiertas (y resueltas) tan sólo pueden ser aprovechadas por usuarios locales y no remotamente, así que el nivel de inseguridad es bajo. 2.8 Zend Framework Consiste en una plataforma de desarrollo de código abierto para la creación de aplicaciones y servicios Web con PHP versión 5. La estructura en que se encuentran sus componentes es tal que la dependencia entre estos es muy baja, lo que permite a los desarrolladores utilizar los componentes por separado. Sin embargo los componentes de la biblioteca estándar del Zend Framework forman una plataforma de aplicaciones Web muy potente y extensible al combinarse. Además ofrece un gran rendimiento, una abstracción de base de datos fácil de usar, y un componente de formularios que implementa la prestación de formularios HTML, validación y filtrado para que los desarrolladores puedan consolidar todas las operaciones usando de una manera sencilla la interfaz orientada a objetos y una robusta implementación MVC (Modelo-Vista-Controlador). EL MVC define un tipo de arquitectura de software que separa los datos de una aplicación, la interfaz de usuario, y la lógica de control en tres componentes distintos. Es de uso frecuente en aplicaciones Web, donde la vista es la página HTML y el código que provee de datos dinámicos a la página. El modelo es el sistema que gestiona la de base de 18

datos y la lógica de programación, y el controlador es el responsable de recibir los eventos de entrada desde la vista. Controlador Vista Modelo Figura 2.2 Diagrama de la estructura MVC El principal patrocinador del proyecto Zend Framework es Zend Technologies, sin embargo otras empresas han contribuido de forma importante para el marco, tal como Google, Microsoft y StrikeIron. Estas se han asociado con Zend para proporcionar interfaces de servicios Web y otras tecnologías que desean poner a disposición de los desarrolladores de Zend Framework. 2.9 Formato de archivo XML El origen del formato XML se remonta a los primeros procesadores de texto, como el WordPerfect 5.1, los cuales para definir el formato del texto utilizaba una serie de etiquetas invisibles para el usuario. Así por ejemplo, para definir un texto en negrita el mismo se encerraba entre las etiquetas <b> </b> para delimitar el inicio y final del texto con ese formato. Esta cualidad fue heredada por uno de los lenguajes más importantes de hoy día, el HTML. 19

De primera impresión, XML pareciera ser un lenguaje similar a HTML sin embargo hay grandes diferencias. El XML no es propiamente un lenguaje sino un metalenguaje, es decir, un lenguaje que permite describir aspectos de otro lenguaje. Según el documento "Extensible Markup Language (XML) 1.0 W3C Recommendation", del desarrollador del XML, los documentos de este formato deben ser fáciles de crear, entendibles para humanos (no sólo por computadoras) y razonablemente claros. También debe ser fácil escribir programas de tratamiento de documentos XML y se debe reducir al mínimo el número de elementos opcionales. Los documentos XML tienen la sintaxis parecida a los HTML. Sin embargo hay que poner atención a que las etiquetas no corresponden a las conocidas como <BR> o <I>. Más bien, es común encontrar etiquetas personalizadas. Como XML es un metalenguaje, es posible crear códigos o etiquetas a gusto del usuario según sea la aplicación. Ya no sólo se define el formato que tiene el texto o la posición de datos e imágenes, sino que cada parte de la información puede ser identificada con un sistema propio de etiquetas. Un ejemplo básico de documento XML para una base de datos de una biblioteca puede ser como el siguiente: 20

<?xml version="1.0"?> <lista> <libro> <autor>francisco Montes</autor> <titulo>la fortaleza tenebrosa</titulo> <indice> <capitulo>prólogo</capitulo> <capitulo>la revelación</capitulo> <capitulo>el esclarecimiento</capitulo> <capitulo>epílogo</capitulo> </indice> <comentario>la última novela del autor transporta al lector a un mundo de misterio.</comentario> </libro> </lista> Se puede notar que existe un elemento principal (lista) y contenido (libros), junto con la información que debe acompañar a cada libro. Para cada tipo de datos hay una etiqueta inicial y otra de cierre con una barra "/" y las de mayor nivel contienen a las demás. 21

CAPÍTULO 3: Desarrollo de código El desarrollo de los códigos necesarios para el proyecto comprende una gran cantidad de archivos, distribuidos en una amplia red de carpetas creadas por la aplicación Zend Framework. Para el caso particular de este proyecto, la carpeta principal llamada simulador, se ubicó en la ruta /var/www/ del sistema Ubuntu Linux, esto es así para que el servidor Apache pueda cargar la página y poder acceder los archivos Web desde el navegador Mozilla Firefox. 3.1 Distribución de directorios Para un mejor entendimiento, se obtuvo una descripción básica y general de al menos los directorios de mayor jerarquía que se ubican dentro de /var/www/simulator. Esto facilitaría grandemente el trabajo a alguien que deseara retomar el proyecto y realizar implementaciones en los códigos del mismo. simulator application public docs tests library Figura 3.1 Jerarquía del directorio principal (/var/www/simulator/) 22