1 Ingeniería del Software Solución Examen Junio 2006 (a)  Ejercicio UNIPRE (1h 20 min.)  Diagrama de Casos de Uso y  Casos de uso expandido (2,5 puntos)

Slides:



Advertisements
Presentaciones similares
Acceso a Bases de Datos con Java
Advertisements

Ingeniería del Software
Programación en Java Instructor:.
Lenguaje de consulta de Hibernate
Tema 3 J2EE Java Database Connectivity Temas Selectos de Cómputo Grupo 912.
1 Ingeniería del Software Ejercicios de Implementación  Caso de Uso Total Gasto (Junio 2003)  Caso de Uso Mejor Usuario (Septiembre 2003)  Caso de Uso.
Lenguaje Estructurado de Consultas
Diseñando la arquitectura de aplicaciones empresariales. Acceso al SQL Server.- Autenticación de usuario:
Fernando Alonso Nicolás Serrano Acceso a Bases de Datos con Java JDBC 01 de Abril de 2008.
1 Ingeniería del Software Ejercicio 2: P2P  Examen Febrero 2005 (1h ¼)  Diagrama de Casos de Uso y  Casos de uso expandido (2,5 puntos)  Modelo de.
1 Ingeniería del Software Ejercicio 3: Películas de mayor éxito ESTRATEGA Obtener mejores películas.
1 Ingeniería del Software Ejercicios de Diseño  Caso de Uso Generar Facturas (Junio 2003)  Caso de Uso Grado de Ocupación (Febrero 2004)  Caso de Uso.
SQL es el lenguaje de comunicación entre el programa cliente y programa servidor; Oracle es un programa servidor, en el que está la base de datos propiamente.
Unidad 6. Tema 4. Lenguaje de consultas SQL
Structure Query Languaje SQL. Introducción a SQL El lenguaje de consulta estructurado (SQL) es un lenguaje de base de datos normalizado, utilizado por.
Servicio de Becas Becas Curso 2013/2014 Índice 1.- Convocatorias abiertas 2.- Convocatorias cerradas 3.- ¿Cómo obtener información? 4.- Recomendaciones.
1 Ingeniería del Software Ejercicio 2: Caso de uso: Anular Reservas Pista Pista más reservada ENCARGADO.
Crear Aplicación Cliente para Conectarse a una Base de Datos.
ENTERPRISE JAVA BEANS. ACCESO AL EJB EJB_HOME. Accesible mediante JNDI. Permite crear y destruir EJB. EJB_OBJECT Expone los métodos del negocio del EJB.
GUÍA DE USO DEL SISTEMA DE ATENCIÓN Y GESTIÓN TICKETS (SAGT) ANALISTAS Gerencia de Atención al Estado Oficina de Atención al Usuario Octubre, 2010.
1 Ingeniería del Software Solución Examen Junio 2009  Ejercicio MasTer (1h 20 min.)  Modelo Casos de Uso (2,5 puntos) Diagrama Casos de Uso Casos de.
POLICREA Proyecto: “Te lo llevo”. Componentes Índice Introducción Casos de uso – Usuario Usuario – Cliente Cliente – Telollevo Telollevo – Supervisor.
Ingeniería del Software Diseñó de Software Universidad de los Andes Demián Gutierrez Abril 2009.
Francisco Moreno Bases de Datos II Universidad Nacional
Préstamo CBUA (Préstamo entre bibliotecas universitarias andaluzas)
ACCESO A LA UNIVERSIDAD
HISTORIA DEL DERECHO ESPAÑOL
Programación Avanzada
Información Para el grado 12
Bienvenida 2016/2017 Master Universitario en Ingeniería de Redes y Servicios Telemáticos (MUIRST) Doctorado en Ingeniería de Sistemas Telemáticos (DIST)
PRÉSTAMO INTERBIBLIOTECARIO
Colecciones Carlos Fontela, 2008.
Información de tu interés
Conexiones a Bases de Datos Utilizando la clase Conexión
Exception Object Throwable Error Exception Runtime Exception.
Structure Query Languaje
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
IPOO 2 cuatrimestre 2017 Departamento de Ciencias e Ingeniería
CONEXIÓN A BASE DE DATOS
INFORMACIÓN Para los alumnos que aún no tienen una cuenta de correo electrónico de la Universidad de Granada (UGR) Crear cuenta de correo electrónico Una.
Diseño y Programación Orientada a Objetos
IPOO 2 cuatrimestre 2017 Departamento de Ciencias e Ingeniería
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
SQL Lenguaje de Consulta Estructurado
Sonia Rueda Herencia y Polimorfismo
Tema 3 Fundamentos y diseño de algoritmos
Lenguaje y representación técnica
Propuesta Inicial Pesa Camiones
Guía para la realización de RESERVAS de ejemplares prestados vía Web
DOCENTE: EMILIO ISMAEL BUSTAMANTE MONTES
SELECTIVIDAD SERVICIO DE ALUMNOS Instrucciones para la matrícula de
Sistema Inspecciona Plataforma web y móvil: Gestiona inspecciones en terreno, acciones correctivas.
Structure Query Languaje
Ejercicios de Diagramas de Clases
Una tienda especializada en componentes electrónicos, compra sus existencias a una serie de proveedores, vendiéndolas posteriormente a sus clientes; a.
FUNDAMENTOS DE PROGRAMACION EN ENTORNO WEB. Rodrigo Cabello Ing. Informático Director de proyectos Think – Ideas in Motion FUNDAMENTOS.
Tutorial Aula Virtual Parte I
Pensus Software 1.
Comprensión y obtención de los requerimientos
ADMISIÓN FORMACIÓN PROFESIONAL 2018/2019 ciclos formativos de grado medio y grado superior modalidad E-LEARNING LKJASÑLDKFJLAÑSKDJFLASKDJFLASKDJFLASKDJF.
Declaración de operaciones
Ingeniería de Software
Fundamentos de Informática
Oscar Navarrete J. Jorge Gutiérrez A.
Oscar Navarrete J. Jorge Gutiérrez A.
RECEPCIÓN ALUMNADO CURSO
Casos de prueba con JUnit
IPOO 2 cuatrimestre 2018 Departamento de Ciencias e Ingeniería
Guía para la gestión de:
INFORMACIÓN Para los alumnos que aún no tienen una cuenta de correo electrónico de la Universidad de Granada (UGR) Crear cuenta de correo electrónico Una.
Transcripción de la presentación:

1 Ingeniería del Software Solución Examen Junio 2006 (a)  Ejercicio UNIPRE (1h 20 min.)  Diagrama de Casos de Uso y  Casos de uso expandido (2,5 puntos)  Modelo de Dominio (1,5 puntos)

2 Ingeniería del Software Actores ESTUDIANTESECRETARIO

3 Ingeniería del Software Actor Secretario SECRETARIO Buscar por Población Buscar por Código Reservar > Consultar Disponibilidad

4 Ingeniería del Software Actor Estudiante ESTUDIANTE Solicitar Preferencias Realizar Matrícula

5 Ingeniería del Software Actor Secretario SECRETARIO Asignar Números Clausus Establecer Fecha Asignación Realizar Proceso Asignación Comprobar plazas libres Comprobar estudiantes no matriculados >

6 Ingeniería del Software Casos de uso de alto nivel (1) Caso de uso:Solicitar Preferencias Actores:ESTUDIANTE Tipo:Secundario Descripción:Durante la preinscripción universitaria, el estudiante puede solicitar hasta ocho preferencias, las cuales tienen que estar ordenadas de forma estricta por orden de interés. Caso de uso: Realizar Matrícula Actores:ESTUDIANTE Tipo:Secundario Descripción:Si no se ha superado la fecha tope, el estudiante realiza la matrícula en la titulación asignada.

7 Ingeniería del Software Casos de uso de alto nivel (2) Caso de uso:Asignar Numerus Clausus Actores:SECRETARIO Tipo:Secundario Descripción:El secretario asigna los numerus clausus a las titulaciones Caso de uso: Establecer Fecha Asignación Actores:SECRETARIO Tipo:Secundario Descripción:Si aún hay plazas libres y estudiantes por matricular, el secretario establece la fecha de convocatoria en que se realizará la asignación de estudiantes.

8 Ingeniería del Software Casos de uso de alto nivel (3) Caso de uso:Realizar Proceso Asignación Actores:SECRETARIO Tipo:Primario Descripción:El secretario inicia el proceso de asignación de estudiantes a plazas sin superar el numerus clausus. Las solicitudes se ordenan según nota media obtenida en la prueba de acceso a la universidad. Cuando un estudiante es admitido a una titulación debe recibir un correo electrónico en el que se indica la fecha tope de matriculación.

9 Ingeniería del Software Casos de uso de alto nivel (4) Caso de uso: Comprobar Plazas Libres Actores:SECRETARIO Tipo:Secundario Descripción:Se comprueba la diferencia entre numerus clausus y estudiantes matriculados. Caso de uso: Comprobar Estudiantes No Matriculados Actores:SECRETARIO Tipo:Secundario Descripción:Se comprueba la diferencia entre los estudiantes preinscritos y los matriculados.

10 Ingeniería del Software Modelo de dominio TitulaciónUniversidad OfertaPlazas ** Solicitud id Nombre id Nombre FechaAsignación FechaTopeMatricula NumerusClausus OrdenInterés Matrícula Estudiante Dni Nombre NotaMedia 8 *

11 Ingeniería del Software Solución Examen Junio 2006 (b)  Ejercicio Convoy más Ineficiente (1h 20 min.)  Análisis (1,5 puntos): Diagrama Secuencia Sistema + Contratos  Diseño (2,5 puntos): Diagramas de Secuencia

12 Ingeniería del Software Diagrama secuencia sistema :Planificador ObtenerEstaciones(fecha) : ListaInfoEstaciones TrenMásIneficiente(idEstación) : ListaInfoTrenes :Sistema

13 Ingeniería del Software Contrato operación ObtenerEstaciones  Name:ObtenerEstaciones(fecha) : ListaInfoEstaciones  Responsabilities Dad una fecha, obtener las estaciones por las que pasan viajes en esa fecha.  Preconditions La fecha es válida  Postconditions  Salida ListaInfoEstaciones = Lista(idEstacion, nombre, nviajes)

14 Ingeniería del Software Contrato operación TrenMásIneficiente  Name:TrenMásIneficiente(idEstacion) : ListaInfoTrenes  Responsabilities Busca los trenes más ineficientes entre los que en la fecha propuesta pasan por la estación seleccionada.  Preconditions idEstación es válido  Postconditions  Salida ListaInfoTrenes = Lista(idViaje, FechaSalida, HoraSalida, idEstaciónOrigen, nombreOrigen, idEstacion, nombre, idConvoy, Tmax, Peso, diferencia)

15 Ingeniería del Software ListaInfoEstaciones :GestorCMI OE(fecha) :Pase :Viaje * * :Pase :Convoy :Via :Estación OE(fecha) IdEstacion IdE idViaje, lista(IdE) ViajesEstación() ObtenerEstaciones(fecha)

16 Ingeniería del Software Escogemos el patrón controlador para gestionar el evento externo ObtenerEstaciones. 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: GestorCMI. Además, esta clase artificial agrupa todos los viajes y estaciones y gestiona la estructura auxiliar ViajesEstación. Con ello pretendemos un diseño global con alta cohesión y bajo acoplamiento. Por el patrón experto, el método ObtenerEstaciones selecciona los viajes cuya FechaSalida sea la proporcionada por el Planificador. Por el patrón experto, el método OE de Viaje es el encargado de obtener las estaciones (IdEstacion) por las que transcurrirá cada viaje (Viaje conoce la FechaSalida y los Convoyes que lo conforman). Se aplica el mismo patrón experto para los métodos OE de Convoy (conoce las vias por las que pasa), Via (conoce las estaciones por las que pasa) y Estación. Finalmente, el método OE de Estación obtiene el IdEstacion de la estación destino. Además, el método ViajesEstación de GestorCMI gestiona la estructura de datos ViajesEstación para almacenar para cada estación los IdViaje de viajes que pasan por ellas (eliminando viajes repetidos). Finalmente, este método obtiene el total de viajes que pasan por cada estación.

17 Ingeniería del Software ListaInfoEstaciones :GestorCMI TMI( ) :Pase :Viaje * * :Pase :Convoy * Info() Peso, TnMax IdConvoy,T, P idViaje, lista(ldConvoy, T, P) TrenMásIneficiente(IdEstación) :Contenedor * Peso() Peso() peso :Pase :Convoy :Pase :Convoy :Pase :Locomotora :Pase :Convoy :Pase :Vagón * info() IdViaje, FechaSalida, HoraSalida, idEstacionOrigen :Convoy :Estacion * ciudad() ciudad

18 Ingeniería del Software Escogemos el patrón controlador para gestionar el evento externo TrenMasIneficiente. 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: GestorCMI. Además, esta clase artificial agrupa también todos los viajes y estaciones y gestiona la estructura auxiliar ViajesEstación. Con ello pretendemos un diseño global con alta cohesión y bajo acoplamiento. Por el patrón experto, el método TrebMasIneficiente recorre los viajes de ViajesEstación que corresponden a la Estación seleccionada. Por el patrón experto, el método TMI de Viaje es el encargado de obtener los convoyes más ineficientes de cada viaje (Viaje conoce los convoyes que lo componen). Se aplica el mismo patrón experto para el método TMI de Convoy (conoce las locomotoras y vagones que lo componen), que debe obtener el peso máximo que pueden transportar las locomotoras del convoy y el peso total entre ambos. Finalmente, el método info de Locomotora obtiene el peso y el tonelaje máximo que puede transportar y los métodos peso de Vagón y Contenedor los pesos de ambos.

19 Ingeniería del Software Tras obtener los viajes que contienen los convoyes más ineficientes, también por el patrón experto, el método info de Viaje obtiene su idViaje, sus fechas y horas de salida y su estación origen. Por último, aplicando el patrón experto, el método ciudad de Estación obtiene las ciudades de la estación seleccionada y las estaciones origen de los viajes más ineficientes.

20 Ingeniería del Software Solución Examen Junio 2006 (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)

21 interface InterfazGestorEMV + list EMV(String fecha) interface java.rmi.remote implements class GestorEMV + list EMV(String fecha) {...}... + main (){... Naming.rebind } class java.rmi.server.UnicastRemoteObject extends class IU_EMV + main () {... Naming.lookup } p: InterfazGestorEMV usa CLIENTE SERVIDOR SERVIDOR DE DATOS BD Capa de Presentación Capa de Lógica de Negocio Capa de Datos extends

22 Ingeniería del Software

23 Ingeniería del Software

24 public list EMV (String fecha) throws RemoteException { String SQL = "SELECT E.idEstacion, E.ciudad, COUNT(DISTINCT(V.idViaje)) AS Nviajes FROM Viaje AS V INNER JOIN Convoy as C ON V.idViaje=C.idViaje INNER JOIN Via AS VIA ON C.idVia=VIA=idVia INNER JOIN Estacion AS E ON VIA.Origen=E.idEstacion WHERE V.fechaSalida = “+fecha+” GROUP BY E.idEstacion ORDER BY NViajes DESC"; list l = new LinkedList(); int max= 0; int NViajes= 0; boolean continue= true; try { Statement s = c.createStatement(); // c anteriormente definida ResultSet r = s.executeQuery(SQL); while (r.next() && continue) { NViajes = r.getInt(“NViajes”); if (max <= Nviajes) { list e = new linkedList(); e.add(r.getString(“idEstacion”)); e.add(r.getString(“ciudad”)); e.add(r.getInt(“NViajes”)); l.add(e); max = Nviajes; 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; }

25 a) ¿En el método de qué clase se carga el puente JDBC-ODBC? En el constructor de la clase GestorEMV. ¿Dónde está definida la pregunta SQL? En el método EMV de la clase GestorEMV. b) ¿Cómo es la instrucción que establece la conexión con la base de datos? Connection c = DriverManager.getConnection(“jdbc.odbc.BD”); c) ¿Qué instrucciones registran el servicio remoto y en el método de qué clase se encuentran? GestorEMV g = new GestorEMV(); Naming.rebind(“”//localhost:1099/GestorEMV”, g); En el método main de la clase GestorEMV. d) ¿Cuál es la instrucción que busca el objeto remoto y en qué método de qué clase se encuentra? g = (GestorEMV)Naming.lookup("rmi://super.contren.es:1099/GestorEMV"); En el método main de la clase IU_EMV.