Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ciclo I - 2019
Tema:
Sistema Informático para el control de membresías de la Asociación Salvadoreña de
Profesionales en Administración de Empresas.
Sprint 1
Equipo N°: 11
Nombre Carné
Aguilar Quevedo, Paola Renée AQ16002
Aquino Alas, Doris Elizabeth AA11002
Delgado Hernández, Jennifer Irene DH16001
Moto Herrera, Carlos Alfredo MH16006
Rosales Morales, William Ernesto RM16035
Grupo Teórico: 01
Objetivos.......................................................................................................................5
General......................................................................................................................5
Específicos.................................................................................................................5
Roles desempeñados:..................................................................................................6
SPRINT 1......................................................................................................................7
1. Product Backlog........................................................................................................7
2. Sprint Planning........................................................................................................17
4. Burndown chart.......................................................................................................26
5. Sprint Review..........................................................................................................27
i. Casos de Uso........................................................................................................28
Modelo Conceptual..............................................................................................39
Diseño Físico.......................................................................................................39
Diccionario de Datos................................................................................................40
6. Sprint Retrospective................................................................................................41
Conclusión...................................................................................................................42
Glosario de términos (Si es necesario)........................¡Error! Marcador no definido.
Anexos.........................................................................................................................44
El documento contiene también las plantillas del Scrum diario, donde se define qué
avances se han logrado, las limitaciones que se han tenido y los objetivos a lograr
para la siguiente reunión, también el Burndown chart así como el Sprint Review.
Objetivos
General
Utilizar la metodología SCRUM para llevar a cabo los procesos de desarrollo, y
tareas de documentación necesarios para la creación del Sistema Informático para
el control de Membresías de la Asociación Salvadoreña de Profesionales en
Administración de Empresas (ASPAE).
Específicos
Aplicar la metodología SCRUM para el desarrollo del Sprint 1.
Crear el Product backlog a partir de las historias de usuario recolectadas por
medio de entrevistas al stakeHolder.
Hacer el cálculo de la duración del Sprint 1 por medio de las horas de trabajo
estimadas para cada una de las historias de usuario del Sprint backlog.
Crear el modelo conceptual de la base de datos para el primer Sprint, así
como el modelo físico.
URL de la funcionalidad entregada
http://176.223.135.203
Roles desempeñados:
Tester.
1. Product Backlog
Prioridad Sprint
Analista
Código Nombre de a Estado
Asignado
desarrollo realizar
No
HU01 Registrar un nuevo socio Alta 2
iniciada
No
HU02 Aprobar solicitud de socio Alta 2
iniciada
No
HU03 Denegar solicitud de socio. Alta 2
iniciada
No
HU04 Añadir logros y postulaciones Media 2
iniciada
No
HU05 Deshabilitar socio Media 2
iniciada
No
HU06 Solicitar curriculum certificado Media 2
iniciada
No
HU07 Detalle de pagos de membresías. Media 2
iniciada
No
HU08 Generar informe de socios Media 2
iniciada
Imprimir estado de pagos de No
HU09 Media 2
membresías certificado iniciada
No
HU10 Imprimir pagos de membresías Media 2
iniciada
No
HU11 Registrar nuevo evento Alta 2
iniciada
No
HU12 Añadir datos al evento Alta 2
iniciada
Añadir invitación de evento ya No
HU13 Media 2
registrado. iniciada
No
HU14 Añadir asistencia de socios al evento. Media 2
iniciada
Eliminar registro de asistencia de socios No
HU15 Baja 2
al evento. iniciada
Modificar registro de asistencia de No
HU16 Media 2
socios al evento. iniciada
Generar informe de liquidación general No
HU17 Baja 2
de eventos. iniciada
No
HU18 Generar informe de eventos. Media 2
iniciada
Registro de remesas para el pago de No
HU19 Alta 2
cuotas. iniciada
Modificación de remesas para pago de No
HU20 Media 2
cuotas. iniciada
No
HU21 Eliminar cuota ingresada. Baja 2
iniciada
No
HU22 Consultar remesas para pago de cuotas. Media 2
iniciada
No
HU23 Consultar detalle de cuota cancelada. Baja 2
iniciada
No
HU24 Registro de ingreso por evento. Alta 2
iniciada
Modificar registro de ingreso por No
HU25 Media 2
evento. iniciada
Eliminar registro de documento de No
HU26 Baja 2
ingreso por evento. iniciada
Consultar listado de documentos No
HU27 Media 2
emitidos de ingresos por evento. iniciada
Consultar detalle de documentos No
HU28 Baja 2
emitidos de ingreso por evento. iniciada
No
HU29 Registro de cuenta por cobrar. Alta 2
iniciada
No
HU30 Modificar registro de cuenta por cobrar. Media 2
iniciada
Completar registro de cuenta por No
HU31 Baja 2
cobrar. iniciada
No
HU32 Eliminar registro de cuenta por cobrar. Baja 2
iniciada
Consultar listado de cuenta por cobrar No
HU33 Media 2
por evento. iniciada
Consultar detalle de cuenta por cobrar No
HU34 Baja 2
por evento. iniciada
No
HU35 Registro de ingreso por donación. Alta 2
iniciada
No
HU36 Modificar registro de donación. Media 2
iniciada
No
HU37 Eliminar registro de donación . Baja 2
iniciada
No
HU38 Consultar listado de donaciones. Media 2
iniciada
No
HU39 Consultar detalle de donaciones. Baja 2
iniciada
No
HU40 Registro de otros ingresos. Alta 2
iniciada
No
HU41 Modificar registro de otros ingresos. Media 2
iniciada
Eliminar documentos emitidos de otros No
HU42 Baja 2
ingresos. iniciada
Consultar listado de documentos No
HU43 Media 2
emitidos para otros ingresos. iniciada
Consultar detalle de documentos No
HU44 Media 2
emitidos para otros ingresos. iniciada
No
HU45 Registro de documento de remesa. Alta 2
iniciada
No
HU46 Modificación de documento de remesa. Media 2
iniciada
No
HU47 Eliminar documento de remesa. Baja 2
iniciada
Consultar listado de documentos de No
HU48 Media 2
remesa. iniciada
Consultar detalle de documento de No
HU49 Baja 2
remesa. iniciada
No
HU50 Generar informe de egreso. Media 3
iniciada
No
HU51 Registrar egreso. Alta 3
iniciada
No
HU52 Imprimir detalle de egreso. Media 3
iniciada
No
HU53 Actualizar detalle de egreso. Alta 3
iniciada
No
HU54 Consultar detalle de egreso. Media 3
iniciada
Consultar Historial de informes de No
HU55 Baja 3
egreso. iniciada
No
HU56 Eliminar informe de egreso del historial. Baja 3
iniciada
No
HU57 Consultar detalle de informe de egreso. Media 3
iniciada
No
HU58 Generar informes de ingresos: Remesas. Baja 3
iniciada
Generar informes de ingresos: No
HU59 Baja 3
Membresías. iniciada
No
HU60 Generar informes de ingresos: Eventos. Baja 3
iniciada
Generar informes de ingresos: No
HU61 Baja 3
Donaciones. iniciada
Generar informes de ingresos: Otros No
HU62 Baja 3
Ingresos. iniciada
No
HU63 Configurar permisos de usuario. Alta 2
iniciada
No
HU64 Eliminar usuario. Media 2
iniciada
No
HU65 Modificar usuario. Media 2
iniciada
No
HU66 Agregar usuario. Alta 2
iniciada
Crear respaldo de todos los datos del No
HU67 Media 3
sistema iniciada
No
HU68 Actualizar cuota de membresía. Alta 2
iniciada
No
HU69 Actualizar acta (formato PDF). Media 2
iniciada
William
HU70 Iniciar sesión (administrador). Alta 1 Terminada
Rosales
William
HU71 Inicio sesión (experto). Alta 1 Terminada
Rosales
William
HU72 Inicio de sesión (Asistente). Alta 1 Terminada
Rosales
No
HU73 Ver perfil (socio). Media 2
iniciada
No
HU74 Modificar perfil (socio). Media 2
iniciada
No
HU75 Guardar perfil (socio). Alta 2
iniciada
No
HU76 Ingreso al perfil de usuario. Alta 2
iniciada
No
HU77 Envío de mensajes (socio). Baja 2
iniciada
No
HU78 Envío de mensajes (administrador). Baja 2
iniciada
No
HU79 Imprimir datos del perfil (socio). Baja 2
iniciada
No
HU80 Actualizar curriculo virtual (socio) Media 2
iniciada
No
HU81 Actualizar curriculo en formato PDF. Media 2
iniciada
Definición de efectos visuales
HU82 Media 1 Terminada
dinámicos. Paola Aguilar
Elección y ubicación en pantalla de
HU83 Alta 1 Terminada
elementos en plantillas base. Doris Aquino
Especificaciones de elementos de
HU84 Alta 1 Terminada
plantillas base. Carlos Moto
HU85 Selección de efectos visuales básicos. Doris Aquino Alta 1 Terminada
Irene
HU86 Preparación de entorno de trabajo. Alta 1 Terminada
Delgado
HU87 Construcción de la seguridad. Carlos Moto Alta 1 Terminada
Creación de Estándar para bitácora de No
HU88 Alta 1
Control para Seguridad Empresarial iniciada
No
HU89 Configuración de Firmas para Reportes 2
iniciada
HU90 Dar de Baja Registro Alta 2 No
iniciada
No
HU91 Recuperar Registro Ata 2
iniciada
No
HU92 Eliminar Registro Alta 2
iniciada
Importante:
Historias de Usuario refinadas para el sprint 1
Criterios de Aceptación:
Entorno listo para poder hacer la programación y las pruebas necesarias para la
elaboración del sistema.
Código: HU-87 Construcción de la
seguridad
Usuario: Desarrolladores Nombre:
Fecha de 8/06/2019 Iteración
1
escritura: asignada:
Prioridad Alta
StackHolder: Analista
Carlos Moto
Prioridad de Alta asignado:
desarrollo:
Descripción:
Como desarrollador deseo implementar como seguridad la Clase Crypt que Laravel
proporciona, haciendo uso del método cifrado AES o Estándar de Cifrado Avanzado
que se basa en varias sustituciones, permutaciones y transformaciones lineales,
cada una ejecutada en bloques de datos de 16 bytes. Dicho algoritmo será
implementado para las claves de los perfiles de usuario.
Criterios de Aceptación:
Generar claves las cuales posean mayor seguridad a través del cifrado avanzado.
2. Sprint Planning
Duración total del Sprint 1 en horas: 60 horas (más holgura de 2 horas por una
semana).
60 / 4 = 15 días
HU70, HU71, HU72, HU82, HU83, HU84, HU85, HU86, HU87, HU88
3. Plantillas del Scrum Diario
Fecha: 16-06-2019 Hora: 9:30pm
Asistentes: Carlos Moto Lugar/Tipo: Llamada vía Skype
Doris Aquino
Paola Aguilar
Irene Delgado
Burndow Chart
Modelo
Vistas
Son la representación visual de los datos, todo lo que tenga que ver con la interfaz
gráfica va aquí. Ni el modelo ni el controlador se preocupan de cómo se verán los
datos, esa responsabilidad es únicamente de la vista.
Controlador
Se encarga de controlar, recibe las órdenes del usuario y se encarga de solicitar los
datos al modelo y de comunicárselos a la vista.
INTERFAZ DE ENTRADA
Modelo Conceptual
Diseño Físico
Diccionario de Datos
rols
Contiene los tipos de usuario que se pueden registrar en el sistema, se utiliza para
llenar la lista desplegable del formulario para nuevo resitro de usuario.
users
Otwell, T. (2019). Blade Templates - Laravel - The PHP Framework For Web
Artisans. Obtenido de: https://laravel.com/docs/5.8/blade#template-inheritance
[Accesado: 1 Julio, 2019].
Modal
<!doctype html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-
fit=no">
<title>Hello, world!</title>
</head>
<body>
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>jQuery UI Datepicker - Default functionality</title>
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<link rel="stylesheet" href="/resources/demos/style.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script>
$( function() {
$( "#datepicker" ).datepicker();
} );
</script>
</head>
<body>
</body>
</html>
Progressbar (Barra de progreso)
<!doctype html>
</html>
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>jQuery UI Progressbar - Download Dialog</title>
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<link rel="stylesheet" href="/resources/demos/style.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script>
$( function() {
var progressTimer,
progressbar = $( "#progressbar" ),
progressLabel = $( ".progress-label" ),
dialogButtons = [{
text: "Cancelar Descarga",
click: closeDownload
}],
dialog = $( "#dialog" ).dialog({
autoOpen: false,
closeOnEscape: false,
resizable: false,
buttons: dialogButtons,
open: function() {
progressTimer = setTimeout( progress, 2000 );
},
beforeClose: function() {
downloadButton.button( "option", {
disabled: false,
label: "Comenzar Descarga"
});
}
}),
downloadButton = $( "#downloadButton" )
.button()
.on( "click", function() {
$( this ).button( "option", {
disabled: true,
label: "Descargando..."
});
dialog.dialog( "open" );
});
progressbar.progressbar({
value: false,
change: function() {
progressLabel.text( "Proceso Actual: " + progressbar.progressbar( "value" ) +
"%" );
},
complete: function() {
progressLabel.text( "Completado!" );
dialog.dialog( "option", "buttons", [{
text: "Cerrar",
click: closeDownload
}]);
$(".ui-dialog button").last().trigger( "focus" );
}
});
function progress() {
var val = progressbar.progressbar( "value" ) || 0;
progressbar.progressbar( "value", val + Math.floor( Math.random() * 3 ) );
if ( val <= 99 ) {
progressTimer = setTimeout( progress, 50 );
}
}
function closeDownload() {
clearTimeout( progressTimer );
dialog
.dialog( "option", "buttons", dialogButtons )
.dialog( "close" );
progressbar.progressbar( "value", false );
progressLabel
.text( "Comenzando Descarga..." );
downloadButton.trigger( "focus" );
}
} );
</script>
<style> #progressbar { margin-top: 20px;
}
.progress-label { font-weight: bold;
text-shadow: 1px 1px 0 #fff;
}
.ui-dialog-titlebar-close { display: none;
}
</style>
</head>
<body>
<div id="dialog" title="Descargar Archivo">
<div class="progress-label">Comenzando Descarga...</div>
<div id="progressbar"></div>
</div>
<button id="downloadButton">Comenzar Descarga</button>
</body>
</html>
Resizable (Redimensionable)
Habilitar cualquier elemento DOM para ser redimensionable. Con el cursor, agarre el
borde derecho o inferior y arrastre hasta el ancho o la altura deseada
Código a Emplear
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>jQuery UI Resizable - Default functionality</title>
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<link rel="stylesheet" href="/resources/demos/style.css">
<style>
#resizable { width: 150px; height: 150px; padding: 0.5em; }
#resizable h3 { text-align: center; margin: 0; }
</style>
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script>
$( function() {
$( "#resizable" ).resizable();
} );
</script>
</head>
<body>
Selectable (Seleccionable)
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>jQuery UI Selectable - Default functionality</title>
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<link rel="stylesheet" href="/resources/demos/style.css">
<style>
#feedback { font-size: 1.4em; }
#selectable .ui-selecting { background: #FECA40; }
#selectable .ui-selected { background: #F39814; color: white; }
#selectable { list-style-type: none; margin: 0; padding: 0; width: 60%; }
#selectable li { margin: 3px; padding: 0.4em; font-size: 1.4em; height: 18px; }
</style>
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script>
$( function() {
$( "#selectable" ).selectable();
} );
</script>
</head>
<body>
<ol id="selectable">
<li class="ui-widget-content">Item 1</li>
<li class="ui-widget-content">Item 2</li>
<li class="ui-widget-content">Item 3</li>
<li class="ui-widget-content">Item 4</li>
<li class="ui-widget-content">Item 5</li>
<li class="ui-widget-content">Item 6</li>
<li class="ui-widget-content">Item 7</li>
</ol>
</body>
</html>
Checkboxradio
Código a Emplear
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery UI Checkboxradio - Radio Group</title>
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<link rel="stylesheet" href="/resources/demos/style.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script>
$( function() {
$( "input" ).checkboxradio();
$( "fieldset" ).controlgroup();
} );
</script>
</head>
<body>
<div class="widget">
<h2>Radio Group</h2>
<fieldset>
<legend>Select a Location: </legend>
<label for="radio-1">New York</label>
<input type="radio" name="radio-1" id="radio-1">
<label for="radio-2">Paris</label>
<input type="radio" name="radio-1" id="radio-2">
<label for="radio-3">London</label>
<input type="radio" name="radio-1" id="radio-3">
</fieldset>
</div>
</body>
</html>
Alertas
Las alertas están disponibles para cualquier longitud de texto, así como un botón
opcional para descartar. Para un estilo adecuado, use una de las ocho clases
contextuales requeridas (por ejemplo, .alert-success).
Código a emplear
<!doctype html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-
fit=no">
<title>Hello, world!</title>
</head>
<body>
<h1>Tipos de alertas</h1>
<div class="alert alert-primary" role="alert">
A simple primary alert—check it out!
</div>
<div class="alert alert-secondary" role="alert">
A simple secondary alert—check it out!
</div>
<div class="alert alert-success" role="alert">
A simple success alert—check it out!
</div>
<div class="alert alert-danger" role="alert">
A simple danger alert—check it out!
</div>
<div class="alert alert-warning" role="alert">
A simple warning alert—check it out!
</div>
<div class="alert alert-info" role="alert">
A simple info alert—check it out!
</div>
<div class="alert alert-light" role="alert">
A simple light alert—check it out!
</div>
<div class="alert alert-dark" role="alert">
A simple dark alert—check it out!
</div>
Bootstrap incluye varios estilos de botones predefinidos, cada uno con su propio
propósito semántico
Código a Emplear
<!doctype html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<metaname="viewport"content="width=device-width,initial- scale=1, shrink-to-fit=no">
<title>Hello, world!</title>
</head>
<body>
<h1>Tipos de botones</h1>
<button type="button" class="btn btn-primary">Primario</button>
<button type="button" class="btn btn-secondary">Secundario</button>
<button type="button" class="btn btn-success">Exito</button>
<button type="button" class="btn btn-danger">Peligro</button>
<button type="button" class="btn btn-warning">Advertencia</button>
<button type="button" class="btn btn-info">Informacion</button>
<button type="button" class="btn btn-light">Ligero</button>
<button type="button" class="btn btn-dark">Oscuro</button>
1- Barra de navegación:
La barra de navegación estará presente en todas las páginas web del sistema
excepto en aquellas pantallas cuyo objetivo sea mostrar el informe generado en
formato PDF. Dicha barra de navegación debe de estar compuesta por:
2- Área de trabajo:
El área de trabajo debe estar ubicada en el centro de la página web. En esta área
se presentarán los listados tabulados en algunos módulos y algunos formularios
para captura de datos.
3- Footer:
Contendrá el nombre de la institución que apoyaron el desarrollo del sistema
informático, el logo de la institución en la parte izquierda y los teléfonos de
contacto de la institución en la parte derecha como contenido mínimo. Estará
ubicado en la parte central inferior de la página web, debe poseer como ancho la
totalidad de la página web y como alto debe tener 85px fijos.
4- Área de opciones:
Esta área contendrá diversos botones que le permitirán al usuario acceder a las
notificaciones, a la mensajería del sistema y a las opciones del usuario que ha
iniciado sesión, como:
- ver su perfil.
- consultar las mensualidades.
- Configurar datos de la cuenta.
- Cerrar sesión.
Para las opciones de mensajería y notificaciones debe mostrar los mensajes y
las notificaciones más recientes respectivamente además de un botón para “ver
más” donde podrá consultar todos los elementos mensajes o notificaciones
según sea el caso.
5- Menú desplegable:
Presenta un menú desplegable en la parte izquierda del sitio web pudiendo
mostrar u ocultar presionando un botón posicionado en la parte izquierda de la
barra de navegación del sistema. El contenido que presentara dicho menú debe
ser el siguiente:
Estándar Tipográfico
Elemento Estándar
Navbar Títulos Texto Normal
Tipo de letra: “Open sans”, “Open sans”, “Open sans”,
Familia: Familia: Hevelticva, Familia:
Hevelticva, Arial, Arial, sans-serif Hevelticva, Arial,
sans-serif sans-serif
Tamaño: Style: Nomal Style: Nomal Style: Nomal
Weight:600 Weight: 400 Weight: 400
Size: 56px Size: 40px Size: 16px
Line Height: 64px Line Height: 48px Line Height: 24px
Color: #03a9f4 #3c424f #6b7c93
Background- No No No
Color:
Áreas de texto
Botones de opción
Listas
Casilla de verificación
Nombre: Construcción de la
Para la construcción del módulo de seguridad se hizo uso de la clase Crypt que Laravel nos
proporciona, la clase hace uso del método de cifrado AES o Estándar de Cifrado Avanzado
que se basa en varias sustituciones, permutaciones y transformaciones lineales, cada una
ejecutada en bloques de datos de 16 bytes. Esas operaciones se repiten varias veces,
llamadas "rondas". Durante cada ronda, una clave circular única se calcula a partir de la
clave de cifrado y se incorpora en los cálculos. Basado en la estructura de bloques de AES,
el cambio de un solo bit, ya sea en la clave, o en el bloque de texto sin cifrado, da como
resultado un bloque de texto cifrado completamente diferente (una ventaja clara sobre los
cifrados de flujo tradicionales).
Cabe destacar que Laravel utiliza OpenSSL para proporcionar el cifrado AES-256 y AES-
128, es decir no proporciona el cifrado AES-192. La diferencia entre AES-128, AES-192 y
AES-256 finalmente es la longitud de la clave: 128, 192 o 256 bits, todas las mejoras
drásticas en comparación con la clave de 56 bits de DES.
Implementación:
Para la implementación del método de cifrado dentro del módulo de seguridad se ejecuta tres
veces el método estático encrypt con la finalidad de evitar posibles amenazas al identificar
fácilmente le método de cifrado, de la misma manera para obtener el valor original se ejecuta
el método estático decrypt igual número de veces que el método de cifrado.
$output = Crypt::encrypt(Crypt::encrypt(Crypt::encrypt($input)));
return $output;
}
Este método recibe un valor como parámetro, ejecuta tres veces el método encrypt para
cifrar el valor y retorna como salida el valor cifrado.
$output = Crypt::decrypt(Crypt::decrypt(Crypt::decrypt($input)));
return $output;
Este método recibe como parámetro el valor encriptado por medio del método estático de la
clase Crypt de Laravel “encrypt”, ejecuta 3 veces el método de descifrado al igual que el
método de cifrado y retorna el valor original sin encriptar.
Anexo 5: Carta de Aceptación
INGENIERÍA DE SISTEMAS INFORMÁTICOS
FACULTAD DE INGENIERÍA Y ARQUITECTURA
UNIVERSIDAD DE EL SALVADOR
Firma Fecha:
VICE-PRESIDENTE ASPAE 2019-2021
Firma Fecha:
ASISTENTE DE LA PRESIDENCIA
Firma Fecha:
Representante del Equipo de Trabajo #11 De la Asignatura de Diseño de Sistemas I
Firma Fecha:
Producto a Entregar
En la primera entrega del sistema informático para el control de membresías llamada "Sprint 1",
se han seleccionado y realizado 4 requisitos los cuales hemos llamado "Historias de Usuario" de
la lista de requisitos, la descripción de cada Historia de Usuario realizada es la siguiente.
Se han realizado los Roles para el inicio de Sesión
1. Inicio de Sesión (Administrador)
Se podrá acceder a todos los módulos y no tendrá restricciones (Actualmente solo se ha creado
inicio de sesión del rol).
2. Inicio de Sesión (Experto)
Podrá tener acceso a todos los módulos, sin embargo, no poseerá algunos permisos (Actualmente
solo se ha creado inicio de sesión del rol).
3. Inicio de Sesión (Asistente)
Se podrá tener acceso a edición y creación en los módulos, sin embargo, no podrá eliminar
información (Actualmente solo se ha creado inicio de sesión del rol).
4. Construcción de la seguridad
Los diferentes roles podrán acceder por medio de contraseñas, las cuales están diseñadas para
tener una buena seguridad en caso que algún atacante pueda intentar acceder al sistema. Se ha
implementado un método de cifrado para poder tener una buena encriptación de claves.
Funcionalidades Faltantes
A continuación, se detallan las funciones faltantes en cada uno de los módulos para finalizar el
proyecto.
A. Perfil de Socio
Desde su perfil en línea, el socio podrá:
● Ver los próximos eventos (como publicidad o cartelera inmediatamente después
de entrar a su perfil)
● Recibir notificaciones sobre los procesos que está llevando a cabo
● Ver e Imprimir su estado de cuentas de la membresía
● Ver e Imprimir los datos de su perfil (obtenidos de su CV)
71
● Solicitar un currículum certificado por la asociación
● Ver su plus (donaciones, postulaciones, logros, aportes)
B. Control de Socios
En este apartado del sistema se realizarán los registros de:
● Los datos correspondientes a los campos del formulario ya existente que los socios
llenan manualmente para solicitar su afiliación a ASPAE.
● Los documentos escaneados que comprueben los datos del formulario y de su Hoja de
Vida, además de esta última, también escaneada.
● Si el socio es:
○ Activo: Paga su membresía, está solvente (puede convertirse en honorario)
○ Capítulo Estudiantil (se puede convertir en socio activo cuando le dan su carta
de egresado al estudiante)
○ Honorarios: que debido al tiempo dentro de la asociación y su aporte a la
misma, ya no pagan membresía
○ Fundadores: los más antiguos (pueden ser honorarios o activos)
○ Inactivos (no solventes) o fallecidos (pero que su información se necesita)
● Los logros, eventos y postulaciones en las que el asociado ha participado
El sistema también realizará la generación automática de usuario y contraseña para que
los nuevos socios accedan a su perfil en el sistema.
Otros alcances:
● Que se pueda adjuntar carta de renuncia a la asociación
● Que exista un campo en el que se pueda agregar Socios de la JD deben ser
diferenciados de algún modo (además del campo de tipo de socio)
● Que se pueda imprimir el currículum certificado del socio para presentarlo a JD
en caso de que el mismo socio lo haya solicitado.
C. Control de Ingresos
En este módulo se deberá tener la capacidad de realizar las funciones que se detallan a
continuación:
1. Membresías:
o Registro de las remesas que los socios hacen para cancelar sus
72
cuotas (fecha, cod remesa, id socio, etc).
o Informes de pagos de socios o grupos de socios, por mes, año, por socio, por
periodo, etc. (ej. informes de todos los socios fundadores o informes de todos socios
fundadores y honorarios).
o Alertar si un socio se retrasa en sus pagos de 6 meses o más y
señalar los meses que debe.
o Permitir alterar la cuota (campos para registrar el por qué
se alteró).
2. Donaciones:
o Registro de Donaciones.
o Informes sobre donaciones.
3. Eventos:
o Registro de ingresos por eventos.
o Informes sobre ingresos por eventos.
4. Otros Ingresos
o Registro de otros ingresos.
o Informes sobre otros Ingresos.
D. Control de Egresos
El control de los egresos de la asociación debe de contemplar las siguientes funciones:
● Consulta de egresos por cheque o caja.
● Registrar el id del respectivo comprobante.
● Registrar los detalles del egreso (facilitar información al contador).
● Generación de Informes.
● Impresión de Informes (estados de ingresos versus egresos).
E. Control de Eventos
En este módulo se logrará realizar lo siguiente:
● Registrar evento con detalles del lugar, fecha, hora, motivo/propósito, descripción,
73
duración, costo, etc.
● Generar invitación estándar luego de ingresar los detalles del evento.
● Modificar publicidad automática de los eventos en el perfil de usuario de los socios
● Informe sobre el desarrollo del evento (resultados del evento)
● Informe de liquidación de evento
74
Imagen 2: Momento en que se le explica al cliente los avances realizados (Sprint 1)
75