Giter Club home page Giter Club logo

master_informatica-dss's Introduction

DSS (Desarrollo de Sistemas de Software Basados en Componentes y Servicios)

Repositorio de la asignatura Desarrollo de Sistemas de Software basados en Componentes y Servicios del Máster de Ingeniería Informática de la UGR

Teoría

Prácticas

Donaciones

Mi objetivo al publicar este repositorio es ayudar a los estudiantes del Máster en Ingeniería Informática de la UGR con cualquier duda que les pueda surgir mientras cursan esta asignatura. Si necesitas más soporte puedes incluso contactar conmigo.

No me hago responsable del uso que se le pueda dar a este material. Te recuerdo que los profesores no son tontos y se dan cuenta cuando un trabajo está copiado.

Si este repositorio te ha sido de utilidad podrías invitarme a una cerveza usando el botón que hay a continuación. Me harías un poquito más feliz 🙂

paypal

master_informatica-dss's People

Contributors

fblupi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

master_informatica-dss's Issues

Aplicación

Desarrollo completo de una aplicación interactiva para dispositivos móviles:

  • El juego que se tiene que desarrollar ha de poder ejecutarse en un dispositivo Android (versión >= 4.4) o IOS (elegir sólo uno) y se trata de presentar una serie de preguntas al usuario, que tendrá que responder para alcanzar una puntuación global, así como el número de respuestas acertadas y falladas.
  • Se tendrá una primera pantalla de presentación con un botón para iniciar el juego, otro para obtener los resultados y estadísticas obtenidos después de jugar y un tercer botón para enlazar con juegos similares libres que existan en Internet y que se puedan utilizar desde un tipo de aplicación como la que se pretende desarrollar.
  • Cada pantalla del juego ha de consistir en 1 pregunta con 4 posibles respuestas alternativas; la pregunta podría ser un texto plano, o una pregunta que contenga imágenes y sonidos.
  • Se ha de construir una base de datos de preguntas de texto planas a la que acceda directamente la app, de tal forma que en el futuro se puedan cambiar las preguntas de texto sin tener que modificar el código de la citada aplicación, aunque haya que volver a generar el archivo apk desplegable.
  • Al seleccionar una de las respuestas en cada pregunta ha de aparecer un mensaje de felicitación en el pie de la pantalla junto con un sonido de acierto o fallo; después de unos segundos se pasará a la siguiente pantalla con otra pregunta.
  • En caso de no acertar, se ha de poder elegir entre volver a la pantalla inicial para comenzar de nuevo el juego y se obtendrá un mensaje con la respuesta correcta o bien continuar el juego (no se obtendría las soluciones hasta el final); en ambos casos, se pueden obtener los resultados acumulados durante el desarrollo de un juego volviendo a la pantalla de inicio y pulsando e el botón "Resultados".
  • Tras la última pregunta, el mensaje que se mostrará será de felicitación por haber realizado el juego y mensaje de despedida antes de volver a iniciar el juego.

Para que la aplicación desarrollada sea evaluada favorablemente ha de satisfacer los siguientes requisitos:

Funcionales:

  1. El juego deberá mostrar una batería de preguntas.
  2. El usuario ha de poder responder a las preguntas de una en una
  3. Si el usuario falla la pregunta, se le mostrará un mensaje indicándole que ha fallado junto con un sonido
  4. Si el usuario acierta,se le muestra un mensaje indicándole que ha acertado.
  5. Ha de haber pantallas de pregunta que incluyan 1 imagen
  6. Si el usuario falla, entonces deberá aparecer la opción de continuar la partida o de volver a iniciar el juego.
  7. si el usuario acierta, continuará con la siguiente pregunta.
  8. Cuando el usuario finaliza la partida, se le muestran los resultados que ha obtenido.
  9. El menú deberá poder dirigirnos, al inicio de una nueva partida, a una opción que nos permita ver los resultados obtenidos en las partidas realizadas anteriormente, o a otros juegos en la Red mediante un webView.

No funcionales:

  1. Solamente puede hacerse un único acceso a la base de datos.
  2. La aplicación deberá funcionar como mínimo en dispositivos con versiones de sistemas
    operativos actuales ( por ejemplo: Android >=4.4)
  3. La aplicación debe funcionar tanto en dispositivos móviles (teléfonos) como en tablets.
  4. Se debe desarrollar la aplicación pedida aplicando Patrones de Diseño Software (por ejemplo: Singleton, Inmutable, Proxy, Escuchador de Eventos ) y
    Patrones Arquitectónicos (por ejemplo: MVC, DataBaseManagement System).

Composición de servicios basada en información ontológica

Elaborar un diagrama ontológico que describa la información semántica de contexto de un usuario de un sistema ubicuo, necesaria para correcta composición de servicios que se le ofrecen en el caso de referencia siguiente. El usuario de los servicios llega a las afueras de la ciudad porque quiere ir a recoger a alguien el aeropuerto. Su coche le ofrece la posibilidad de utilizar el servicio NavigationService (NS) que ya está pre-configurado con los datos recibidos desde el CalendarService(CS) del móvil del usuario que contiene una entrada con la fecha de llegada del viajero. Conforme va conduciendo el usuario prefiere que las indicaciones para llegar al aeropuerto se le ofrezcan en el sistema de información de vehículos (IVIS), de manera que puede utilizar el mencionado NS que interacciona con el Servicio de Información de Tráfico (SIT) para poder calcular la distancia más corta al aeropuerto. Cuando se aproxima al área del aeropuerto, su sistema IVIS descubre un nuevo servicio, el denominado Servicio de Información Aeroportuaria (SIA), que le informa, entre otras cosas, del número de puerta y de la hora de llegada del vuelo. Su NS automáticamente utiliza el nuevo servicio que acaba de descubrir y calcula una nueva ruta a la puerta de desembarco mientras que el SIT le proporciona información acerca de las plazas de aparcamiento disponibles cerca de la puerta aludida. El usuario aparca su coche y llega a la puerta justo a tiempo para recoger al viajero. Mientras tanto, cuando quiere consultar su e-mail, el usuario descubre que sólo tiene la cabecera de los mensajes y un símbolo que indica que el proceso de recepción del correo no ha terminado y que continuará más tarde, cuando se disponga de mayor ancho de banda en la red del proveedor. No conoce los tipos de servicios que pueden tener disponibles, ya que los proveedores de servicios en este caso actúan recomendando un servicio dependiendo del contexto actual del usuario; por tanto, debido al cambio en la oferta de servicios, cuando éste se aproxima a la zona del aeropuerto, la composición actual de servicios que usa en su móvil se ve modificada con la disponibilidad del SIA. Por último, el servicio de correo le ofrece la posibilidad de elegir entre 5 opciones de acceso a su e-mail: headMail, fullMail, EncryptedMail, BigMail y EncryptedBigMail, a partir de una evaluación de la situación del contexto en ese momento.

Práctica 4.1

Especificar utilizando BPEL 2.0 y la herramienta BPEL Designer para Eclipse el proceso de negocio (cuyo diagrama de actividad se muestra en la siguiente figura) y que se describe informalmente como sigue: "El cliente invoca al proceso de negocio, especificando el nombre del empleado, el destino de su viaje, la fecha de salida, y la fecha de regreso".

orquestacion de vuelos

El proceso de negocio BPEL comprueba primero la categoría del empleado que va a viajar, que se corresponden con estos tipos de pasaje de avión: (a) clase turista, (b) clase business y (c) avión privado.

Suponemos que disponemos de un SW contra el que se puede hacer la consulta, después de dicha consulta, el proceso BPEL comprobará el precio del billete con 2 líneas aéreas diferentes para encontrar mejor precio; suponemos otra vez que ambas compañías proporcionan un SW que permite realizar todas las gestiones anteriores.

Por último, el proceso BPEL seleccionará el precio más bajo y devolverá un plan de viaje al cliente, para su aprobación.

Práctica 4.2

Orquestar, de forma simplificada, el mercadeo entre un comprador y un vendedor de un producto solicitado, de acuerdo con el diagrama de interacción que se muestra en la siguiente figura.

orquestacion de procesos de compra

(a) El comprador comienza pidiendo un precio al vendedor y el vendedor responde con un precio para el producto o una excepción si no conoce el artículo que le demandan o no estuviera disponible en el almacén.
(b) El comprador continua pidiendo precio al vendedor y entra en un comportamiento repetitivo con actualizaciones (del precio del artículo) hasta que decide comprar el artículo cuando considera que se le ofrece el mejor precio.
(c) Se pide en este ejercicio desarrollar la descripción completa de la orquestación que se ha descrito anteriormente entre el comprador y el vendedor.

Implementación de un servicio CRUD en Java

Un servicio web que llamaremos 'CRUD' (Create, Read, Update, Delete), que ha de ser RESTful y que nos permitirá mantener una lista de objetos de un determinado dominio de libre elección (reseñas bibliográficas, catálogo de coches, etc..), pero que ha de incorporar imágenes y sonidos, en nuestra aplicación Web a través de llamadas HTTP.

  • Nos crearemos un modelo de datos y también una clase Singleton (no admite más de 1 instancia) que servirá como el proveedor de datos para el modelo.
  • Utilizaremos una clase basada en enumeración para representar un "proveedor de contenidos":
...
import java.util.HashMap;
import java.util.Map;
public enum TodoDao {
  instance;  
  private Map<String, Todo> contentProvider = new HashMap<String, Todo>();
  private TodoDao() {
    Todo todo = new Todo("1", "Aprender REST");
    todo.setDescripcion("Leer http://...");
    contentProvider.put("1", todo);
    todo = new Todo("2", "Aprender algo sobre DSBCS");
    todo.setDescripcion("Leer todo el material de http://...");
    contentProvider.put("2", todo); 
  }
  public Map<String, Todo> getModel(){
    return contentProvider;
  }
} 
  • Nos crearemos los recursos
  • Por último, el servicio REST que hemos programado ha de poder ser utilizado a través de formularios HTML.

El formulario permitirá hacer POST de nuevos datos en el servicio. Para lo cual nos crearemos una página (.html) en la carpeta "WebContent" del proyecto Eclipse que se entregará.

Programación OO con persistencia de entidades

Utilizando JPA, se pide programar una aplicación para crear Listas de Correo que utilizará un canal (DBUsuario) para escribir los datos de los usuarios de una Lista de Correo en una base de datos. La aplicación ha de utilizar un "connection pool" para permitir conectar rápidamente las hebras de usuarios a la base de datos.

arquitectura de la aplicacion a desarrollar

Ejecutar la aplicación como un proyecto Java en un IDE y utilizarla para añadir usuarios a la lista de correo. Utilizar Workbench o una herramienta similar para ver las tablas de la base de datos, la cual deberá incluir una tabla llamada "usuario" con columnas que se corresponderán con los campos de la clase Usuario (leer más abajo).

Crear una aplicación de Administración de Usuarios que permita visualizar a todos los usuarios, actualizar los usuarios existentes y eliminar los usuarios almacenados en la tabla Usuario de la base de datos.

Proyecto para tratamiento de eventos asíncronos

Utilizando el patrón arquitectónico "Interceptor", desarrollar un diagrama de clases y programar un proyecto en Java y utilizando el marco de trabajo JSF para el tratamiento de eventos asíncronos.

El objetivo de la aplicación es calcular la velocidad inicial a partir de un dato de entrada que se captura con un formulario y, posteriormente, instalar un manejador de eventos que reaccione cuando se pulsen cualquiera de los 2 botones: "Encender" y "Acelerar".

Para que el ejercicio sea considerado correcto hay que realizarlo de acuerdo con los siguientes requisitos:

Inicialmente la etiqueta del panel principal mostrará el texto "APAGADO" y las etiquetas de los botones, el nombre de cada uno (ver figura-izqda)

El botón "Encender" será de selección de tipo conmutador cambiando de color y de texto ("Encender"/"Apagar") cuando se pulsa

La pulsación del botón de acelerar cambia el texto de la etiqueta del panel principal a "ACELERANDO" (ver figura-dcha), pero sólo si el motor está encendido; si no, no hace caso a la pulsación del usuario.

Si se pulsa el botón que muestra ahora la etiqueta "Apagar'', la etiqueta del panel principal volverá a mostrar el texto inicial "APAGADO".

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.