Solución Examen Junio 2007 (a) Ejercicio GeoTaxi (1h 20 min.) Diagrama de Casos de Uso y. Casos de uso (2,5 puntos) Modelo de Dominio (1,5 puntos)



Documentos relacionados
Solución Examen Junio Hotel más reservado (1h 20 min.) Análisis (1,5 puntos): Diagrama Secuencia Sistema + Contratos. Diseño (2,5 puntos):

Práctica sobre compartición de instancias remotas.

Ingeniería del Software Arquitectura Física en 3 niveles

FRAMEWORK 2 Recepción de SMS

CONSULTAS CON SQL. 3. Hacer clic sobre el botón Nuevo de la ventana de la base de datos. Aparecerá el siguiente cuadro de diálogo.

Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java

Administración Local Soluciones

EXAMEN FINAL Metodología y Programación Orientada a Objetos. Curso Cuatrimestre de otoño. 17 de Enero de 2011

Solución al Examen de Prácticas de Programación (Ingeniería Informática)

A. Goñi, J. Ibáñez, J. Iturrioz, J.A. Vadillo OCW 2013

FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005

ANÁLISIS Casos de uso: Identificar Usuario. Diagrama de secuencia del sistema: Contratos:

Ingeniería del Software II. Curso 2003/2004. Enunciado de la práctica del Segundo parcial.

Ejercicio 1 (3 puntos).-

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

Ingeniería del Software

Consultas con combinaciones

DISEÑO Diseño de la capa de presentación

Primer Parcial Septiembre 5 de 2009

Proyecto de ISIII. Pruebas Extra. Pruebas de Caja Blanca

GUÍA DE TRABAJO GRADO 11. Articulación SENA Programación de Software Ing. Néstor Raúl Suarez Perpiñan Página 1 de 6

MANUAL DE AYUDA HERRAMIENTA DE APROVISIONAMIENTO

Modelo de Objetos Distribuidos

GESTOR DE LICENCIAS Ayuda

Manual Oficina Web de Clubes (FBM)

Base de datos Procedimientos Almacenados y Funciones

Manual de rol gestor de GAV para moodle 2.5

Novedades en Gestión de Expedientes (9 junio 2015)

Especificaciones funcionales para el acceso al RAI por Web

Roles y Características

Control de accesos autónomo por huella dactilar

CAPÍTULO 3 Servidor de Modelo de Usuario

- Bases de Datos - - Diseño Físico - Luis D. García

GedicoPDA: software de preventa

Introducción a la Firma Electrónica en MIDAS

POLÍTICA DE PRIVACIDAD PARA APLICACIONES MÓVILES GRUPOCOPESA. 1. información que se obtiene la aplicación y su utilización

11. Algunas clases estándar de Java (II)

2. Estructura de un programa en Java

INSTALACIÓ N A3ERP. Informática para empresas INTRODUCCIÓN CONSIDERACIONES GENERALES DE LA INSTALACIÓN PAQUETES DE INSTALACIÓN PREDEFINIDOS

Oficina Online. Manual del administrador

Autores en Web of Science y ResearcherID

Técnicas de Desarrollo de Programas Ingeniería Informática Curso 2008 / Ejercicios de Patrones de Diseño:

INSTALACIÓN A3ERP INTRODUCCIÓN CONSIDERACIONES GENERALES DE LA INSTALACIÓN PAQUETES DE INSTALACIÓN PREDEFINIDOS

Tutorial de MS Access Un sistema de Bases de Datos Relacional. Profesores: Hugo Mora, Ignacio Casas

Eurowin 8.0 SQL. Manual del módulo TALLAS Y COLORES

Patrones para persistencia (I) Ingeniería del Software II

Manual del panel. Core-Admin

Administración Local Soluciones

CONSULTAS DE RESUMEN SQL SERVER Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

1.- INTRODUCCIÓN 2.- PARÁMETROS

GENERACIÓN DE TRANSFERENCIAS

RMI [Remote Method Invocation]

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

SINAUTO. (Captura Requirimientos) GRUPO 03

ÍNDICE DE CONTENIDOS. 1. Introducción Funcionalidades Registro de usuario Recordar contraseña... 5

TEST (8 preguntas, 0 4 puntos por pregunta correcta, puntos por error) [Marcar sólo una opción]

Un nombre de usuario de 30 caracteres o menos, sin caracteres especiales y que inicie con una letra.

1. Introducción. 2. Dominio Semántico (Glosario)

MANUAL DE CS-ALMACENES (MAYO 2012)

MANUAL DE ADMINISTRACION DEL SISTEMA DE LOCALIZACION Y MONITOREO SATELITAL

Manual del Protocolo XML-RPC de Mensajería Negocios

SOLUCION PARCIAL TASK SCHEDULER. Task Scheduler

CERRADURAS RFID PARA TAQUILLAS PASSTECH

Lenguajes de Programación Curso Práctica 4. Herencia. Utilización de interfaces y clases abstractas. 1. Interfaces Clases abstractas 2

Java RMI. Sistemas Distribuidos Rodrigo Santamaría

3.9 Patrón Distributed callback

Acceso a BD desde Java. JDBC

Examen escrito de Programación 1

Aplicación para la gestión de prácticas en empresas. Memoria

Sistemas Distribuidos Java RMI (Remote Method Invocation) Alberto Lafuente Mikel Larrea Dpto. ATC, UPV/EHU

Conectar Flash con Access usando MDM Zinc

Modelos y Bases de Datos

Tutorial BMS Server Studio UDP

UNIDAD DIDACTICA 4 INTEGRACIÓN DE CLIENTES WINDOWS EN UN DOMINIO

2. Documento: Documento de condiciones de aceptación para poder tramitar la licencia de los deportistas y técnicos.

TUTORIAL DESARROLLO DE APLICACIONES PARA EVOLUTION CON MS ACCESS

Sistema Integrado de Control de Presencia Dactilar

MANUAL RELATIVO AL CERTIFICADO DE IMPORTACIÓN Y DECLARACIÓN

Curso de PHP. Acceso a bases de datos MySQL en PHP

Práctica 4: Java Remote Method Invocation (RMI)

La solución óptima para los Reparadores Autorizados y pequeños concesionarios

Gestión de Ficheros en ruralvía Recibos

Programación en Java. Programación en OO

Capítulo IV. Implementación del Sistema

San Isidro estación de esquí y montaña. Instrucciones. Venta Online de Forfaits

Patrones de diseño. Patrón básico Handler. Técnicas de Programación - Curso 2008/09 (Esther Guerra Sánchez)

Sistema de Gestión Académica TESEO. Revisión 1.0. Servicio de Informática Área de Gestión (GESTIÓN DE RESÚMENES DE TESIS DOCTORALES)

PROCEDIMIENTO DE ACCESO A DB2 AS/400 MEDIANTE SQL SERVER

CA Nimsoft Monitor Snap

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

Creación de usuarios Acceso a Alexia

1. DML. Las subconsultas

MANUAL DE CS-ALMACENES

Manual del Usuario. Sistema de Help Desk

CAPITULO 2. Como se definió en el plan del presente proyecto, este será desarrollado bajo

GUÍA PARA LA CONSULTA EN INTERNET DEL CATÁLOGO DE LA BIBLIOTECA DEL INSTITUTO CERVANTES DE MILÁN

Proyecto Help Desk en plataforma SOA Modelo de Dominio Versión 1.3. Historia de revisiones

SERVIDOR WEB PARA ACCESO EN TIEMPO REAL A INFORMACIÓN METEOROLÓGICA DISTRIBUIDA

Repaso de Conceptos Básicos de Bases de Datos

ÍNDICE...1. Pág. 1/21

Transcripción:

Solución Examen Junio 2007 (a) Ejercicio GeoTaxi (1h 20 min.) Diagrama de Casos de Uso y Casos de uso (2,5 puntos) Modelo de Dominio (1,5 puntos) 1

Actores OPERADOR CLIENTE TAXISTA 2

Actor Cliente Identificarse <<extends>> Solicitar servicio CLIENTE <<extends>> OPERADOR Crear servicio <<uses>> Asignar servicio 3

Actor Operador Identificarse <<extends>> Desactivar Alarma OPERADOR <<uses>> <<uses>> Consultar Servicios Pendientes Consultar Estado Taxis Asignar Servicio <<extends>> 4

Actor Taxista Identificarse <<extends>> <<extends>> Activar Alarma TAXISTA <<extends>> <<extends>> Consultar Servicios Pendientes <<extends>> Desactivar Alarma Cambiar Estado <<extends>> Aceptar servicio Solicitar Asignación Servicio 5

Casos de uso de alto nivel (1) Caso de uso: Identificarse Actores: OPERADOR, TAXISTA Descripción: Cada usurio (Operador o Taxista) debe identificarse para acceder al sistema GeoTaxi. Caso de uso: Actores: Solicitar Servicio CLIENTE, OPERADOR Descripción: Un Operador recibe una llamada de un Cliente solicitando un servicio. Cada operador dispone de un terminal donde aparecen las solicitudes pendientes de asignar y el plano de la ciudad. Sobre el plano aparece la localización de los distintos taxis y su estado: libre, ocupado o fuera de servicio. Los taxis libres aparecen destacados. 6

Casos de uso de alto nivel (2) Caso de uso: Crear servicio Actores: OPERADOR Descripción: Para asignar un taxi a un servicio, el operador introduce la dirección origen del servicio. Caso de uso: Actores: Asignar servicio OPERADOR Descripción: El sistema localiza los taxis libres más cercanos. El operador selecciona uno de ellos. El sistema informa al taxista presentando un mensaje a su terminal. 7

Casos de uso de alto nivel (3) Caso de uso: Actores: Consultar Servicios Pendientes OPERADOR Descripción: El sistema muestra al Operador el plano de la ciudad, las solicitudes pendientes de asignar y las solicitudes de asignación de servicios de los taxis libres. Caso de uso: Actores: Consultar Estado Taxis OPERADOR Descripción: El sistema muestra al Operador sobre el plano de la ciudad la localización de los distintos taxis y su estado: libre, ocupado, fuera de servicio o alarma. Los taxis libres aparecen destacados. También aparecen destacados los taxis en situación de alarma. 8

Casos de uso de alto nivel (4) Caso de uso: Actores: Aceptar Servicio TAXISTA Descripción: El sistema informa al Taxista de que el Operador le ha asignado un servicio. El sistema presenta un mensaje en el terminal del Taxista. El Taxista siempre puede aceptar o rechazar el servicio. Si lo acepta el estado pasa a estar ocupado. Caso de uso: Consultar Servicios Pendientes Actores: TAXISTA Descripción: El sistema muestra al Taxista las solicitudes que llevan más de 5 minutos pendientes de asignar. 9

Casos de uso de alto nivel (5) Caso de uso: Solicitar Asignación Servicio Actores: TAXISTA Descripción: Cualquier taxi libre puede solicitar la asignación de un servicio que lleva más de 5 minutos sin asignar. Caso de uso: Cambiar Estado Actores: TAXISTA Descripción: El terminal del taxi permite modificar su estado: libre, ocupado o fuera de servicio. 10

Casos de uso de alto nivel (6) Caso de uso: Actores: Activar Alarma TAXISTA Descripción: El terminal del taxi dispone de un botón de alarma, para situaciones de riesgo. Al ser pulsado, los operadores y los demás taxis verán el mensaje de alerta y conocerán exactamente su posición. Caso de uso: Desactivar Alarma Actores: TAXISTA, OPERADOR Descripción: El terminal del taxi y los operadores disponen de una opción para desactivar la alarma. 11

Modelo de dominio Estas clases nos permiten conservar el historial de solicitudes y servicios 12

Solución Examen Junio 2007 (b) Ejercicio Estudiante más Estudioso (1h 20 min.) Análisis (1,5 puntos): Diagrama Secuencia Sistema + Contratos Diseño (2,5 puntos): Diagramas de Secuencia 13

Diagrama secuencia sistema :Administrador :Sistema EME(fechaInicial, fechafinal) : ListaInfoEstudiantes InfoEME(idTarjeta) : InfoEstudiante 14

Contrato operación EME Name:EME(fechaInicio, fechafin) : ListaInfoEstudiantes Responsabilities Dadas una fecha de inicio y fin de un periodo, obtener los estudiantes ordenados descendentemente por tmd Preconditions Las fechas fechainicio y fechafin son válidas, fechainicio<=fechafin Postconditions Salida ListaInfoEstudiantes = Lista(<idUsuario, nombre, idtarjeta, tmd, tt>) donde tmd = tiempo medio diario permanencia en la Biblioteca en el periodo tt = tiempo total de permanencia en la Biblioteca en el periodo 15

Contrato operación InfoEstudiante Name:InfoEstudiante(idTarjeta) : InfoEstudiante Responsabilities Muestra para cada dia del periodo seleccionado, las horas de entrada y salida de la Biblioteca y el tiempo diario total de permanencia en la Biblioteca. Preconditions Se dispone de fechainicio, fechafin del periodo idtarjeta es válido Postconditions Salida InfoEstudiante = lista(<fecha, tiempototal, lista(<fecha, hora, E/S>)>) 16

Diagrama de Secuencia EME (1) :GestorEME :Zona :Pase :LectorTarjeta :Puerta :LectorTarjeta EME(fechaInicial,fechaFinal) obtenerlte( biblioteca ) LTe obtenerlts( biblioteca ) * obtenerlte obtenerlts * obtenerlts idlectortarjeta? LTs=lista(idLT) idlt idlt LTs 17

Diagrama de Secuencia EME (2) :GestorEME :Perfil :Pase :Tarjeta :Usuario :SolicitudAcceso EME(fechInicial,fechaFinal, LTe, LTs, estudiante ) EME(fechInicial,fechaFinal, LTe, LTs) * idusuario?(): idusuario nombre?(): nombre * EME(fechInicial,fechaFinal, LTe, LTs) lista(<idusuario,nombre,idtarjeta,tmd,tt>) lista(<fecha,hora,e/s>) ListaInfoEstudiantes IE=lista(<idUsuario,nombre,idtarjeta,tmd,tt>) ordenar() 18

1) Escogemos el patrón controlador para gestionar el evento externo EME. Aunque otras opciones son posibles, a falta de más información al tratarse de modelar un caso de uso, seleccionamos el controlador de caso de uso: GestorEME. Además, esta clase artificial tiene acceso directo a todas las zonas y perfiles y gestiona las estructuras auxiliares LTe (Lectores de Tarjeta Entrada) y LTs (Lectores de Tarjeta Salida). Con ello pretendemos un diseño global con alta cohesión y bajo acoplamiento. 2) Por el patrón experto, el método ObtenerLTe de GestorEME selecciona los lectores de tarjeta de entrada a la Biblioteca. Se aplica el mismo patrón experto para ObtenerLTe de Zona. 3) Por el patrón experto, el método ObtenerLTs de GestorEME selecciona los lectores de tarjeta de salida de la Biblioteca. Se aplica el mismo patrón experto para ObtenerLTs de Zona. Como cada Puerta conoce sus lectores de entrada y salida, aplicamos el mismo patrón experto, para a través de Puerta acceder a los identificadores de los Lectores de Tarjeta de Salida. 4) Ambas listas de identificadores de Lectores de Tarjeta de entrada y salida de la Biblioteca son almacenados en LTe y LTs, respectivamente. 19

5) Por el patrón experto, el método EME de GestorEME selecciona el perfil estudiante. Ahora tendremos que acceder a Usuario para saber su nombre y recorrer todas las tarjetas de estudiate para obtener todas las Solicitudes de Acceso permitidas entre las fechas solicitadas y que pertenezcan a uno de los identificadores de Lectores de Tarjeta de la Biblioteca (ya sean de entrada o de salida). 6) Por el patrón experto, el método EME de Perfil recorrerá todas las tarjetas de estudiantes. Asímismo, se obtiene el identificador y nombre de cada usuario. 7) Por el patrón experto, el método EME de Tarjeta recorrerá todas las solicitudes de acceso correspondientes a la tarjeta de estudiante. Se obtiene fecha y hora de las que hayan sido permitidas entre fechainicio y fechafin cuyo lector de tarjeta corresponda a uno de entrada o salida de la Biblioteca. 8) Por el patrón experto, el método EME de Perfil ordena las horas de entrada y salida y restando la hora de salida a la hora de entrada correspondiente, acumula en tt, para cada tarjeta, el tiempo total de permanencia en la Biblioteca en el periodo y calcula en tmd, el tiempo medio diario permanencia en la Biblioteca en el periodo. 9) Finalmente, se ordenan la información de cada estudiante descendentemente 20 por tmd.

:GestorEME :SolicitudAcceso InfoEstudiante(idTarjeta) * InfoEME(idTarjeta, fechinicial,fechafinal, LTe, LTs) lista(<fecha,tdt,lista(<fecha,hora,e/s>)>) lista(<fecha,hora,e/s>) 21

Escogemos el patrón controlador para gestionar el evento externo InfoEstudiante Aunque otras opciones son posibles, a falta de más información al tratarse de modelar un caso de uso, seleccionamos el mismo el controlador de caso de uso que para la operación anterior: GestorEME. Además, esta clase artificial agrupa también todas las Solicitudes de Acceso. Con ello pretendemos un diseño global con alta cohesión y bajo acoplamiento. Por el patrón experto, el método InfoEstudiante ordena las horas de entrada y salida, y restando la hora de salida a la hora de entrada correspondiente, acumula en tdt, el tiempo total de permanencia diaria en la Biblioteca. 22

Solución Examen Junio 2007 (c) Ejercicio Implementación (1h.) Realizar el diagrama de clases y la separación física (2 puntos) Completar la consulta SQL qemv (2 puntos) Implementar el método EMV de la clase Gestor EMV (2 puntos) Responder a las preguntas (4 puntos) 23

class java.rmi.server.unicastremoteobject interface java.rmi.remote extends Capa de Lógica de Negocio extends class GestorZMV + list ZMV(String fecha){...}... + main (){... Naming.rebind } implements SERVIDOR interface InterfazGestorZMV + list ZMV(String fecha) usa SERVIDOR DE DATOS CLIENTE class IU_ZMV p: InterfazGestorZMV BD + main () {... Naming.lookup } Capa de Datos Capa de Presentación 24

25

26

Esta solución distingue las múltiples visitas de un mismo estudiante a una zona en una misma fecha. SELECT Z.idZona,Z.nombre,COUNT(DISTINCT SA.hora) AS NVisitas FROM zona AS Z INNER JOIN LectorTarjeta AS LT ON Z.idZona=LT.idZona INNER JOIN SolicitudAcceso AS SA ON LT.idLectorTarjeta=SA.idLectorTarjeta INNER JOIN tarjeta as T ON SA.idTarjeta=T.idTarjeta INNER JOIN perfil AS P ON T.idPerfil=P.idPerfil WHERE SA.fecha='+fecha+' AND SA.Permitido=1 AND P.tipo="estudiante" GROUP BY Z.idZona ORDER BY NVisitas DESC Esta solución NO distingue las múltiples visitas de un mismo estudiante a una zona en una misma fecha (p.e. dos visitas de un mismo estudiante a la biblioteca en una misma fecha sólo cuenta una vez). SELECT Z.idZona,Z.nombre,COUNT(DISTINCT SA.idTarjeta) AS NVisitas FROM zona AS Z INNER JOIN LectorTarjeta AS LT ON Z.idZona=LT.idZona INNER JOIN SolicitudAcceso AS SA ON LT.idLectorTarjeta=SA.idLectorTarjeta INNER JOIN tarjeta as T ON SA.idTarjeta=T.idTarjeta INNER JOIN perfil AS P ON T.idPerfil=P.idPerfil WHERE SA.fecha='+fecha+' AND SA.Permitido=1 AND P.tipo="estudiante" GROUP BY Z.idZona ORDER BY NVisitas DESC 27

public list ZMV (String fecha) throws RemoteException { String SQL = qzmv; list l = new LinkedList(); int max = 0; int NVisitas = 0; boolean continue = true; } try { Statement s = c.createstatement(); // c anteriormente definida ResultSet r = s.executequery(sql); while (r.next() && continue) { NVisitas = r.getint( NVisitas ); if (max <= NVisitas) { list e = new linkedlist(); e.add(r.getstring( idzona )); e.add(r.getstring( nombre )); e.add(r.getint( NVisitas )); l.add(e); max = NVisitas; continue = true } else { continue = false } } } catch (Exception ex) { System.out.println(ex.getMessage()); list e = new linkedlist(); e.add( error ); e.add( null ); e.add(0); l.add(e); } return l; 28

a) Cómo son las instrucciones para cargar el driver del SGBD? Cómo son las instrucciones que establecen la conexión con la base de datos? Class.forName( org.gjt.mm.mysql.driver ); Connection c = DriverManager.getConnection( jdbc:mysql://hiper.controla2.es/controla2 ); b) Qué instrucciones registran el servicio remoto? En qué método de qué clase se encuentran? GestorZMV g = new GestorZMV(); Naming.rebind( //localhost:1099/gestorzmv, g); Se encuentran en el método main de la clase GestorZMV. c) Qué instrucciones buscan el objeto remoto? En qué método de qué clase se encuentran? g = (GestorZMV)Naming.lookup("rmi://super.controla2.es:1099/GestorZMV"); Se encuentran en el método main de la clase IU_ZMV. 29