Universidad Veracruzana Facultad de Estadística e Informática
Sistema de control de una ferretería Ingeniería de Software I Profesor: Fredy Castañeda Sánchez Elizabeth Hernández López
30 de Mayo del 2014
Contenido INTRODUCCIÓN ............................................................................................................. 3 MODELO AMBIENTAL .................................................................................................... 4 Declaración de propósitos ............................................................................................ 4 DFD de contexto .......................................................................................................... 4 Lista de acontecimientos .............................................................................................. 5 MODELO DE COMPORTAMIENTO................................................................................ 6 Diagrama de flujo de datos nivel 0 ............................................................................... 6 Diagrama de flujo de datos nivel 1 ............................................................................... 8 Diagrama de entidad-relación .................................................................................... 11 CASOS DE PRUEBA DEL SISTEMA ............................................................................ 12 Acceso al sistema ...................................................................................................... 12 Registro de clientes .................................................................................................... 13 Registro de productos ................................................................................................ 15 Registro de empleados .............................................................................................. 16 Realizar venta ............................................................................................................ 19 MÉTRICA DE ANÁLISIS ............................................................................................... 25 Puntos de función....................................................................................................... 25 Métrica Bang .............................................................................................................. 27 MODELOS DE DISEÑO ................................................................................................ 28 Modelo de procesador ................................................................................................ 28 MODELO DE IMPLANTACIÓN DE PROGRAMAS ....................................................... 29 Diagramas de estructura ............................................................................................ 29 Módulo empleado.................................................................................................... 29 Módulo administrador.............................................................................................. 30 Pseudocódigo............................................................................................................. 31 Consultar inventario ................................................................................................ 31 Plan de prueba de integración.................................................................................... 32 MÉTRICAS DE DISEÑO ............................................................................................... 33 Arquitectónicas ........................................................................................................... 33 Complejidad total .................................................................................................... 34 Complejidad relativa (CRS) ..................................................................................... 34 Página 1 de 47
CONCLUSIÓN ............................................................................................................... 35 APÉNDICES .................................................................................................................. 36 Diccionario de datos ................................................................................................... 36 Manual preliminar (modelo de implantación del usuario) ........................................... 39 Funcionalidades: ..................................................................................................... 39 Descripción de las ventanas: .................................................................................. 39 Posibles fallas: ........................................................................................................ 47
Página 2 de 47
INTRODUCCIÓN Para elaborar el siguiente proyecto se parte de la necesidad de realizar un sistema para una ferretería, con la finalidad de dar una solución a los problemas que surgen al realizar los procesos de venta de forma manual. Los objetivos del sistema son: automatizar los procesos, llevar un registro de sus clientes y empleados, llevar un control eficiente del inventario, generar reportes con información que ayude a la toma de decisiones para mejorar el proceso de venta, llevar el control de sus ingresos, y con ello potenciar el proceso de administración de la microempresa. El presente documento se estructura de la siguiente manera: un modelo ambiental, modelo de comportamiento, casos de prueba del sistema, métricas de análisis, modelo de diseño, modelo de implantación de programas, métricas de diseño y un apéndice el cual se compone de un diccionario de datos así como de una manual preliminar de usuario.
Página 3 de 47
MODELO AMBIENTAL Declaración de propósitos
Una ferretería solicita un sistema que lleve el control de los inventarios de sus productos así como el costo de almacén y precio de venta de dichos productos, el control de sus clientes y empleados. También llevará un registro de las ventas que se realizan durante el día y controlará los ingresos de la ferretería. El sistema emitirá los siguientes documentos: notas, reportes de los clientes, reportes de los empleados, reportes del inventario, reportes de las ventas y reportes de ingresos.
DFD de contexto
Página 4 de 47
Lista de acontecimientos
Empleado Actualizar inventario
El empleado registra un producto El empleado modifica los datos del producto El empleado consulta inventario
Actualizar cliente
El empleado registra un cliente El empleado modifica los datos del cliente El empleado consulta datos del cliente El empleado da de baja un cliente
Realizar venta
El empleado registra la venta El empleado actualiza inventario El empleado genera la nota de venta
Administrador Actualizar empleados
El administrador registra un empleado El administrador modifica los datos del empleado El administrador consulta datos del empleado El administrador da de baja un empleado
Consultar reporte
El administrador consulta el reporte de clientes El administrador consulta el reporte de empleados El administrador consulta el reporte de ventas El administrador consulta el reporte de inventario
Página 5 de 47
MODELO DE COMPORTAMIENTO Diagrama de flujo de datos nivel 0
Página 6 de 47
Página 7 de 47
Diagrama de flujo de datos nivel 1
Página 8 de 47
Página 9 de 47
Página 10 de 47
Diagrama de entidad-relación
Página 11 de 47
CASOS DE PRUEBA DEL SISTEMA Acceso al sistema
Variable Tipo Usuario Contraseña No 1 2 3
4
5
6
7
8
9
10
Entradas
Dominio {Caracteres} {Dígitos}{Caracteres} {Dígitos}{Caracteres}
Condiciones de entrada Tipo=”Administrador” Se valida tipo de usuario Tipo=”Empleado” Se valida tipo de usuario Usuario=”RMM023” Existe usuario y Contraseña=”Azvrt123 contraseña en la ” base de datos Usuario=”Rmm789” Existe usuario y Contraseña=”AIVRT12 contraseña en la 3” base de datos Usuario=”R9M1m2” Existe usuario y Contraseña=”bnvdp12 contraseña en la 3” base de datos Usuario=”rmm456” No existe usuario Contraseña=”Azvrt123 o contraseña en la ” base de datos Usuario=”RMMrmm” No existe usuario Contraseña=”AIVRT12 o contraseña en la 3” base de datos Usuario=”012345” No existe usuario Contraseña=”bnvdp12 o contraseña en la 3” base de datos Usuario=”NPH1223” No existe usuario Contraseña=” zvrt123” o contraseña en la base de datos Usuario=”Ehl45” No existe usuario Contraseña=”tnvdp012 o contraseña en la 3” base de datos
Subdominio {A-Z} {a-z} {A-Z} {a-z} {0-9} {“”} {“ ”} {A-Z} {a-z} {0-9} {“”} {“ ”} Salida esperada Aceptado Aceptado “Bienvenido”
Condiciones de salida Continúa la autenticación Continúa la autenticación Se accede al sistema
“Bienvenido”
Se accede al sistema
“Bienvenido”
Se accede al sistema
“Error: usuario o contraseña no válido” “Error: usuario o contraseña no válido” “Error: usuario o contraseña no válido” “Error: usuario o contraseña no válido” “Error: usuario o contraseña no válido”
Vuelve a introducir usuario y contraseña Vuelve a introducir usuario y contraseña Vuelve a introducir usuario y contraseña Vuelve a introducir usuario y contraseña Vuelve a introducir usuario y contraseña
Página 12 de 47
Registro de clientes
Variable ID Nombre Ape_paterno Ape_materno Calle Numero Colonia Código_postal
Dominio [1…∞) {Caracteres} {Caracteres} {Caracteres} {Caracteres} {Dígitos} {Digito} {Caracteres} {Caracteres} [01000...99990]
Teléfono Correo
{Dígitos} {Caracteres} {Dígitos}
No
Entradas
11
Nombre=” ”
12 13
Nombre=”Alejandro 10” Nombre=”Ana Luz”
14
Apellido_paterno=” ”
15
Apellido_paterno=”123 4” Apellido_paterno= ”Martínez” Apellido_materno=” ”
Empleado ingresa apellido paterno Empleado ingresa apellido paterno Empleado ingresa apellido materno
20
Apellido_materno= ”Torres249” Apellido_materno= ”Martínez” Calle=” ”
Empleado ingresa apellido materno Empleado ingresa apellido materno Empleado ingresa la calle
21
Calle=”Av. Xalapa ”
Empleado ingresa la calle
16 17
18 19
Condiciones de entrada Empleado ingresa nombre Empleado ingresa nombre Empleado ingresa nombre Empleado ingresa apellido paterno
Subdominio [1…∞) {A-Z}{a-z}{0-9}{“”}{“ ”} {A-Z}{a-z}{0-9}{“”}{“ ”} {A-Z}{a-z}{0-9}{“”}{“ ”} {A-Z}{a-z}{0-9}{“”}{“ ”} {A-Z}{a-z}{0-9}{“”}{“ ”} {A-Z}{a-z}{0-9}{“”}{“ ”} (-∞, 00999) [01000, 99990] (99990, ∞) {A-Z}{a-z}{09}{“”}{“ ”} {A-Z}{a-z}{0-9}{“”}{“ ”} {A-Z}{a-z}{0-9}{“_”}{“”}{“ ”} Salida esperada
Condiciones de salida Vuelve a introducir nombre
“Error: no se admiten campos vacíos” ““Error: solo se Vuelve a introducir admiten letras” nombre “Cliente registrado” Ingresan datos a la base de datos “Error: no se Vuelve a introducir admiten campos apellido paterno vacíos” ““Error: solo se Vuelve a introducir admiten letras” apellido paterno “Cliente registrado” Ingresan datos a la base de datos “Error: no se Vuelve a introducir admiten campos apellido materno vacíos” “Error: solo se Vuelve a introducir admiten letras” apellido materno “Cliente registrado” Ingresan datos a la base de datos “Error: no se Vuelve a introducir admiten campos la dirección vacíos” “Cliente registrado” Ingresan datos a la base de datos Página 13 de 47
22
Número=” ”
Empleado ingresa el número
23
Número=”S/N”
24
Número=”135”
25
Colonia=” ”
Empleado ingresa el número Empleado ingresa el número Empleado ingresa la colonia
26 27
Colonia=”Emiliano Zapata” Código_postal=” ”
Empleado ingresa la colonia Empleado ingresa el código postal
28
Código_postal=”xcvb”
39
Código_postal=”00999 ” Código_postal=”01000 ” Teléfono=” ”
Empleado ingresa el código postal Empleado ingresa el código postal Empleado ingresa el código postal Empleado ingresa el teléfono
30 31
32
Teléfono=”22812345a z”
Empleado ingresa el teléfono
33
Teléfono=”550056”
Empleado ingresa el teléfono
34
Teléfono=”951001122 3” Correo= ”
[email protected]”
Empleado ingresa el teléfono Empleado ingresa el correo
36
Correo=” ”
Empleado ingresa el correo
37
Correo= ”1234@hotmail” Correo= ”
[email protected]”
Empleado ingresa el correo Empleado ingresa el correo
35
38
“Error: no se Vuelve a introducir admiten campos la dirección vacíos” “Cliente registrado” Ingresan datos a la base de datos “Cliente registrado” Ingresan datos a la base de datos “Error: no se Vuelve a introducir admiten campos la dirección vacíos” “Cliente registrado” Ingresan datos a la base de datos “Error: no se Vuelve a introducir admiten campos código postal vacíos” “Error: debe Vuelve a introducir introducir dígitos” código postal “Error: código Vuelve a introducir postal no válido” código postal “Cliente registrado” Ingresan datos a la base de datos “Error: no se Vuelve a introducir admiten campos el teléfono vacíos” “Error: debe Vuelve a introducir introducir un el teléfono número de teléfono” “Error: el teléfono Vuelve a introducir debe contener 10 el teléfono dígitos” “Cliente registrado” Ingresan datos a la base de datos “Error: el correo Vuelve a introducir debe contener el correo letras y dígitos” “Error: no se Vuelve a introducir admiten campos el correo vacíos” “Error: correo no Vuelve a introducir válido” el correo “Cliente registrado” Ingresan datos a la base de datos
Página 14 de 47
Registro de productos
Variable Código Nombre Marca Descripción Precio_almacén
Dominio [1…∞) {Caracteres} {Caracteres} {Caracteres} {Dígitos} [1… ∞)
Precio_venta
[1… ∞)
Existencia
[1… ∞)
No
Entradas
39
Nombre=” ”
40
Nombre=12345
41
Nombre=” Llave española 9/16”
42
Nombre=” Llave española”
43
Marca=” ”
44
Marca=”Truper”1234
45
Marca=”SURTEK”
46
Descripción=” ”
47
Descripción=” 1.10m x 1.02m” Precio_almacén=” ”
48
49
Precio_almacén=”cinc o pesos”
Condiciones de entrada Empleado ingresa el nombre del producto Empleado ingresa el nombre del producto Empleado ingresa el nombre del producto Empleado ingresa el nombre del producto Empleado ingresa la marca Empleado ingresa la marca Empleado ingresa la marca Empleado ingresa la descripción Empleado ingresa la descripción Empleado ingresa el precio de almacén Empleado ingresa el precio de
Subdominio [1…∞) {A-Z}{a-z}{0-9}{“”}{“ ”} {A-Z}{a-z}{0-9}{“”}{“ ”} {A-Z}{a-z}{0-9}{“”}{“ ”} (-∞,1] [1, ∞) {A-Z}{a-z}{09}{“”}{“ ”} (-∞,1] [1, ∞) {A-Z}{a-z}{09}{“”}{“ ”} (-∞,1] [1, ∞) {A-Z}{a-z}{09}{“”}{“ ”} Salida esperada “Error: no se admiten campos vacíos” “Error: solo se admiten letras”
Condiciones de salida Vuelve a introducir el nombre Vuelve a introducir el nombre
“Error: solo se admiten letras”
Vuelve a introducir el nombre
“Producto registrado”
Ingresan datos a la base de datos
“Error: no se admiten campos vacíos” “Error: solo se admiten letras” “Producto registrado” “Error: no se admiten campos vacíos” “Producto registrado” “Error: no se admiten campos vacíos” “Error: solo se admiten dígitos”
Vuelve a introducir la marca Vuelve a introducir la marca Ingresan datos a la base de datos Vuelve a introducir la descripción Ingresan datos a la base de datos Vuelve a introducir el precio de almacén Vuelve a introducir el precio de Página 15 de 47
almacén Empleado ingresa el precio de almacén Empleado ingresa el precio de almacén Empleado ingresa el precio de almacén El sistema calcula el precio de venta
50
Precio_almacén=” 90 pesos”
51
Precio_almacén=0
52
Precio_almacén=690
53
Precio_venta=” ”
54 55
Precio_venta=”treinta pesos” Precio_venta=0
El sistema calcula el precio de venta El sistema calcula el precio de venta
56
Precio_venta=560
57
Existencia=” ”
El sistema calcula el precio de venta Empleado ingresa la existencia
58
Existencia=”diez”
59
Existencia=0
60
Existencia=90
Empleado ingresa la existencia Empleado ingresa la existencia Empleado ingresa la existencia
“Error: solo se admiten dígitos” “Error: debe introducir un número válido” “Producto registrado” “Error: no se admiten campos vacíos” “Error: solo se admiten dígitos” “Error: debe introducir un número válido” “Producto registrado” “Error: no se admiten campos vacíos” “Error: solo se admiten dígitos” “Error: debe introducir un número válido” “Producto registrado”
almacén Vuelve a introducir el precio de almacén Vuelve a introducir el precio de almacén Ingresan datos a la base de datos Vuelve a introducir el precio de venta Vuelve a introducir el precio de venta Vuelve a introducir el precio de venta Ingresan datos a la base de datos Vuelve a introducir la existencia Vuelve a introducir la existencia Vuelve a introducir la existencia Ingresan datos a la base de datos
Registro de empleados
Variable ID Nombre Ape_paterno Ape_materno Calle Numero Colonia Código_postal Teléfono Correo
Dominio [1…∞) {Caracteres} {Caracteres} {Caracteres} {Caracteres} {Dígitos} {Digito} {Caracteres} {Caracteres} {01000... 99990} {Dígitos} {Caracteres} {Dígitos}
Subdominio [1…∞) {A-Z}{a-z}{0-9}{“”}{“ ”} {A-Z}{a-z}{0-9}{“”}{“ ”} {A-Z}{a-z}{0-9}{“”}{“ ”} {A-Z}{a-z}{0-9}{“”}{“ ”} {A-Z}{a-z}{0-9}{“”}{“ ”} {A-Z}{a-z}{0-9}{“”}{“ ”} {A-Z}{a-z}{0-9}{“”}{“ ”} {A-Z}{a-z}{0-9}{“”}{“ ”} {A-Z}{a-z}{0-9}{“_”}{“”}{“ ”} Página 16 de 47
Tipo Usuario Contraseña
{Caracteres} {Dígitos} {Caracteres} {Dígitos} {Caracteres}
No
Entradas
61
Nombre=” ”
62
Nombre=”234567”
63
Nombre=”José Luis”
64
Apellido_paterno=” ”
65
Apellido_paterno=”Pér ez456”
66
Apellido_paterno= ”Paz y Puente”
67
Apellido_materno=” ”
68
Apellido_materno= ”34249”
69
Apellido_materno= ”Carrillo”
70
Calle=” ”
71
Calle=” 5 de Febrero”
72
Número=” ”
73
Número=”S/N”
74
Número=”9”
75
Colonia=” ”
Condiciones de entrada Administrador ingresa el nombre Administrador ingresa el nombre Administrador ingresa el nombre Administrador ingresa el apellido paterno Administrador ingresa el apellido paterno Administrador ingresa el apellido paterno Administrador ingresa el apellido materno Administrador ingresa el apellido materno Administrador ingresa el apellido materno Administrador ingresa la calle Administrador ingresa la calle Administrador ingresa el número Administrador ingresa el número Administrador ingresa el número Administrador ingresa la colonia
{A-Z} {a-z} {A-Z} {a-z} {0-9} {“”} {“ ”} {A-Z} {a-z} {0-9} {“”} {“ ”} Salida esperada “Error: no se admiten campos vacíos” ““Error: solo se admiten letras” “Empleado registrado” “Error: no se admiten campos vacíos” ““Error: solo se admiten letras”
Condiciones de salida Vuelve a introducir nombre Vuelve a introducir nombre Ingresan datos a la base de datos Vuelve a introducir apellido paterno Vuelve a introducir apellido paterno
“Empleado registrado”
Ingresan datos a la base de datos
“Error: no se admiten campos vacíos” “Error: solo se admiten letras”
Vuelve a introducir apellido materno
“Empleado registrado”
Ingresan datos a la base de datos
“Error: no se admiten campos vacíos” “Empleado registrado” “Error: no se admiten campos vacíos” “Empleado registrado” “Empleado registrado” “Error: no se admiten campos vacíos”
Vuelve a introducir la dirección
Vuelve a introducir apellido materno
Ingresan datos a la base de datos Vuelve a introducir la dirección Ingresan datos a la base de datos Ingresan datos a la base de datos Vuelve a introducir la dirección Página 17 de 47
76 77
Colonia=”Lomas del estadio” Código_postal=” ”
Administrador ingresa la colonia Administrador ingresa el código postal Administrador ingresa el código postal Administrador ingresa el código postal Administrador ingresa el código postal Administrador ingresa el teléfono
78
Código_postal= ”noventa y un mil cien”
79
Código_postal=”10000 0”
80
Código_postal=”91000 ”
81
Teléfono=” ”
82
Teléfono=”dos-dosocho-uno-cero-cerouno-uno-tres-tres”
Administrador ingresa el teléfono
83
Teléfono= ”228200113389”
Administrador ingresa el teléfono
84
Teléfono=”224001122 3” Correo= ”
[email protected]”
Administrador ingresa el teléfono Administrador ingresa el correo
86
Correo=” ”
Administrador ingresa el correo
87
Correo= ”eliza34@hotmail” Correo= ”
[email protected] ”
Administrador ingresa el correo Administrador ingresa el correo
85
88
“Empleado registrado” “Error: no se admiten campos vacíos” “Error: debe introducir dígitos”
Ingresan datos a la base de datos Vuelve a introducir código postal
“Error: código postal no válido”
Vuelve a introducir código postal
“Empleado registrado”
Ingresan datos a la base de datos
“Error: no se admiten campos vacíos” “Error: debe introducir un número de teléfono” “Error: el teléfono debe contener 10 dígitos” “Empleado registrado” “Error: el correo debe contener letras y dígitos” “Error: no se admiten campos vacíos” “Error: correo no válido” “Empleado registrado”
Vuelve a introducir el teléfono
Vuelve a introducir código postal
Vuelve a introducir el teléfono
Vuelve a introducir el teléfono Ingresan datos a la base de datos Vuelve a introducir el correo Vuelve a introducir el correo Vuelve a introducir el correo Ingresan datos a la base de datos
Página 18 de 47
Realizar venta
Variable Nom_cli ApeP_cli ApeM_cli Calle Numero Colonia Código_postal
Dominio {Caracteres} {Caracteres} {Caracteres} {Caracteres} {Dígitos} {Digito} {Caracteres} {Caracteres} [01000... 99990]
Tel_cli Cant_prod
{Dígitos} (1… ∞)
Nom_prod Descripción Precio_venta
{Caracteres} {Caracteres} {Dígitos} (1… ∞)
Precio_total
(1… ∞)
Subtotal
(1… ∞)
IVA Total
[16] (1… ∞)
No
Entradas
89
Nom_cli=””
90
Nom_cli=” ”
91
Nombre=”Alberto1”
Condiciones de entrada El nombre se encuentre en la base de datos o el empleado lo ingresa. El nombre se encuentre en la base de datos o el empleado lo ingresa. El nombre se encuentre en la base de datos o el empleado lo ingresa.
Subdominio {A-Z}{a-z}{0-9}{“”}{“ ”} {A-Z}{a-z}{0-9}{“”}{“ ”} {A-Z}{a-z}{0-9}{“”}{“ ”} {A-Z}{a-z}{0-9}{“”}{“ ”} {A-Z}{a-z}{0-9}{“”}{“ ”} {A-Z}{a-z}{0-9}{“”}{“ ”} (-∞, 00999) [01000, 99990] (99990, ∞) {A-Z}{a-z}{09}{“”}{“ ”} {A-Z}{a-z}{0-9}{“”}{“ ”} (-∞,1] [1, ∞) {A-Z}{a-z}{09}{“”}{“ ”} {A-Z}{a-z}{0-9}{“”}{“ ”} {A-Z}{a-z}{0-9}{“”}{“ ”} (-∞,1] [1, ∞) {A-Z}{a-z}{09}{“”}{“ ”} (-∞,1] [1, ∞) {A-Z}{a-z}{09}{“”}{“ ”} (-∞,1] [1, ∞) {A-Z}{a-z}{09}{“”}{“ ”} [16] (-∞,1] [1, ∞) {A-Z}{a-z}{09}{“”}{“ ”} Salida esperada “Error: no se admiten campos vacíos”
Condiciones de salida Vuelve a introducir nombre
“Error: no se admiten campos vacíos”
Vuelve a introducir nombre
““Error: solo se admiten letras”
Vuelve a introducir nombre
Página 19 de 47
92
Nombre=”Stephanie Yaretzi”
93
Apellido_paterno=””
94
Apellido_paterno=” ”
95
Apellido_paterno=”Lóp ez3”
96
Apellido_paterno= ”Sánchez”
97
Apellido_materno=””
98
Apellido_materno=” ”
99
Apellido_materno= ”Aguilar, ”
100 Apellido_materno= ”Aguilar”
El nombre se encuentre en la base de datos o el empleado lo ingresa. El apellido paterno se encuentre en la base de datos o el empleado lo ingresa. El apellido paterno se encuentre en la base de datos o el empleado lo ingresa. El apellido paterno se encuentre en la base de datos o el empleado lo ingresa. El apellido paterno se encuentre en la base de datos o el empleado lo ingresa. El apellido materno se encuentre en la base de datos o el empleado lo ingresa. El apellido materno se encuentre en la base de datos o el empleado lo ingresa. El apellido materno se encuentre en la base de datos o el empleado lo ingresa. El apellido materno se encuentre en la base de datos o el
“Venta realizada”
Ingresan datos a la base de datos
“Error: no se admiten campos vacíos”
Vuelve a introducir apellido paterno
“Error: no se admiten campos vacíos”
Vuelve a introducir apellido paterno
““Error: solo se admiten letras”
Vuelve a introducir apellido paterno
“Venta realizada”
Ingresan datos a la base de datos
“Error: no se admiten campos vacíos”
Vuelve a introducir apellido materno
“Error: no se admiten campos vacíos”
Vuelve a introducir apellido materno
“Error: solo se admiten letras”
Vuelve a introducir apellido materno
“Venta realizada”
Ingresan datos a la base de datos
Página 20 de 47
101 Calle=””
102 Calle=” ”
103 Calle=”Av 1° de Mayo”
104 Número=””
105 Número=” ”
106 Número=”S/N”
107 Número=”44”
108 Colonia=””
109 Colonia=” ”
empleado lo ingresa. La calle se encuentre en la base de datos o el empleado la ingresa. La calle se encuentre en la base de datos o el empleado la ingresa. La calle se encuentre en la base de datos o el empleado la ingresa. El número se encuentre en la base de datos o el empleado lo ingresa. El número se encuentre en la base de datos o el empleado lo ingresa. El número se encuentre en la base de datos o el empleado lo ingresa. El número se encuentre en la base de datos o el empleado lo ingresa. La colonia se encuentre en la base de datos o el empleado la ingresa. La colonia se encuentre en la base de datos o el empleado la ingresa.
“Error: no se admiten campos vacíos”
Vuelve a introducir la dirección
“Error: no se admiten campos vacíos”
Vuelve a introducir la dirección
“Venta realizada”
Ingresan datos a la base de datos
“Error: no se admiten campos vacíos”
Vuelve a introducir la dirección
“Error: no se admiten campos vacíos”
Vuelve a introducir la dirección
“Venta realizada”
Ingresan datos a la base de datos
“Venta realizada”
Ingresan datos a la base de datos
“Error: no se admiten campos vacíos”
Vuelve a introducir la dirección
“Error: no se admiten campos vacíos”
Vuelve a introducir la dirección
Página 21 de 47
110 Colonia=”Centro”
111 Código_postal=””
112 Código_postal=” ”
113 Código_postal=”mil”
114 Código_postal=”00999 ”
115 Código_postal=”99990 ”
116 Teléfono=””
117 Teléfono=” ”
118 Teléfono=”cincuenta y cinco, cero, cero, once, once, trece, doce” 119 Teléfono=”228200001 122”
La colonia se encuentre en la base de datos o el empleado la ingresa. El código postal se encuentre en la base de datos o el empleado lo ingresa. El código postal se encuentre en la base de datos o el empleado lo ingresa. El código postal se encuentre en la base de datos o el empleado lo ingresa. El código postal se encuentre en la base de datos o el empleado lo ingresa. El código postal se encuentre en la base de datos o el empleado lo ingresa. El teléfono se encuentre en la base de datos o el empleado lo ingresa. El teléfono se encuentre en la base de datos o el empleado lo ingresa. El teléfono se encuentre en la base de datos o el empleado lo ingresa. El teléfono se encuentre en la
“Venta realizada”
Ingresan datos a la base de datos
“Error: no se admiten campos vacíos”
Vuelve a introducir código postal
“Error: no se admiten campos vacíos”
Vuelve a introducir código postal
“Error: debe introducir dígitos”
Vuelve a introducir código postal
“Error: código postal no válido”
Vuelve a introducir código postal
“Venta realizada”
Ingresan datos a la base de datos
“Error: no se admiten campos vacíos”
Vuelve a introducir el teléfono
“Error: no se admiten campos vacíos”
Vuelve a introducir el teléfono
“Error: debe introducir un número de teléfono”
Vuelve a introducir el teléfono
“Error: el teléfono debe contener 10
Vuelve a introducir el teléfono Página 22 de 47
120 Teléfono=”951052244 3”
121 Cant_prod=”” 122 Cant_prod=” ”
123 Cant_prod=0
124 Cant_prod=980 125 Nom_prod=””
126 Nombre=”flotador de baño” 127 Marca=”” 128 Marca=”Truper” 129 Descripción=”” 130 Descripción=”12 puntas 6mm” 131 Precio_venta=””
132 Precio_venta=10 133 Precio_total=””
base de datos o el empleado lo ingresa. El teléfono se encuentre en la base de datos o el empleado lo ingresa. Empleado ingresa la cantidad de prouctos. Empleado ingresa la cantidad de prouctos. Empleado ingresa la cantidad de prouctos. Empleado ingresa la cantidad de prouctos. El nombre del producto se encuentre en la base de datos. El nombre del producto se encuentre en la base de datos. La marca se encuentre en la base de datos. La marca se encuentre en la base de datos. La descripción se encuentre en la base de datos. La descripción se encuentre en la base de datos. El precio de venta se encuentre en la base de datos El precio de venta se encuentre en la base de datos El sistema calcula
dígitos” “Venta realizada”
Ingresan datos a la base de datos
“Error: no se admiten campos vacíos” “Error: no se admiten campos vacíos” “Error: debe introducir un número válido” “Venta realizada”
Vuelve a introducir la cantidad del producto Vuelve a introducir la cantidad del producto Vuelve a introducir la cantidad del producto Ingresan datos a la base de datos
“Error: no se admiten campos vacíos”
Vuelve a introducir el nombre
“Venta realizada”
Ingresan datos a la base de datos
“Error: no se admiten campos vacíos” “Venta realizada”
Vuelve a introducir la marca
“Error: no se admiten campos vacíos” “Producto registrado”
Vuelve a introducir la descripción
“Error: no se admiten campos vacíos” “Venta realizada”
Vuelve a introducir el precio de venta
“Error: no se
Vuelve a introducir
Ingresan datos a la base de datos
Ingresan datos a la base de datos
Ingresan datos a la base de datos
Página 23 de 47
el precio 135 Precio_total=430 136 Subtotal=””
137 Subtotal=1400 138 IVA=””
139 IVA=16 140 Total=””
141 Total=345
El sistema calcula el precio El sistema calcula el subtotal El sistema calcula el subtotal El sistema agrega el IVA El sistema agrega el IVA El sistema calcula el total. El sistema calcula el total.
admiten campos vacíos” “Venta realizada” “Error: no se admiten campos vacíos” “Venta realizada” “Error: no se admiten campos vacíos” “Venta realizada” “Error: no se admiten campos vacíos” “Venta realizada”
el precio total Ingresan datos a la base de datos Vuelve a introducir el subtotal Ingresan datos a la base de datos Vuelve a introducir el IVA Ingresan datos a la base de datos Vuelve a introducir el total Ingresan datos a la base de datos
Página 24 de 47
MÉTRICA DE ANÁLISIS Puntos de función
Indicador de Datos="ALI". Entidades y relaciones n:m del modelo E-R que se crean y mantienen dentro del nuevo sistema Datos Empleado Cliente Producto Nota Venta
TRE 4 1 1 1 1
TDE 12 9 6 16 4
Complejidad Simple Simple Simple Simple Simple
Indicador de Transacción="EE". Cada quinteta que se refiera a captura o actualización Función RA TDE Complejidad Acceso restringido al 1 2 Simple sistema Actualización de clientes 1 6 Simple Actualización de productos 1 6 Simple Actualización de empleados 1 6 Simple Realizar venta 3 6 Complejo
Indicador de Transacción="SE". Cada quinteta que se refiera a cálculos aritméticos o mátemáticos Nota de venta 1 1 Simple Reporte de Ingresos 1 0 Simple Indicador de Transacción="CE". Cada quinteta que se refiera a consulta tipo SQL Reporte de lista de 1 0 Simple empleados Reporte de lista clientes 1 0 Simple Reporte de inventario 1 0 Simple Reporte de venta 1 0 Simple Reporte de ingresos 1 0 Simple Consulta de clientes 1 4 Simple Consulta de empleados 1 4 Simple Consulta de inventario 1 3 Simple Modificar datos del cliente 1 4 Simple Modificar datos del 1 4 Simple empleado Modificar inventario 1 3 Simple Página 25 de 47
Puntos de Función sin Ajustar Indicador Simple Mediano Complejo Archivo Lógico Interno 5 0 0 Archivo de Interfaz Externo 0 0 0 Entradas Externas 4 0 1 Salidas Externas 2 0 0 Consultas Externas 11 0 0 T=
Suma 35 0 18 8 33 94
Modificadores Grado de Influencia
Restricción
Núm. 1
La aplicación es puramente batch o para una PC aislada.
0
2
La aplicación no apoya en la transferencia de datos o procesado de funciones entre las componentes.
0
3 4
No hay requerimientos de rendimiento especiales impuestos por el usuario. No se han incluido restricciones operacionales implícita o explícitamente.
0 0
5
No se anticipa un periodo pico de transacciones.
0
6
Todas las transacciones se procesan en modo batch
0
7
Ayudas, menús, selección del cursor desde la pantalla de datos, ventanas pop-up, tan pocas ventanas como sea posible.
2
8
No hay actualización en línea.
0
9
Procesamiento complejo
0
10
El 10% o más porcentaje de la aplicación consideran más de una necesidad del usuario.
3
11
No hay consideraciones especiales puestas por el usuario, pero se requirió un setup para la instalación.
1
12 13 14
No se establecieron requerimientos especiales de operación además de procedimientos normales de salvado de datos. Las especificaciones del usuario sólo consideran un sitio de instalación. Consulta flexible y facilidad de reportes, mediante el manejo de requerimientos simples. M=
0 0 1 7
Página 26 de 47
Aplicación de la fórmula PF
T = 94 M=7 PF= T * (0.65 + 0.01 * M)= 94 * (0.65 + 0.01 * 7)= 67.68 Posible interpretación: Nos dio un total de 67.68 puntos, los cuales son menores a 100; por lo tanto, la complejidad del sistema es sencilla.
Métrica Bang
RE (conexiones)=4 PFu (burbujas)=18 RE/PFu=0.22 La aplicación es de dominio funcional
Página 27 de 47
MODELOS DE DISEÑO Modelo de procesador
Procesador
PC Vendedor
Proceso
Almacén
Actualizar cliente
Cliente
Actualizar inventario
Producto
Realizar venta
Venta
Actualizar empleado Consultar reporte de empleados
Empleado
Consultar reporte de inventario
Producto
Consultar reporte de clientes
Cliente
PC Administrador
Consultar reporte de ventas Consultar reporte de ingresos
Venta
Página 28 de 47
MODELO DE IMPLANTACIÓN DE PROGRAMAS Diagramas de estructura
Módulo empleado
Página 29 de 47
Módulo administrador
Página 30 de 47
Pseudocódigo
Consultar inventario
Variables palabra: cadena Inicio Escribe (Ingresa nombre y marca:) Lee (palabra) Si (palabra=””) entonces Escribe (Introduce datos de búsqueda) si no Si (palabra=” “) entonces Escribe (“No es una palabra válida, vuelve a introducir datos de búsqueda”) si no Si (palabra=numero) entonces Escribe (“Error: solo se pueden introducir palabras, vuelve a introducir datos de búsqueda”) si no Si (palabra=”nombre”) y (palabra=”marca”) entonces Consulta inventario Escribe (código, nombre, marca, descripción, precioVenta, precioAlmacen, existencia) Fin_si Fin
Página 31 de 47
Plan de prueba de integración
Identificación
Sistema de control de Ferretería Plan de prueba: Realizar venta
Elementos a probar
Genera nota de venta, registra venta.
Enfoque
Ascendente
Criterio de aceptación o rechazo de un caso de prueba
Aceptación: La salida coincide con lo esperado, (tuvo éxito la prueba).
Criterio de suspensión
Se realizaron todas las pruebas.
Productos a entregar
Tareas a realizar para satisfacer el proceso
Necesidades ambientales
Responsabilidades Personal necesario y si requieren entrenamiento
Calendario
Riesgos y contingencias
Plan de prueba. Lista de casos de prueba ejecutados con sus entradas, resultados esperados, y su evaluación. Preparar casos de pruebas. Ejecutar los casos de prueba. Evaluar resultados obtenidos. Preparar un informe. Computadora de escritorio o portátil. Máquina virtual de Java. Algún entorno de desarrollo integrado (IDE). Un manejador de base de datos como MySQL. JUnit4 Probador: preparar casos de prueba, realizar las pruebas, preparará los informes. Programador: preparar y revisar hardware, instalará el software (sistema, bases de datos, conexiones). Probador: conocimientos en ingeniería de software. Programador. Instalar el software: ½ día Preparar casos de pruebas: 1 día Ejecutar los casos de prueba y evaluar resultados obtenidos: 2 días Preparar un informe y reportar: 1 día Margen por riesgos: 3 días R1: El software no esté terminado. C1: Dar más tiempo al programador para que los termine pero se le descontará. R1: Fallas durante la instalación. C1: Revisar el equipo y conexiones.
Página 32 de 47
MÉTRICAS DE DISEÑO Arquitectónicas
Expansión del módulo f(i)
Variables v(i)
Complejidad estructural S(i)
Complejidad de datos D(i)
8
70
64
7.77
0
14
0
14
Modifica datos cliente
0
6
0
6
Consulta cliente
0
20
0
20
Elimina cliente
0
6
0
6
Registra producto
0
14
0
14
Modifica datos producto 0
4
0
4
Consulta producto
0
18
0
18
Genera nota de venta
1
71
1
1
Registra venta Módulo ejecutivo administrador Registra empleado Modifica datos de empleado Consulta empleado
0
33
0
9
61
81
6.1
0
20
0
20
0
6
0
6
0
26
0
26
Elimina empleado Consulta reporte de empleado Consulta reporte de cliente Consulta reporte de inventario Consulta reporte de venta Consulta reporte de ingresos Total
0
6
0
6
0
20
0
20
0
14
0
14
0
14
0
14
0
10
0
10
0
6
0
6
146
218.8
Nombre del módulo Modulo ejecutivo empleado Registra cliente
Página 33 de 47
Complejidad total
Complejidad total del sistema= 364.8
Complejidad relativa (CRS)
Complejidad relativa= 18.24
Página 34 de 47
CONCLUSIÓN Al terminar este documento puedo decir que es importante continuar con el desarrollo del sistema y así verificar que el proceso de análisis se ha efectuado con éxito. Dicho proceso fue una tarea exhaustiva pues había que llevar a cabo una abstracción de los procesos y llevarlos a la computadora. Se espera que el software resultante sea de calidad debido al tiempo que se ha dedicado a su análisis y sobre todo que cumpla con los requerimientos de nuestro usuario para obtener una mejor satisfacción de sus clientes y con ello que pueda cumplir con sus objetivos a corto, mediano y largo plazo.
Página 35 de 47
APÉNDICES Diccionario de datos
Cliente Cliente= ID+nombre+ape_paterno+ape_materno+dirección+teléfono+correo ID= {digito} Digito= {[0-9]} Nombre= {carácter} Carácter= @ | {_} | {[“ ”]} |{“”}| {.} | {/} | {°}+ [A-Z] | {A-Z}+{[a-z]} Ape_paterno= {caracter} Ape_materno= {caracter} Dirección= calle+numero+colonia+código_postal Calle= {caracter} Numero= {digito} | {caracter} Colonia= {caracter} Código_postal= {digito} Teléfono= digito+digito+digito+digito+digito+digito+digito+digito+digito+digito Correo= {carácter}+{digito} Empleado Empleado=ID+nombre+ape_paterno+ape_materno+dirección+teléfono+correo+tipo+us uario+contraseña ID= {digito} Digito= [0-9] Nombre= {carácter} Carácter= {A-Z} | [A-Z]+{[a-z]} Ape_paterno= {caracter} Página 36 de 47
Ape_materno= {caracter} Dirección= calle+numero+colonia+código_postal Calle= {caracter} | {digito} Numero= {digito} | {caracter} Colonia= {caracter} Código_postal= digito+digito+digito+digito+digito Teléfono= digito+digito+digito+digito+digito+digito+digito+digito+digito+digito Correo= {carácter} | {digito} Tipo= {caracter} Usuario= caracter+caracter+carácter+digito+digito+digito Contraseña= carácter+carácter+caracter+carácter+carácter+digito+digito+digito Producto Producto= código+nombre+descripción+marca+precio_almacen+precio_venta+existencia Código= {digito} Nombre= {carácter} Descripción= {carácter}|{dígito} Marca= {carácter} Precio_almacen= {digito} Precio_venta= {digito} Existencia= {dígito} Nota Nota= folio+fecha+nom_cli+apeP_cli+apeM_cli+dir_cli+tel_cli+cant_prod+nom_prod+descripci ón+precio_venta+precio_total+subtotal+iva+total Folio= digito+digito+digito+digito Fecha= dia+mes+año Página 37 de 47
Dia= digito+digito Mes= {caracter} Año= digito+digito+digito+digito Cant_prod= {digito} Precio_total= {digito} Subtotal= {digito} IVA= digito+digito Total= {digito} Venta Venta= folio+fecha+cant_prod+nom_prod+descripción+precio_total
Página 38 de 47
Manual preliminar (modelo de implantación del usuario)
Funcionalidades:
Actualización y consulta de los empleados. Actualización y consulta de los clientes. Actualización y consulta del inventario. Generación de notas de venta. Generación y consulta de reportes: empleados, clientes, inventario, ventas realizadas durante el día y reporte de ingresos.
Descripción de las ventanas:
Acceso al sistema
La primera ventana que aparece cuando el usuario inicia el sistema es la que da acceso al mismo, para ello este debe contar con un usuario y una contraseña. Primero debe elegir el tipo de usuario sea administrador o vendedor, después deberá introducir su usuario y usuario en los campos correspondientes, por último deberá oprimir el botón acceder y debe esperar a que se validen sus datos. Si desea cancelar el proceso deberá oprimir el botón salir.
Página 39 de 47
Vendedor Menú
Una vez que el vendedor haya ingresado al sistema, aparecerá el menú el cual se compone de las siguientes opciones:
Cliente Inventario Ventas Opciones: se encuentra la información acerca del sistema, y la opción de salir para cerrar el sistema.
Página 40 de 47
Registro de clientes
En el menú Clientes el vendedor podrá ingresar los datos de un nuevo cliente completando el formulario, una vez llenado oprimirá el botón Registrar e inmediatamente se deshabilitarán los campos, si desea ingresar otro oprimirá el botón Nuevo. Para consultar sus datos debe ingresar el nombre, apellido paterno y apellido materno en el cuadro de búsqueda y conforme escriba irán apareciendo los resultados en la tabla. Para modificar los datos deberá efectuar una búsqueda y dará clic derecho sobre el elemento que desee en la tabla, aparecerá un menú emergente, dará clic en la opción seleccionar y los datos aparecerán en el formulario y allí es donde podrá hacer los Página 41 de 47
cambios; finalmente oprimirá el botón Modificar para actualizar los datos. También en ese momento podrá elegir la opción Eliminar si desea quitar un cliente. El botón Ayuda mostrará un mensaje de cómo realizar las búsquedas. El botón Ver lista desplegará la lista de todos los clientes que están registrados y que podrá imprimir. El botón Salir cierra la ventana.
Registro de productos
En el menú inventario el vendedor podrá registrar un nuevo producto, una vez llenado el formulario oprimirá el botón Registrar para guardar los datos, si desea ingresar otro oprimirá el botón Nuevo.
Página 42 de 47
Para consultar deberá poner en el campo Búsqueda el nombre y la marca y los resultados aparecerán en la tabla. Para modificar algún dato del producto, deberá efectuar una búsqueda, después seleccionará el elemento, clic derecho sobre él y aparecerá un menú emergente con las opciones de modificar o eliminar. Si elige la opción modificar, los datos aparecerán en el formulario y desde allí llevará a cabo las modificaciones. Posteriormente oprimirá el botón Modificar para actualizarlos. También podrá elegir la opción Eliminar para quitar un producto del inventario. El botón Ayuda contiene información sobre la realización de las búsquedas y el botón Ver lista desplegará una ventana con la lista de todos los productos registrados. El botón Salir cierra la ventana.
Realizar ventas
Página 43 de 47
En el menú ventas el vendedor podrá generar la nota de venta; el folio, la fecha y el IVA ya estarán por defecto, tendrá que llenar los campos con los datos del cliente. Para obtener la información de los productos se oprimirá el botón Productos y aparecerán en una tabla, hará la búsqueda del producto, lo seleccionará, dará clic derecho sobre el elemento y aparecerá un menú emergente con la opción Seleccionar y en ese momento se irán llenando los campos con los datos de los productos. Después el vendedor ingresará la cantidad de producto y posteriormente con el botón Calcular se hará el cálculo del Precio total, Subtotal y Total. Después de llenar la nota debe registrar la venta oprimiendo el botón Registrar para llevar un control de las ventas durante el día y para hacer el cálculo de los ingresos. Con el botón Imprimir se imprimirá la nota, con el botón Nuevo se podrá llenar otra nota de venta. El botón Salir cierra la ventana.
Tabla productos
Página 44 de 47
Administrador Menú administrador
Una vez que el administrador haya ingresado al sistema, aparecerá un menú el cual se compone de las siguientes opciones:
Empleados Reportes: el administrador podrá consultar los reportes de clientes, empleados, inventario, ventas e ingresos. Opciones: se encuentra la información acerca del sistema, y la opción de salir para cerrar el sistema.
Página 45 de 47
Registro de empleados
En el menú Empleados el administrador podrá registrar un empleado, una vez llenado el formulario oprimirá el botón Registrar para guardar los datos, si desea ingresar otro oprimirá el botón Nuevo. Para consultar deberá poner en el campo Búsqueda el nombre, apellido paterno o apellido materno y los resultados aparecerán en la tabla. Para modificar algún dato, deberá efectuar una búsqueda, después seleccionará el elemento, clic derecho sobre él y aparecerá un menú emergente con las opciones de modificar o eliminar. Si elige la opción modificar los datos, aparecerán en el formulario y desde allí lo llevará a cabo. Posteriormente oprimirá el botón Modificar para actualizarlos. Página 46 de 47
El botón ayuda contiene información sobre la realización de las búsquedas y el botón Ver lista desplegará una ventana con la lista de todos los empleados registrados. El botón salir cierra la ventana.
Posibles fallas:
1. El sistema no guarda la información. Verificar que se realiza correctamente el proceso. Reiniciar el sistema. Reiniciar el equipo. 2. No da acceso a la base de datos. Reiniciar el sistema. Reiniciar el equipo. 3. El equipo se descomponga. Verificar conexiones de cables y periféricos. Llamar un técnico.
Página 47 de 47