5 Diccionario de Datos 5.1 Documentación del sistema Hasta el momento hemos descrito las técnicas utilizadas en el desarrollo de sistemas, pero el desarrollo de modelos no queremos hacerlo sobre hojas sueltas, con el peligro de extraviarlas, y tener dificultad en mantenerlo. Por el contrario, necesitamos organizar el seguimiento de los modelos, principalmente por dos razones: ♦ Dar significado a los componentes del modelo, ayudando a gestionar la complejidad del sistema. ♦ Soportar el mantenimiento, ya que cualquier trabajo puede pasar de una persona a otro. A esta forma de seguimiento organizado del trabajo producido durante el análisis y diseño del sistema se llama documentación del sistema. La documentación del sistema es tanto una herramienta de comunicación, como de comunicación porque contiene un almacen de todo el trabajo hecho cada día y lo pone a disposición de todas las personas que trabajan en un proyecto grande. También es una herramienta de dirección, porque asegura una alta eficiencia, ya que todas las personas tienen acceso a lo último realizado. Dado que un proyecto se divide en fases, se establece la documentación que se debe aportar en cada fase, lo que ayuda a conocer la situación en cada momento del proyecto. Para que sea útil, la documentación debe ser estructurada y fácil de usar. La documentación en un primer momento se divide en informes de proyecto y una descripción del sistema. 5.1.1 Informes del proyecto Los informes del proyecto incluyen la información requerida por la dirección del proyecto. Los informes incluyen un resumen de la fase actual, unas recomendaciones para la siguiente fase y un plan con los recursos propuestos. La información específica de la fase depende de la fase del proyecto, por ejemplo el informe de viabilidad incluirá los costes esperados del proyecto, y una recomendación para seguir o abandonarlo. 5.1.2 Diccionario del sistema La estructura de un diccionario de sistema se mostrará mas adelante. El Diagrama de Flujo de Datos describe el sistema. El diagrama E-R, describe los datos del sistema. El componente descripción del proceso describe los procesos del DFD y el Diccionario de datos que describe los datos del sistema (flujos y almacenes de datos). Los usuarios del sistema y como lo utilizan se incluyen en la descripción del usuario. 5.1.3 Descripción de procesos La descripción de procesos incluyen una entrada por cada proceso del diagrama de flujo de datos. Cada entrada del proceso incluye el número de DFD para él, junto con la descripción del proceso. Como ejemplo la descripción de un proceso de alto nivel, incluye el número y nombre del proceso, los nombres de los flujos de datos de entrada y salida y una descripción del proceso. Para la descripción de procesos en los niveles inferiores de DFD, se usará un método de descripción de procesos, no así en los DFD de alto nivel que basta una descripción narrativa del proceso. 5.2 Diccionario de datos El diccionario de datos es una lista organizada de todos los datos pertenecientes al sistema, con una serie de definiciones precisas y rigurosas para que tanto el analista como el usuario comprendan entradas, salidas, elementos de los almacenamientos y calculos intermedios. En el diccionario de datos incluimos almacenes de datos, flujos de datos, estructuras de datos, elementos de datos y en algunos casos el modelo E-R. El diccionario de datos (DD) define los datos en cuanto que: 1. Describe el significado de los flujos de datos y los almacenes que muestran los DFD's. 2. Describe la composición de la estructura de datos que se mueven a los largo de los flujos. 3. Describe la composición de la estructura de datos en los almacenes. 4. Describe los detalles de las relaciones entre almacenes que aparecen en un diagrama entidad-relación. Los analistas utilizan los diccionarios de datos por cuatro razones: 1. Para manejar los detalles en sistemas grandes ya que es imposible de recordar todo lo referente a un sistema. 2. Para comunicar un significado común para todos los elementos del sistema. Esto es muy importante cuando trabajan varios analistas y no pueden reunirse todos los días para comunicarse. 3. Para documentar las características del sistema. 4. Localizar errores en el sistema. 5.2.1 Contenido de un Diccionario de Datos El DD contiene las siguientes: 1. Definiciones lógicas de datos: ♦ Elemento de Dato (Atributos de la Entidad). ♦ Estructura de Dato. ♦ Flujos de Datos. ♦ Almacenes de datos. 2. Definiciones lógicas de procesos. 3. Definicion lógicas de entidad externa. Los elementos de dato se agrupan para formar una estructura de dato. 1. Elemento de dato: Ninguna unidad mas pequeña tiene significado para los analistas o usuarios. Son los bloques básicos para todos los demás datos del sistema, por sí solo no lleva ningún significado al usuario. Son los atributos de las entidades. Por ejemplo: nº factura, fecha expedición, cantidad adeudada. 2. Estructuras de dato: es un grupo de datos elementales que en conjunto describen un componente del sistema. Por ejemplo: Factura. Los flujos de datos, almacenes de datos son estructuras de datos. 5.2.2 Notación del Diccionario de datos 1. Notación del elemento dato: Cada uno está identificado con un nombre, una descripción, un alias, una longitud, un intervalo de valores. Veamos las reglas a seguir para cada elemento. ♦ Nombre de los datos: se deben asignar nombres que sean significativos, es decir, que tengan significado en el contexto del desarrollo del sistema. Por ejemplo: Fecha-factura. Un nombre no debe ser mayor de 30 caracteres y tampoco debe contener espacios en blanco. ♦ Descripción de los datos: indica de manera breve lo que éste representa en el sistema, y debe escribirse de forma comprensible para el lector y pensando que quien lo lea no sabe nada con respecto al sistema. ♦ Alias: es cuando el mismo dato recibe varios nombres, según quien haga uso del dato. Ejemplo; factura puede tener como alias documento de pago o nota de pago etc... No son alias los siguientes casos: factura autorizada, factura verificada. ♦ Longitud: indica la cantidad de espacio necesario para cada dato sin considerar la forma en que serán almacenados. ♦ Valores de los datos: si los valores de los datos están restringidos a un intervalo específico, debe reflejarse en la entrada del DD. Por ejemplo Talla unidad [centímetros], rango [1-200]. 2. Descripción de las estructuras de datos: Las estructuras de datos se construyen sobre cuatro relaciones de componentes (datos o estructuras) que son: ♦ Relación secuencial: Define los componentes (datos o estructuras) que siempre se incluyen en una estrucutra de datos en particular, es decir, también se llama concatenación de dos o mas datos. ♦ Relación de selección: Define alternativas para datos o estructuras incluidas en una estructura de datos. ♦ Relación de iteración: Define la repetición de un componente cero o más veces. ♦ Relación opcional: Es un caso especial de la iteración, es decir, una o ninguna iteración. 3. Descripción de los flujos de datos: Representamos los flujos de datos siempre y cuando el flujo no sea un único atributo. Está formado por una o mas estructuras previamente definidas. Del flujo nos interesa el contenido, fuente, destino, volumen. ♦ Nombre del flujo de datos: se deben asignar nombres que sean significativos, es decir, que tengan significado en el contexto del desarrollo del sistema. Por ejemplo: factura. ♦ Fuente: indica cual es el proceso fuente de la información. Se indicara el número del proceso. ♦ Destino: indica cual es el proceso destino de la información. Se indicara el número del proceso. ♦ Definición: explica el contenido del flujo de datos. ♦ Contenido: describe cuales son las estructuras de datos incluidas. 4. Descripción de los almacenamientos de datos: Representamos los almacenamientos de datos. Se documenta su contenido, flujos de entrada, flujos de salida. ♦ Nombre de almacenamiento de datos: se asignan nombres que sean significativos, es decir, que tengan significado en el contexto del desarrollo del sistema. Ejemplo: histórico facturas. ♦ Flujos de entrada: indica cuales son los flujos que alimentan el almacenamiento de datos. ♦ Flujos de salida: indica cuales son los flujos que extraen información del almacenamiento de datos. ♦ Definición: describe el contenido del almacenamiento de datos. ♦ Contenido: especifica el contenido del almacenamiento. 5. Descripción de los procesos: Representamos los procesos del sistema. Se documenta su contenido, flujos de entrada, flujos de salida. ♦ Nombre de proceso: se asignan nombres que sean significativos, es decir, que tengan significado en el contexto del desarrollo del sistema. Por ejemplo: verificar _crédito. ♦ Entradas: indica cuales son los procesos, almacenamientos de datos que ejercen de fuente de datos. ♦ Flujos de salida: indica cuales los procesos, almacenamientos de datos que ejercen de destino de datos. ♦ Definición: indica la misión del proceso. ♦ Descripción: describe el proceso. Para ello utilizaremos: Forma narrativa, arboles de decisión, tablas de decisión, lenguaje estructurado. 6. Descripción de las entidades externas: Representamos las entidades externas del sistema. Se documenta a quien representa, flujos de datos relacionados, volumen etc. ♦ Nombre de entidad externa: se asignan nombres que sean significativos, que representen a la entidad. Por ejemplo: clientes. ♦ Flujos de datos asociados: indica cuales son los flujos (entrada / salida) asociados. ♦ Definición: indica quienes son la entidad. ♦ Volumen: Número de componentes de la entidad. 5.2.3 Sintaxis del Diccionario de Datos Conocida la forma de describir los datos y estructuras de datos, explicados en el apartado anterior, a continuación se va a establecer una sintaxis estandarizada que nos permitirá expresar dichos significados: ♦ = está compuesto por ♦ +y ♦ () opcional, puede o no puede estar presente ♦ [ ] selección entre varias alternativas ♦ { } iteración, repetir lo mismo varias veces ♦ ** comentario ♦ @ clave principal de un almacenamiento ♦ | separador de alternativas en selección Ejemplo: ♦ Datos elementales. Son datos, que dentro del contexto del usuario, no tiene sentido descomponerlo. Es importante especificar: Valores permitidos, y unidad de medida. peso_persona =* * * unidad: kilo ; rango: 1..150 * sexo = * Masculino o Femenino * * valores: [ M | F ] * ♦ Datos opcionales. Dirección_cliente = (dirección _entrega) + (dirección _ facturación) Dirección_cliente = [ dirección _entrega | dirección _ facturación | dirección _ entrega+ dirección _ facturación ] Dirección_cliente = dirección _entrega + (dirección _ facturación) ♦ Iteración. Repetición de uno mas datos elementales o grupo de datos. ' Cero o mas ocurrencias.' pedido = nombre _ cliente + dirección _ entrega + { producto } ♦ Selección. ' Una y no mas una de las alternativas '. sexo = [ Masculino | Femenino ] ♦ Dominio (No Yourdon) Consiste definir una única vez cada tipo de Dato elemental, y referenciarlo para cada representación del tipo. fecha = * * * unidad: días ; rango: 0..36500 * fec _ nacimiento = fecha fec _ factura = fecha ♦ Alias (Sinónimo) No se debe confundir con el dominio. Es un nombre alternativo para un datos elemental. fecha _ contable = fecha fecha _ efectiva = * alias de: fecha _ contable * Nombre = Tratamiento + Nombre_pila + Primer_apellido + Segundo_apellido Tratamiento = [ Sr. | Sra. | Srta. | D. | Dr. ] Nombre_pila = {carácter} Primer_apellido = {carácter} Segundo_apellido = {carácter} carácter = [ A-Z | a-z | - ] 5.2.4 Definición de un Diccionario de Datos 1. Definición de datos secuenciales Una definición se realiza mediante el símbolo = que significa se define como por lo tanto una expresión como A= B + C, se podría leer igual que de forma matemática es decir A está compuesto de B y C, pero para completarla se debería añadir: el significado de dicho dato en el contexto de la aplicación, el rango y tipo de valores que cada dato puede tomar. Por ejemplo: En un sistema informático de un hospital Datos_del_Paciente = nombre_completo + *nombre completo del paciente* *tipo: array de caracteres* dirección + *dirección completa del paciente* *tipo: array de caracteres* peso + *peso del paciente* *unidad: kilogramos; rango: 1-200* talla + *talla del paciente* *unidad: centímetros;rango: 20250* fecha ingreso + *fecha de entrada en el hospital* *tipo: fecha* 2. Definición de datos opcionales Es aquel dato que puede o no formar parte de la composición de un dato compuesto. Ejemplo: La dirección de un cliente puede ser ♦ Unica: tanto la dirección comercial como de administración están en el mismo lugar que producción o almacén. ♦ Dos direcciones: Tiene el almacén y producción separado físicamente de la administración. Esta situación en un DD se trataría así: Cliente = nombre_completo + dni_cliente + dirección_comercial + (dirección_mercancías) 3. Definición de selección Sólo una de entre varias posibilidades será posible. Esta se define mediante [ ]. Ejemplo: Un cliente puede ser una empresa o un particular, por lo tanto los tipos de datos son distintos según sea uno u otro. cliente = [nombre_cliente | nombre_empresa] + [dni_cliente | cif_cliente] + dirección_comercial + (dirección_mercancías). 4. Definición de iteración La iteración se expresa mediante { } y sirve para indicar la repetición de una cierta ocurrencia dentro de una definición. Ejemplo: Factura = fecha_factura + nombre_cliente + numero_factura + {linea_factura} + total factura El dato línea_factura es un componente de la estructura de datos factura que puede tener una o varias ocurrencias, ya que una factura puede tener muchas líneas de facturación de artículos. 5. Alias (Sinónimos) Son nombres que dentro del Sistema de información tienen el mismo significado entonces lo que se hace es declarar los sinónimos por medio del símbolo =. Ejemplo: Acreedor = cliente ** definido ya anteriormente. Hemos visto el contenido del Diccionario de Datos, que deberá mostrarse al usuario siempre conjuntamente con las técnicas: ♦ Diagrama de Flujo de Datos (DFD). ♦ Modelo Entidad - Relación (DER). ♦ Especificación de Procesos ( EP). 5.2.5 Implementación del Diccionario de Datos Varias posibilidades para la implementación de los DD, cada una con sus características y ventajas. ♦ Repositorio de datos ◊ Herramientas automáticas integradas dentro de un entorno CASE. ◊ Dispone de mas posibilidades de la vistas. ♦ Diccionario de datos de SGBD o SO modernos ◊ Dan soporte automático para definiciones de datos, validar su consistencia, producir algunos informes. ♦ Procesador de textos convencional ♦ Totalmente manual Ejemplo: __________________________________________________________________ Dato elemental Nombre Descripción : Estado_Civil : Código de una letra para indicar el estado civil de cada empleado. Long y tipo : 1 caracter alfabético. Sinónimos : ESTADO (Personal) CIVIL (Nóminas) Valores :S Soltero D Divorciado C Casado S Separado V Viudo O Otros _________________________________________________________________ Estructura de dato Nombre Descripción Componentes : Empleado : Datos necesarios de un empleado. : Nombre_empleado + Num_empleado + Datos_personales = Fecha_nacimiento + Estado_Civil + Num_hijos [ 0 - ] + (Num _ tfno) Dirección = Calle + Número + (Población) + Codigo_Postal + Provincia __________________________________________________________________ Flujo de datos Nombre Ref Fuente Destino Descripción Estruct de datos : Pago _ aceptado : 11.1 - 11.2. : 11.1 Aceptar pago : 11.2 Validar pago : Pago recibido y sellado pero no validado. : Cheque + Recibo _ Caja + (Letra _ Pago) + Metodo _ pago Volumen : 5000 por día Comentarios : La letra de pago esta omitida en el 10 % de los casos. __________________________________________________________________ Almacenamiento de datos Nombre Ref Flujo de Entrada Flujo de Salida : Historia _Pedidos : P4. : 9 - D4 Pedido : D4 - 10 Detalles pedido D4 - 11 Detalle ventas D4 - 9 Demanda anterior Descripción : Todos los pedidos aceptados en los últimos 6 meses. Contenido : Pedido = Id_pedido + Detalle_cliente + Detalle_libro __________________________________________________________________ 5.2.6 Descripción lógica de un proceso Para el proceso Verificar_Crédito la plantilla correspondiente sería la siguiente: Procesos Nombre Ref Definición Entradas Salidas Descripcion : Verificar _ Crédito :3 : Decidir donde van los pedidos sin pago previo, o si debe pedirle el pago al cliente. : 1 - 3 Pedidos D3 - 3 Historia de pagos : 3 - C Pedido de pago previo 3 - D3 Nuevo balance de orden 3 - 6 Pedidos con crédito ok : Recuperar historia de pago. Si el cliente es nuevo, enviar pedido de pago previo. Si el cliente corriente (promedio de dos pedidos mensuales) , OK con el pedido, a menos que el balance esté vencido mas de dos meses. Para clientes anteriores ( no OK , a menos que tengan cualquier balance con corrientes), vencido. __________________________________________________________________ Hemos visto que para describir la lógica de un proceso, utilizaremos varias alternativas como son: narrativa, arboles de decisión, tablas de decisión y lenguaje estructurado. Cuando utilizamos narrativa podemos encontrarnos con ♦ frases oscuras (no solo, pero no obstante, sin embargo....). ♦ rangos con huecos indefinidos (' hasta 20 unidades sin descuento, mas de 20 u. al 50 % '). ♦ Frases con y/o (' los clientes que nos compran mas de 1millón al año y tienen una buena historia de pagos o que han tenido tratos con nosotros por mas de 20 años deberán recibir trato preferencial '). ♦ Adjetivos indefinidos ('buena historia de pagos ', ' trato preferencial '). Estas razones obligan a pensar en otras alternativas: ♦ árbol de decisión: Pueden resultar una técnica no válida en situaciones complejas con gran número de condiciones e implicaciones ya que no asegura que se hayan considerado todas. Se debe utilizar cuando el número de acciones sea pequeño y no sean posibles todas las combinaciones. ♦ Tablas de decisión: Son mas precisas dado que permiten reflejar todas las combinaciones posibles. Pero son mas difíciles de entender para el usuario. Deben simplificarse una vez construídas, y se convertirán en arboles de decisión. Se debe utilizar siempre que se dude que el árbol muestra toda la lógica. *Primera orden > 12 días-----------Hacer pedido *Total ordenes< menor que X *Primera orden <= 12 días---------Esperar *Descuento< pedido *Total ordenes < mayor o igual que X --------Calcular descuento *Hacer pedido *No descuento ---------------------Hacer pedido 5.2.7 Descripción lógica de una entidad externa Para la entidad Proveedores la plantilla correspondiente sería la siguiente: ___________________________________________________________________ Entidad Externa : Nombre : Proveedores. Ref : p. Definición : Proveedores actuales de la empresa. Flujos de Datos : 7 - p Pedidos. p-3 Albaran. p - 11 Facturas. Volumen : Actualmente 25. Se espera llegar a 40. ___________________________________________________________________