Está en la página 1de 26

Página 1 de 26

Preguntas

1. ¿Cuáles eran las principales características del modelado clásico?

• Contiene especificaciones funcionales redactadas mediante documentos textuales.


• Requiere de una lectura completa del documento para comprender los elementos y
funcionalidades que componen al sistema.
• No permite el enfoque del analista en una determina parte del sistema.
• Puede contener especificaciones redundantes implicando un mayor esfuerzo para registrar
los cambios a través de revisiones completa.
• Puede presentar ambigüedades para la lectura del analista y desarrollador de la solución
generando un entregable no deseable para el usuario final.

2. Dé una breve descripción de DFD. ¿Cuál es la diferencia entre DFD y Diagrama de


flujo?

El DFD es una técnica para modelar sistemas que exhibe gráficamente las funciones del sistema, la
interacción de estas, las transformaciones de datos y el detalle de los datos que entran y los que salen,
entre otras. Dicho en forma resumida, el objetivo del DFD es el de desglosar aquella “Caja Negra” que
es un sistema al cual ingresan datos de entrada y genera una salida, enfocándose en cómo este
transforma los datos de entrada (y genera nuevos) hasta llegar a la salida de estos. Los diagramas de
flujo son modelos gráficos que muestran una serie de pasos secuenciales finito y con un objetivo
particular. Se llaman de esa forma porque el grafico tiene un sentido (hablando de dirección)
representado con flechas. La diferencia que tienen estos con los DFD es que en esas flechas, además,
viajan datos.

3. ¿Por qué los DFD evitan mostrar detalles de procedimientos?

Porque se correrían de su principal objetivo que es hacer una abstracción de las interacciones de los
diferentes procesos del sistema y también porque al especificar los procedimientos que se hacen con
la información resultaría difícil poder visualizar todo con claridad en el mismo gráfico. Los detalles se
aclaran y desarrollan mediante las especificaciones de procesos.

4. ¿Qué representa un almacenamiento en un DFD?

En un DFD, un almacenamiento representa aquel lugar donde van a persistir los datos. Por ejemplo,
se puede usar para representar dónde van a guardarse los datos de un préstamo en un sistema
bancario.
Página 2 de 26

5. ¿Cómo se interpreta un flujo de datos de un almacenamiento a un proceso?

Esto se interpreta como la lectura o consulta de uno o más datos de ese almacén por parte del proceso.
Por ejemplo, el proceso “Brindar préstamo” de un sistema bancario, seguramente va a leer del
almacén de datos donde persiste la información acerca de los antecedentes financieros del cliente.

6. ¿Cuáles son las principales interpretaciones de un flujo hacia un almacén?

Esto se interpreta como la modificación de los datos del almacén por parte del proceso. Por ejemplo,
el proceso “Crear cuenta bancaria” va a ir a agregar un nuevo número de cuenta bancaria al almacén
de datos donde persisten las mismas. ABMC.

7. ¿Cuál es el propósito de mostrar una entidad externa en un DFD?

El propósito de una entidad externa es brindar datos que vienen fuera del sistema y que se verán
transformados por el sistema mismo; o también, consumir los datos que fueron transformados por
el sistema.

8. ¿Cuál sería una buena regla para nombrar los procesos en un DFD?

Una buena manera de nombrar los procesos en un DFD es utilizar acciones que representen lo que
se va a hacer en ese proceso. No tiene por qué ser muy extenso mientras se muestre lo que va a
hacer ese proceso. Por ejemplo: “Anotar persona”, “Vaciar inventario”, “Modificar producto”, etc.

9. ¿Cuál sería la mala interpretación que probablemente les daría el usuario a los
números de las burbujas en un DFD?

Una mala interpretación que podrían tener los usuarios a la hora de ver los números en las burbujas
de los DFD es que piensen que son uno seguido del otro (secuenciales), es decir, que un proceso
continúe obligatoriamente después de otro basándonos en su número (proceso B continua del
proceso A = ERROR) ya que el número no representa una continuidad de uno y del otro.

10. ¿Por qué son importantes los DFD por niveles en el modelo de un sistema?

Los niveles de un DFD son importantes porque nos permiten saber cuál será el límite o alcance de
ese sistema. Por ejemplo, no es lo mismo un DFD de nivel 0 que muestra todo de una manera más
sencilla y da una mirada rápida de cómo interaccionan las entidades externas con un único proceso,
que, un DFD de nivel 1 que muestra todo mucho más detallado y se muestra muchos más elementos
que en el nivel 0.
Página 3 de 26

11. ¿Por qué no puede combinarse directamente dos almacenamientos mediante un


flujo de datos?

No se pueden combinar dos almacenamientos mediante un flujo de datos por que en los DFD solo
se permite la comunicación mediante procesos, cualquier otra combinación no se verá aceptada.

12. ¿Por qué no puede combinarse directamente un almacenamiento y una entidad


externa mediante un flujo de datos?

No se pueden combinar directamente por que en los DFD solo se permite la


combinación/comunicación mediante procesos, un almacenamiento y una entidad externa si no
tienen un proceso entre medio no podrán comunicarse,

13. ¿Es necesario que todas las partes de un sistema se dividan hasta el mismo nivel de
detalle? ¿Por qué?

Si, este proceso de descomposición debe continuar hasta que se alcance un nivel en el que un
proceso pueda ser descrito de forma sencilla y no ambigua. Estos procesos se denominan primitivos.

Es decir, todos deberían llegar hasta este punto, hasta este nivel de detalle.
Página 4 de 26

Parte Práctica

1. Dé tres ejemplos de:


i. Procesos.
ii. Flujos de datos.
iii. Almacenamientos.
iv. Entidades externas.

i. Procesos.
1. Crear caja de ahorro
2. Obtener recaudación
3. Autorizar crédito hipotecario

ii. Flujos de datos.


1. cod_afiliado
2. datos de auditoria = @cod_auditoría + fecha_inicio + fecha_finalizacion
3. datos de venta = @cod_venta + importe

iii. Almacenamientos.
1. Exámenes
2. Clientes
3. Servidores

iv. Entidades externas.


1. Cajero
2. Sistema de ventas minoristas
3. Mercadopago

2. Dé un ejemplo de un proceso que lee un almacenamiento.

El proceso “Crear caja de ahorro” lee del almacén de datos ‘Clientes’ el cod_cliente para poder
agregar un nuevo registro al almacén de datos ‘Cuentas’ con el cod_cliente + nom + ape + fecha_alta
y que éste devuelva el num_cuenta el cual luego se envía al cliente.
Página 5 de 26

3. Dé un ejemplo de un proceso que escribe en un almacenamiento.


El proceso “Inscribirse a materia” toma los datos del alumno para grabar en el almacén de datos
‘Materia’ los datos num_legajo + nom + ape + cod_materia.

4. Realizar el DFD que represente el proceso que sufre la información en la siguiente


descripción.

(De ser necesario completar narrativa con agregados que considere convenientes).

“Una biblioteca realiza préstamos de libros. El sistema de biblioteca controla, cuando llega un
usuario, si es o no socio; si no lo es, solo puede leer libros en sala, en cuyo caso controla la existencia
del libro y registra el préstamo para posteriores análisis estadísticos. Si es socio, puede llevarlo si
está disponible y si tiene todas las cuotas al día; en caso contrario solo puede verlos en sala. Controla
de devolución y penaliza a los socios que no la realizan cuando corresponde con una suspensión
temporaria de 3 días. Cuando realizan un pedido de un libro que no está en existencia en el catálogo,
lo registran para futuras compras...”.
Página 6 de 26
Página 7 de 26

Diccionario de Datos

Preguntas

1. ¿Qué es el diccionario de datos?


Los diccionarios de datos básicamente son una lista de los elementos de datos que usa el sistema. La
particularidad es que en los diccionarios cada uno de estos elementos tiene una definición precisa,
que sirve para que el lector del sistema pueda entender cada uno de los componentes de una forma
fácil y rápida. Algunos ejemplos de diccionarios pueden ser:
i) Sexo = [femenino|masculino], nos define los posibles valores que puede tener la
variable “Sexo” dentro del sistema.
ii) Tipo de cliente = [gobierno|industria|Universidad|otro], caso similar al anterior.

2. ¿Por qué es importante el diccionario de datos para el análisis de sistema?


Son muy importantes para que cualquier persona que quiera comprender el sistema, tenga toda la
información necesaria sobre las variables y parámetros que lo componen. Se esta forma, el lector
puede saber los valores posibles que admite cada variable con solo ver el diccionario. Es importante
cubrir la mayor cantidad de valores posibles que puede tomar nuestra variable o parámetro, de esta
manera nos aseguramos de que el lector tenga toda la información necesaria sobre el mismo.

3. En el diccionario de datos, ¿qué significa?

• “=”: Significa que una variable o parámetro “Está compuesta por” un valor específico
que se detalla a la derecha del símbolo. Ejemplo: Color (mi variable) = (está
compuesta por) [rojo|verde|amarillo] (los valores posibles que componen a mí
variable

• “+”: Significa “y”, esto quiere decir que podemos concatenar distintos valores
utilizando este símbolo. Ejemplo: A = B + C esto significa que la variable A está
compuesta por la variable B y la C.

• “( )”: “optativo”, significa que los valores encerrados por los paréntesis pueden estar
o no presentes en la variable. Ejemplo: nombre=primer_nombre +
(segundo_nombre) + apellido. Esto quiere decir que el nombre debe componerse
del primer nombre y el apellido, pero es opcional que se incluya el segundo nombre.

• “{ }”: “Iteración”, quiere decir que el elemento puede estar compuesto por múltiples
componentes. Ejemplo: compra = {articulo}, esto significa que una compra de
contener distintos artículos, esta no tiene límites a no ser que nosotros lo
definamos. Por ejemplo, podemos poner articulo = {vi:1;vf:5} y determinaremos que
solo podemos incluir entre 1 y 5 artículos.

• “[ / ]”: Significa que podemos seleccionar una de las alternativas posibles que
encierran estos símbolos. Ejemplos: vino = [blanco|tinto|rosado]
Página 8 de 26

Parte práctica

1. Dé un ejemplo de dato elemental.

Un dato elemental podría ser el id o identificador en un programa de gestión de personal. Este es un


dato único que serviría para identificar a cada persona. Si lo describimos resulta en:

Nombre: id
Descripción: Identificador de personal
Longitud: 4
Tipo: numérico
Dominio: id = {vi:0000; vf:9999}

2. Dé un ejemplo de dato opcional.

Un dato opcional podría ser la descripción de un producto dentro de un sistema de stock, ya que no
es un dato indispensable.

Nombre: descripcion
Descripción: descripción de un producto
Longitud: 30
Tipo: alfanumérico
Dominio: descripción = (descripción_del_producto)

3. ¿Cuáles son los significados de?

i) Identificación personal = nombre + (apellido materno) + apellido paterno

Significa que la identificación personal está compuesta del nombre, el apellido


materno y el apellido paterno. El nombre y el apellido paterno son obligatorios pero
el apellido materno es opcional.

ii) Domicilio = calle + ciudad + número + (departamento)

Significa que Domicilio está compuesto de la calle, la ciudad, el número y el


departamento. Calle, ciudad y número son obligatorios, pero departamento es
opcional.

4. De qué otra forma se puede escribir:

b) Datos = nombre + (e-mail)


Página 9 de 26

Podría escribirse con una iteración de 0 a 1, de esta forma quedaría así: Datos = nombre +
0{e-mail}1, donde el campo e-mail podría o no incluirse dentro de la definición de datos.

5. Dé un ejemplo de la notación de iteración.


Un ejemplo de notación de iteración puede ser: envio = dirección + código_postal +
cantidad_producto = {vi:1; vf:50} + importe. En este ejemplo detallamos la composición del
elemento “envio” y decimos que los elementos “dirección”, “código_postal” e “importe” son
obligatorios, pero “cantidad_producto” es obligatorio y presenta una iteración de valores entre 1 y
50.

6. Dé un ejemplo de construcción de selección.

Un ejemplo podría darse en un dato “Billete”, donde tengamos que seleccionar entre los distintos
valores que puede tener la moneda peso: billete=[10|20|50|100|200|500|1000]

7. Escriba una definición de diccionario de datos de la información que contiene su:


i) DNI

Nombre: Nombre
Descripción: Nombre completo del dueño del documento
Longitud: 30
Tipo: alfanumérico
Dominio: nombre = primer_nombre + (segundo_nombre)

Nombre: Apellido
Descripción: Apellido completo del dueño del documento
Longitud: 30
Tipo: alfanumérico
Dominio: apellido = apellido_paterno + (apellido_materno)

Nombre: Sexo
Descripción: sexo del dueño del documento
Longitud: 1
Tipo: alfanumérico
Dominio: sexo = [M | F]

Nombre: nacionalidad
Descripción: país de nacimiento del dueño del documento
Longitud: 10
Tipo: alfanumérico
Dominio: nacionalidad = país_de_nacimiento

Nombre: fecha_nacimiento
Descripción: Fecha de nacimiento del dueño del documento
Longitud: 11
Tipo: alfanumérico
Dominio: fecha_nacimiento = día={vi:01; vf=31} + mes={vi:ENE; vf:DIC} +
Página 10 de 26

año={vi:1890; vf:9999}

Nombre: fecha_emision
Descripción: Fecha de emision del documento
Longitud: 11
Tipo: alfanumérico
Dominio: fecha_emision = día={vi:01; vf=31} + mes={vi:ENE; vf:DIC} + año={vi:1890;
vf:9999}

Nombre: fecha_vencimiento
Descripción: Fecha de vencimiento del documento
Longitud: 11
Tipo: alfanumérico
Dominio: fecha_vencimiento = día={vi:01; vf=31} + mes={vi:ENE; vf:DIC} +
año={vi:1890; vf:9999}

Nombre: numero_tramite
Descripción: Numero identificador del trámite realizado
Longitud: 15
Tipo: numérico
Dominio: numero_tramite = {vi:000000000000000; vf:999999999999999}

Nombre: numero_de_documento
Descripción: Numero identificador del documento
Longitud: 8
Tipo: numérico
Dominio: numero_de_documento = {vi:00000000; vf:99999999}

Nombre: domicilio
Descripción: Domicilio del dueño del documento
Longitud: 50
Tipo: alfanumérico
Dominio: domicilio = calle + altura={vi:1; vf:999999} + barrio + localidad + provincia

Nombre: lugar_de_nacimiento
Descripción: Domicilio del dueño del documento
Longitud: 20
Tipo: alfanumérico
Dominio: lugar_de_nacimiento = localidad

ii) Licencia de conducir

Nombre: Nombre
Descripción: Nombre completo del dueño del documento
Longitud: 30
Tipo: alfanumérico
Dominio: nombre = primer_nombre + (segundo_nombre)

Nombre: Apellido
Descripción: Apellido completo del dueño del documento
Longitud: 30
Página 11 de 26

Tipo: alfanumérico
Dominio: apellido = apellido_paterno + (apellido_materno)

Nombre: nacionalidad
Descripción: país de nacimiento del dueño del documento
Longitud: 10
Tipo: alfanumérico
Dominio: nacionalidad = país_de_nacimiento

Nombre: fecha_nacimiento
Descripción: Fecha de nacimiento del dueño del documento
Longitud: 11
Tipo: alfanumérico
Dominio: fecha_nacimiento = día={vi:01; vf=31} + mes={vi:ENE; vf:DIC}
+(año={vi:1890; vf:9999}

Nombre: fecha_emision
Descripción: Fecha de emisión del documento
Longitud: 11
Tipo: alfanumérico
Dominio: fecha_emision = día={vi:01; vf=31} + mes={vi:ENE; vf:DIC} + año={vi:1890;
vf:9999}

Nombre: fecha_vencimiento
Descripción: Fecha de vencimiento del documento
Longitud: 11
Tipo: alfanumérico
Dominio: fecha_vencimiento = día={vi:01; vf=31} + mes={vi:ENE; vf:DIC} +
año={vi:1890; vf:9999}

Nombre: control_interno
Descripción: Numero interno de verificación del trámite realizado
Longitud: 15
Tipo: numérico
Dominio: control_interno = {vi:000000000000000; vf:999999999999999}

Nombre: categoria
Descripción: Tipo de trámite realizado
Longitud: 10
Tipo: alfanumérico
Dominio: categoria = tipo_de_tramite

Nombre: domicilio
Descripción: Domicilio del dueño del documento
Longitud: 25
Tipo: alfanumérico
Dominio: domicilio = calle + altura={vi:1; vf:999999} + barrio

Nombre: clase
Descripción: Categorías habilitadas por el documento
Longitud: 30
Página 12 de 26

Tipo: alfanumérico
Dominio: clase = letra + identificador = {vi:1; vf:4}

Nombre: donante
Descripción: Especifica si la persona es donante de órganos
Longitud: 2
Tipo: booleano
Dominio: donante=[SI|NO]

Nombre: grupo_y_factor
Descripción: Tipo de sangre de la persona
Longitud: 10
Tipo: alfanumérico
Dominio: grupo_y_factor = factor_sanguineo=[A|B|AB|O] +
tipo=[POSITIVO|NEGATIVO]

Nombre: restricciones
Descripción: restricciones del conductor
Longitud: 50
Tipo: alfanumérico
Dominio: (restricciones = conjunto_de_restricciones)

iii) Libreta universitaria

Nombre: documento
Descripción: Documento Nacional de Identidad del alumno
Longitud: 8
Tipo: numérico
Dominio: documento = {vi:00000000; vf:99999999}

Nombre: Nombre_completo
Descripción: Nombre completo del alumno
Longitud: 60
Tipo: alfanumérico
Dominio: nombre = primer_nombre + (segundo_nombre) + apellido_paterno +
(apellido_materno)

Nombre: facultad
Descripción: Facultad a la que pertenece el alumno
Longitud: 25
Tipo: alfanumérico
Dominio: facultad = nombre_de_la_facultad

Nombre: telefono
Descripción: teléfono de contacto del alumno
Longitud: 10
Tipo: numérico
Dominio: teléfono = característica + numero_de_telefono

Nombre: domicilio
Descripción: Domicilio del dueño del alumno
Página 13 de 26

Longitud: 20
Tipo: alfanumérico
Dominio: domicilio = calle + altura={vi:1; vf:999999}

Nombre: matricula
Descripción: identificador interno de la universidad
Longitud: 12
Tipo: alfanumérico
Dominio: matricula = código_interno

Nombre: carrera
Descripción: carrera que cursa el alumno
Longitud: 40
Tipo: alfanumérico
Dominio: carrera = nombre_de_la_carrera

8. Utilizando la notación de Diccionario de Datos, Identificar los elementos y las


estructuras de datos existentes en la siguiente descripción.

“En una empresa de alquiler de vehículos se pueden alquilar vehículos de varios tipos y formas.
Cuando se alquila un coche se formaliza un contrato en el que aparece un número de contrato
(formado por un código de dos letras y seis dígitos), la fecha de contratación del vehículo, los datos
del cliente, datos del vehículo, datos del tipo de alquiler, de la forma de pago (se pueden realizar los
pagos de diversas maneras) y unas observaciones. Los clientes que pueden alquilar los vehículos son
personas individuales o empresas. En el caso que sea una persona individual deberá aportar los
datos personales: nombre (10 caracteres), apellidos (30 caracteres), datos del carné de conducir,
dirección (30 caracteres), teléfono (número y extensión en el caso que sea necesario). El número de
teléfono está formado por 9 dígitos y la extensión por cuatro. Si es una empresa deberá indicar el
nombre de la empresa (25 caracteres), nombre de la persona de contacto (40 caracteres), teléfonos
(número y extensión, si es necesario) y fax, si lo tuviera. En ambos casos se puede alquilar más de un
vehículo. No es necesario para el alquiler de un vehículo que la persona que lo contrate posea carné
de conducir. Si no tiene carné de conducir se debe aportar el carné de identidad (número de 9
dígitos con el formato 99.999.999, un guión y una letra). Si tiene carné de conducir habrá que indicar
aparte del número (9 dígitos) y del tipo (A1, A2, B1,B2,C1,D,E), la fecha de caducidad. En el caso que
la persona que contrate el alquiler del vehículo no disponga de carné o no tenga el carné apropiado
para el tipo de vehículo contratado habrá que indicar en observaciones (100 caracteres) que la
empresa no se hace responsable ante cualquier tipo de circunstancia producida. Los vehículos que
existen en la empresa son de cuatro tipos: coches de lujo (L), turismos (T), camiones (C) y
motocicletas (M). Los vehículos podrán ser alquilados con conductor (C) o sin él (SC).
Independientemente de que se alquile con conductor o sin él, se podrá alquilar por días (D), por
kilómetros (K) o por ambos conceptos (A). Las formas de pago son al contado, por tarjeta de crédito
o combinación de ambos. Si se abona con tarjeta de crédito habrá que indicar la clase de tarjeta
(VISA, RED 6000, AMERICAN EXPRESS, DINERS CLUB) y el número de la misma (9999-9999-9999-
9999). “

Datos Elementales

alquiler de vehículos: Estructura de datos


Página 14 de 26

Nombre: num_contrato
Descripción: número de contrato para identificar la operación
Tipo: alfanumérico
Longitud: 8
Dominio: num_contrato = {vi:AA000000; vf:ZZ999999}

Nombre: fecha_emision
Descripción: Fecha en la que se contrata el rodado
Tipo: alfanumérico
Longitud: 10
Dominio: fecha_emision = día={vi:01; vf:31} + mes={vi:ENE; vf:DIC} + año={vi:1890; vf:9999}

Nombre: nom_personal
Descripción: Nombre del individuo que alquile el rodado
Tipo: alfanumérico
Longitud: 10
Dominio: nom_personal = primer_nombre + (segundo_nombre)

Nombre: apellido
Descripción: Apellido del individuo que alquile el rodado
Tipo: alfanumérico
Longitud: 30
Dominio: apellido= apellido

Nombre: direccion
Descripción: Dirección del individuo que alquile el rodado
Tipo: alfanumérico
Longitud: 30
Dominio: direccion = nombre_calle + altura

Nombre: num_cel
Descripción: Número celular del individuo que alquile el rodado
Tipo: numérico
Longitud: 9
Dominio: num_cel = {vi:000000000; vf:999999999}

Nombre: cod_area
Descripción: Código de área de un número celular
Tipo: numérico
Longitud: 4
Dominio: (cod_area = {vi:+000; vf:+999})

Nombre: nom_empresa
Descripción: Nombre de la empresa que alquile el rodado
Página 15 de 26

Tipo: alfanumérico
Longitud: 25
Dominio: nom_empresa= razon_social

Nombre: nom_contacto
Descripción: Nombre de contacto de la empresa que alquile el rodado
Tipo: alfanumérico
Longitud: 40
Dominio: nom_contacto= nombre_persona + (apellido_persona)

Nombre: fax
Descripción: Número de fax de la empresa
Tipo: numérico
Longitud: 9
Dominio: (fax = {vi:000000000; vf:999999999})

Nombre: nro_carnet
Descripción: Número de carnet de conducir
Tipo: numérico
Longitud: 9
Dominio: (fax = {vi:000000000; vf:999999999})

Nombre: tipo_carnet
Descripción: Tipo de carnet de conducir
Tipo: alfanumérico
Longitud: 2
Dominio: (tipo_carnet= [A1 | A2 | B1 | B2 | C1 | D | E])

Nombre: fec_caducidad_carnet
Descripción: Fecha en la que vence el carnet de conducir
Tipo: alfanumérico
Longitud: 10
Dominio: (fec_caducidad_carnet= día={vi:01; vf=31} + mes={vi:ENE; vf:DIC} + año={vi:2020; vf:9999})

Nombre: dni
Descripción: Documento Nacional de Identidad
Tipo: numérico
Longitud: 10
Dominio: (fax = {vi:0000000001; vf:9999999999})

Nombre: observaciones
Descripción: Se ponen comentarios acerca de la transacción
Tipo: alfanumérico
Longitud: 100
Dominio: observaciones = comentarios_alquiler
Página 16 de 26

Nombre: tipo_vehiculo
Descripción: Tipo de vehículo a alquilar
Tipo: alfanumérico
Longitud: 1
Dominio: (tipo_vehiculo= [ L | T| C | M])

Nombre: tiene_conductor
Descripción: Define si va a tener conductor el rodado
Tipo: booleano
Longitud: 2
Dominio: (tiene_conductor= [S | SC])

Nombre: forma_alquiler
Descripción: Forma en la que se alquila el rodado
Tipo: alfanumérico
Longitud: 1
Dominio: (forma_alquiler= [ D | K | A ])
Nombre: forma_pago
Descripción: Forma en la que se paga el alquiler
Tipo: alfanumérico
Longitud: 2
Dominio: (forma_pago= [ CO | CR | A ])

Nombre: nombre_tarjeta
Descripción: Nombre de la tarjeta de crédito
Tipo: alfanumérico
Longitud: 30
Dominio: nombre_tarjeta= nombre de la tarjeta

Nombre: numero_tarjeta
Descripción: Nombre de la tarjeta de crédito
Tipo: alfanumérico
Longitud: 19 9999-9999-9999-9999
Dominio: (numero_tarjeta = {vi:0000-0000-0000-0000; vf:9999-9999-9999-9999})

Nombre: cant_vehiculos_alquilados
Descripción: Cantidad de vehículos alquilados en la transacción
Tipo: numérico
Longitud: 3
Dominio: cant_vehiculos_alquilados = cant_vehiculos_alquilados

Nombre: telefono
Descripción: Número de teléfono con su código de área
Tipo: alfanumérico
Página 17 de 26

Longitud: 13
Dominio: telefono= (cod_area) + num_cel

Nombre: carnet_conducir
Descripción: Son los datos que componen el carnet de conducir
Tipo: alfanumérico
Longitud: 21
Dominio: carnet_conducir= nro_carne + tipo_carne + fec_caducidad_carne

Nombre: carnet_identidad
Descripción: Es el dni con un guión y un número
Tipo: alfanumérico
Longitud: 12
Dominio: carnet_identidad= dni + char(1) + numeric (1)

Nombre: carnet_conducir_o_identidad
Descripción: Es el dni con un guión y un número
Tipo: alfanumérico
Longitud: 121
Dominio:carnet_conducir_o_identidad= [carnet_conducir | carnet_identidad + observaciones]
Nombre: datos_persona
Descripción: son los datos de un particular que alquila el rodado
Tipo: alfanumérico
Longitud: 204
Dominio:datos_persona= nom_personal + apellido + carnet_conducir_o_identidad + direccion +
telefono

Nombre: datos_empresa
Descripción: son los datos de la empresa que alquila el rodado
Tipo: alfanumérico
Longitud: 87
Dominio: datos_empresa= nom_empresa + nom_contacto + telefono + (fax)

Nombre: datos_cliente
Descripción: son los datos del cliente que alquila el rodado
Tipo: alfanumérico
Longitud: 204
Dominio: datos_cliente= [datos_persona | datos_empresa]

Nombre: datos_vehiculo
Descripción: son los datos de la forma de alquiler
Tipo: alfanumérico
Longitud: 6
Dominio: datos_alquiler= tipo_vehiculo + tiene_conductor + cant_vehiculos_alquilados
Página 18 de 26

Nombre: dias_alquiler
Descripción: son los días que el rodado va a estar alquilado
Tipo: numerico
Longitud: 3
Dominio: (dias_alquiler= {vi:000; vf:999})

Nombre: km_alquiler
Descripción: son los kilómetros que el rodado va a tener disponibles durante el alquiler
Tipo: numerico
Longitud: 3
Dominio: (km_alquiler= {vi:000; vf:999})

Nombre: datos_alquiler
Descripción: son los datos de la forma de alquiler
Tipo: alfanumérico
Longitud: 7
Dominio: datos_alquiler= forma_alquiler + [dias_alquiler + (km_alquiler) | (dias_alquiler) +
km_alquiler ]

Nombre: datos_pago
Descripción: son los datos de la forma de pago
Tipo: alfanumérico
Longitud: 51
Dominio: datos_pago= forma_pago+ (nombre_tarjeta + numero_tarjeta)

Nombre: datos_transaccion
Descripción: son los datos de la transacción final
Tipo: alfanumérico
Longitud: 386
Dominio: datos_transaccion= num_contrato + fecha_emision + datos_cliente + datos_vehiculo +
datos_alquiler + datos_pago + observaciones

Cuando se alquila un coche se formaliza un contrato en el que aparece un número de contrato


(formado por un código de dos letras y seis dígitos), la fecha de contratación del vehículo, los datos
del cliente, datos del vehículo, datos del tipo de alquiler, de la forma de pago (se pueden realizar los
pagos de diversas maneras) y unas observaciones.
Página 19 de 26

Especificación de procesos

Parte teórica

1. ¿Qué es una especificación de proceso? ¿Cuáles son sus objetivos?

La especificación de procesos es una definición clara y precisa del funcionamiento del


sistema. El objetivo de esta es que todos los trabajos que se hagan en el sistema (ya sea de
desarrollo, mantenimiento, etc.) respeten la especificación, así evitar problemas a futuros.

2. ¿Debe un proyecto de desarrollo de sistemas utilizar una sola herramienta para las
especificaciones de proceso? ¿Por qué?

No necesariamente, si el fin es mostrar las interacciones entre los procesos no es tan


importante cuantas herramientas se utilicen.

3. ¿Cuáles burbujas de un DFD requieren especificación de proceso?

Las burbujas que requieren una especificación son las de procesos primitivos.

4. ¿Cuál es el principal inconveniente del lenguaje natural para la especificación de


procesos?
El lenguaje natural es impreciso, limitado y contiene redundancias, esto puede resultar en que la
especificación de procesos se transforme en algo sin sentido o incluso puede provocar errores de
diseño que lleven el proyecto al fracaso. El lenguaje natural no es capaz de describir las numerosas
acciones consecutivas que componen un sistema sin producir ambigüedades.

5. ¿Cuál es la principal ventaja del lenguaje procedimental para la especificación de


procesos?

El lenguaje procedimental o pseudocódigo tiene una sintaxis menos rígida que el lenguaje
convencional, es una combinación entre el lenguaje de programación y el lenguaje natural, esto
permite que sea mucho más sencillo codificar cada parte del sistema luego de su diseño. Además,
utiliza menor cantidad de espacio para expresar una idea. El objetivo principal de su implementación
es lograr detallar el funcionamiento de un proceso de una forma simple, realizando la menor
cantidad de ambigüedades posibles y logrando que este se comprenda de una forma clara.

6. ¿Cuáles son las estructuras que utiliza el lenguaje procedimental (pseudocódigo)?

La estructura para utilizar el lenguaje procedimental es la siguiente:


i) Para comenzar hay que usar la palabra clave “Proceso”, “Algoritmo” o “Programa”
seguido por el nombre del proceso que detallaremos.
Página 20 de 26

ii) Luego continuamos con la secuencia de instrucciones del proceso. Estas se van a
ejecutar de forma lineal y en el orden que las iremos detallando.
iii) Dentro de cada proceso vamos a tener una serie de variables y parámetros que
pueden ser:
1) Parámetros de entrada: Son los que el proceso espera recibir para realizar
sus funciones. A esto también se lo conoce como Lectura de datos.
2) Variables de salida: Es el resultado del proceso, lo que entrega al usuario o al
proceso que las esté esperando. A esto también se lo denomina escritura o
salida de datos.
3) Variables internas del proceso: Estas son variables internas del proceso que
se utilizan para llevar a cabo ciertas funciones específicas. Estos pueden ser
acumuladores, contadores o variables simples.
iv) Es útil usar condicionales para evaluar determinados resultados o expresiones y así
realizar acciones puntuales.
v) También podemos usar iteraciones para generar una secuencia de operaciones en
forma repetida.
vi) Otra herramienta muy útil es la utilización de funciones, estas sirven para
descomponer tareas más complejas en varias partes que puede ser utilizadas a lo
largo de todo el proceso.

7. ¿Cuáles son las principales características del árbol de decisión?

Las características principales de los árboles de decisiones es que están compuestos por una
raíz principal en la que se va dividendo en distintas condiciones hasta llegar a la condición
final, una vez se cumpla cierta condición se generará una acción correspondiente.

8. ¿Cuáles son las principales características de la tabla de decisión?

Sus características principales son el uso de las acciones y condiciones, pero divididas en
sub-cuadros, estos, muestran distintas posibilidades. Por parte de las acciones se las
identifica en un sub-cuadro y en otro se muestras las acciones seleccionadas. Por otro lado,
en las condiciones se identifican las distintas condiciones y se muestran todas las
combinaciones posibles de cada condición (utilizando un método de V o F).

9. ¿En qué casos utilizaría cada una de las herramientas estudiadas?

Para el caso de un árbol de decisión lo utilizaría para la búsqueda binaria en el cual el árbol se
dividiría en dos partes donde los números más pequeños de su nodo superior se agregarían a la
izquierda y los de mayor tamaño a la derecha. Por otra parte, las tablas de decisión las utilizaría para
procesos de pago y que muestre las distintas condiciones en base a que pagó se usa con su
respectivo resultado.
Página 21 de 26

Parte práctica

1. Proponga un ejemplo de proceso y especifíquelo primeramente en lenguaje


natural y luego con:
i) Pseudocódigo.
ii) Árbol de decisión.
iii) Tabla de decisión.

Desde Net Systems se necesita un sistema para poder contratar personal idóneo que se ajuste a la
búsqueda de un sys admin. El sistema recibirá los datos del candidato (Nombre, Apellido y Edad) y
las notas de los exámenes tanto de Linux como de Windows. En base a los datos obtenidos se
verificarán sus skills. Los skills se definen en base a sus notas. Si la nota es mayor a 8, se considera
que el candidato tiene skills en dicho sistema operativo. El candidato debe ser mayor de 30 años
(preferentemente) tener skills en Linux y en Windows (deseable). Si el candidato no tiene skills en
Linux pero sí las tiene en Windows, también será contratado. En caso de que el candidato sea menor
de 30 años, debe tener skills en Linux (excluyente). En todos los demás casos, el candidato no será
contratado. Todos los candidatos que realizaron exámenes se registran en una lista de curriculums y
se archivan en la empresa. En caso de que el candidato sea contratado, será dado de alta como
empleado en nuestro sistema, creando un nuevo número de legajo e indicando la fecha en la que se
dió de alta. Se le informará al nuevo empleado su número de legajo y su fecha de inicio laboral.
Página 22 de 26

i) Pseudocódigo.

Almacenamientos

EXAMENES = @cod_candidato + nota_linux + nota_windows


CURRICULUMS = @cod_candidato + nom + ape + edad + fecha_entrevista
EMPLEADOS = @num_legajo + nom + ape + edad + fecha_ingreso + fecha_inicio

Flujos de datos

datos de candidato = nom + ape + edad


exámenes = nota_linux + nota_windows
datos de entrevista = @cod_candidato + nom + ape
datos de empleado = nom + ape + edad + fecha_ingreso
confirmación = @num_legajo + fecha_ingreso + fecha_inicio

PSEUDOCODIGO

Contratar empleado

Inicio
INGRESO nom + ape + edad de Candidato
LEO nota_linux + nota_windows de Exámenes
*Si nota_linux >=8 || edad >30 && nota_linux >=6 && nota_linux <8 && nota_windows >=8
GRABO nom + ape + edad + fecha_ingreso en Empleados
fecha_ingreso = “Fecha actual”
fecha_inicio = “Fecha actual” + 7 días
LEO num_legajo de Empleados
GRABO cod_candidato + nom + ape en Curriculums
MUESTRO num_legajo + fecha_ingreso + fecha_inicio
Fin

ii) Árbol de decisión.


Página 23 de 26

iii) Tabla de decisión.

2. Especificar mediante pseudocódigo los siguientes procesos, describirlos


inicialmente en lenguaje natural (hacer las consideraciones que crea
convenientes):
iv) Prestar libro.
v) Realizar factura.
vi) Cobrar cuotas.

i) Prestar libro.

En una biblioteca se realizan prestamos de libros. El cliente debe ingresar su nombre, apellido y libro
que desea. Se asume que el cliente está cargado en el sistema dado que, si no lo estuviera, no podría
realizar una solicitud. Se valida el código del cliente y el código del libro que desea llevar en
comodato. En base a estos datos, se registra la fecha en la cual se lleva el libro en comodato y se
informa que el mismo debe ser devuelto exactamente 7 días después de la solicitud.

Almacenamientos

CLIENTES = @cod_cliente + nom + ape


Página 24 de 26

LIBROS = @cod_libro + nom_libro


COMODATOS = @cod_solicitud + @cod_cliente + fecha_solicitud + fecha_devolucion

Flujos de datos

datos de solicitud: nom + ape + nom_libro


comodato : @cod_cliente + @cod_libro + fecha_solicitud + fecha_devolucion
informe de comodato: nom + ape + nom_libro + fecha_solicitud + fecha_devolucion

PSEUDOCODIGO

Prestar libro

Inicio
INGRESO nom + ape de Cliente
LEO cod_cliente de Clientes
LEO cod_libro de libros
GRABO cod_cliente + cod_libro + fecha_solicitud + fecha_devolucion en Comodatos
fecha_solicitud = “Fecha actual”
fecha_devolucion = “Fecha actual” + 7 días
MUESTRO nom + ape + nom_libro + fecha_solicitud + fecha_devolucion
Fin

ii) Realizar factura.

En una casa de electrodomésticos, se cuenta con un sistema de ventas en el cual, al momento del
pago, el cajero debe ingresar el código de pedido. Se debe validar dicho código de pedido y extraer
la información del código de cliente y el importe de la venta. Una vez obtenidos estos datos, se
registra la venta informando código de pedido, código de cliente, importe, fecha y hora de venta. Se
debe realizar una factura e informar al cajero el código de venta generado y todos los datos
nombrados anteriormente.

Almacenamientos
Página 25 de 26

PEDIDOS = @cod_pedido + @cod_cliente + importe


VENTAS = @cod_venta + @cod_pedido + @cod_cliente + importe + fecha_venta +
hora_venta

Flujos de datos

datos de pedido: @cod_cliente + importe


venta: @cod_cliente + @cod_pedido + importe + fecha_venta + hora_venta
factura: @cod_venta + fecha_venta + hora_venta + importe

PSEUDOCODIGO

Realizar factura

Inicio
INGRESO cod_pedido de Cajero
LEO cod_cliente + importe de Pedidos
GRABO cod_cliente + cod_pedido + importe + fecha_venta + hora_venta en Ventas
cod_cliente = cod_cliente
cod_pedido = cod_pedido
importe = importe
fecha_venta = “Fecha actual”
hora_venta = “Hora actual”
MUESTRO cod_venta + fecha_venta + hora_venta + importe
Fin

iii) Cobrar cuotas.

En un club de fútbol, todos los meses, los afiliados deben pagar sus cuotas. Para ello, el afiliado debe
ingresar su nombre y apellido. Se validará el código de afiliado, el mes que debe abonar y el importe
de la cuota. En base a esta información, se registrará el pago de la cuota detallando la fecha de pago
de la misma y se le brinda al afiliado una confirmación del pago.

Almacenamientos
Página 26 de 26

AFILIADOS = @cod_afiliado + nom + ape


CUOTAS = @cod_afiliado + nro_mes + fecha_pago + importe

Flujos de datos

Datos del cliente: nom + ape


Datos de cuota = nro_mes + importe
Confirmación: nom + ape + importe + fecha_pago

PSEUDOCODIGO

Cobrar cuota

Inicio
INGRESO nom + ape de Afiliado
LEO cod_afliliado de Afiliados
LEO nro_mes + importe de Cuotas
GRABO fecha_pago en Cuotas
fecha_pago = “Fecha actual”
MUESTRO nom + ape + importe + fecha_pago
Fin

También podría gustarte