Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Memoria de estadía
Ingeniería en Software
Presentada por:
Índice
Resumen 5
Capítulo I Introducción 6
1.1 Datos generales de la empresa 6
1.2 Planteamiento de la problemática del proyecto 7
1.3 Justificación del proyecto 7
1.4 Propuesta de Solución 7
1.5 Objetivo 8
1.5.1 Objetivo general 8
1.5.2 Objetivos específicos 8
1.6 Metas 8
1.7 Metodología de desarrollo del proyecto 8
1.8 Estructura general de la tesis 9
Capítulo IV Metodología 22
4.1 Scrum 22
4.2 SRS 22
2
Easy POA
3
Easy POA
Capítulo IX Conclusiones 40
Referencias 41
4
Easy POA
Resumen
En esta memoria de estadía, se aborda la problemática con la que cuenta el
departamento de planeación de la Universidad Politécnica de Pachuca realizar el
control de gran variedad de POA de cada departamento que cuenta la institución,
para mantener el control de cada uno de ellos, así como también sus actividades a
realizar y la manera en que se trabajará para su organización.
5
Easy POA
Capítulo I Introducción
1.1 Datos generales de la empresa
Universidad Politécnica de Pachuca
6
Easy POA
Dado que este proceso como el llenado de la documentación aún se lleva a mano y
se entrega de manera física se pretende realizar un sistema donde se pueda hacer
el llenado de las requisiciones de bienes y/o servicios de manera digital, una
calendarización por componente y todas las personas involucradas en la planeación
puedan tener acceso al sistema.
7
Easy POA
1.5 Objetivo
1.6 Metas
Realizar un sistema de dicho sistema para la solución y resolución de ante
proyectos de cada actividades, facilita el trabajo de cada una de ellas así como
también tener el control más a fondo de cada área
8
Easy POA
9
Easy POA
10
Easy POA
En la actualidad se pueden diferenciar dos grandes grupos de metodologías de
desarrollo de software: las ágiles y las tradicionales. A continuación, se explican las
características de cada una de ellas.
Espiral: es una combinación de los dos modelos anteriores, que añade el concepto
de análisis de riesgo. Se divide en cuatro etapas: planificación, análisis de riesgo,
desarrollo de prototipo y evaluación del cliente. El nombre de esta metodología da
nombre a su funcionamiento, ya que se van procesando las etapas en forma de
espiral. Cuanto más cerca del centro se está, más avanzado está el proyecto.
11
Easy POA
Diseño rápido de aplicaciones (RAD): esta metodología permite desarrollar
software de alta calidad en un corto periodo de tiempo. Los costes son mucho más
altos y el desarrollo más flexible, aunque requiere una mayor intervención de los
usuarios. Por otro lado, el código puede contener más errores, y sus funciones son
limitadas debido al poco tiempo del que se dispone para desarrollarlas. El objetivo
es iterar el menor número posible de veces para conseguir una aplicación completa
de forma rápida.
Scrum: es también una metodología incremental que divide los requisitos y tareas
de forma similar a Kanban. Se trabaja sobre bloques de tiempos cortos y fijos (entre
dos y cuatro semanas) para conseguir un resultado completo en cada iteración. Las
etapas son: planificación de la iteración (planning sprint), ejecución (sprint), reunión
diaria (daily meeting) y demostración de resultados (sprint review). Cada iteración
por estas etapas se denomina también sprint.
Lean: está configurado para que pequeños equipos de desarrollo muy capacitados
elaboren cualquier tarea en poco tiempo. Los activos más importantes son las
personas y su compromiso, relegando así a un segundo plano el tiempo y los
costes. El aprendizaje, las reacciones rápidas y potenciar el equipo son
fundamentales.
12
Easy POA
constante del cliente. El trabajo se basa en 12 conceptos: diseño sencillo, testing,
refactorización y codificación con estándares, propiedad colectiva del código,
programación en parejas, integración continua, entregas semanales e integridad con
el cliente, cliente in situ, entregas frecuentes y planificación.
Bases de datos distribuidas: Una base de datos distribuida consta de dos o más
archivos que se encuentran en sitios diferentes. La base de datos puede
almacenarse en varios ordenadores, ubicarse en la misma ubicación física o
repartirse en diferentes redes.
13
Easy POA
Bases de datos NoSQL: Una base de datos NoSQL, o base de datos no relacional,
permite almacenar y manipular datos no estructurados y semiestructurados (a
diferencia de una base de datos relacional, que define cómo se deben componer
todos los datos insertados en la base de datos). Las bases de datos NoSQL se
hicieron populares a medida que las aplicaciones web se volvían más comunes y
complejas.
Bases de datos OLTP: Una base de datos OLTP es una base de datos rápida y
analítica diseñada para que muchos usuarios realicen un gran número de
transacciones.
14
Easy POA
Elasticsearch MySQL: Es una base de datos distribuida que escala de manera
dinámica de forma horizontal, por lo que a mayor demanda podemos ir creciendo en
nodos. Llegando a poder almacenar petabytes de información. Elasticsearch se
organiza mediante nodos, los cuales son alojados dentro de un clúster.
No deben confundirse, sin embargo, con los distintos tipos de lenguaje informático.
Estos últimos representan una categoría mucho más amplia, en donde están
contenidos los lenguajes de programación y muchos otros protocolos informáticos,
como el HTML de las páginas web.
15
Easy POA
anteriores, pues permite operaciones de alto nivel y a la vez la gestión local de la
arquitectura del sistema.
Node.js: Sirve para crear sitios web dinámicos muy eficientes, escritos con el
lenguaje de programación JavaScript. Normalmente, los desarrolladores se
decantan por este entorno de ejecución cuando buscan que los procesos se
ejecuten de forma ágil y sin ningún tipo de bloqueo cuando las conexiones se
multiplican. Express es un framework web transigente, escrito en JavaScript y
alojado dentro del entorno de ejecución NodeJS. El módulo explica algunos de los
beneficios clave de este framework, como configurar tu entorno de desarrollo y
cómo realizar tareas comunes en desarrollo y publicación web.
16
Easy POA
2.5.2 Diseño
Tras pasar el análisis, en esta etapa se proponen los módulos a desarrollar y se
deberán detallar cada uno de ellos. Es en esta fase cuando se definen aspectos
como la arquitectura del sistema, la forma en que se desarrollarán las aplicaciones,
el diseño de la base de datos y aquellas herramientas que se utilizaran para el
desarrollo, pruebas y liberación.
2.5.3 Construcción.
Se resume esta etapa en una palabra: codificación, se procede a codificar cada uno
de los módulos planteados en la etapa de diseño, respetando estándares de
codificación y de nombrado. Dentro de esta etapa, el equipo de desarrollo deberá
probar cada uno de los componentes que conforman el sistema, realizando pruebas
de caja negra y caja blanca.
2.5.4 Implementación
En esta fase se unen los módulos creados en la etapa de construcción de acuerdo a
las especificaciones obtenidas en la etapa de diseño, en cada integración de
módulos se comienza en parte con la etapa de pruebas, ya que cada integración
conlleva la necesidad de comprobar que en conjunto los módulos funcionan
correctamente.
17
Easy POA
2.5.5 Pruebas.
Las pruebas pueden dividirse en dos partes, primeramente el equipo de desarrollo
deberá verificar que las funcionalidades implementadas trabajan de manera
correcta. Posteriormente, al haberse asegurado del buen funcionamiento del
sistema, se deberán realizar pruebas con usuarios finales del sistema para validar
que éste cumple con los requerimientos que inicialmente se establecieron. Durante
esta fase se recabarán sus comentarios sobre lo que se debe mejorar y las fallas
que se detectaron en el uso del sistema.
2.5.6 Liberación
Al concluir la fase de pruebas, el sistema se encuentra listo para su uso. Es por ello
que se entrega junto con la documentación al cliente, misma que servirá de
referencia para los usuarios y el equipo encargado de su administración, operación
y mantenimiento.
18
Easy POA
3.1 Jira
La herramienta que utilizaremos será Jira ya que nos permitirá crear una hoja de
ruta asociada a cada proyecto. Esta hoja de ruta permite a los equipos definir la
visión a largo plazo de su trabajo, así como seguir y compartir el progreso de la hoja
de ruta.
3.2 GitHuB
Utilizaremos github para subir el repositorio de código para almacenarlo y tener un control
de versiones.
19
Easy POA
3.3 Testim
20
Easy POA
3.4 Sonarqube
Es software libre y usa diversas herramientas de
análisis estático de código fuente como Checkstyle, PMD o FindBugs para obtener
métricas que pueden ayudar a mejorar la calidad del código de un programa.
3.5 Jest
Fue diseñado con un enfoque en la simplicidad y el soporte para grandes
aplicaciones web. Funciona con proyectos que utilizan Babel, TypeScript, Node.js,
React, Angular, Vue.js y Svelte. Jest es una herramienta que nos ayuda a
automatizar nuestras pruebas. El entender el problema, es el 80% de la solución.
21
Easy POA
Capítulo IV Metodología
4.1 Scrum
Para el desarrollo del presente proyecto utilizaremos Scrum que es un marco que
permite el trabajo colaborativo entre equipos. Al igual que un equipo de rugby (de
donde proviene su nombre) cuando entrena para un gran partido, scrum anima a los
equipos a aprender a través de las experiencias, a autoorganizarse mientras aborda
un problema y a reflexionar sobre sus victorias y derrotas para mejorar
continuamente.
Esta metodología, nos ayudará a agilizar el trabajo en equipo, utilizaremos los sprint
en un período de tiempo determinado el cual será semanalmente donde se realizará
todo el trabajo necesario para alcanzar las metas propuestas en la semana que se
esté cursando.
4.2 SRS
Utilizaremos el documento SRS el cual nos ayudará a dar una descripción completa
de la aplicación web, donde se incluirá su propósito, las características, parámetros
clave de rendimiento y comportamiento. Como tal, esencialmente sirve como un
mapa que guía el proceso de desarrollo y mantiene a todos en el camino correcto.
https://docs.google.com/document/d/1ppvLa6DLpsy775ZTkFqIjIGV5X42-8jwaOj37h
0OQtU/edit
22
Easy POA
https://docs.google.com/document/d/18yT7h1iZQ6IZyQFXfKv9jDmtBgEVdJNzFxUz
EGUXq2g/edit
4.4 Sprint
Se utilizará el sprint que es un período breve de tiempo fijo en el que el equipo de
scrum trabaja para completar una cantidad de trabajo establecida. Los sprints se
encuentran en el corazón de las metodologías scrum y ágil, y hacer bien los sprints
ayudará al equipo ágil a lanzar mejor software con menos quebraderos de cabeza.
4.4.1 Sprints
23
Easy POA
4.4.2 Lista de tareas de la iteración (Sprint Backlog)
En cada sprint se le asignó una actividad a cada miembro del equipo las cuales se
muestran a continuación.
24
Easy POA
4.4.3 El tablero de tareas (Scrum Taskboard)
4.5 PSP
El PSP es un conjunto de prácticas disciplinarias para la gestión del tiempo no
servirá porque no permite trabajar con cualquier lenguaje de programación y
metodología de diseño y contempla la mayoría de los aspectos de los trabajos de
desarrollo de software, la productividad personal de los programadores o ingenieros
de software mejorará, los defectos antes cometidos serán minimizados o eliminados
esto debido a su registro constante, las estimaciones serán más certeras pudiendo
cumplir con las fechas prometidas al líder de proyecto, mediante el seguimiento del
desempeño predicho frente al desempeño real.
https://docs.google.com/document/d/1fiUa9jPWwRFpAsWMU9J9D_TLPAg4xchc5U
45qmXlxBg/edit
25
Easy POA
26
Easy POA
5.1.4.1 Diagrama de despliegue
27
Easy POA
5.1.5.1 Diagrama de casos de uso
28
Easy POA
5.1.5.2 Diagrama Entidad-Relación
29
Easy POA
30
Easy POA
6.1 Maestro-esclavo
Este patrón consiste en dos partes; maestro y esclavos. El componente maestro
distribuye el trabajo entre componentes esclavos idénticos y calcula el resultado
final de los resultados que devuelven los esclavos.
6.2.1.1Factory Method
Es un patrón de diseño creacional que proporciona una interfaz para crear objetos
en una superclase, mientras permite a las subclases alterar el tipo de objetos que se
crearán.
Al momento de que los usuarios ingresen a la aplicación web ellos mismos crearan diversos
objetos que a medida que avance el proceso estos mismo serán modificados por los
mismos y así nos permite tener un mejor manejo de la información
Difiere del patrón constructor anterior en que los métodos o propiedades que
asignemos al prototipo no se copiarán en los objetos que se instancian. Es decir los
métodos y propiedades se compartirán entre todas las instancias.
Una ventaja del patrón prototipo es que utiliza menos espacio en memoria.
Se basa en los objetos literales de javascript ({}). Cada vez que definimos un objeto
con sus propiedades y métodos, estamos definiendo un módulo.
31
Easy POA
6.2.1.5 Patrón Módulo Revelador
El patrón módulo revelador tiene una API pública y privada a diferencia del patrón
módulo en el que todo es público.
Se basa en que en base a un objeto definido podemos crear prototipos para otros
objetos. Con esto se elimina la duplicidad de código.
6.2.2 Estructural
6.2.2.1 Bridge
Ayuda a añadir funcionalidades a una clase existente sin tener que alterar la clase.
6.2.3 Comportamiento
32
Easy POA
6.2.3.2 Patrón Observador
Nos permite encapsular un dato y agregar métodos que podemos ejecutar de forma
encadenada para modificar el estado o valor del dato.
Nos proporciona una forma sencilla de acceder a los valores de una colección. Este
patrón nos ofrece el método next para acceder al siguiente valor de una colección.
Si hemos acabado de iterar nos lo indicará mediante la propiedad done.
33
Easy POA
34
Easy POA
35
Easy POA
36
Easy POA
37
Easy POA
● Pruebas estáticas: Son el tipo de pruebas que se realizan sin ejecutar el
código, puede referirse a la revisión de documentos y se pueden realizar
"pruebas de escritorio" con el objetivo de seguir los flujos del software. Se
utilizan para comprobar si hay defectos en el rendimiento del software y
generalmente se realizan para evitar errores en una etapa temprana de su
desarrollo.
Estas pruebas son indispensables para cada proyecto, ya que por medio de
ellas se detectan la mayor parte de los defectos, y de esta forma se logra
estabilizar el sistema que se está probando. Debemos considerar que:
38
Easy POA
https://docs.google.com/spreadsheets/d/1s3se_RFL_1UabpR1aVYWJwBtpwjFXMM
O/edit#gid=16411318
39
Easy POA
Capítulo IX Conclusiones
Se desarrolló una base de datos mejorando la calidad de trabajo en distintas áreas para
realizar anteproyectos presupuestales de manera remota, eliminando el proceso de papeleo
casi en su totalidad, además de automatizar los procesos de compras de productos
pertenecientes a las requisiciones de cada área, compartiendo información al departamento
de inventarios, teniendo el control de la altas y bajas de equipos o productos que estén en
estado activo o inactivo.
40
Easy POA
Referencias
2022, from
https://www.studocu.com/es-mx/document/universidad-tecnologica-del-valle-de-toluc
a/ingenieria-de-proyectos/plantilla-memoria-de-estadia-sp-2022/23433876
Ingeniería de software: Qué es, Objetivos y Funciones. (2021, April 6). UNIR México.
https://mexico.unir.net/ingenieria/noticias/ingenieria-de-software-que-es-objetivos/
Las 10 Bases de Datos más Populares – Octubre 2022 – Blog Nube Colectiva. (2022,
https://blog.nubecolectiva.com/las-10-bases-de-datos-mas-populares-octubre-2022/
https://concepto.de/lenguaje-de-programacion/
NORMA ISO/IEC 29110 y SCRUM: SIDEP V.2 .0. Retrieved November 4, 2022, from
http://132.248.9.195/ptd2014/enero/0707739/0707739.pdf
Patrones de diseño en JavaScript y Node JS. (2020, August 21). devseo. Retrieved
https://devseo.xyz/patrones-diseno-javascript-node/#Patrones_de_comportamiento
Qué es una base de datos. (n.d.). Oracle. Retrieved November 5, 2022, from
https://www.oracle.com/mx/database/what-is-database/
41
Easy POA
Universidades, S. (2020, December 21). Metodologías de desarrollo software | Blog Becas
https://www.becas-santander.com/es/blog/metodologias-desarrollo-software.html
42