Universidad Carlos III de Madrid

Grado en Ing. Telemática/Sist. Audiovisuales/Sist. de Comunicaciones

Arquitectura de Sistemas

Septiembre 2012 - Enero 2013

11. Actividades

11.1. Aplicación del modelado de datos al proyecto

11.1.2. Recursos

11.1.3. Plan de trabajo

En esta actividad se trata de aplicar los conocimientos adquiridos al caso particular del proyecto a resolver en grupo. Para ello, reunidos en grupo se debe debatir sobre las siguientes cuestiones con la finalidad de aplicarlo en la práctica sobre el proyecto a realizar, y realizar los cambios o/y reflexiones oportunas sobre las decisiones tomadas hasta el momento en el proyecto en relación con el modelado de datos:

  1. La información a guardar, ¿Debe ser persistente o no persistente ante diferentes ejecuciones del programa? ¿Cuál es persistente y cuál no persistente?

  2. ¿Cuántos ítems o tablas diferentes tendremos en la aplicación? Enumérarlos.

  3. ¿Cuáles son los campos de información necesarios por cada uno de los ítems seleccionados? ¿Qué tipos de datos tienen esos campos de información?

  4. ¿Hay alguna relación entre las diferentes tablas o items encontrados? ¿Entre qué campos de las tablas están esas relaciones en caso de que existan?

  5. ¿Hay cierta información que no esté en tablas porque de la misma no se puedan instanciar varias instancias sino que está bien delimitada en una sóla instancia?

  6. ¿Se necesita procesar alguna información de las tablas para dar otra información elaborada? ¿Interesa esa información procesada tenerla almacenada directamente, en lugar de calcularla procesándola cada vez que se requiera?

  7. ¿Qué estructuras de datos se pueden utilizar para almacenar cada uno de los datos localizados? ¿Cuáles son los más adecuados para realizar la implementación? Dar las razones oportunas y justificar las decisiones tomadas.

  8. Para el almacenamiento de los datos en un fichero ¿Cuántas maneras diferentes se os ocurren de guardar la información? ¿Cómo puedes separarlos y delimitarlos? ¿De qué forma podrás distinguir los diferentes items almacenados en el fichero? Teniendo en cuenta las diferentes operaciones a realizar en el menú principal, ¿Qué ventajas e inconvenientes ves a cada una de las maneras de guardar la información? ¿Cuál de las opciones para almacenar la información de las identificadas consideras que es la mejor?

  9. ¿Cuáles serán las funciones encargadas de tratar con la manipulación de datos?

  10. ¿Cómo realizarías tu módulo de datos (definición de estructuras y funciones que manipulan datos) independiente de otros módulos de forma que quede separado de la lógica de control de la aplicación así como de la interfaz de presentación, siendo de esta manera reutilizable por otras posibles aplicaciones y más mantenible ante posibles futuros cambios de la aplicación?

11.2. Modelado de datos

11.2.2. Recursos

11.2.3. Plan de trabajo

Esta actividad tiene como objetivo introducirse en el modelado de datos de una aplicación software, de forma que se extiendan los conocimientos sobre qué datos hay que modelar, cómo se pueden modelar, las diferentes alternativas de implementación real de un modelo de datos, implicaciones a la hora de escritura de código de programa, la importancia de la separación en capas, etc. De esta manera, se trata de generalizar ciertos conceptos para poder aplicarlos en diferentes aplicaciones concretas, y específicamente aplicarlos para la aplicación del proyecto propuesta, a realizar en grupos.

En las actividades previas de esta sesión, se pide realizar lo siguiente:

  1. Lectura del material sobre modelado de datos y decisiones de estructuras de datos de una aplicación.

  2. Para el ejemplo de aplicación del recurso leído (el cual tiene ciertas analogías con el proyecto a realizar por los grupos), realizar las siguientes tareas:

    1. Definir las estructuras de datos necesarias para almacenar la información de las fotos y los autores en memoria estática de un array fijo de N elementos para las fotos y otro de M elementos para los autores. ¿Cómo elegirías el número N? ¿Estarías utilizando siempre la menor cantidad de memoria posible para el almacenamiento? ¿Cuál sería el máximo número de fotos que podrías tener?

    2. Definir las estructuras de datos necesarias para almacenar la información de todas las fotos en memoria dinámica contigua y los autores en otra zona de memoria dinámica contigua. En ningún caso se debe utilizar más memoria de la necesaria, esto es, no se debe reservar memoria para elementos que aún no se van a almacenar.

    3. Definir las estructuras de datos necesarias para almacenar la información de todas las fotos en una lista enlazada, y de todos los autores en otra lista enlazada.

    4. Definir las estructuras de datos necesarias para almacenar la información de todas las fotos en diferentes listas enlazadas utilizando una función de hash para decidir en cuál de las listas enlazadas debe ser almacenada. Hacerlo de forma análoga con los autores.

    5. Para cada una de las estructuras de datos definidas anteriormente, implementar una función que sea capaz de inicializar las estructuras de datos, representando en dicho momento que no se contiene ningún elemento.

    6. Para cada una y sobre cada una de las estructuras de datos definidas anteriormente, implementar una función que sea capaz de añadir una nueva foto a la colección. Se supone que no existe previamente en la colección la foto que se pretende añadir. Debe funcionar tanto para el caso de que cuando se produce la inserción no hay ningún elemento en la estructura de datos, como para cuando ya existen elementos en la estructura de datos

11.2.4. Autoevaluación automática

Comprueba con estas preguntas si has entendido el documento sobre el documento de modelado de estructuras de datos.

  1. En una aplicación se tienen almacenados datos sobre empresas hoteleras, así como sus respectivos hoteles. Cada hotel sólo pertenece a una empresa hotelera. Si en la fase de diseño hemos identificado una tabla para las empresas hoteleras, y otra tabla para los hoteles. ¿Cuál será la relación entre ambas tablas?

    • 1:N. Todo hotel tiene varias empresas hoteleras

    • N:1. Toda empresa hotelera tiene varios hoteles

    • N:N. Todo hotel tiene varias empresas hoteleras, y toda empresa hotelera tiene varios hoteles

    • No tienen ninguna relación ambas tablas

  2. Supón que se necesita memoria dinámica para almacenar en un momento a varios hoteles registrados en la aplicación y hacer búsquedas rápidas sobre campos de información de los mismos para seleccionar hoteles según ciertas restricciones. Este número de hoteles donde hacer la búsqueda puede ir desde 1 a más de 1 millón. La estructura más adecuada para guardar la información sería:

    • Array estático

    • Array dinámico

    • Lista enlazada

    • Tabla hash con listas enlazadas

  3. Considera que la información de hoteles y empresas hoteleras debe ser guardada en un fichero. Si posteriormente queremos realizar operaciones frecuentes de búsquedas de hoteles dada una ciudad concreta donde se localiza el hotel. Para realizar este tipo de operación, lo mejor es almacenar la información en el fichero tal que:

    • Vaya la información de cada ciudad una a una de manera consecutiva, incluyendo como parte de la información de la ciudad todos los hoteles que tiene

    • Vaya la información de cada hotel uno a uno de manera consecutiva incluyendo como parte de la información de un hotel a la empresa hotelera a la que pertenece

    • Vaya la información de cada empresa hotelera una a una de manera consecutiva, incluyendo como parte de la información de la empresa todos los hoteles que tiene

    • Vaya la información de hoteles con el mismo número de estrellas (categoría) de manera consecutiva, incluyendo como parte de la información de cada categoría, todos los hoteles de dicha categoría

  4. Si de una aplicación software de modo textual, queremos transformarla para añadirle un interfaz gráfico. Será más sencilla realizar la extensión si:

    • Hemos desarrollado toda la aplicación en un único fichero

    • Hemos dividido la aplicación en 3 módulos bien diferenciados: datos, control, y presentación

    • Hemos utilizado listas enlazadas para su desarrollo

    • Hemos compilado utilizando la opción -file para para simplificar en un futuro esta operación

11.3. Revisión del trabajo previo sobre modelado de datos

11.3.2. Recursos

11.3.3. Plan de trabajo

En esta actividad se comentan las actividades previas. Para ello, se sigue el siguiente procedimiento:

  1. Intercambia con el resto de tu equipo tus soluciones y consensuar una solución final.

  2. El profesor te preguntará sobre la solución propuesta por tu equipo.