Trabajo no presencial: Implementación de un servicio de búsqueda de información sobre monumentos de Zaragoza

Documentos relacionados
Práctica 5: Implementación en C++ de sistemas cliente/servidor basados en comunicación

Aulas Virtuales IECSCYL. Manual de uso

Tema 2 Introducción a la Programación en C.

A continuación entramos en detalle sobre cada uno de los pasos.

Guía de uso del sistema de acceso al DiViSA

MANUAL DE ACTUALIZACIÓN DE CONSOLIDACIÓN

Práctica 3: Búsqueda de información mediante la librería Lucene

La última versión disponible cuando se redactó este manual era la 5 Beta (versión ), y sobre ella versa este manual.

PRACTICA FINAL. Diseño e implementación de un servidor Web básico y cliente http. Protocolo HTTP-RC

Módulo Plataforma de gestión SICTED

ojovoz Una plataforma de código abierto para la creación de memorias comunitarias. Manual del usuario

MANUAL DE INSTRUCCIONES PARA LA SOLICITUD DE AYUDAS

Los pasos a seguir para cumplimentar la solicitud son los siguientes: A continuación, se detallarán cada uno de estos apartados.

DISTAFARMA: APLICACIÓN PARA LA VENTA A DISTANCIA DE MEDICAMENTOS DE USO HUMANO NO SUJETOS A PRESCRIPCIÓN MÉDICA MANUAL PARA LA OFICINA DE FARMACIA

Práctica 1: Instalación de un servidor de aplicaciones web y diseño de la vista de una aplicación

ANEXO APLICACIÓN DE FIRMA

MANUAL DE USUARIO NOTAS PARCIALES MODULO CONFIGUARACION DE NOTAS -288

Requerimientos de Software

CURSO DE ACCESO AL GRADO EN INGENIERÍA DE EDIFICACIÓN. Programa. Asignatura: Arquitectura Legal

Nota de Régimen Interior (N.R.I.)

Manual de Usuario. Aplicación de Autoevaluación de Centros

Laboratorio 3 Capa de Transporte (TCP)

1. Sobre la documentación del Plan de Formación del Profesorado

1. Introducción Generalidades Configuración del Equipo Instalación de Java... 3

PROYECTO 2 Parte 1 BASES DE DATOS. Curso (2 Semestre) Grupos 4F2M y 4F1M-1 (aula 5102) CONSULTAS REMOTAS EN JAVA A UNA BASE DE DATOS

Solicitud de Certificados de servidor web

Paseo por SIGAD ÍNDICE. Introducción...2. Acceso a la aplicación...3

BOLETÍN OFICIAL DEL ESTADO

Manual de Usuario para Proponentes

SISTEMAS OPERATIVOS MONOPUESTO 1. CONTENIDOS MÍNIMOS PARA LA EVALUACIÓN POSITIVA

PRESENTACIÓN ELECTRÓNICA CON INTERNET EXPLORER

Diseño arquitectónico 1ª edición (2002)

Manual del padre de familia

Manual de usuario Servicio de Gestión de Control Escolar. para padres de familia y/o representantes

Actualizaciones de software Guía del usuario

MANUAL DEL ADMINISTRADO PARA LA CERTIFICACIÓN DE ESTUDIOS AMBIENTALES CON INNOVACIÓN TECNOLÓGICA DE PLANTAS DE HARINA Y ACEITE DE PESCADO TUPA 85

MANUAL DE USUARIO DEL SISTEMA MATEGE

Aulas Virtuales Introducción a la Docencia en Línea. Creando un Syllabus (Programa de Curso) en Línea

Manual de usuario para el Administrador Local

e-co trámites 1 Solicitud de Informe Jurídico Guías e-co 6

Manual de usuario, Escritores

INSTRUCCIONES PARA EL CIERRE DEL PLAN DE FORMACIÓN DEL CENTRO Curso (10/05/2013)

TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES TRABAJO DE PRÁCTICAS. Convocatoria de junio de 2013

ASSI - Aplicaciones y Servicios Sobre Internet

Laboratorio de MTP-I. Curso Proyecto: Sistema de reserva y gestión de vuelos Noviembre 2008

! "# $ " " % & # ' $ " $ " ( " " # )$ *+#, # # "-*., / 0-*" 2 "2 #, " ' #' 3 2 % " # / $ % " 8 6 +(2' %

Algoritmos y solución de problemas. Fundamentos de Programación Otoño 2008 Mtro. Luis Eduardo Pérez Bernal

Programación. Práctica Final

Manual del Usuario. Sistema de Citas de Asesorías

GUÍA DOCENTE 2016/2017. Introducción a los Sistemas Operativos Grado en INGENIERÍA INFORMÁTICA 1º curso. Modalidad Presencial

CATÁLOGO DE METADATOS GEOGRÁFICOS Versión 2.0

Guía de inicio rápido de CitiManager Titulares de tarjetas

Manual de Usuario de la Aplicación Web Gestión de Convenio y Becas - RELEXT 2015 UNIVERSIDAD ESTATAL PENÍNSULA DE SANTA ELENA

Práctica 5MODBUS: Bus Modbus

Convocatoria C Convocatoria 2016

Plataforma Electrónica Cáncer

Manual del Usuario. Sistema de Citas de Asesorías

Aceptas el reto de IBM?

. REGISTRO DE ENFERMEDADES RARAS

Ayuda para entrar a EVA Unidad de Capacitación

PROCESO DE DEFINICIÓN DEL PERFIL DE INGRESO Y CAPTACIÓN DE ESTUDIANTES

Manual de Consulta de Bases y Cuotas Ingresadas en el Régimen Especial de Trabajadores por cuenta propia o Autónomos

TEMA 3. CONCEPTOS FUNDAMENTALES DEL NIVEL DEL SISTEMA OPERATIVO. Definición y objetivos de un S.O

Práctica 2: El problema de la sección crítica

Solicitudes MINECO. Manual de usuario de firma electrónica

Grandes Compras. Mayo 2013

Guía de inicio rápido. PC, Mac, ios y Android

APLICACIONES DE INTERNET: SOAP

Liondev GENERARACION DE CERTIFICADO DE SELLO DIGITAL (CSD) Y FIEL. Liondev S.A. de C.V.

Edelvives Digital: acceso y registro

Herramienta Foro de Discusión

GUÍA PARA PRESENTACIÓN DEL EXAMEN DE CANDIDATURA. Doctorado en Ciencias de la Electrónica

SERVICIO B2BCONECTA DE FACTURACIÓN INTEGRAL DEL GRUPO RENFE MANUAL DE USUARIO CLIENTE RECEPTOR DE FACTURA ELECTRÓNICA

CURSO TÉCNICO DE ACCESIBILIDAD Y USABILIDAD WEB

Guía de uso de la plataforma

1. MEJORAS EN LA CONSULTA DE CUENTAS EXPEDIENTE MEJORAS EN LA ELABORACIÓN DE MANDAMIENTOS DE PAGO... 6

EXPOSITORES Guía para editar el Perfil Público en el sitio web.

Preguntas frecuentes en la plataforma RECyT

DIRECCIÓN GENERAL DE REGISTRO CIVIL, IDENTIFICACIÓN Y CEDULACIÓN. Sistema Nacional de Identificación Ciudadana. Manual de Usuario

Manual de usuario de configuración de Navegadores para Sede Electrónica del SEPE

Plataforma de formación. Guía de manejo

GUIA DE USO BÁSICO DE LA PLATAFORMA MASHME.TV

Práctica 3. Paso de parámetros entre subrutinas. 3. Consideraciones sobre el paso de parámetros

Secretaría General Departamento de Sistemas y Tecnologías de la Información

Requisitos previos: 1INFORME DE EVALUACIÓN PSICOPEDAGÓGICA. Procedimiento: PASO 1: GENERAR EL DOCUMENTO.

Cómo obtener el certificado digital?

Anexo Acuerdo de Nivel de Servicio: Atención a Usuarios CSU Gestión de Nivel de Servicio

FICHA TÉCNICA DE LA ASIGNATURA. Sistemas de Información y Control de Gestión. Plan 430 Código 52301

MANUAL EMPRESA CONTRATISTA VERSIÓN 3.0

Práctica 2: Instalación de un gestor de bases de datos relacionales y desarrollo de una aplicación Web con persistencia de datos

Guía de Solicitud de apoyo

GUIA 2: Repaso sobre uso de C#. Funciones, métodos y arreglos.

Noticias RED Remisión electrónica de documentos

MANUAL DE DESCARGA DE CERTIFICADO DIGITAL EN FORMATO PKCS#12 POR SSPS

Web Map Service (WMS)

Manual de Usuario. Cuadros Horarios. Profesores

C RITERIOS DE C ALIFICACIÓN (v.1)

PROCEDIMIENTO DE PUESTA EN MERCADO DE HEMODERIVADOS Manual de Usuario

Guía Rápida para el Profesional. Área de Gestión Sanitaria Este de Málaga-Axarquía. Guía rápida

Tema 2: INTERNET. HERRAMIENTAS Y SERVICIOS.

Transcripción:

Trabajo no presencial: Implementación de un servicio de búsqueda de información sobre monumentos de Zaragoza Programación de Sistemas Concurrentes y Distribuidos Grado de Ingeniería Informática Escuela de Ingeniería y Arquitectura Universidad de Zaragoza 15 de diciembre de 2016 1. Objetivos Los objetivos de este trabajo no presencial son los siguientes: Desarrollar una aplicación distribuida cliente/servidor. Profundizar en el modelo de comunicación síncrona para procesos distribuidos. Asentar los conocimientos adquiridos para la programación de aplicaciones distribuidas en C++. Acceder desde programa a información disponible en internet Trabajar en equipo. 2. Descripción del sistema El Ayuntamiento de Zaragoza se ha adherido a la Carta Internacional de Datos Abiertos 1 por la que, entre otras cosas, publica en abierto muchos de los datos relacionados con la ciudad, su gestión, su patrimonio, etc., de manera que entidades tanto públicas como privadas puedan explotar dichos datos. En este trabajo vamos a utilizar algunos de los datos publicados referentes con el patrimonio y el arte público de la ciudad. En la página http://www. zaragoza.es/ciudad/risp/detalle_risp?id=13 hay una enlace a un listado, en formato json, de un catálogo de 385 monumentos, del que se muestran los dos primeros en el Anexo I. Para cada monumento, además de otra información, contiene sus coordenadas geográficas (en formato UTM), el título dado al monumento, y un enlace (etiqueta link ) a una página web (está en formato html ) con más información adicional sobre el monumento, fotos, etc. 1 https://drive.google.com/file/d/0b_pwyf2qwqiusu0yotvkbefvemc/view 1

Programación de Sistemas Concurrentes y Distribuidos, curso 16-17 2 El trabajo debe desarrollar un sistema cliente servidor en el que los clientes solicitan al servidor información sobre los monumentos de Zaragoza. Para darle un valor añadido a este servicio, también vamos a utilizar los datos abiertos que ofrece el Ayuntamiento sobre los restaurantes de la ciudad. Estos datos están disponibles en la página http://www.zaragoza.es/ciudad/risp/ detalle_risp?id=285 también en formato json. Para cada restaurante, entre otras informaciones, se especifica su localización geográfica, también en formato UTM. Estas coordenadas las utilizaremos para, dado un monumento de interés para el cliente, obtener información de los restaurantes más próximos. Por último, el servidor facturará al cliente un precio adecuado por sus servicios de información. 3. El punto de vista del cliente Cada cliente, que tiene un identificador único, se conecta con el servicio, y realiza sucesivas peticiones de servicio, hasta que decide terminar la sesión. En cada petición suministra al servidor un conjunto de entre uno y cinco términos referentes a un monumento del catálogo. Estos términos pueden referirse al título, a la descripción, autor, etc. (análogo a lo que pondríamos en un buscador para encontrar información sobre el monumento). Como resultado de la petición el servicio le hace llegar una respuesta que puede ser de tres tipos: o bien un mensaje de denegación de servicio si no puede atenderlo, un mensaje con Nada encontrado si no ha encontrado ningún monumento, o bien un mensaje con las URLs de la información adicional de los monumentos que el sistema considera más adecuados según la petición enviada al servidor (no más de 5), ordenados por el índice de proximidad. En los dos primeros casos el programa cliente muestra por la salida estándar el mensaje; en el tercero, además de mostrar la información recibida de cada monumento (URL a la página de información adicional), abre un navegador con una solapa por cada uno de los enlaces devueltos, donde los muestra. Después, el cliente podrá solicitar información sobre el restaurante más cercano a uno de los monumentos recibidos como respuesta. El servidor devolverá las coordenadas del restaurante más próximo al monumento. El cliente abrirá una ventana en el navegador con el restaurante, de manera análoga al caso anterior. Una vez que el cliente envía el mensaje de fin de sesión se queda a la espera de que el servidor le envíe otro mensaje con el precio final (precio fijado con un modelo de costes que debe definir el grupo de desarrollo, y que debe estar definido atendiendo a parámetros de sentido común ). 4. El punto de vista del servicio En el momento de iniciar su ejecución, debe cargar en una estructura de datos la información del fichero de monumentos y en otra la información de los restaurantes. Ambos ficheros deben ser descargados y procesados en el momento de inicio de la ejecución desde su URL original. Cada vez que un cliente abra una sesión, el servicio generará un thread específico para atenderlo (lo denominamos representante del cliente, pues es quien se va a encargar de

Programación de Sistemas Concurrentes y Distribuidos, curso 16-17 3 interaccionar con él). El representante da de alta al cliente en la estructura de datos que utilice el servicio para almacenar su información durante la sesión, de cara a facturar por los servicios. Por otro lado, el representante atiende las peticiones de su representado y, cuando se despida, gestiona el precio, lo da de baja de la estructura y acaba su ejecución. 5. Algunas consideraciones a tener en cuenta 1. Para descargar un fichero desde su URL se puede usar la clase ImageDownloader que se suministró en el ejemplo de uso de opencv para la práctica anterior. 2. El índice de proximidad de un monumento para un conjunto de términos dado debe definirlo el grupo desarrollador. Para ello se deberá mirar tanto el campo title del fichero con el catálogo como la página web asociada con información adicional, a la que se accede desde el campo link. 3. Las coordenadas geográficas de los monumentos y restaurantes proporcionadas en los datos del Ayuntamiento están en formato UTM. Sin embargo, Google Maps requiere que las coordenadas estén en formato latitud longitud. En el material suministrado para la realización del trabajo se incluye un pequeño programa de ejemplo de tansformación entre coordenadas UTM y coordenadas geográficas, cuyas funciones pueden ser usadas. 4. La política de precios del servicio debe ser definida por los desarrolladores, aplicando criterios de sentido común. 5. En general, el enunciado deja bastantes cuestiones abiertas que deberán ser concretadas por cada equipo de desarrollo y debidamente justificadas en la documentación de diseño del proyecto. 6. Para abrir un mapa en google centrado en un punto de coordenadas geográficas latitud longitud, basta con pegarlas a https://www.google.com/maps/place/. Así, la URL https://www.google.com/maps/place/41.6834,-0.8874 muestra la EINA, que tiene latitud 41.6834 (norte, por ponerlo en positivo) y longitud -0.8874 (oeste, por ponerlo en negativo) 7. Cualquier comando que pueda ejecutarse desde una terminal puede ejecutarse desde un programa en C++ mediante la instrucción system (ver manual de referencia del lenguaje). 8. Para el desarrollo del trabajo se podrán utilizar las clases disponibles en la Standard Template Library (STL) de C++, así como las desarrolladas en la asignatura de estructuras de datos y algoritmos. 9. Es necesario que el servicio termine de una manera ordenada: en un momento determinado, el gestor del sistema le hace llegar una orden de terminación. A partir de ese momento ya no se aceptan nuevas peticiones de clientes, el sistema espera a que se terminen todas las transacción con

Programación de Sistemas Concurrentes y Distribuidos, curso 16-17 4 clientes en curso y termina, mostrando un pequeño informe, por la salida estándar, del número de transacciones realizada, el total facturado, etc. 6. Instrucciones para el desarrollo y la entrega del trabajo 6.1. Organización inicial del trabajo El trabajo tiene una naturaleza no presencial. Inicialmente, los alumnos se organizarán en tríos, obligatoriamente (los propios alumnos serán responsable de formar estos tríos). Una vez formado, se deberá enviar un correo a alvaper@unizar.es con el asunto [PSCD] Equipo de trabajo TP6 en el que se comunique quiénes son los componentes del trío. Para cada componente concreto se deberá especificar su NIP y nombre completo con los dos apellidos. Esta información es indispensable y debe ser completa. Cada trío deberá programar una aplicación distribuida conforme las pautas de implementación descritas en las secciones previas. La fecha límite para enviar la composición de cada equipo de trabajo es el 22 de Diciembre del 2016 a las 23:59 horas. Aquellos tríos que no comuniquen su composición antes de esta fecha no serán evaluados. No se admitirán trabajos realizados individualmente o en pareja. Si algún alumno no encuentra compañeros de trabajo después de un tiempo razonable, deberá ponerse en contacto con el profesor (antes de la fecha límite de composición de equipos de trabajo) y éste le asignará a algún equipo. No obstante, esta solución será de carácter excepcional. 6.2. Ficheros a entregar como resultado Cuando se finalice el trabajo los alumnos deberán entregar un fichero comprimido trabajonp NIP1 NIP2 NIP3.zip (donde NIP1, NIP2 y NIP3 sean el NIP de los tres autores del trabajo) con el siguiente contenido: 1. Un fichero de texto denominado autores.txt que contendrá el NIP, los apellidos y el nombre de los tres autores del trabajo en las primeras líneas del fichero. Por ejemplo: NIP Apellidos Nombre - 345689 Rodríguez Quintela Sabela 787654 Hernández Castillo Luis 925674 Rúiz Palomares Sara Además, el fichero deberá contener obligatoriamente un informe de dedicación. Este informe debe recoger las horas que cada alumno del trío ha dedicado a la realización del trabajo. En concreto, es importante que aparezca el número de horas totales por alumno y un desglose más detallado de días trabajados y número de horas dedicadas en esos días concretos, así como de las tareas a las que se ha dedicado el tiempo: análisis, diseño, implementación, test, etc. Esta información no será utilizada para evaluar el trabajo de los alumnos (es decir, no tiene ninguna

Programación de Sistemas Concurrentes y Distribuidos, curso 16-17 5 influencia directa o indirecta en la nota de los alumnos). Su objetivo es medir el esfuerzo medio que ha costado realizar el trabajo a los alumnos. 2. Un documento pdf, llamado disenio.pdf, donde se explique claramente el diseño de la aplicación. Este documento debe contener como mínimo una descripción detallada de: el diseño interno de los procesos del sistema (una descripción de alto nivel de la lógica de control de los procesos, decisiones relativas a la gestión de errores, estructuras de datos utilizadas, o algoritmos concretos de interés), los protocolos de interacción concretos que han sido implementados (es decir, cuál es el formato de los mensajes, en qué orden se intercambian los mensajes, y cómo se gestionan los posibles errores de interacción), los mecanismos programados para gestionar los aspectos de concurrencia en el servidor, las políticas de precio del servicio y los procesos para facturar a cada cliente, etc. En general, deberán estar debidamente justificadas todas aquellas decisiones de diseño que hayan sido adoptadas durante el desarrollo del sistema. 3. Un documento pdf, llamado pruebas.pdf, donde se expliquen claramente las pruebas que han sido realizadas para comprobar el correcto funcionamiento de la aplicación. Este documento es un compromiso de garantía de funcionamiento del sistema, y debe contener una descripción detallada de: el método seguido para la fase de pruebas, las pruebas concretas realizadas, los resultados obtenidos y, si procede, las acciones correctivas programadas para su resolución. 4. Un directorio denominado src, que contendrá los ficheros fuente C++ utilizados en la implementación del trabajo. 5. Un directorio bin, que contendrá todos los ficheros resultantes de la compilación de los fuentes en src. 6. Un fichero Makefile para la compilación y limpieza. 7. Los siguientes scripts: lanza servidor.sh: requiere como parámetro un puerto donde estará escuchando a la espera de clientes. Lanza el proceso servidor. lanza clientes.sh: requiere como parámetros una IP y un puerto correspondientes al servicio. Abre tres terminales distintas, cada una con un cliente con un identificador distinto (el desarrollador determina cómo es un identificador). Es de ayuda para esta parte mirar la documentación de la instrucción (unix/linux) xterm -e. Es importante seguir las convenciones de nombrado y la estructura de ficheros y directorios (src, bin, etc.) descrita. 6.3. Procedimiento y fechas de entrega de la práctica Para la entrega del fichero.zip descrito anteriormente, se utilizará el comando someter en la máquina hendrix01.cps.unizar.es. Los tres alumnos que forman un trío deberán someter individualmente el mismo fichero.zip generado como resultado de su trabajo conjunto. La fecha límite para someter el trabajo es el 10 de Enero del 2017 a las 22:00h.

Programación de Sistemas Concurrentes y Distribuidos, curso 16-17 6 6.4. Procedimiento y recomendaciones para su evaluación El procedimiento de entrega anterior constituye el primer paso para la evaluación de esta actividad. El segundo paso tiene un carácter presencial y para ello se habilitará una sesión especial en el laboratorio de prácticas (Laboratorio 0.01, Edificio Ada Byron). Una vez entregados los trabajos, se publicarán con antelación suficiente las fechas y horas concretas en las que se realizará esta evaluación presencial. Es obligatorio la asistencia de todos los miembros del equipo a la misma. El trabajo debe entregarse en los términos indicados anteriormente, debe funcionar correctamente y no haber sido copiado. En particular, hay que asegurarse de que la práctica funciona correctamente en los ordenadores del laboratorio (vigilar aspectos como los permisos de ejecución, juego de caracteres utilizado en los ficheros, etc.). También es importante someter código limpio. El tratamiento de errores debe ser adecuado, de forma que si se producen debería informarse al usuario del tipo de error producido. Además se considerarán otros aspectos importantes como calidad del diseño del programa, adecuada documentación de los fuentes, correcto formateado de los fuentes, etc. Para el adecuado formateado de los fuentes, es conveniente seguir unas pautas. Hay varias, y es posible que podáis configurar el entorno de desarrollo para cualquiera de ellas. Una posible, sencilla de seguir, es la Google C++ Style Guide, que se puede encontrar en: https://google-styleguide.googlecode.com/svn/trunk/cppguide.html

Programación de Sistemas Concurrentes y Distribuidos, curso 16-17 7 7. Anexo I: parte del catálogo de monumentos { "type": "FeatureCollection", "crs": { "type": "EPSG", "code": 23030 } "title": "Arte P\u00fablico", "icon": "http://www.zaragoza.es/cont/paginas/img/monumentos20.png", "link": "http://www.zaragoza.es/ciudad/artepublico/", "description": "Ayuntamiento de Zaragoza" "features": [ { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ 676105.25, 4610179.46 ] "title": "A cuantos murieron por la Libertad y la Democracia 1936-39 y postguerra", "link": "http://www.zaragoza.es/ciudad/artepublico/detalle_artepublico?id=97", "description": "", "category": "", "date": "", "icon": "http://www.zaragoza.es/cont/paginas/img/monumentos20.png" } { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ 676260.36, 4613389.58 ] "title": "A D. Francisco de Goya", "link": "http://www.zaragoza.es/ciudad/artepublico/detalle_artepublico?id=108", "description": "", "category": "", "date": "", "icon": "http://www.zaragoza.es/cont/paginas/img/monumentos20.png" }...