Documentos de Académico
Documentos de Profesional
Documentos de Cultura
La Paz – Bolivia
2023
DEDICATORIA
A mis padres, este proyecto es una forma de responder
todo el esfuerzo que hicieron por mí y para que pueda
estudiar, espero que los llene de orgullo.
AGRADECIMIENTO
Agradecerle a Dios, a mis padres que hicieron un gran
esfuerzo para que pueda estudiar y ser un futuro
profesional, a mi hermana que me apoyo en todo momento
y a mi tutor, un excelente docente que me guío a lo largo de
la realización de este proyecto.
RESUMEN
El periodismo es considerado como el puente entre la información y la población. El
periodismo es de suma importancia para la vida de las personas, puesto que sin este la
gente desconocería de los sucesos más importantes y recientes dejando de vivir de forma
actualizada.
The journalism is considered as a bridge between the population and the information.
Journalism is extremely important for the lives of people because without it they would
not know what the most important and recent events are, ceasing to live in an updated
way.
In the press department of the Bolivian radio station Radio Compañera there is a
problem identified as low efficiency of informative diffusion quantified from a
mathematical formula, to solve this problem a system is proposed in which both web
technologies and artificial intelligence help are applied to assist the reporters of the
medium and attend to the causes of the problem to increase the efficiency in the
diffusion of news.
The solution presented in the following project consists of a web system developed in
the Angular framework, two Rest APIs created in Node JS and Python respectively,
connection with web sockets for real-time communication between reporters and press
officers, a database in PostgreSQL, direct connection to the Radio Compañera website
and an LSTM recurrent neural network developed in TensorFlow and trained using a
data set made up of more than 40,000 national news collected using web scraping
techniques. All with the purpose of providing reporters and press officers with an
environment in which they can write, store, order, publish and review their news,
considering the causes of the problem.
After the implementation of the project, it is concluded that the efficiency of information
diffusion in Radio Compañera was successfully increased, and the solution presented
was satisfactorily developed.
ÍNDICE DE CONTENIDO
CAPÍTULO I
MARCO INTRODUCTORIO
1.1. INTRODUCCIÓN .................................................................................................. 1
1.2. PLANTEAMIENTO DEL PROBLEMA ................................................................... 2
1.2.1. IDENTIFICACIÓN DEL PROBLEMA .............................................................. 2
1.2.2. FORMULACIÓN DEL PROBLEMA ................................................................ 4
1.3. JUSTIFICACIÓN .................................................................................................. 4
1.3.1. JUSTIFICACIÓN TÉCNICA............................................................................ 4
1.3.2. JUSTIFICACIÓN ECONÓMICA ..................................................................... 4
1.3.3. JUSTIFICACIÓN SOCIAL .............................................................................. 5
1.4. OBJETIVOS ......................................................................................................... 6
1.4.1. OBJETIVO GENERAL ................................................................................... 6
1.4.2. OBJETIVOS ESPECÍFICOS .......................................................................... 6
1.5. ALCANCES Y LÍMITES ........................................................................................ 6
1.5.1. ALCANCES .................................................................................................... 6
1.5.2. LÍMITES ......................................................................................................... 7
1.6. METODOLOGÍA ................................................................................................... 7
1.6.1. TIPO DE ESTUDIO ........................................................................................ 7
1.6.2. MÉTODOS ..................................................................................................... 8
1.6.3. TÉCNICAS ..................................................................................................... 8
CAPÍTULO II
MARCO CONCEPTUAL
2.1. ESTADO DEL ARTE ............................................................................................ 8
2.1.1. SITUACIÓN ACTUAL DE LA EMPRESA ....................................................... 8
2.1.2. SITUACIÓN DE LA EMPRESA CON EL SISTEMA ....................................... 8
2.1.3. MEJORA CON LA IMPLEMENTACIÓN DEL PROYECTO ............................ 9
2.2. MARCO CONCEPTUAL ........................................................................................ 9
2.2.1. EFICIENCIA ................................................................................................... 9
2.2.2. MANIFIESTO ÁGIL ...................................................................................... 10
2.2.3. DESARROLLO ÁGIL DE SOFTWARE ......................................................... 11
2.2.4. FRAMEWORK XP........................................................................................ 12
2.2.4.1. Principios del framework XP ................................................................................. 12
2.2.4.2. Valores del framework XP ..................................................................................... 13
2.2.4.3. Prácticas del framework XP .................................................................................. 13
2.2.4.4. Artefactos del framework XP................................................................................. 14
2.2.4.5. Fases del framework XP ....................................................................................... 16
2.2.4.6. Otros artefactoS .................................................................................................... 18
2.2.5. PROCESO KDD........................................................................................... 19
2.2.5.1. Fases del proceso KDD ........................................................................................ 20
2.2.6. MACHINE LEARNING ................................................................................. 22
2.2.6.1. Redes neuronales ................................................................................................. 22
2.2.6.2. Redes neuronales recurrentes.............................................................................. 24
2.2.6.3. Redes neuronales recurrentes LSTM ................................................................... 25
2.2.6.4. Diseño de una red neuronal .................................................................................. 27
2.2.6.5. Evaluación de una red neuronal ........................................................................... 29
2.2.6.6. Keras ..................................................................................................................... 30
2.2.7. BASE DE DATOS ........................................................................................ 30
2.2.7.1. Lenguaje estructurado de consultas (SQL) .......................................................... 31
2.2.7.2. Base de datos relacional o SQL ........................................................................... 32
2.2.7.3. Diagramas modelo relacional ............................................................................... 33
2.2.8. INGENIERÍA WEB ....................................................................................... 35
2.2.8.1. Internet................................................................................................................... 35
2.2.8.2. Protocolos de internet ........................................................................................... 36
2.2.8.3. URL........................................................................................................................ 37
2.2.8.4. Lenguaje hipertexto de texto (HTML) ................................................................... 38
2.2.8.5. Javascript .............................................................................................................. 38
2.2.8.6. Aplicación web....................................................................................................... 40
2.2.8.7. Framework de desarrollo web ............................................................................... 40
2.2.8.8. Servidor web.......................................................................................................... 40
2.2.8.9. Rest API................................................................................................................. 42
2.2.8.10. Web scrapping..................................................................................................... 42
2.2.8.11. Web socket .......................................................................................................... 43
2.2.8.12. Sistemas de gestión de contenido ...................................................................... 44
2.2.9. LENGUAJE UNIFICADO DE MODELADO UML .......................................... 44
2.2.9.1. Diagramas de casos de uso ................................................................................. 45
2.2.9.2. Diagrama de actividad .......................................................................................... 46
2.2.9.3. Diagramas de clase............................................................................................... 48
2.2.9.4. Diagrama de máquina de estados ........................................................................ 49
2.2.9.5. Diagrama de componentes ................................................................................... 51
2.2.10. ESTIMACIÓN DE COSTOS DEL SOFTWARE .......................................... 52
2.2.10.1. Cocomo ii............................................................................................................. 52
2.2.10.2. Estimación del esfuerzo ...................................................................................... 53
2.2.10.3. Modelo de composición de aplicación ................................................................ 53
2.2.10.4. Modelo de diseño temprano ............................................................................... 54
2.2.10.5. Modelo post-arquitectura .................................................................................... 55
2.2.11. SEGURIDAD DEL SISTEMA ..................................................................... 55
2.2.11.1. Métodos de encriptación ..................................................................................... 56
2.2.11.2. Json Web Token .................................................................................................. 56
2.2.11.3. Guardián de rutas ................................................................................................ 57
2.2.11.4. Inyecciones SQL ................................................................................................. 57
2.2.11.5. Object relational model........................................................................................ 57
2.2.11.6. Joi ........................................................................................................................ 58
2.2.12. CALIDAD DE SOFTWARE......................................................................... 58
2.2.12.1. Definición según ISO/IEC 25010 ........................................................................ 58
2.2.12.2. Pruebas de software ........................................................................................... 60
2.2.13. METODOLOGÍA DEL PROYECTO ............................................................ 62
2.2.13.1. DESCRIPCIÓN DE LA METODOLOGÍA ............................................................ 63
2.3. MARCO REFERENCIAL ...................................................................................... 65
2.4. MARCO INSTITUCIONAL.................................................................................... 71
CAPÍTULO III
INGENIERÍA DEL PROYECTO
3.1. SOLUCIÓN PRESENTADA ................................................................................. 69
3.2. PLANIFICACIÓN DEL DESARROLLO ................................................................. 69
3.3. ANÁLISIS DE LA SITUACIÓN ACTUAL .............................................................. 71
3.3.1. SITUACIÓN ACTUAL................................................................................... 71
3.3.2. SITUACIÓN ESPERADA ............................................................................. 73
3.5. PLANIFICACIÓN.................................................................................................. 74
3.6. ITERACIONES ..................................................................................................... 76
3.6.1. PRIMERA ITERACIÓN ................................................................................ 76
3.6.1.1. Selección ............................................................................................................... 77
3.6.1.2. Preprocesamiento ................................................................................................. 79
3.6.1.3. Transformación ...................................................................................................... 82
3.6.1.4. Minería de datos .................................................................................................... 83
3.6.1.5. Evaluación ............................................................................................................. 86
3.6.1.6. Conclusiones de la iteración ................................................................................. 87
3.6.2. SEGUNDA ITERACIÓN ............................................................................... 87
3.6.2.1. Diseño.................................................................................................................... 87
3.6.2.2. Codificación ........................................................................................................... 89
3.6.2.3. Pruebas ................................................................................................................. 99
3.6.2.4. Conclusiones de la iteración ................................................................................. 99
3.6.3. TERCERA ITERACIÓN................................................................................ 99
3.6.3.1. Diseño.................................................................................................................... 99
3.6.3.2. Codificación ......................................................................................................... 101
3.6.3.3. Pruebas ................................................................................................................110
3.6.3.4. Conclusiones de la iteración ................................................................................ 111
3.6.4. CUARTA ITERACIÓN ................................................................................ 111
3.6.4.1. Diseño................................................................................................................... 111
3.6.4.2. Codificación ..........................................................................................................112
3.6.4.3. Pruebas ................................................................................................................118
3.6.4.4. Conclusiones de la iteración ................................................................................118
3.6.5. QUINTA ITERACIÓN ................................................................................. 119
3.6.5.1. Diseño...................................................................................................................119
3.6.5.2. Codificación ......................................................................................................... 120
3.6.5.3. Pruebas ............................................................................................................... 136
3.6.5.4. Conclusiones de la iteración ............................................................................... 137
3.6.6. SEXTA ITERACIÓN ................................................................................... 137
3.6.6.1. Diseño.................................................................................................................. 137
3.6.6.2. Codificación ......................................................................................................... 139
3.6.6.3. Pruebas ............................................................................................................... 150
3.6.6.4. Conclusiones de la iteración ............................................................................... 151
3.7. PRUEBAS INTEGRALES .................................................................................. 151
3.7.1. PRUEBAS DE ACEPTACIÓN .................................................................... 151
3.7.2. CRITERIOS DE CALIDAD DE SOFTWARE .............................................. 152
3.7.3. DEMOSTRACIÓN DEL INCREMENTO DE LA EFICIENCIA ..................... 154
3.8. ESTIMACIÓN DE COSTOS DE SOFTWARE .................................................... 156
3.8.1. COCOMO II ............................................................................................... 156
3.8.2. COSTOS OPERATIVOS ............................................................................ 158
CONCLUSIONES ....................................................................................................... 160
RECOMENDACIONES ............................................................................................... 161
REFERENCIAS BIBLIOGRÁFICAS ........................................................................... 162
GLOSARIO DE TÉRMINOS ....................................................................................... 165
APENDICES
ANEXOS
ÍNDICE DE FIGURAS
Figura N° 2.1 Manifiesto por el desarrollo ágil de software ............................................ 11
Figura N° 2.2 Fases de XP........................................................................................... 17
Figura N° 2.3 Product backlog, release plan e sprint backlog........................................ 19
Figura N° 2.4 Pasos que componen a KDD .................................................................. 20
Figura N° 2.5 Neuronas RNN ........................................................................................ 25
Figura N° 2.6 Ejemplo de grafica de una red neuronal .................................................. 29
Figura N° 2.7 Modelo entidad relación de una base de datos. ...................................... 33
Figura N° 2.8 Tipos de relación en diagramas modelo relacional .................................. 34
Figura N° 2.9 Ejemplo de diagrama entidad relación .................................................... 35
Figura N° 2.10 Ejemplo de JSON .................................................................................. 39
Figura N° 2.11 Arquitectura REST ................................................................................ 41
Figura N° 2.12 Ejemplo de caso de uso de inicio de sesión .......................................... 46
Figura N° 2.13 Ejemplo diagrama de actividades para servir una taza de café ............. 47
Figura N° 2.14 Ejemplo diagrama de actividades separado por roles ........................... 48
Figura N° 2.15 Clase UML ............................................................................................ 49
Figura N° 2.16 Maneras de definir estados ................................................................... 50
Figura N° 2.17 Ejemplo de diagrama de máquina de estados ....................................... 51
Figura N° 2.18 Ejemplo de diagrama de paquetes ........................................................ 52
Figura N° 2.19 Modelo calidad producto ISO/IEC 25010 ............................................... 59
Figura N° 2.20 Diagrama de actividades de la metodología propuesta ......................... 62
Figura N° 2.21 Ciclo de Compromiso – Reflexión ......................................................... 67
Figura N° 2.22 Organigrama de Radio Compañera ....................................................... 72
Figura N° 3.1 Diagrama actividades para la publicación de una noticia ........................ 71
Figura N° 3.2 Diagrama actividades de publicación de noticias mejorado ..................... 73
Figura N° 3.3 Resultados de peticiones GET ................................................................ 78
Figura N° 3.4 Páginas a utilizar para recolectar datos ................................................... 78
Figura N° 3.5 Diagrama de componentes para el Web Scraping .................................. 79
Figura N° 3.6 Diagrama de actividades del sistema de web scraping ........................... 80
Figura N° 3.7 Grafica de la cantidad de noticias por categoría pre-limpieza.................. 81
Figura N° 3.8 Grafica de la distribución de noticias por categoría pre-limpieza ............. 81
Figura N° 3.9 Grafica de la cantidad de noticias luego de la limpieza ........................... 82
Figura N° 3.10 Grafica de la distribución de noticias luego de la limpieza ..................... 83
Figura N° 3.11 Diseño de la red neuronal recurrente LSTM .......................................... 85
Figura N° 3.12 Evolución del accuracy score en función a las épocas .......................... 86
Figura N° 3.13 Model loss para clasificación de texto ................................................... 87
Figura N° 3.14 Diagrama de casos de uso de manejo de noticias ................................ 90
Figura N° 3.15 Mockup de creación/edición de noticias ................................................ 91
Figura N° 3.16 Mockup de listado de noticias ............................................................... 92
Figura N° 3.17 Primera versión del modelo relacional de la base de datos ................... 93
Figura N° 3.18 Diagrama de clases primera versión ..................................................... 93
Figura N° 3.19 Pantalla de creación/modificación de noticias ....................................... 96
Figura N° 3.20 Interfaz de listado de noticias ................................................................ 96
Figura N° 3.21 Diagrama de casos de uso de manejo de archivos multimedia ........... 101
Figura N° 3.22 Mockup de crear nueva carpeta .......................................................... 102
Figura N° 3.23 Mockup de previsualización de archivos ............................................. 103
Figura N° 3.24 Mockup de la funcionalidad manejo de archivos multimedia ............... 104
Figura N° 3.25 Diagrama de componentes del manejo de archivos ............................ 105
Figura N° 3.26 Interfaz de creación/modificación de carpetas ..................................... 106
Figura N° 3.27 Interfaz de la funcionalidad manejo de archivos multimedia ................ 106
Figura N° 3.28 Pantalla de previsualización de archivos ............................................. 107
Figura N° 3.29 Pantalla de agregar medios ................................................................. 108
Figura N° 3.30 Clase ServiciosNoticias ....................................................................... 114
Figura N° 3.31 Código de la funcionalidad de publicar en Wordpress ......................... 114
Figura N° 3.32 Implementación en código de editar noticias en Wordpress ................ 115
Figura N° 3.33 Implementación en código de deshabilitar noticia ............................... 116
Figura N° 3.34 Diagrama de casos de uso de tareas en las noticias ........................... 121
Figura N° 3.35 Mockup lista de tareas ........................................................................ 122
Figura N° 3.36 Mockup de notificaciones a los reporteros ........................................... 123
Figura N° 3.37 Mockup de notificaciones a los jefes de prensa................................... 124
Figura N° 3.38 Mockup de creación de tareas ............................................................ 125
Figura N° 3.39 Mockup de lista de tareas asignadas .................................................. 126
Figura N° 3.40 Diagrama relacional de la base de datos segundo incremento ............ 127
Figura N° 3.41 Diagrama de clases segundo incremento ............................................ 128
Figura N° 3.42 Diagrama de máquina de estados para los WebSockets .................... 130
Figura N° 3.43 Implementación de los estados conexión y escuchar eventos ............. 131
Figura N° 3.44 Funciones para emitir eventos ............................................................ 132
Figura N° 3.45 Código de crear noticia ....................................................................... 132
Figura N° 3.46 Interfaz de lista de tareas .................................................................... 133
Figura N° 3.47 Interfaz de notificaciones de tareas nuevas ......................................... 134
Figura N° 3.48 Interfaz de notificaciones de publicaciones o modificaciones .............. 134
Figura N° 3.49 Interfaz de asignación de tareas.......................................................... 135
Figura N° 3.50 Interfaz de lista de tareas asignadas ................................................... 135
Figura N° 3.51 Diagrama de casos de uso de creación de cuentas ............................ 139
Figura N° 3.52 Mockup listado de cuentas .................................................................. 140
Figura N° 3.53 Mockup creación de cuenta de usuario ............................................... 141
Figura N° 3.54 Mockup login de usuario...................................................................... 142
Figura N° 3.55 Ejemplo de JWT .................................................................................. 143
Figura N° 3.56 Código de guardianes de rutas lado cliente ......................................... 144
Figura N° 3.57 Archivo de rutas de la aplicación ......................................................... 145
Figura N° 3.58 Guardian de rutas en servidor ............................................................. 146
Figura N° 3.59 Mensaje de error en el servidor por JWT invalido ................................ 146
Figura N° 3.60 Interfaz de lista de usuarios registrados .............................................. 147
Figura N° 3.61 Interfaz de creación - modificación de cuentas de usuario .................. 147
Figura N° 3.62 Interfaz de login de usuario ................................................................. 148
Figura N° 3.63 Arqutectura de la API REST en NodeJS ............................................. 154
Figura N° 3.64 Arquitectura de la API REST en Flask ................................................. 154
ÍNDICE DE CUADROS
CAPÍTULO I
MARCO INTRODUCTORIO
1.1. INTRODUCCIÓN
En cambio, el periodismo es algo que siempre estuvo presente en nuestras vidas al ser
el puente que conecta la información con la población para que esta pueda vivir
informada.
En la actualidad, diversos países como China o Estados Unidos han ido experimentando
con maneras de aplicar inteligencia artificial en las áreas periodísticas obteniendo
resultados bastante interesantes al lograr crear máquinas con la capacidad de
automatizar en su totalidad la tarea de los periodistas de recolectar datos mediante
entrevistas para producir notas informativas. Sin embargo, todavía queda mucha
investigación que realizar para poder llegar a una etapa de periodismo digital
completamente automatizado guiado por inteligencias artificiales.
Esto nos lleva al presente proyecto que pretende desarrollar un sistema que aplique
técnicas de inteligencia de artificial para la identificación y clasificación de notas
informativas en un ámbito nacional tomando como caso de estudio el departamento de
prensa de la radiodifusora paceña Radio Compañera, teniendo como meta ayudar al
medio a incrementar su eficiencia de la difusión informativa y pueda ayudarles a
consolidarse como medio informativo.
2
Dentro del departamento de prensa de Radio Compañera se identifican causas que llevan
a problemas con la eficiencia1 de la difusión informativa.
Por la parte de las herramientas, se tiene que estas son muy poco prácticas como ser
grupos de WhatsApp para tener constancia de quién creó la noticia y que los jefes de
prensa puedan revisarlas.
Por parte de los métodos, los reporteros deben de transcribir manualmente las notas en
la computadora que se encuentra dentro del edificio de la radio para poder subirla a la
página web del medio. Finalmente, las notas se almacenan en carpetas dentro de una
única máquina, por lo que el manejo de notas informativas es deficiente.
Todo esto contribuye a que tenga baja eficiencia de difusión informativa, respaldada por
el resultado del cálculo de la siguiente fórmula que cuantifica la eficiencia:
Al calcular la formula se considera que los valores por debajo de 1 indican un proceso
ineficiente. Si el valor es igual a 1, el proceso se considera eficiente y si es mayor a 1, se
considera muy eficiente.
1
“Capacidad de lograr los resultados deseados con el mínimo posible de recursos.” Consultar punto
2.2.1.
3
Días = 30.
Tiempo = 30.
Cantidad de reporteros = 10.
Cantidad de noticias al día por reportero = 5.
Cantidad de noticias por día = cantidad de reporteros*noticias por reportero = 5 * 10 = 50.
Resultados alcanzados = días * cantidad de noticias por día = 30 * 50 = 1500.
Coste actividad = 2.5 * resultados alcanzados = 3750.
Tiempo empleado = tiempo * resultados alcanzados = 30 * 1500 = 45000.
Resultados previstos = 1875 (El valor de resultados alcanzados más un 25% de la mejora
prevista).
Costes previstos = 2812.5 (El valor de coste de actividad menos un 25% de la mejora
prevista).
Tiempo previsto = 33750 (El valor de tiempo empleado menos un 25% de la mejora
prevista.)
Remplazando los valores y calculando:
1500 1875
( ∗ 45000) / ( ∗ 33750) = 0.8
3750 2812.5
Al realizar el cálculo de la fórmula es importante reconocer que este se hace con respecto
al tiempo que le tarda a un reportero de Radio Compañera el publicar una nota informativa
siendo este el parámetro más importante de la fórmula.
Finalmente, a parte del tiempo no se tomará otro parámetro para el cálculo de la formula
puesto que es en base a este que se medirá la eficiencia de la difusión informativa.
Con estás aclaraciones, se llega obtener un valor de 0.8, este valor según indica la
fórmula demuestra que la difusión de notas informativas en el departamento de prensa
de Radio Compañera es baja.
1.3. JUSTIFICACIÓN
El departamento de prensa del medio no cuenta con ningún tipo de sistema informático,
base de datos o aplicación que asista con el manejo de notas informativas. Toda esta
información se maneja de manera manual y la organización, persistencia e integridad de
esta depende totalmente de los reporteros dueños de los reportajes.
Por parte del personal, se tiene que en el departamento de prensa de Radio Compañera
los reporteros, si bien no son expertos en el manejo de sistemas informáticos o
pertenecen al área de ingeniería en sistemas, sí conocen y hacen uso de una herramienta
CMS (Sistema de gestión de contenidos) como lo es Wordpress, para publicar sus notas
en la página web del medio, por lo que los reporteros cuentan con experiencia en el
manejo de sistemas web. Además de contar con cierto grado de conocimiento en el
manejo de aplicaciones móviles.
Puesto que dentro del departamento de prensa de Radio Compañera no se cuenta con
ningún sistema que apoye a la organización/gestión de las notas informativas y se tiene
reporteros con experiencia en el manejo de sistemas web que el departamento de prensa
del medio está interesado en adquirir una herramienta que sirva de apoyo para la gestión
de los reportajes provenientes de los reporteros, para de esa manera incrementar la
eficiencia de la difusión informativa.
Durante el proceso de desarrollo del sistema no habrá costo para Radio Compañera, esto
dado que las herramientas que se emplearán para generar la aplicación web son open
source y gratuitas.
La estimación de coste de desarrollo del software se hará mediante el uso del modelo
Cocomo II, sin embargo, este será un costo asumido por el postulante.
5
El coste de la puesta en producción del sistema será asumido por Radio Compañera,
puesto que para garantizar tanto la eficiencia, la seguridad y la disponibilidad del sistema,
este deberá ser almacenado en servicios de la nube que son de pago. Sin embargo,
Radio Compañera es un medio de radio difusión que cuenta con ingresos propios y
auspicios comerciales siendo una radiodifusora en capacidad de asumir los gastos que
tendría la subida a servicios en la nube del sistema.
El proyecto implementará herramientas poco comunes dentro del área del periodismo,
siendo beneficio para múltiples áreas periodísticas, incluyendo medios televisivos,
intercomunicadoras, periódicos, en general medios en donde se trabaje con notas
informativas.
Por último, se tendrá un impacto positivo en la vida de los trabajadores del departamento
de prensa de Radio Compañera, puesto que podrán trabajar de manera más organizada,
ahorrando tiempo, esfuerzo y dinero al no tener que regresar a las oficinas del medio de
manera muy constante, además de mejorarse el seguimiento del trabajo que desarrollen.
6
1.4. OBJETIVOS
1.5.1. ALCANCES
2
En español: raspado web. Consultar punto 2.2.9.11.
3
Los datos deben ser completos y precisos. Los datos deben mantenerse sin cambios desde el momento
en que son ingresados hasta el momento en que son solicitados.
4
Los datos deben de ser accesibles cuando se requieran donde se requieran.
7
1.5.2. LÍMITES
• Las palabras serán el único criterio para clasificar las notas informativas.
• El sistema no indicará si una noticia es apta para publicación.
• El sistema solo generará las categorías: Política, social, economía, seguridad,
deportes, internacional y ciencia.
• El sistema no hará seguimiento de una nota publicada que fue compartida en redes
sociales.
• El sistema no indicará el rendimiento de una noticia ya publicada en la página web
de Radio Compañera.
• El sistema no hará publicaciones en las redes sociales de Radio Compañera.
• La red neuronal implementada en el sistema no contará con aprendizaje continuo 5.
• El sistema no contemplará ningún tipo de reporte más haya de estadísticas básicas
de los reporteros.
1.6. METODOLOGÍA
Descriptivo, dado que “Los estudios descriptivos pretenden especificar las propiedades,
características y perfiles de personas, grupos, comunidades, procesos, objetos o
cualquier otro fenómeno que se someta a un análisis. Es decir, miden o recolectan datos
y reportan información sobre diversos conceptos, variables, aspectos, dimensiones o
componentes del fenómeno o problema a investigar.” (Hernández, Mendoza, 2018)
5
El modelo de machine learning continúa aprendiendo una vez ya terminado su entrenamiento.
8
El uso de una estrategia descriptiva resulta apropiado para el proyecto ya que permitirá
obtener información precisa sobre los procesos y variables involucradas en la difusión
informativa, lo cual será fundamental para evaluar la eficiencia del sistema y tomar
decisiones informadas en la mejora continua del departamento de prensa.
1.6.2. MÉTODOS
Por la parte de métodos lógicos se optará por un enfoque inductivo por partir de una
observación dirigida a muchos casos particulares para analizar su comportamiento.
Además de, incluir el enfoque lógico deductivo que parte de los datos generales para
deducir suposiciones.
1.6.3. TÉCNICAS
Dentro de las técnicas a utilizarse se harán uso de entrevistas con los jefes de prensa en
el medio, además de recurrir a la observación para tener un mejor entendimiento sobre
cómo es la realidad del departamento de prensa de Radio Compañera.
CAPÍTULO II
MARCO CONCEPTUAL
8
CAPÍTULO II
MARCO CONCEPTUAL
2.1. ESTADO DEL ARTE
Dentro del departamento de prensa de Radio Compañera no se cuenta con ningún tipo
de sistema o base de datos en donde se puedan almacenar las notas informativas de los
reporteros, todo se resguarda en una única computadora. Además, las notas se
comparten para revisión mediante grupos de WhatsApp, es así como la organización
dentro del departamento es deficiente, puesto que el seguimiento a las notas es pobre,
la recuperación de las mismas posterior a su uso es muy complejo, el proceso de revisión
mediante herramientas como WhatsApp poco conveniente, se usa una única
computadora para la publicación de notas en la página web y en general se tiene una
dependencia muy alta de una única computadora, si esta fallase se perdería una cantidad
considerable de información. Todos los puntos mencionados conllevaran a que se tenga
poca eficiencia con la difusión de noticias.
2.2.1. EFICIENCIA
La importancia de la eficiencia radica en que esta busca mejorar el proceso para optimizar
resultados, por ende, si la eficiencia es baja, existen problemas con los procesos lo que
termina en resultados deficientes. La eficiencia de los procesos debe de ser una de las
metas principales para cualquier organización dado que una alta eficiencia se traduce
como productividad favorable para el negocio y esto concluye en mayores ganancias y
menos costes para la organización.
Dentro del contexto de este proyecto se trabajará con la palabra eficiencia en función al
tiempo empleado para una actividad, en este caso, la difusión de notas informativas. Por
ende, al mencionar el termino baja eficiencia haremos referencia a como los tiempos de
difusión son altos.
Una baja eficiencia con respecto al tiempo de publicación para un medio de radiodifusión
como lo es Radio Compañera puede traducirse como perdidas monetarias y de estatus
como medio noticioso lo cual resulta como un gran problema para el medio.
El manifiesto ágil son los principios sobre los que se basan los métodos alternativos a los
tradicionales. El manifiesto ágil nace en febrero de 2001 cuando el creador de Extreme
Programming, Kent Beck reúne a diferentes críticos de modelos de mejora de software
basados en procesos para discutir técnicas y formas de desarrollar software, en dicha
reunión aparece el término “Métodos ágiles” en referencia a los métodos alternos a los
tradicionales.
Los asistentes a dicha reunión resumen los principios sobre los que los métodos
alternativos o ágiles deben estar basados, dichos principios se pueden leer en la siguiente
figura.
11
Figura N° 2.1
Manifiesto por el desarrollo ágil de software
A diferencia del desarrollo tradicional de software, el desarrollo ágil tiene como enfoque
la calidad del producto y consecuentemente, la satisfacción del cliente. Además de ser
una forma de afrontar un ambiente volátil, altamente cambiante.
El desarrollo ágil de software tiene sus bases cimentadas en lo que es el manifiesto ágil.
12
2.2.4. FRAMEWORK XP
Dentro de XP se cuenta con una serie de valores y principios, artefactos, prácticas y fases
que se expondrán a continuación.
Los valores de XP, al igual que las prácticas, son los 5 listados a continuación.
Kent Beck en su libro “Extreme Programing Explained: Embrace Change” (Kent Beck,
2004). Nos explica que dentro XP deberían aplicarse 12 buenas prácticas referentes tanto
a la hora de codificar como a la hora de desarrollar un proyecto. De las 12 prácticas, se
explicarán 2, diseño simple y estándares de programación.
14
Historias de usuario
En el libro: Extreme Programming Applied: Playing to Win (Ken Auer, 2002), Kent Beck
comienza a hablar sobre las historias de usuario, describiéndolas como un “antídoto a los
requerimientos” que son “algo obligatorio o de necesidad”. Las historias de usuario como
tal son una forma de describir una funcionalidad proveniente de un requerimiento del
usuario desde su perspectiva, por ende, están escritas de manera informal. Las historias
de usuario deben seguir un formato dado: “Como, quiero…, para…”. Dichas además
están escritas por lo general en tarjetas y contar con criterios de aceptación, siendo estos
una lista de cosas que deben de cumplir para validar que el requerimiento del usuario
este satisfecho.
Cuadro N° 2.1
Ejemplo de historia de usuario
Historias técnicas
Cuadro N° 2.2
Ejemplo de historia ténica
Pruebas de aceptación
Dentro del desarrollo de Software las pruebas de aceptación son una forma de validar
que se cumplan las necesidades del cliente. Dentro del contexto de XP, las mismas serán
usadas para validar que las funcionalidades desarrolladas provenientes de las historias
de usuario cumplan con las peticiones de los clientes. Consultar punto 2.2.13.2. para más
información sobre las pruebas de aceptación.
Figura N° 2.2
Fases de XP
Fase I Planificación
Planificación o planning es la primera fase del ciclo de vida de XP, es donde los clientes
o usuarios conocerán al equipo de desarrollo para identificar los requerimientos en forma
de historias de usuario, pero estás historias de usuario son de forma más general,
haciendo uso únicamente de la estructura del como quiero para. Posteriormente las
historias de usuario se organizarán en iteraciones que cubrirán una pequeña parte de la
funcionalidad o características requeridas. Será la combinación de las iteraciones la que
dará el producto final.
Fase II Iteración
Es durante esta fase que a las historias de usuario seleccionadas se les agregan los
criterios de aceptación y se les da el formato en tarjeta.
Fase IV Codificación
También llamada fase de desarrollo es la fase más importante del ciclo de vida de XP.
Dentro de XP se le da mayor prioridad al código por sobre las demás tareas en pro de
asegurar que el cliente reciba algo sustancial en valor al final del día.
Fase V Pruebas
Es la última fase previa a la entrega de una funcionalidad o volver a iniciar una nueva
iteración. A diferencia de lo que el nombre indica, está fase no se encarga de ver que el
software funciona (dichas pruebas se realizan en la fase de codificación), sino que se
encarga de validar si el software desarrollado es del agrado del cliente, para conseguir
esto se hace uso de pruebas de aceptación con el cliente.
Si bien dentro del framework XP existen una variedad de artefactos, lo cierto es que varios
están relacionados con lo que es completamente el apartado de codificación o puntos
técnicos, no tanto a la planificación u organización del proyecto como tal, por eso se
describirán artefactos propios de frameworks diferentes a XP.
Product backlog
El product backlog contendrá todos los requerimientos del software y pueden estár
ordenados en base al orden en que se irán atendiendo. Cada requerimiento será una
19
historia de usuario, pero esta tendrá unicamente la parte del enunciado (como, quiero
para).
Los requerimientos del product backlog pueden ser divividos en release6s dando como
resultado un release plan. Finalmente cada release también será divido en iteraciones o
sprints en donde los requerimientos serán convertidos en historias de usuario ya
completas, agregando los criterios de aceptación y el formato en fichas. Cada iteración o
sprint abarcará un número de estás. Cabe aclarar que según el resultado de está división
cada iteración o sprint tendrá su propia lista con historias de usuario que atender, a esta
lista se le denomina como sprint backlog.
Figura N° 2.3
Product backlog, release plan e sprint backlog
6
Entrega final de un paquete de software al haber finalizado múltiples iteraciones.
20
Siendo la misma un proceso secuencial para hallar y explotar patrones dentro de grandes
volúmenes de información. La misma al ser un proceso de software recibe únicamente
entradas y da como resultado salidas.
Figura N° 2.4
Pasos que componen a KDD
Fase I Selección
Durante esta fase se hace la determinación de objetivos que se desean alcanzar, los
mismos deben de ser precisos y medibles. Durante esta fase también se hace la
identificación de las fuentes de datos de donde obtendremos la información.
Son dos los objetivos de esta fase, siendo el primero definir las metas u objetivos a
alcanzar, por ejemplo, se puede especificar que se desea lograr un modelo de machine
learning con la capacidad de detectar enfermedades de la piel. Como segundo objetivo
se tendrá la identificación de las fuentes de datos a usarse para generar un conjunto de
datos.
21
Fase II Preprocesamiento
Ya con las fuentes de datos identificadas, se procede a recolectar datos que serán de
utilidad para alcanzar los objetivos propuestos. Durante esta fase se generará el conjunto
de datos que posteriormente alimentará un modelo de aprendizaje.
Con el conjunto de datos ya armado resultado de una fase previa, se procede a realizar
gráficos estadísticos para tener un mejor entendimiento del comportamiento de los datos
recolectados. También pudiéndose realizar, en caso de que sea posible, un proceso de
reducción de dimensionalidad en los datos.
El objetivo de la fase es limpiar7 todos los datos recolectados para que estos estén listos
para alimentar al modelo de machine learn seleccionado previamente.
También conocida como data mining, es durante esta fase que se seleccionará un modelo
de aprendizaje, ya sea supervisado o no supervisado, que se adapte mejor a la
problemática que se está encarando.
7
Remover datos de poca relevancia, campos nulos, valores inválidos, etc.
22
Fase V Validación
Según Burkov, en el libro “El libro de Machine Learning en 100 páginas”, se señala que:
“El machine learning es un subcampo de las ciencias de la computación encargado de la
construcción de algoritmos que para poder funcionar dependen de una colección de datos
que describan algún fenómeno. Dichos datos pueden venir de la naturaleza, ser
generados por humanos o generador por otro algoritmo”. (Burkov, 2019).
Dicho de manera sencilla, el machine learning son algoritmos que permiten que las
máquinas aprendan sin ser explícitamente programadas para ello. Esto se hace mediante
la identificación de patrones en un conjunto de datos ya procesado mediante técnicas
estadísticas. De igual manera, un modelo de aprendizaje no será otra cosa más que un
algoritmo con la capacidad de identificar dichos patrones, adaptarse a la información y
realizar predicciones.
El machine learning como tal es bastante extenso y cubre muchos modelos, de entre
ellos los más destacados son las redes neuronales, un conjunto de modelos tan
importantes que caen en su propia categoría como un subconjunto del machine learning
llamados deep learning.
Como ya se había mencionado, las redes neuronales son tan importantes y variadas que
caen en su propia categoría conocida como deep learning o aprendizaje profundo.
8
Valor estadístico que indica que la efectividad de una línea de regresión.
9
Métrica que indica el rendimiento de un modelo de Machine Learning describiendo el radio de predicciones
correctas sobre las predicciones totales. Consultar punto 2.2.7.4.
23
Dentro del deep learning, una red neuronal es un modelo de machine learning con la
capacidad de aprender técnicamente cualquier cosa, al ser conocidas como
“aproximadores universales de funciones”. Sin embargo, se tiene como desventaja el
hecho de que requieren un gran volumen de información para funcionar, a diferencia de
los modelos clásicos de machine learning. Otra desventaja de las redes neuronales es
que requieren pasar por una etapa de entrenamiento para poder realizar predicciones,
dicha etapa puede llegar a tardar horas o días.
Neuronas
En una red neuronal, una neurona no es más que una función matemática que recibe una
entrada, la procesa y da una salida. Una neurona por si sola solo puede resolver
problemas muy sencillos, sin embargo, al convertir la salida de una neurona en la entrada
de otra se consigue resolver problemas cada vez más complejos.
Funciones de activación
Es una función matemática que será aplicada por la neurona al input que recibe con la
finalidad de generar una salida que vaya de los rangos 0 a 1 para decidir si se activa la
siguiente neurona o no.
Existen muchas funciones de activación que son utilizadas, pero las más comunes son:
ReLu, tangente hiperbólica (tanh), softmax y sigmoide.
Para poder aprender cada modelo de deep learning debe de procesar múltiples veces la
información que se le brinda, esto porque con una sola vez que el modelo procese la
información no será suficiente para poder realizar predicciones adecuadas.
No existe una manera de calcular la cantidad óptima de épocas para una red neuronal
dado que este número depende tanto en la capacidad de procesamiento del ordenador
como del tamaño de la información, su tipo y hasta el mismo diseño de la red. De todas
formas, una buena cantidad de épocas que debe de realizar la red es de 20 a 25 de
manera general.
También hay que aclarar que más épocas no equivale a mejor aprendizaje, puede existir
un momento en donde el modelo simplemente deje de aprender y solo se desperdicie
poder de cómputo.
Figura N° 2.5
Neuronas RNN
Sin embargo, las RNN convencionales traen consigo otro problema, si bien estas
implementan de cierta forma una memoria, es una memoria de corto plazo por lo que, al
tratar con secuencias largas, la red pierde efectividad.
Una red neuronal recurrente LSTM puede estar compuesta por múltiples capas, cada
capa desempeñando una funcionalidad de procesado de la información. Entre las más
comunes se tienen las capas de embeddings, dropout, LSTM, flattening, y capas dense.
Se procede a explicar el funcionamiento y significado de cada capa. Es necesario aclarar
que todas estas no son únicas de una red neuronal de tipo LSTM, pueden ser utilizadas
en otros modelos de aprendizaje profundo.
26
Capa de embedding
Para ser más concisos, se podría poner de ejemplo que a una capa de embedding se le
da como entrada la siguiente oración: “Hola Mundo”, está capa procesaría el texto
recibido y daría como resultado tres vectores (un vector por cada palabra de la oración
incluyendo el espacio en blanco) compuestos por números en rango 0 a 1, cabe señalar
que estos vectores deberán tener el mismo tamaño además de ser únicos, por único
entendiendo que una palabra se traduce en un único vector, dos palabras diferentes no
pueden dar el mismo resultado.
Capa de dropout
Una capa de dropout o por su significado en español: capa de abandono es una capa de
una red neuronal que se encarga de seleccionar aleatoriamente elementos del input que
serán descartados, provocando de esta forma que las neuronas de la siguiente capa no
se activen. Si bien al inicio se menciona que el proceso de descarte es aleatorio lo cierto
es que a medida que se lleve a cabo el entrenamiento, la red neuronal irá seleccionando
los valores a ser descartados mediante procesos estadísticos. Únicamente las primeras
ejecuciones de la capa serán aleatorias.
Las capas de dropout se emplean con la idea de prevenir que algunas neuronas
desarrollen dependencia hacía otra neurona, de esta forma generando overfitting10.
Capa LSTM
Una capa LSTM o por sus siglas Long Short-Term Memory (memoria a corto-largo plazo
en español), es una capa de una red neuronal encargada de memorizar secuencias, esta
capa está compuesta por una única neurona LSTM que memoriza la entrada recibida y
10
En español: sobre ajuste. Problema que pueden desarrollar los modelos de aprendizaje en donde sólo
aprenden a predecir valores específicos en lugar de valores generales.
27
Capa de flattening
Por citar un ejemplo, si se recibe una matriz que es una estructura en dos dimensiones,
una capa de flattening se encargará de convertirla en un array o vector unidimensional.
Capa dense
También conocidas como capas ocultas o por su traducción, capas densas. Son capas
de una red neuronal compuestas por neuronas tradicionales en donde cada neurona
recibe un único input.
A veces también son llamadas capas totalmente conectadas puesto que todas sus
neuronas se conectan con todas las neuronas de la capa siguiente.
Para diseñar una red neuronal no existe una guía que se pueda seguir al píe de letra,
esto debido a que el mismo diseño de la red depende del objetivo que desea cumplir y la
complejidad de este, sin embargo, en el sitio web Interactive Chaos, se definen los 5
siguientes pasos (InteractiveChaos, diciembre 2022):
Sin embargo, el sitio web también específica que estos pasos son efectivos para
arquitecturas sencillas, pero para modelos más complejos se deben de tomar más
decisiones, para ello, la autora Lavanya Shukla, en una publicación para el sitio web:
towardsdatascience.com, nos da dos pasos extra que podríamos resumir en:
28
Tomando como base los pasos de los autores, podríamos generalizar el diseño de una
red neuronal en 7 pasos:
Se hará uso de estos pasos para definir el diseño de la red neuronal. Hay que aclarar
también que, por motivos de orden, al definir cada punto de ser necesario se explicará
capa por capa tal que así:
Para representar gráficamente el modelo, se hará uso de la librería keras. Esta librería
nos proporciona métodos y clases de alto nivel para el diseño de redes neuronales una
de las cuales nos permite ver de manera gráfica la red diseñada, pero este diseño tiende
a contener mucha cantidad de información técnica por cada capa, por ende, se opta por
un diseño mucho más sencillo basado en el diseño original que proporciona la librería,
en este diseño sólo se especifica de forma secuencial el nombre de capa, la cantidad de
neuronas o tamaño de esta y su función de activación.
En la siguiente figura se puede observar un ejemplo de cómo se grafica una red neuronal
utilizando esta propuesta.
29
Figura N° 2.6
Ejemplo de grafica de una red neuronal
Para evaluar una red neuronal se recurren a diversas técnicas estadísticas que
cuantifican el desempeño de la red. Existen muchas métricas de evaluación, pero son 2
las más comunes y confiables para evaluar una red neuronal: accuracy score y model
loss.
Antes de explicar ambas métricas es importante resultar dos puntos. Primero, ambas son,
por decirlo de algún modo, métricas inversas, por ende, se espera que mientras uno
aumente el otro decremente. Segundo, en cada época del entrenamiento se calculan
estos valores y se hace el cálculo sobre dos conjuntos de datos, los datos de
entrenamiento (datos utilizados para entrenar) y los datos de validación (información
nueva para el modelo).
En ambos casos importa más el resultado que da sobre los datos de validación.
30
Accuracy score
𝑃𝑟𝑒𝑑𝑖𝑐𝑐𝑖𝑜𝑛𝑒𝑠 𝑐𝑜𝑟𝑟𝑒𝑐𝑡𝑎𝑠
( ) ∗ 100
𝑃𝑟𝑒𝑑𝑖𝑐𝑐𝑖𝑜𝑛𝑒𝑠 𝑡𝑜𝑡𝑎𝑙𝑒𝑠
Como referencia todo valor por debajo del 60% es considerado deficiente y todo valor por
encima del 70% se considera excelente. Sin embargo, los valores muy altos, cercanos o
iguales al 100% podrían indicar un caso de overfitting.
Model loss
Podría traducirse como perdida del modelo. Es un valor que incrementa con cada
predicción fallida y por lo tanto indica cuan pésimo es el desempeño de una red. Si un
modelo es perfecto y nunca se equivoca, entonces el valor de pérdida o loss será de 0,
caso contrario irá incrementando.
Por lo general se considera que los valores de loss por debajo de 1 son buenos, sin
embargo, el rango óptimo está por debajo de 0.5 y cualquier valor por encima de 1.2
indican un desempeño muy pobre por parte de la red.
2.2.6.6. Keras
Keras es una librería que proporciona una interfaz de código sencilla para el lenguaje de
Python, fácil de entender para crear redes neuronales capa por capa incluyendo redes
recurrentes.
En la página de Internet maestros del web, Damián Pérez Valdés nos describe una base
de datos como: “un ‘almacén’ que nos permite guardar grandes cantidades de
31
información de forma organizada para que luego podamos encontrar y utilizar fácilmente.”
(Damián Pérez Valdés, 2007).
El SQL es un lenguaje que es usado en su totalidad por las bases de datos de tipo
relacional. SQL como tal no es un lenguaje de programación, es una herramienta que se
usa para manipular datos en las bases de datos.
Dentro de SQL existe el DML (Lenguaje de Manipulación de Datos) dicho nos permite,
cómo su nombre indica, manipular la información que reside en una o más tablas de la
base de datos. Son 4 las operaciones que lo conforman: Selección, inserción, eliminación
y modificación.
También se tiene el DDL (Lenguaje de Definición de Datos) el mismo más que manipular
la información dentro de las tablas de la base de datos, manipula la estructura que tienen
las tablas. Las operaciones que abarca son 3: Crear (Create), Modificar (Alter), Eliminar
(Drop).
Cuadro N° 2.3
Ejemplos de consultas SQL
Consulta Significado
SELECT * FROM personas; Obtiene todas las columnas y filas de una
tabla denominada personas.
32
Otro punto importante de las bases de datos relacionales son las mismas relaciones, la
información se almacena en tablas y estás tablas podrán relacionarse con otras tablas
mediante un concepto conocido como llaves primarias y llaves foráneas. Una llave
primaría es un campo único que sirve como identificador de la tabla y actúa como
representante de esa misma tabla cuando se produce una relación. Al pasar de su tabla
de origen a otra mediante una relación, la llave primaría pasa a ser conocida como llave
foránea.
Figura N° 2.7
Modelo entidad relación de una base de datos.
Es un tipo de diagrama que ilustra como las entidades (tablas en la base de datos) se
relacionan entre sí.
Este diagrama sigue una estructura muy parecida a la que manejan los diagramas de
clase en UML a las entidades tener un diseño muy parecido a las clases, sin embargo,
se tiene la diferencia que en las entidades solo se lista los campos que contiene junto
con su tipo de dato y si este es o una clave primaria o clave foránea.
En este tipo de diagrama no existen las mismas relaciones que existen en otros tipos de
diagramas, por ende, no existen relaciones como la herencia. Las tablas se relacionan
mediante líneas simples, de todos modos, existe un detalle crucial, el símbolo en el
extremo de las relaciones indica el tipo de relación que existe entre las entidades.
En la siguiente figura se ilustra los tipos de relación que existen y como se representan.
34
Figura N° 2.8
Tipos de relación en diagramas modelo relacional
Brevemente explicado, la relación uno a uno se denota con una línea simple y representa
que una relación posee un único elemento de otra relación. Por citar un ejemplo: Una
persona puede tener una única información de contacto.
La relación uno a muchos indica que un elemento de una relación puede tener múltiples
elementos de otra relación. Por ejemplo: Un equipo puede tener múltiples personas que
lo conforman.
Figura N° 2.9
Ejemplo de diagrama entidad relación
Dentro del apartado de ingeniería web se explicará todo lo relacionado con la parte web
del proyecto, incluyendo herramientas de desarrollo web.
2.2.8.1. Internet
Internet como tal ofrecen varios servicios de comunicación, como servicios de mensajería
o correo electrónico basado en el protocolo SMTP. Pero uno de los servicios más
importantes y consumidos de Internet es la World Wide Web.
36
Dentro de Internet existen multiples protocolos para lograr una comunicación y los
mismos varian en base al tipo de servicio del que se hable. Entonces, en la Worl Wide
Web también existirán una variedad de protocolos dentro de los cuales el más destacado
es el protocolo HTTP.
Protocolo HTTP
El sitio web MDN Web Docs se puede encontrar la siguiente definición: “HTTP es un
protocolo de la capa de aplicación para la transmisión de documentos hipermedia, como
HTML”. (developer.mozilla.org/es/docs/Web/HTTP, septiembre 2022).
HTTP también implementa diferentes métodos para indicar una acción sobre un recursos,
dicha acción puede ser obtener, subir, modificar o eliminar un documento en un receptor,
dichos serán denominados métodos de petición o HTTP verbs. Se hace un listado de los
métodos más comunes:
Cuando se realiza una petición mediante uno de los métodos de HTTP a un receptor, el
mismo deberá mandar una respuesta al emisiario con un código indicando el estado de
su petición. Los códigos van del 100 al 599 y son agrupados de 100 en 100 de la siguiente
manera:
Dentro de estos códigos existen algunos que destacan por lo comunes que son, como
ser el código 200 que indica una petición exitosa o el código 404 que indica cuando un
archivo solicitado por el cliente no pudo ser encontrado por el servidor.
2.2.8.3. URL
Las URL o por sus siglas Universal Resource Locator es una cadena de texto que como
su nombre indica, sirve para acceder a un recurso en Internet. Las URL especifican de
forma exacta el nombre del recurso al que se quiere acceder junto con su dirección exacta
y el formato del archivo.
Las URL están compuestas por el protocolo, nombre de dominio, dirección del archivo,
nombre y formato del archivo. Un ejemplo podría ser la siguiente URL:
http://www.example.com/paginas/manzana.png
Como se puede observar, la url empieza por el protocolo, muy por lo general será http o
su variante con cifrado https, luego de dos puntos y dos barras se específica el nombre
38
del dominio, este puede corresponder a cualquier sitio dentro del Internet, seguido se
tiene el archivo y su dirección, separadas por barras, para este caso se puede observar
que el archivo es una imagen y se encuentra en la carpeta páginas.
Para definir el contenido de un archivo de hipertexto, HTML trabaja con etiquetas o tags
dichos serán interpretados por un navegdor web y mostraran el contenido. Ejemplos de
estás etiquetas son: <body>, <head>, <p>.
2.2.8.5. Javascript
Ya se conoce lo que es el HTML, una forma de definir la estructura del contenido Web
que luego será mostrado por un navegador web, pero el problema del HTML “puro” es
que solo sirve para generar contenido estático o contenido que nunca cambiará, por ende,
solo sirve para crear páginas web estáticas. Para arreglar esto HTML suele ser
combinado con CSS11 para agregar estilo al contenido y JavaScript para lograr que dicho
contenido pase a ser dinámico.
11
Lenguaje de diseño gráfico para definir y crear la presentación de un documento, muy por lo general, en
HTML.
39
JSON
Los JSON son estructuras clave-valor, esto significa que para acceder a un dato es
necesario conocer bajo que clave se encuentra. Las claves son solo una manera de
acceder ubicar los datos, algo así como sus coordenadas, no tiene nada que ver son
seguridad de la información.
En un JSON las claves deben de tener siempre un valor literal definido entre comillas
dobles, en cambio, los valores pueden ser tanto literales, como numéricos u otro tipo de
dato más complejo como ser números decimales, listas de elementos o incluso pueden
ser otros objetos.
Figura N° 2.10
Ejemplo de JSON
Como se explicó en el punto anterior, una aplicación web será una página web estándar
con características de interacción dinámicas, dicho de otra forma, una página web que le
ofrece al usuario la capacidad de interactuar con sus componentes, cambiando el estado
de estos o alterando la estructura del sitio web a petición del usuario. Hoy en día dentro
de la web la mayoría de los sitios serán aplicaciones web, puesto que ya casi no se usan
las páginas web estáticas.
Angular
Actualmente Angular es uno de los web frameworks más utilizados y bastos que existe.
12
Archivos de código en un lenguaje de programación que aportan funcionalidades comunes ya
implementadas.
41
recibirá nuestras peticiones, como que nos diga el número de teléfono de una persona,
consultará con su base de datos y nos dará una respuesta ya sea afirmativa o negativa
mediante el mismo medio por el cual le llego nuestra petición inicial.
Figura N° 2.11
Arquitectura REST
Node JS
Node JS es una herramienta diseñada para poder hacer uso de JavaScript en el backend
permitiendo crear un servidor web meramente basado en esta tecnología, implementando
todas las funcionalidades básicas como recibir y responder peticiones, además de
realizar consultas con la base de datos.
Flask
En el sitio web de Red Hat podemos encontrar la siguiente definición de Rest API: “Una
API de REST, o API de RESTful, es una interfaz de programación de aplicaciones (API o
API web) que se ajusta a los límites de la arquitectura REST y permite la interacción con
los servicios web de RESTful.” (redhat.com/es/topics/api/what-is-a-rest-api, 2020).
De manera más ténica, una API permitirá que dos aplicaciones que no necesariamente
están creadas bajo las mismas características puedan compartir información. Finalmente
si lo hacen aplicando la arquitectura petición-respuesta REST, tendremos una Rest API.
A veces traducido de forma literal como “raspado web” o ”cosecha web”, el web scraping
es definido por el autor Broucke en el libro “Practical Web Sxraping for Data Science”
como: “la construcción de un agente para descargar, analizar y organizar datos
provenientes de la web de manera automatizada” (Seppe Vanden Broucke, 2018). En
otras palabras, el web scraping es una manera de obtener de forma automática
información que reside en páginas web, esto mediante herramientas disponibles en
algunos lenguajes de programación y el protocolo HTTP.
Para realizar web scraping, primeramente, se parte de obtener la dirección del sitio del
que se desea obtener información. Seguidamente, la herramienta con la que se aplicará
la técnica realizará una petición HTTP al sitio. En caso de que la petición sea exitosa
(código 200), se puede proceder con los demás pasos. Caso contrario, no se podrá
realizar web scraping.
43
Finalmente, se puede filtrar toda la información de la página web que sea de relevancia
para la investigación, generando de esta forma un conjunto de datos de gran volumen
proveniente de un sitio en la web de manera automática y eficaz.
Esta manera de comunicación no es un problema como tal, pero en caso de que exista
una constante e impredecible interacción entre emisor y receptor podría ser problemática.
Para tratar con estos escenarios, se implementan los Web Sockets.
Este tipo de tecnología puede ser implementar en cualquier arquitectura que trabaje con
un cliente y un servidor además de ser óptima para apps de mensajería o sistemas de
notificaciones en tiempo real.
13
Tanto el emisor como el receptor en la comunicación pueden mandar mensajes.
44
Muy por lo general los CMS son utilizados para crear blogs o páginas de noticias.
Wordpress
Wordpress es actualmente uno de los CMS más conocidos y utilizados a nivel mundial
para crear páginas web. Definido en su página web como: “Un software de código abierto
que puedes usar para crear fantásticas webs, blogs o aplicaciones.” (Wordpress, 2022).
Este CMS es tan popular que autoproclama que el 43% de las páginas en línea lo utilizan.
Wordpress, al ser de código abierte propone múltiples alternativas para ser controlado
desde agentes externos mediante el uso del protocolo HTTP, a esta característica se le
llama Wordpress Xmlrpc.php. Para poder manejar Wordpress remotamente existe la
librería en el lenguaje de programación de Python denominada wordpress-xmlrpc.
En UML existen variedad de diagramas, cada uno con distintas funcionalidades, por citar
algunos se tiene: diagramas de clase, casos de uso, diagramas de procesos, diagramas
de máquinas de estados y diagramas de paquetes.
• El actor: Usuario del sistema ya sea lógico (otro software) o físico (una persona)
que interactúa con el sistema. Es denotado mediante una figura de palo con el
nombre del actor.
• El caso de uso: El proceso que se desarrolla, por citar un ejemplo puede ser: iniciar
sesión. Son denotados como un ovalo con el nombre del caso de uso dentro.
• Asociación de comunicación: Indica que un actor puede ejecutar un caso de uso.
También puede indicar que un caso de uso puede utilizar otro caso de uso. Se
denota como una línea recta.
• Asociación de inclusión: Indica que un caso de uso requiere de otro caso de uso
para ser ejecutado. Se denota como una línea punteada con el termino <include>
escrito encima.
• Asociación de generalización: Indica que un caso de uso es una versión más
general de otro. Se denota como una flecha.
• Asociación de extensión: Indica que un caso de uso puede bloquear la ejecución
de otro caso de uso. Se denota como una línea punteada con el termino <extends>
escrito encima.
• Límite del sistema: Encierra todos los casos de uso indicando que pertenecen a
un sistema. Se denotan como un rectángulo con el nombre del sistema escrito en
la parte superior.
En la siguiente figura se puede observar un ejemplo del caso de uso de inicio de sesión.
46
Figura N° 2.12
Ejemplo de caso de uso de inicio de sesión
• Nodo de inicio: Denotado por un círculo negro. Indica donde iniciará el flujo de la
actividad.
• Proceso u actividad: Denotado por un rectángulo blanco con un texto en el centro.
Indica la ejecución de la acción descrita en su texto.
47
• Nodo de decisión: Denotado por un rombo. Indica que el flujo tiene dos posibles
caminos, según se cumpla o no la condición el flujo podrá seguir uno u otro camino.
• Concurrencia: Denotado por dos rectángulos negros horizontales o verticales.
Indica que todas las secuencias de actividades dentro de los rectángulos pueden
ser llevadas a cabo al mismo tiempo.
• Terminador: Denotado por un círculo negro más pequeño con una circunferencia
negra un poco más grane que el círculo. Indica el fin del flujo y el fin del diagrama.
Cada elemento descrito se debe de interconectar mediante una flecha que indica el flujo.
Figura N° 2.13
Ejemplo diagrama de actividades para servir una taza de café
Otra forma de representar este diagrama es separando las actividades según roles como
se observa en la siguiente figura.
48
Figura N° 2.14
Ejemplo diagrama de actividades separado por roles
métodos de la clase. Sin embargo, tanto los atributos como los métodos pueden ser
obviados.
Finamente al principio de cada atributo o método se puede incluir un signo que indica si
este es público (+) o privado (-). También al final de estos, después de dos puntos, se
puede incluir el tipo de dato del atributo o el tipo de dato que regresa el método si es que
retorna algo.
En la siguiente figura se puede apreciar de qué manera se representa en UML una clase.
Figura N° 2.15
Clase UML
Dentro de un diagrama de clase también pueden existir relaciones entre clases, estás
relaciones son representadas mediante una línea recta que conecta ambas clases e
indican que una clase está relacionada de alguna manera con otra.
Una máquina de estados finitos es un dispositivo que cuenta con diversos estados que
son activados mediante un activador o disparador que hará que la máquina cambie de
estado. Por poner un ejemplo, una lampara es un aparato con 2 estados, encendido y
apagado, y existe un interruptor que al ser accionado hará que la lámpara cambie de un
estado a otro.
50
Sin embargo, el elemento más importante dentro de una máquina de estados es el mismo
estado, este puede ser escrito de dos formas, la primera es parecida al proceso es un
diagrama de actividades, un rectángulo con el nombre del estado dentro. La segunda
forma, en cambio, se compone por el nombre del estado que se escribe en la parte
superior del rectángulo y en el centro de este puede ir escrito: “Entry/”, “Do/”, “Exit/”, estas
palabras denotan acciones adicionales que el estado puede ejecutar. Entry/ indica que
se ejecutará una acción cuando se ingresa al estado. Do/ es lo que ejecutará el estado
de forma regular, si solo quiere especificar que hará en Do/ se puede omitir y solo poner
el nombre del estado ocupando todo el rectángulo. Exit/ indica que acción se ejecutará al
cambiar de estado. Al definir un estado no es necesario incluir todas las acciones
adicionales, algunas o todas pueden ser omitidas.
Figura N° 2.16
Maneras de definir estados
Finalmente, los gatilladores para cambiar de estados se escriben en las mismas flechas
que conectan los estados e incluso un gatillador puede llevar directamente al final del
diagrama.
Figura N° 2.17
Ejemplo de diagrama de máquina de estados
Representa la visión general del sistema, documentando como este se organiza y los
componentes que lo componen además de señalar las dependencias y relaciones que
existen entre estos.
• Interfaz requerida, presentada como una línea recta con una semi circunferencia
en la punta. Indica que un elemento requiere de otro para funcionar.
Las relaciones entre elementos pueden ser mediante interfaces conectando los extremos
de las interfaces requeridas con las interfaces provistas.
Figura N° 2.18
Ejemplo de diagrama de paquetes
2.2.10.1. Cocomo ii
En un trabajo, la autora Adriana Gómez describe que COCOMO II está compuesto por 3
modelos denominados como:
• Composición de Aplicación.
• Diseño Temprano.
• Post-Arquitectura.
𝑃𝑀 = 𝑁𝑂𝑃 / 𝑃𝑅𝑂𝐷
En donde:
NOP (Nuevos Puntos Objeto): Tamaño del nuevo software a desarrollar expresado en
Puntos Objeto. Se calcula mediante la siguiente fórmula.
Cuadro N° 2.4
Productividad para el modelo de composición de aplicación
Es durante las etapas tempranas de un proyecto de software que se hace uso de este
modelo, cuando se conoce muy poco sobre el tamaño del producto a ser desarrollador,
de la naturaleza de la plataforma, del personal que desarrollará u otros detalles
específicos.
El modelo de Diseño Temprano ajusta el esfuerzo nominal haciendo uso de siete factores
de costo. La fórmula para el cálculo del esfuerzo es la siguiente:
𝑃𝑀𝑛𝑜𝑚𝑖𝑛𝑎𝑙 = 𝐴 ⋅ (𝐾𝑆𝐿𝑂𝐶 )𝐵
𝐵 = 1.01 + 0.01 ⋅ ∑ 𝑊𝑗
𝑗=1
Donde:
PMestimado: Esfuerzo nominal ajustado por 7 factores, factores que reflejan otros aspectos
propios del proyecto que afectan al esfuerzo necesario para la ejecución de este.
A: Constante que captura los efectos lineales sobre el esfuerzo de acuerdo con la
variación del tamaño. Toma un valor de 2.94.
EMi: Son los factores de costo que tienen un efecto multiplicativo sobre el esfuerzo,
llamados Multiplicadores de Esfuerzo. Cada factor se puede clasificar en 6 niveles
diferentes que expresan el impacto del multiplicador sobre el esfuerzo de desarrollo. Esta
escala varia desde un nivel Extra-Bajo hasta un nivel Extra Alto. Cada nivel tiene un peso
55
17
RSA es un algoritmo de cifrado asimétrico, por ende, cuenta con 2 llaves diferentes, una
llave pública (a la que todos tienen acceso) y es utilizada para generar un certificado
digital y una llave privada (llave a los que solo el personal autorizado debe tener acceso)
y utilizada para validar los certificados generados.
En su sitio oficial, los Json Web Token (JWT) son descritos como: “Un estándar abierto
(RFC 7519) que define una forma compacta y autónoma de transmitir información de
forma segura entre las partes como un objeto JSON.” (JWT, 2022). Además de
especificar que los JWT hace uso de RSA para encriptar la información y validarla.
Dentro del contexto del desarrollo web, los JWT son utilizados para realizar certificados
digitales que serán brindados a usuarios del sistema al momento de iniciar sesión en el
mismo. Estos certificados digitales serán enviados al servidor cada que se intente
acceder a una ruta de una API o el sistema del lado del cliente, el servidor validará el
certificado y si es válido, mandará una respuesta positiva permitiendo el acceso, caso
contrario, se le negará el acceso.
57
Un guardián de rutas es una funcionalidad que permite o deniega acceso a ciertas rutas
de un sistema en base a una condición. Los guardianes de rutas se combinan con los
Json Web Tokens para que en cada acceso a una nueva ruta se valide el certificado que
tiene el usuario, si la validación falla, se le niega el acceso a la ruta.
Una inyección SQL consiste en ingresar código SQL malicioso en un sistema mediante
cualquier de sus inputs. Este código SQL ingresado será una consulta con varias posibles
finalidades, puede usarse para pedir a la base de datos que muestre toda la información
con la que cuenta, ingresar nuevos usuarios para acceder al sistema sin permiso o incluso
eliminar información.
Los sistemas más vulnerables a este tipo de ataques son los sistemas que realizan sus
consultas SQL simplemente concatenando14 los parámetros15 enviados por el usuario a
una consulta a la base de datos.
Por sus siglas, ORM, es una técnica de programación que permite transformación la
información que existe en una base de datos relacional en un conjunto de objetos de un
lenguaje de programación. Hacer uso de un ORM es extremadamente beneficial para los
programadores puesto que permite dejar depender de consultas SQL para acceder a la
información en la base de datos remplazándolas por objetos, se muestra un ejemplo:
Consulta SQL:
print(Personas.getPersonas());
14
Acción de combinar dos o más cadenas de texto.
15
Información que se le puede proporcionar a cualquier función.
58
Los ORM además de ser tan prácticos al reducir las consultas SQL también protegen
un sistema de cualquier tipo de inyección SQL al dejar de hacer uso de consultas
tradicionales.
Existen distintos ORM para cada lenguaje de programación, entre los más populares
tenemos el EntityFramework de Microsoft para el lenguaje de programación C#, otro
ejemplo es la librería Sequelize para NodeJS.
2.2.11.6. Joi
En caso de que el objeto recibido no cumpla con la validación de Joi este le devolverá al
solicitante (aquel que mando el objeto) un mensaje de error indicando que fallo la petición
y la comunicación terminará.
En el sitio web de la ISO 25000 se define la calidad de un producto software como “el
grado en que dicho producto satisface los requisitos de sus usuarios aportando de esta
manera un valor”. (ISO/IEC 25010, diciembre 2022).
Figura N° 2.19
Modelo calidad producto ISO/IEC 25010
No repudio
Definido en la página web de la ISO/IEC 25010 como: “La capacidad de demostrar las
acciones o eventos que han tenido lugar, de manera que dichas acciones o eventos no
puedan ser repudiados posteriormente.” (ISO/IEC 25010, diciembre 2022)
Modularidad
Las pruebas de software son una parte importante del ciclo de vida del desarrollo de
software. Es mediante pruebas que uno puede asegurar el funcionamiento del sistema,
su rendimiento y también comprobar la satisfacción del usuario.
Existen muchos tipos de pruebas de software, cada uno destinado a comprobar algún
aspecto de un sistema creado. Existen por un lado las pruebas de caja negra y pruebas
unitarias destinadas a comprobar el correcto funcionamiento de un componente, modulo
o trozo de código y por otro lado, existen pruebas de aceptación para validad si lo
desarrollado satisface los requerimientos del usuario.
También conocidas como: Blackbox testing muy común mente utilizada para probar una
funcionalidad sin tomar en cuenta su estructura interna, de ahí el nombre caja negra. Las
pruebas de caja negra, junto con las pruebas unitarias son el tipo de pruebas de software
más común que existe puesto que es a través de estas que se puede identificar múltiples
errores en un sistema.
La estructura de una prueba de caja negra básica puede ser observada en el siguiente
ejemplo.
Cuadro N° 2.5
Ejemplo de prueba de caja negra
Pruebas de aceptación
Son el último tipo de pruebas que debería llevarse a cabo previo al lanzamiento de un
incremento del sistema o el sistema completo (depende la metodología de trabajo). Estas
se encargan de validar si lo desarrollado cumple con los requerimientos y/o necesidades
del cliente.
Cuadro N° 2.6
Ejemplo prueba de acpetación
Figura N° 2.20
Diagrama de actividades de la metodología propuesta
Planificación
• Product backlog.
• Release plan.
Iteración
Luego de la fase de planificación, se inician las iteraciones, cada iteración repetirá las
mismas fases hasta la finalización del proyecto.
• Selección. (Se seguirá la fase tal como lo expone el proceso, pero se hará el
agregado de una historia técnica al inicio de la fase para ayudar a definir mejor los
objetivos).
• Preprocesamiento.
• Transformación.
• Minería de datos.
• Evaluación.
64
Para la descripción detallada de cada fase del proceso, referirse al punto 2.2.6, proceso
KDD.
Para el resto de las iteraciones, se seguirán las fases de: diseño, codificación y pruebas.
Diseño
Es la fase con la que iniciarán todas las iteraciones. Tiene como objetivo realizar la
planificación de la iteración.
• Historias de usuario.
• Sprint backlog.
• Descomposición en tareas de cada historia.
Codificación
No se hace el listado de tareas de la fase puesto que varía según la fase anterior.
Entre los entregables que está fase podría generar en base a las tareas, están los
siguientes:
• Mockups.
• Diagramas UML.
• Pruebas de software (pruebas de caja negra, unitarias, etc.).
• Documentación de servicios de una API.
65
Pruebas
Es la última fase de cada iteración. Está fase tiene como objetivo validar lo desarrollado
en la iteración con el cliente.
Conclusiones de la iteración
Para concluir cada iteración se agregará una fase adicional, la fase de conclusiones.
Durante está breve fase se darán todas las conclusiones derivadas de la finalización de
la iteración.
La fase no cuenta con tareas o entregables más que indicar que se ha conseguido con
la iteración.
Dentro de este marco referencial se procede a exponer 3 trabajos de grado, tesis, que
fueron desarrolladas por otros estudiantes de a nivel universitario, licenciatura, que sean
semejantes al presente proyecto.
66
La relevancia de este proyecto nace de entre sus objetivos, siendo uno de ellos: “Servir
de base para estudios o investigaciones con fase de campo, dirigidos a evaluar el impacto
de tecnologías de IA al servicio del periodismo escrito en medios colombianos.” (Tamayo,
2019)
mención sobre qué entidades hacen uso de la IA y la NLG siendo las más destacadas:
Associate Press (agencia de noticias en el Reino Unido), Bloomberg (Compañía
estadounidense de asesoría financiera), Washington Post (Periódico de la ciudad capital
de los Estados Unidos), Yahoo! Sports (División de deportes de la plataforma Yahoo!).
Figura N° 2.21
Ciclo de Compromiso – Reflexión
El trabajo habla sobre las notas informativas generadas por inteligencia artificial o
periodismo automatizado.
El objetivo de la tesis es presentar una forma nueva de crear y distribuir contenido con
las nuevas herramientas de aprendizaje automático. Cabe mencionar que dentro del
trabajo se menciona mucho “Reuters” y “AP”, Reuters es una organización internacional
de noticias mientras que la AP es una agencia de noticias multinacional sin fines de lucro.
Los primeros 2 puntos de la tesis hablan sobre la inteligencia artificial y su evolución hasta
lo que es hoy en día. Dentro de estos puntos se hace énfasis en como la IA es una
tecnología relativamente nueva dentro del mundo del periodismo y cómo es que
recientemente se está comenzando a explotar en este rubro informativo. Aun así, no es
hasta el tercer punto donde se entra en materia y se comienza a hablar de la IA en el
periodismo como tal. En el punto se menciona sobre como el escritor Alvin Toffler notó el
auge de los sistemas informáticos en la prensa para pasar a hablar sobre periodismo
robótico.
Se expone como la capacidad de las máquinas es suficiente y puede ser trasladada a los
ámbitos de la percepción humana: a través del análisis de datos para aprender todo tipo
de relaciones y en general, descubrir y almacenar información que una persona normal
no tendría que recordar, o simplemente no tendría la capacidad para hacerlo. También
explica como los algoritmos diseñados por el hombre son importantes y como con ellos
70
el robot/máquina puede aprender las reglas básicas válidas y con esto aprender a
detectar el inicio de palabras que riman o reconocer fotografías con un tema en común
en Internet. Procesos que normalmente consumirán mucho esfuerzo a una persona
normal.
Otra agencia que analiza el trabajo es la organización AP, de igual manera que con
Reuters, se describe la historia de AP junto con su camino a los elementos de IA.
En el siglo XXI, así como Reuters, AP fue marcado por el auge de la cibernética,
tecnologías y elementos relacionados con la inteligencia artificial. Así fue como en 2008,
71
Luego de exponer el futuro de la empresa con respecto a la IA la tesis concluye con que
la IA está conectada con una parte relativamente grande de las profesiones y su uso está
probado en muchos campos, sin mencionar que, en algunas empresas ya se tiene
implementada como parte de sus operaciones cotidianas. Además de que haber sido de
mucha ayuda en empresas como Reuters o AP.
La visión de Radio Compañera es dar un servicio con los más altos estándares de calidad
a su audiencia, con un excelente sonido, fidelidad y dando información fresca, real,
72
interesante, entregada con respecto y objetividad. Radio Compañera también busca ser
una herramienta para el aprendizaje para su audiencia.
La jerarquía de la radio se compone por; una dirección general, dirigida por los dueños
de la radio; la gerencia a cargo de un área administrativa contable; el área operativa
compuesta por el departamento de presa compuesto a su vez por: jefes de prensa,
periodista, presentadores. Luego se tiene el área de operaciones en donde está el
personal técnico: operadores, jefes de piso, productores.
En el trabajo de prensa de la radio se tiene a 2 jefes de prensa los cuales tienen bajo su
cargo a los periodistas y pasantes.
Figura N° 2.22
Organigrama de Radio Compañera
CAPÍTULO III
INGENIERÍA DEL PROYECTO
Cuadro N° 3.1
Planeación del proyecto
Transformación - Cuadros
estadísticos.
Conclusiones de la - Conclusiones de la
iteración iteración.
Pruebas - Pruebas de
aceptación.
Conclusiones de la - Conclusiones de la
iteración iteración.
- Costos operativos
del sistema.
Para el análisis de la situación actual se procede a mostrar una tabla con un diagrama de
actividades que describe cómo se realiza la publicación de noticias en el departamento
de prensa de Radio Compañera.
Figura N° 3.1
Diagrama actividades para la publicación de una noticia
Cuadro N° 3.2
Descripción de las actividades en el diagrama.
Figura N° 3.2
Diagrama actividades de publicación de noticias mejorado
Cuadro N° 3.3
Descripción de las actividades en el diagrama
3.5. PLANIFICACIÓN
Identificación de requerimientos
Cuadro N° 3.4
Product backlog
4 Conexión con la página Como reportero quiero que las noticias que subo al
web de Radio sistema puedan ser vistas en mi página web para que
Compañera. nuestros usuarios puedan tener acceso a la
información de manera más eficaz.
5 Tareas para los Como jefe de prensa quiero dar retroalimentación a los
reporteros. reporteros sobre sus acciones en el sistema para tener
un mejor control sobre sus acciones.
76
Como se explica en la metodología del proyecto (Ver punto 2.2.14), en el product backlog
inicial solo se incluye la descripción de la historia de usuario. Los criterios de aceptación
se agregarán en las fases de diseño de las respectivas iteraciones.
Release plan
Cuadro N° 3.5
Release plan
3.6. ITERACIONES
Al tratarse de la primera iteración se atenderá todas las fases del proceso KDD.
77
3.6.1.1. Selección
Cuadro N° 3.6
Historía técnica #1
En base a la historia técnica #1, se procede a definir el objetivo del proceso KDD.
El objetivo será desarrollar una red neuronal recurrente de tipo LSTM con la capacidad
de identificar la categoría de un texto tipo informativo dado entre 7 posibilidades. La
predicción debe alcanzar un Accuracy Score (puntuación de precesión) mayor al 70%.
Se considera una lista inicial de 9 páginas web de noticias bolivianas y una internacional,
luego se realiza una petición GET a cada uno de los sitios, si da como respuesta un
78
código 200, se podrá usar como fuente de datos. En caso de código 403, no se podrá
utilizar el sitio web.
Figura N° 3.3
Resultados de peticiones GET
Como se puede apreciar, de los 10 sitios con los que se probó, solo 4 tienen como
resultado un código de éxito en su petición.
Figura N° 3.4
Páginas a utilizar para recolectar datos
3.6.1.2. Preprocesamiento
Una vez con las fuentes de datos identificadas, se procede a aplicar el ya mencionado
Web Scraping, para cumplir con esta tarea se desarrolla un sistema compuesto por 5
módulos, un módulo principal, encargado de escribir en el set de datos y 4 submódulos
encargados de obtener las noticias, un módulo por página web, esto es necesario puesto
que cada página es diferente y no se podrá reutilizar módulos. En el siguiente diagrama
de paquetes se puede observar de forma gráfica.
Figura N° 3.5
Diagrama de componentes para el Web Scraping
Como se especificó, cada página web debe tener su propio modulo dado que el código
implementado en estos variará según la página. Aun así, la funcionalidad de cada uno de
los módulos es parecida, pero no igual.
Cabe aclarar que el diagrama solo muestra 2 de 4 procesos concurrentes por motivos de
simplicidad dado que los 4 procesos son semejantes.
Figura N° 3.6
Diagrama de actividades del sistema de web scraping
De esta forma se logra obtener un conjunto de datos con un volumen de 48700 noticias
y de 5000 a 8000 noticias por categoría.
Figura N° 3.7
Grafica de la cantidad de noticias por categoría pre-limpieza
Figura N° 3.8
Grafica de la distribución de noticias por categoría pre-limpieza
3.6.1.3. Transformación
Para la fase de transformación, se procede a realizar una limpieza del set de datos.
Como primer criterio de limpieza se tendrá eliminar todas las noticias sin categoría o
uncategorized.
El segundo criterio será eliminar todas las noticias con un conteo de palabras considerado
como bajo. Para este caso se considerará como un conteo bajo todas las noticias con
menos de 150 palabras.
El tercer criterio será eliminar noticias que se encuentren repetidas. Definiendo como
repetida una nota que tenga exactamente el mismo título de otra noticia dentro del
conjunto de datos.
Figura N° 3.9
Grafica de la cantidad de noticias luego de la limpieza
Como se puede observar el volumen total del conjunto de datos luego de la limpieza es
de 44990 noticias, comparando con la figura 21 del punto previo, se evidencia una pérdida
de 3714 noticias o del 7.62% volumen original. Sin embargo, el conteo final de notas
posterior a la limpieza se sigue manteniendo alto, por lo tanto, si bien podría afectar
ligeramente a las métricas finales, esto será por algo tan bajo que no podría afirmarse
que el resultado final se vea enormemente afectado.
Algo que se observa es que luego de la limpieza del conjunto de datos, la distribución de
noticias por categoría se mantiene igual, a pesar de ser menor la cantidad de información,
aún se mantiene el balance.
Figura N° 3.10
Grafica de la distribución de noticias luego de la limpieza
En este caso desde el planteamiento del objetivo en la fase de selección se tiene claro el
modelo para desarrollar: Una red neuronal recurrente de tipo LSTM.
Figura N° 3.11
Diseño de la red neuronal recurrente LSTM
3.6.1.5. Evaluación
Ya con el modelo desarrollado y entrenado, la última fase del proceso KDD expone que
se debe probar validar el modelo, para realizar esta validación se hace uso de métricas
cómo ser el accuracy score y el model loss. Si bien la metodología indica técnicas
diferentes, se hará uso de estás métricas por ser las que mejor evalúan un modelo
basado en redes neuronales.
La red neuronal fue entrenada por un total de 25 épocas, cada época teniendo su propio
accuracy Score y model Loss. Para llegar a un resultado óptimo con cada época el
modelo debería incrementar dichas métricas hasta superar el umbral del 0.7 (70%). Se
muestra de forma gráfica la evolución de las métricas en las siguientes figuras.
Figura N° 3.12
Evolución del accuracy score en función a las épocas
Cómo se puede observar, en las primeras épocas el modelo tiene un desempeño pobre,
sin embargo, a medida que avanzan las épocas este va mejorando, especialmente con
los datos de validación hasta alcanzar un valor de 0.73 (73%) de accuracy score con los
datos de validación.
Para la siguiente métrica, el model loss, se espera que a medida que avanzan las épocas,
este vaya descendiendo. La siguiente grafica representa su evolución.
87
Figura N° 3.13
Model loss para clasificación de texto
3.6.2.1. Diseño
Cuadro N° 3.7
Sprint backlog iteración 2
Cuadro N° 3.8
Hisoria de usuario #1
T6. Desarrollar las interfaces de los módulos identificados en los casos de uso.
3.6.2.2. Codificación
Figura N° 3.14
Diagrama de casos de uso de manejo de noticias
Figura N° 3.15
Mockup de creación/edición de noticias
Los reporteros y jefes de prensa podrán ver las noticias que han subido al sistema
mediante una pantalla con un listado de sus notas. Este listado mostrará el título de la
nota, su categoría, fecha de publicación y expiración, además de contar con submenú
de acciones que contendrá el botón para acceder a la pantalla de edición de notas y el
botón para deshabilitar la noticia.
Figura N° 3.16
Mockup de listado de noticias
Para la base de datos se hará uso de un gestor de base de datos relacional, PostgreSQL.
Se crea la primera versión de una base de datos en dicho gestor. Las primeras tablas
identificadas serán la tabla de reportero, noticias y contenido noticia. La tabla de reportero
inicialmente solo tendrá el id de reportero y un campo archivos para almacenar
información sobre las notas que ha creado, la tabla noticias en cambio contará con toda
la información relevante sobre la creación de esta, como fecha de creación, estado, entre
otros. Por último, se tendrá una tabla separada para definir todo el contenido que tendrá
la noticia, está tabla contendrá los campos de la noticia como ser el título, la foto de
portada, su contenido, el lead de la noticia y su categoría además de la id de la noticia
para saber a qué noticia le pertenece que contenido.
Figura N° 3.17
Primera versión del modelo relacional de la base de datos
Del mismo diagrama también se genera un diagrama de clases, diagrama de clases que
será utilizado por el ORM del sistema para convertir las tablas en objetos. En la siguiente
figura se llega a observar.
Figura N° 3.18
Diagrama de clases primera versión
Para el desarrollo del servicio de publicación de noticias, se genera en una API REST
creada con Node JS un servicio que permita las operaciones CRUD necesarias para el
manejo de noticias en el sistema. Para acceder a estos servicios se hará uso de la ruta
de noticias.
Cuadro N° 3.9
Métodos de la ruta noticias
Para realizar el desarrollo del proyecto se vuelve una necesidad hacer la implementación
de una segunda API con una única ruta: noticias.
Cuadro N° 3.10
Métodos de la ruta noticias, segunda API
Figura N° 3.19
Pantalla de creación/modificación de noticias
Figura N° 3.20
Interfaz de listado de noticias
Cuadro N° 3.11
Prueba de caja negra #1
Cuadro N° 3.12
Prueba de caja negra #2
Cuadro N° 3.13
Prueba de caja negra #3
3.6.2.3. Pruebas
Para las pruebas de aceptación se validan con el cliente todas las funcionalidades
desarrolladas durante la iteración. Los resultados se muestran en la siguiente tabla.
Cuadro N° 3.14
Pruebas de aceptación #1
3.6.3.1. Diseño
Cuadro N° 3.15
Sprint backlog iteración 3
Cuadro N° 3.16
Historia de usuario #2
3.6.3.2. Codificación
Figura N° 3.21
Diagrama de casos de uso de manejo de archivos multimedia
Subir archivos
Está funcionalidad le permitirá a un usuario subir cualquier tipo de archivo que sea
multimedia (audios, vídeos, imágenes) mediante un botón que desplegará una pestaña
del sistema operativo y permitirá buscar y seleccionar el archivo. Este caso de uso no
cuenta con un mockup puesto que dependerá del sistema operativo en el cual el
usuario trabaje.
Mediante una pequeña ventana modal, el usuario podrá agregar una carpeta a sus
archivos luego de ingresar el nombre que tendrá la misma. En la siguiente figura se
puede observar el mockup del caso de uso.
Figura N° 3.22
Mockup de crear nueva carpeta
Previsualizar archivos
así sucesivamente con todos los tipos de archivos multimedia que pueden ser subidos
al sistema.
Figura N° 3.23
Mockup de previsualización de archivos
Archivar carpetas
Cuando se archive una carpeta, esta perderá visibilidad y toda noticia que contenga será
lleva a la pestaña de noticias archivadas dentro de la lista de noticias.
En el siguiente mockup se puede observar cómo será el diseño final de toda está
funcionalidad, en dicha pantalla se pueden observar todas las funcionalidades descritas
hasta el momento.
Figura N° 3.24
Mockup de la funcionalidad manejo de archivos multimedia
Dicho diagrama refleja cómo funcionará de manera interna del lado del cliente está
funcionalidad a ser desarrollada.
Figura N° 3.25
Diagrama de componentes del manejo de archivos
T3. Implementar un servicio en la primera API para almacenar los archivos por cada
usuario
En la API desarrollada en Node Js se crea una nueva ruta: reporteros que será utilizada
para almacenar el esquema bajo el que haya guardado sus archivos. Cabe mencionar
que en el previo incremento de la base de datos se identificó en la tabla de reporteros un
campo: “Archivos” que ahora será utilizado para almacenar su esquema, por ende no es
necesario generar otro incremento de la base de datos.
Cuadro N° 3.17
Métodos de la ruta reporteros, primera API
Figura N° 3.26
Interfaz de creación/modificación de carpetas
Figura N° 3.27
Interfaz de la funcionalidad manejo de archivos multimedia
Figura N° 3.28
Pantalla de previsualización de archivos
Para realizar la integración con el módulo de creación de noticias lo primero que se hace
es incluir en el apartado de crear noticias un botón bajo el nombre de: agregar medios, al
seleccionar dicho botón se abrirá de forma modal el explorador de archivo ya desarrollado
solo que está vez solo permitirá seleccionar imágenes, audios o vídeos y navegar entre
carpetas, no tendrá ninguna de las operaciones relacionadas con la creación, eliminación
o modificación de estos. Finalmente, al seleccionar un archivo este será agregado al
apartado de desarrollo de la noticia o cuerpo de la noticia.
Figura N° 3.29
Pantalla de agregar medios
Cuadro N° 3.18
Prueba de caja negra #4
2. Recargar la página.
Resultado esperado Los cambios se mantienen de forma
persistente.
Resultado obtenido Los cambios se mantienen de forma
persistente.
Resultado de la prueba Correcto
Fuente: Elaboración propia.
Cuadro N° 3.19
Prueba de caja negra #5
Cuadro N° 3.20
Prueba de caja negra #6
3.6.3.3. Pruebas
Cuadro N° 3.21
Pruebas de aceptación #2
3.6.4.1. Diseño
Cuadro N° 3.22
Sprint backlog iteración 4
Cuadro N° 3.23
Historia de usuario #3
T1. Desarrollo de una ruta en la segunda API con las funcionalidades de crear, modificar
y deshabilitar noticias.
3.6.4.2. Codificación
T1. Desarrollo de una ruta en la segunda API con las funcionalidades de crear,
modificar y deshabilitar noticias
Para realizar la comunicación con alguna página web en WordPress, se vuelve necesario
hacer uso de la segunda API en Python, puesto que las librerías necesarias para realizar
la respectiva comunicación solo están disponibles para este lenguaje.
En la API ya existente se crea una nueva ruta: wordpress que contendrá todas las
funcionalidades necesarias para crear, modificar y deshabilitar noticias.
Cuadro N° 3.24
Métodos de la ruta wordpress
Figura N° 3.30
Clase ServiciosNoticias
Está clase nos dará todas las funcionalidades necesarias para publicar, modificar,
deshabilitar o habilitar noticias en un sitio Wordpress.
Entonces, como se había mencionado, para poder integrar con la función de crear
noticias, simplemente se llama a la función publishToWordPress de la clase al momento
de crear una noticia como se muestra en la siguiente figura.
Figura N° 3.31
Código de la funcionalidad de publicar en Wordpress
será llamar a otra función llamada generarNoticia función que se encarga de subir la
noticia al sistema y al terminar regresa el cuerpo de la noticia subida más su Id. Luego
de llamar está función y guardar los valores que regresa, se procede a llamar a la función
publishToWordpress enviando el cuerpo de la noticia ya creada. Por último, pregunta si
la función tuvo una respuesta exitosa, en caso de hacerlo agregará los campos
correspondientes a WordPress al campo de la noticia en la base de datos.
De igual manera que con la tarea previa, para integrar la funcionalidad de modificar
noticias simplemente es necesario llamar a la función updateWordpress de la clase
ServiciosNoticias al momento de editar una noticia ya existente. Se puede observar la
implementación en código en la siguiente figura.
Figura N° 3.32
Implementación en código de editar noticias en Wordpress
Así como con todas las previas tareas para habilitar o deshabilitar una noticia, bastará
con llamar a la función changeStatusWordpress y enviar como parámetro el estado al
que se quiere cambiar, true para habilitar, false para deshabilitar.
Figura N° 3.33
Implementación en código de deshabilitar noticia
En la figura solo se muestra la función para deshabilitar noticia, sin embargo, para
habilitar noticia es el mismo código.
Lo primero que hace la función es crear una venta modal que pedirá por confirmación
sobre si el usuario está seguro de que quiere deshabilitar o habilitar una noticia, en caso
de que respondan sí, se llamará a la función para cambiar el estado, modificando de esta
forma su estatus en la página en WordPress.
Cuadro N° 3.25
Prueba de caja negra #7
Cuadro N° 3.26
Prueba de caja negra #8
3.6.4.3. Pruebas
Cuadro N° 3.27
Pruebas de aceptación #3
Con la conclusión de está iteración todo lo referente a subir noticias en el sistema está
completo, siendo que la primera iteración se encargó en su totalidad de desarrollo una
red neuronal para identificar y clasificar noticias, la segunda iteración dio al usuario la
119
capacidad de subir noticias únicamente al sistema, con la tercera iteración se logró crear
un explorador de archivos para que el usuario pueda subir archivos multimedia al sistema
y luego usarlos en la creación de noticias.
3.6.5.1. Diseño
Cuadro N° 3.28
Sprint backlog iteración 5
Cuadro N° 3.29
Historia de usuario #4
T5. Desarrollar los servicios de WebSockets entre la API y el cliente para notificaciones.
T7. Desarrollar las interfaces de los módulos identificados en los casos de uso.
3.6.5.2. Codificación
Figura N° 3.34
Diagrama de casos de uso de tareas en las noticias
Cada reportero tendrá una pestaña de tareas en donde podrá observar que tareas se le
fueron asignadas, cada noticia tendrá una cantidad de tareas y cada tarea podrá ser
completada al marcar un checkbox y seleccionado un botón de confirmación. También
se podrá filtrar por estado de noticias, mostrando únicamente las que tienen tareas
pendientes.
Figura N° 3.35
Mockup lista de tareas
Los reporteros contarán con un botón en la parte superior derecha de su pantalla, dicho
botón tendrá la forma de una campana con un número encima, cada que se le asigne
una tarea el número sobre el botón incrementará, al seleccionar el botón se desplegará
un menú con una lista de mensajes, cada mensaje indicará una nueva tarea, además
del mensaje se tendrá un botón para ver la tarea, al ser seleccionado se redirija a la
pestaña de lista de tareas con la noticia seleccionada resaltada.
123
Figura N° 3.36
Mockup de notificaciones a los reporteros
Al igual que los reporteros, los jefes de prensa contarán con un botón en forma de
campana en la parte superior derecha con un número que indica la cantidad de nuevas
notificaciones, al seleccionar un botón se les desplegará un menú con un listado de
notificaciones indicando una acción de un reportero. Cada notificación tendrá 2 botones,
el primero permitirá revisar la noticia en la página web de Wordpress y el segundo abrirá
una ventana modal para asignar tareas al reportero sobre la acción realizada.
Figura N° 3.37
Mockup de notificaciones a los jefes de prensa
Asignación de tareas
Cuando se seleccione el botón de confirmar todas las tareas nuevas que fueron puestas
en la lista se le asignarán al reportero.
Figura N° 3.38
Mockup de creación de tareas
Cada jefe de prensa tendrá un apartado semejante al de lista de tareas asignadas de los
reporteros, al igual que este último los jefes de prensa tendrán un listado de noticias con
tareas, la diferencia será que cada item de la lista será como el mockup de asignar tareas
en noticia. También se podrá buscar por el ID del reportero para ver que tareas tiene
asignadas y cuales no se completaron.
Al cada item ser como el mockup de asignar tareas es que mediante la entrada en la lista
se podrá usar exactamente las mismas funcionalidades que se plantean en aquella
pantalla, funcionalidades como agregar tarea o quitar tareas no asignadas.
126
Dado que la lista de tareas podría volver realmente extensa con el pasar del tiempo es
que se incluye paginación de la lista donde se podrá cambiar de número de página en la
lista para desplegar tareas asignadas con mayor antigüedad.
Figura N° 3.39
Mockup de lista de tareas asignadas
Se puede observar el diagrama relacional de la base de datos con estás tablas agregadas
en la siguiente figura.
Figura N° 3.40
Diagrama relacional de la base de datos segundo incremento
Como se había mencionado con anterioridad, para que el ORM que se utiliza en el
proyecto pueda funcionar, es necesario realizar un diagrama de clases que se ajuste al
diagrama entidad relación, convirtiendo los elementos que cada tabla contiene en clases
en donde los campos de las tablas se convierten en atributos de la clase y se agregan
métodos que utilizarán las clases.
128
Es necesario aclarar que si bien las relaciones entre tablas propuestas en el diagrama
entidad relación se deben mantener no necesariamente se respetan las mismas reglas
que se siguen en el esquema entidad relación, por ende, el tipo de relación podría verse
alterado en el diagrama.
Figura N° 3.41
Diagrama de clases segundo incremento
Por el lado de la API, para realizar las operaciones básicas en el apartado de tareas se
crea una ruta: tareas. En la siguiente tabla se muestran los métodos y las descripciones
de cada funcionalidad bajo esta ruta creada.
129
Cuadro N° 3.30
Métodos de la ruta tarea
Figura N° 3.42
Diagrama de máquina de estados para los WebSockets
Es necesario comprender que este diagrama estará presente tanto en el servidor como
en todos los dispositivos conectados al mismo.
131
La integración no será compleja puesto que basta con crear funciones de web sockets
que se encarguen de escuchar eventos y sean llamadas cada que se cree o modifique
una noticia.
Figura N° 3.43
Implementación de los estados conexión y escuchar eventos
Como se observa en la figura, existirá un objeto socket y lo primero que hará será emitir
el evento conexión para pasar al estado de escuchar eventos, luego se llamará al método
listen y se le pasará el nombre del evento que escuchará.
Finalmente, para concluir con la integración faltaría la parte de no solo escuchar los
eventos, si no emitir lo eventos para que los demás clientes con la misma implementación
los escuchen.
Para conseguir esto es necesario emitir un evento cada que se realice una de las
acciones descrita en la tarea, para simplificar esto se crean las 2 siguientes funciones.
132
Figura N° 3.44
Funciones para emitir eventos
Como se puede observar en la última figura está la función de registrarEvento que recibirá
un evento, luego registrará el evento en la base de datos y llamará a una función para
mandar este evento a todos los clientes que estén escuchando.
Figura N° 3.45
Código de crear noticia
Como se puede observar en la figura, primero se creará un objeto de tipo evento que
tenga como atributos: el id del reportero que, generado el evento, seguido del tipo de
evento, la criticidad del mismo, una descripción del evento, la fecha en la que sucede el
evento y por último, el id que tendrá la publicación en el servicio de wordpress y el id de
133
Cabe aclarar que por la naturaleza de los web sockets cualquier creación o modificación
de una publicación será en tiempo real, por lo que al momento de ocurrir cualquiera de
estos eventos los jefes de prensa serán notificados en ese mismo momento.
T7. Desarrollar las interfaces de los módulos identificados en los casos de uso
Figura N° 3.46
Interfaz de lista de tareas
Figura N° 3.47
Interfaz de notificaciones de tareas nuevas
Figura N° 3.48
Interfaz de notificaciones de publicaciones o modificaciones
Figura N° 3.49
Interfaz de asignación de tareas
Figura N° 3.50
Interfaz de lista de tareas asignadas
Cuadro N° 3.31
Prueba de caja negra #9
3.6.5.3. Pruebas
Cuadro N° 3.32
Pruebas de aceptación #4
Con está iteración también se consiguió terminar con la creación de la base de datos,
entregando en esta iteración la versión final del esquema relacional del cual deriva la
base de datos cumpliendo de esta forma el tercer objetivo específico propuesto en el
punto 1.4.2. Objetivos específicos.
3.6.6.1. Diseño
Cuadro N° 3.33
Sprint backlog iteración 6
Cuadro N° 3.34
Historia de usuario #5
T5. Desarrollar las interfaces de los mockups identificados en los casos de uso.
3.6.6.2 Codificación
Figura N° 3.51
Diagrama de casos de uso de creación de cuentas
Listado de cuentas
El listado de cuentas será una pestaña que tendrán los jefes de prensa, cada item de la
lista tendrá el ci del reportero, sus nombres y apellidos, su cargo y su estado (si se
encuentra deshabilitada o habilitada) además de tener un menú contextual que al abrirlo
dará las opciones para desactivar o activar un reportero y editar su cuenta. También se
contará con una paginación para poder ver entradas de la lista más antiguas.
Figura N° 3.52
Mockup listado de cuentas
Figura N° 3.53
Mockup creación de cuenta de usuario
En caso de querer modificar un usuario los campos ya estarán completos con la diferencia
de que el ci y sexo no podrán ser modificados. Cuando se seleccione el botón de agregar
usuario saltará una ventana de confirmación y un mensaje indicando que la contraseña
del sistema se mandará al correo electrónico especificado.
Login de usuario
El login de usuario contará con dos inputs pidiendo el ci del reportero y su contraseña y
un botón para ingresar al sistema. En caso de que las credenciales fallen tendrá un
mensaje en la parte superior indicando el error.
Figura N° 3.54
Mockup login de usuario
Para realizar las operaciones básicas de creación y modificación de usuarios se crea una
ruta: usuarios en la API. En la siguiente tabla se muestran los métodos y las descripciones
de cada funcionalidad bajo esta ruta creada.
Cuadro N° 3.35
Rutas para la creación y modificación de usuarios
Figura N° 3.55
Ejemplo de JWT
Como se observa, el texto es totalmente inentendible y hasta parece aleatorio, pero oculta
lo que es un JSON con las credenciales de autenticación del usuario. Cada JWT tendrá
un tiempo de expiración de 20 minutos, pasado ese tiempo el token expira y deja de ser
valido.
144
Se implementará dos guardianes de rutas, uno en las rutas de la aplicación cliente y otra
en las rutas de la primera API.
Figura N° 3.56
Código de guardianes de rutas lado cliente
los guardianes basta con invocarlos en este archivo como se observa en la siguiente
figura.
Figura N° 3.57
Archivo de rutas de la aplicación
Figura N° 3.58
Guardian de rutas en servidor
Está función será llamada cada que se realice una petición al servidor. En la siguiente
figura se muestra que ocurriría en caso de no tener una credencial valida.
Figura N° 3.59
Mensaje de error en el servidor por JWT invalido
T5. Desarrollar las interfaces de los mockups identificados en los casos de uso
En los casos de uso se identificaron 3 mockups, se procede a codificar cada uno de ellos.
Figura N° 3.60
Interfaz de lista de usuarios registrados
Figura N° 3.61
Interfaz de creación - modificación de cuentas de usuario
Figura N° 3.62
Interfaz de login de usuario
Cuadro N° 3.36
Prueba de caja negra #10
Cuadro N° 3.37
Prueba de caja negra #11
Cuadro N° 3.38
Prueba de caja negra # 12
3.6.6.3. Pruebas
Cuadro N° 3.39
Pruebas de aceptación #5
Es con está iteración que se concluye el desarrollo del sistema, logrando el cumplimiento
del penúltimo objetivo específico de generar incrementos del sistema web en base a
iteraciones.
Para finalizar con el desarrollo de la aplicación y en una etapa previa a una posible
implementación, se llevará a cabo lo que son las pruebas de aceptación finales con un
jefe de prensa del departamento de prensa de Radio Compañera. Para esto se evalúa la
totalidad del software revisando el resultado de todas las iteraciones. En la siguiente tabla
se muestra el resultado de las pruebas. 3.4.8. pruebas de aceptación, demás pruebas de
calidad.
152
Cuadro N° 3.40
Pruebas de aceptación de la totalidad del sistema
Son dos los criterios de calidad de software que se utilizaran en base a la ISO/IEC 25010:
no repudio y modularidad.
153
No repudio
Para demostrar el cumplimiento del criterio de no repudio, por un lado, el sistema aplica
mecanismos de autentificación mediante una pantalla de login desarrollada en la sexta y
última iteración (Ver punto 3.4.7.1.) para asegurar que un usuario de la aplicación es
quien asegura ser. Por otro lado, se aplican criterios de identificación al cada usuario del
sistema contar con una credencial única que los identifiqué en el sistema, el carnet de
identidad.
Modularidad
Las API 2 REST programadas a lo largo del proyecto siguen una arquitectura modular
compuesta por servicios, en donde cada ruta llama a un servicio y cada servicio puede
ser considerado un subsistema independiente del resto de la aplicación, por lo cual, si
cualquiera de estos subsistemas fallase, la aplicación continuaría funcionando,
cumpliendo de esa forma el criterio de modularidad.
Figura N° 3.63
Arqutectura de la API REST en NodeJS
Figura N° 3.64
Arquitectura de la API REST en Flask
ha visto incrementada. Para esto se considera una mejor de los valores iniciales de un
40%.
Antes de realizar el cálculo de la fórmula, se aclara que los resultados iniciales ya fueron
calculados en el punto 1.2.1. Identificación del problema.
Resultados alcanzados = 2100 (el valor de resultados alcanzados inicial más la mejora
estimada del sistema del 40%).
Coste actividad = 2250 (el valor del coste actividad inicial menos la mejora estimada del
sistema del 40%).
Tiempo empleado = 27000 (el valor del tiempo inicial menos la mejora estimada del
sistema del 40%).
Resultados previstos = 1875 (El valor de resultados alcanzados inicial más un 25% de la
mejora prevista por Radio Compañera).
Costes previstos = 2812.5 (El valor de coste de actividad inicial menos un 25% de la
mejora prevista por Radio Compañera).
Tiempo previsto = 33750 (El valor de tiempo empleado inicial menos un 25% de la mejora
prevista por Radio Compañera).
2100 1875
( ∗ 27000) / ( ∗ 33750) = 1.12
2250 2812.5
156
3.8.1. COCOMO II
El presente proyecto cuenta con menos de 50000 líneas de código, entonces se hará
uso del modo orgánico según COMO II. Según este modo las constantes tomarán los
siguientes valores:
Tabla N° 3.1
Constantes según el modo
Proyecto a e c d
Software
Orgánico 2,4 1,05 2,5 0,38
Semi-acoplado 3,0 1,12 2,5 0,35
Empotrado 3,6 1,20 2,5 0,32
Fuente: Cocomo II, 2009
Tabla N° 3.2
Líneas de código empleadas
El total de líneas de código ahora deben de expresarse en KLDC, para conseguir esto se
aplica la siguiente operación:
157
𝐾𝐿𝐷𝐶 = 16524/1000
𝐾𝐿𝐷𝐶 = 16.524
𝐸𝑠𝑓𝑢𝑒𝑟𝑧𝑜 = 2.04[𝑝𝑒𝑟𝑠𝑜𝑛𝑎/𝑚𝑒𝑠]
Tabla N° 3.3
Factor multiplicador
Valor
Atributos
Muy bajo Bajo Nominal Alto Muy alto Extra alto
Atributos de software
Fiabilidad 0,75 0,88 1,00 1,15 1,40
Tamaño de Base de datos 0,94 1,00 1,08 1,16
Complejidad 0,70 0,85 1,00 1,15 1,30 1,65
Atributos de hardware
Restricciones de tiempo de ejecución 1,00 1,11 1,30 1,66
Restricciones de memoria virtual 1,00 1,06 1,21 1,56
Volatilidad de la máquina virtual 0,87 1,00 1,15 1,30
Tiempo de respuesta 0,87 1,00 1,07 1,15
Atributos de personal
Capacidad de análisis 1,46 1,19 1,00 0,86 0,71
Experiencia en la aplicación 1,29 1,13 1,00 0,91 0,82
Calidad de los programadores 1,42 1,17 1,00 0,86 0,70
Experiencia en la máquina virtual 1,21 1,10 1,00 0,90
Experiencia en el lenguaje 1,14 1,07 1,00 0,95
Atributos del proyecto
Técnicas actualizadas de programación 1,24 1,10 1,00 0,91 0,82
Utilización de herramientas de software 1,24 1,10 1,00 0,91 0,83
Restricciones de tiempo de desarrollo 1,22 1,08 1,00 1,04 1,10
Fuente: Cocomo II, 2009
𝐹𝐴 = 0.51
𝑐𝑜𝑠𝑡𝑜𝑀 = 17710
Para la parte de costos operativos del sistema se cubrirá el costo que tomará la
implementación del software, realizando la cotización de tanto un dominio bajo el cual
estará la aplicación y el costo de un servicio de hosting que almacenará la aplicación.
Por la parte del dominio web se realiza la cotización del dominio: radiocompanera.net en
la página web: donweb.com y este arroja un resultado de 12.57 dólares al año,
convirtiendo en bolivianos da como resultado 83.83 bolivianos al año por el dominio wen.
Posterior a esto se realiza la cotización del hosting para tanto la aplicación web en
Angular como para las API REST en NodeJS y Flask. El hosting elegido para esto es
Vercel una plataforma de alojamiento de aplicaciones web. Esta ofrece diferentes
soluciones entre gratuitas y personalizadas, sin embargo, la solución que será utilizada
159
será el plan profesional que ofrece hasta 1 terabyte de ancha de banda y 50 gigas de
almacenamiento para múltiples soluciones. Dicha solución tiene un costo de 20 dólares
al mes, por lo que en un año el costo sería de 240 dólares en un año o 1661.69 bolivianos
al año.
Se llega a la conclusión de que los costes operativos serán de 1745.52 bolivianos al año.
16
Plataform as Service (plataforma como servicio) entorno de desarrollo e implementación completo en la
nube.
160
CONCLUSIONES
Como conclusión se menciona que el sistema elaborado incrementó la eficiencia de la
difusión informativa de forma exitosa en el departamento de prensa de Radio Compañera,
además de haber cumplido con los objetivos planteados del proyecto.
RECOMENDACIONES
Se recomienda explorar en nuevas técnicas de web scrapping como ser web
crawling para ampliar la gama de páginas web que pueden ser utilizadas para
recopilar notas informativas.
Se recomienda utilizar otras librerías para realizar peticiones HTTP a páginas en las
que se quiera realizar web scrapping como ser urllib3 en Python para prevenir
códigos de error 403.
Completar las funcionalidades del sistema para que se adapten mejor a un ambiente
móvil para poder hacer uso de la cámara de los dispositivos y así obtener y difundir
la nota informativa de manera aún más eficaz.
REFERENCIAS BIBLIOGRÁFICAS
LIBROS
Aguilar, L. J., & Zahonero Martínez, I. (2014). En Programación en C, C++, Java y UML.
México.
Fayyad, U., Piatetsky-Shapiro, G., & Smyth, P. (2005). From Data Mining to Knowledge
Discovery in Databases. AI Magazine Volume 17.
Menzinsk, A., Palacio, J., Sobrino, M. Á., & Alvarez, R. (2022). Historias de usuario -
Ingenieria de requisitos ágil.
Seppe vanden Broucke, B. B. (2018). Practical Web Scraping for Data Science. Best
Practices and Examples with Python. Apress.
Usama Fayyad, G. P.-S. (1996). From Data Mining to Knowledge Discovery in Databases.
163
PÁGINAS WEB
Kionet Works. (2022). Qué son y para qué sirven los protocolos de comunicación de
redes. Obtenido de Kionet Works: https://www.kionetworks.com/blog/data-
center/protocolos-de-comunicación-de-redes 16/10/22.
GLOSARIO DE TÉRMINOS
API. Interfaz entre dos sistemas informáticos utilizada para intercambiar información de
manera segura mediante protocolos de Internet.
Back End. Apartado de una aplicación que los usuarios no ven ni interactúan con. Es la
parte encargada de procesar la información recibida del Front End, conectarse con la
base de datos y en base a ello brindar una respuesta al cliente.
Front End. Apartado de una aplicación que está en plena interacción con el usuario. Se
encarga de recibir datos o información proveniente de los usuarios para ser enviada al
Back End y al recibir una respuesta, mostrarla.
¿Por lo general, cuánto tiempo tardan en publicar una nota desde que el reportero
llega a la zona de la noticia?
Desde el hecho hasta que esté en las plataformas aproximadamente 15 minutos, pero
depende de la carga de noticias y la jerarquía que se le da a cada una.
En una PC que funciona de “Servidor” no está configurado como tal solo es una carpeta
compartida.
No.
¿Qué tanta ayuda les ofrece las herramientas que usan actualmente para
almacenar su información?
Las notas que se generan hasta medio día se quedan en el servidor hasta un año, luego
se las borra, las de la tarde no están ahí porque directo se los manda por WhatsApp por
falta de personal y tiempo.
Actualmente, ¿es necesario que regresen a la radio para publicar sus noticias?
¿Cuánto tiempo les toma regresar hasta la radio una vez ya obtuvieron sus
noticias?
KERAS
ANEXOS
ANEXO A
Carta de aceptación de realización de proyecto
ANEXO B
Informe de conformidad de la empresa
ANEXO C
Aval de tutor