Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Integración de GeneXus Server con Slack y JIRA: Obtener información de commits, Esquemas y mapas conceptuales de Astrofísica

Cómo obtener información de commits realizados en GeneXus Server, parsear los comentarios y pasar la información a Slack y JIRA. Se incluyen pasos para obtener la información del usuario, fecha y hora del commit, lista de objetos modificados y identificador del commit. Además, se explica cómo enviar mensajes a Slack y actualizar issues en JIRA.

Tipo: Esquemas y mapas conceptuales

2020/2021

Subido el 02/06/2022

wilber-ticllasuca
wilber-ticllasuca 🇵🇪

1 documento

1 / 288

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Universidad ORT Uruguay
Facultad de Ingeniería
GX DevOps Extension
Integración de herramientas de apoyo al proceso de desarrollo de
software en GeneXus
Entregado como requisito para la obtención del título de Licenciado en Sistemas
Ignacio Eirale - 201742
Maximiliano García - 146323
Rodrigo Méndez - 205138
Gonzalo Wagner - 187413
Tutor: Rafael Bentancur
2019
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54
pf55
pf56
pf57
pf58
pf59
pf5a
pf5b
pf5c
pf5d
pf5e
pf5f
pf60
pf61
pf62
pf63
pf64

Vista previa parcial del texto

¡Descarga Integración de GeneXus Server con Slack y JIRA: Obtener información de commits y más Esquemas y mapas conceptuales en PDF de Astrofísica solo en Docsity!

Universidad ORT Uruguay

Facultad de Ingeniería

GX DevOps Extension

Integración de herramientas de apoyo al proceso de desarrollo de

software en GeneXus

Entregado como requisito para la obtención del título de Licenciado en Sistemas Ignacio Eirale - 201742 Maximiliano García - 146323 Rodrigo Méndez - 205138 Gonzalo Wagner - 187413 Tutor: Rafael Bentancur

Declaración de autoría Nosotros, Ignacio Eirale, Maximiliano García, Rodrigo Méndez y Gonzalo Wagner, declaramos que el trabajo que se presenta en esa obra es de nuestra propia mano. Podemos asegurar que: ● La obra fue producida en su totalidad mientras realizábamos el Proyecto de Fin de Carrera de Licenciatura en Sistemas; ● Cuando hemos consultado el trabajo publicado por otros, lo hemos atribuido con claridad; ● Cuando hemos citado obras de otros, hemos indicado las fuentes. Con excepción de estas citas, la obra es enteramente nuestra; ● En la obra, hemos acusado recibo de las ayudas recibidas; ● Cuando la obra se basa en trabajo realizado conjuntamente con otros, hemos explicado claramente qué fue contribuido por otros, y qué fue contribuido por nosotros; ● Ninguna parte de este trabajo ha sido publicada previamente a su entrega, excepto donde se han realizado las aclaraciones correspondientes. Ignacio Eirale Maximiliano García Rodrigo Méndez Gonzalo Wagner 12/09/

Abstract El objetivo de este proyecto es realizar una prueba de concepto que permita automatizar la integración de herramientas de apoyo al ciclo de desarrollo de software en GeneXus [1], y así realizar de manera automática ciertos flujos de trabajo. Esto responde a la necesidad de que Genexus tenga las mismas prestaciones que otros entornos de desarrollo de software de clase mundial. Se considera como caso de uso principal, que cuando un desarrollador GeneXus realice commits de un proyecto al repositorio utilizado (GxServer ), se disparen múltiples flujos de trabajo en herramientas de terceros a través de reglas definidas para cada proyecto. En particular nuestra implementación apoya la automatización del proceso de compilación de un proyecto con una herramienta de entrega continua (Jenkins [2]), una herramienta de ticketing (Jira [3]) para que asocie el cambio realizado a un issue , y una herramienta de comunicación interna del equipo (para este caso se seleccionó Slack [4]). Se implementó una interfaz genérica para definir las reglas de integración, que es extensible a nuevas herramientas debido a un diseño desacoplado y mantenible. La solución se desarrolló en C# [5], ya que es el lenguaje utilizado por el cliente para sus aplicaciones. Se utilizaron webhooks para poder subscribirse a los eventos de las herramientas GeneXus y a partir de la ejecución de dicho evento poder hacer alguna acción sobre las herramientas integradas. Dada la falta de experiencia de los integrantes del equipo y por las características del proyecto, se eligió un ciclo de vida evolutivo, permitiendo así incorporar cambios a lo largo del proyecto y gestionar de manera más efectiva la incertidumbre.

Para la gestión del proyecto se optó por una metodología híbrida, considerando que el proyecto es compatible con metodologías ágiles dado que el tiempo es fijo y el alcance es flexible. Para ello se optó por Scrum [6], [7]. Por otro lado, para gestionar los riesgos y el alcance se incorporan elementos de una metodología tradicional.

Glosario AfterCommit - Evento ejecutado luego de que se realiza la acción de commit de una KB en GXServer. AfterPublish - Evento ejecutado luego de que se realiza la acción de publish de una KB en GXServer. API - Interfaz de programación de aplicaciones (del inglés API: Application Programming Interface ). Es un conjunto de rutinas que provee acceso a funciones de un determinado software. Backend - Es la parte del software que procesa la entrada desde el frontend. Branch - Comando Git [8] usado para crear una nueva rama de versionado. Build - Instrucción en Jenkins que se encarga de realizar el armado y compilado de un programa. Burndown Chart - Gráfica que representa el trabajo restante en consideración del tiempo transcurrido, utilizado en el marco de scrum para efectuar un seguimiento del progreso del equipo. C# - Lenguaje de programación orientado a objetos. Lenguaje usado para la codificación de GeneXus. Channel - Denominación para un canal de comunicación en Slack. CI/CD - Sigla del inglés para Integración continua y Entrega continua. Método para distribuir aplicaciones de forma frecuente a los clientes mediante el uso de la automatización en las etapas del desarrollo de las aplicaciones.

Commit - Acción de confirmar un conjunto de cambios provisionales de forma permanente en un repositorio. Criterio de aceptación - Conjunto de características con la que una user story debe cumplir para ser considerada como terminada. Daily Scrum - Ceremonia de scrum que consiste es una reunión diaria (o de carácter frecuente) donde cada miembro del equipo se informa y compromete con el resto respecto a el estado de las tareas a realizar. Development Team - En scrum , es el equipo auto organizado que lleva el proyecto a cabo. DevOps - Práctica de ingeniería de software que tiene como objetivo unificar el desarrollo de software (Dev) y la operación del software (Ops). Mediante la automatización y el monitoreo en todos los pasos de la construcción del software , desde la integración, las pruebas, la liberación hasta la implementación y la administración de la infraestructura DevOps apunta a ciclos de desarrollo más cortos, mayor frecuencia de implementación, lanzamientos más confiables, en estrecha alineación con los objetivos comerciales. Entorno de desarrollo integrado IDE - Es una aplicación informática que proporciona servicios integrales para facilitarle al desarrollador o programador el desarrollo de software. Epic / Epica - Es una user story que, por su gran tamaño, se descompone en historias con un tamaño más adecuado para ser gestionada con los principios y técnicas ágiles. Factory - Patrón de diseño que consiste en utilizar una clase constructora abstracta con métodos definidos y métodos abstractos.

Issue - Unidad de trabajo para realizar una mejora en un sistema informático. Un issue puede ser el arreglo de un fallo, una característica pedida, una tarea, un pedido de documentación específico y todo tipo de solicitud al equipo de desarrollo. Issue tracking / Ticketing System - Un sistema de seguimiento de incidentes, es un paquete de software que administra y mantiene listas de incidentes. Jira - Herramienta en línea para la administración de tareas de un proyecto, el seguimiento de errores e incidencias y para la gestión operativa de proyectos. Job - Denominación en Jenkins de un conjunto de instrucciones a realizar secuencialmente. JSON [12] - Notación de objeto de JavaScript, utilizada para el intercambio de datos. Knowledge Base / Base de conocimiento/ KB - El nombre que reciben los proyectos de software en el ecosistema de GeneXus. Merge - Comando Git usado para fusionar dos ramas de versionado. Parse - Acción de leer una cadena de caracteres y convertir la información a un formato utilizable para la codificación del software. Planning Poker - Técnica para estimar en base al consenso del equipo, el esfuerzo necesario para completar una user story. Plugin - Aplicación informática que se relaciona con otra para agregarle una función nueva y generalmente muy específica. Postman - Entorno de desarrollo de APIs que nos permite diseñar, probar y monitorear servicios REST.

Product Backlog - Lista de user stories , ordenadas que intenta cubrir todas las funcionalidades necesarias del producto. Product Owner - En scrum , es el individuo responsable de maximizar el valor del producto resultante del trabajo del Development Team. Prueba de concepto/ Proof of concept / POC - Es una implementación, a menudo resumida o incompleta, de un método o de una idea, realizada con el propósito de verificar que el concepto o teoría en cuestión es susceptible de ser explotada de una manera útil. Reflection - Proceso por el cual un programa de software puede observar y modificar la estructura y comportamiento de un objeto de forma dinámica. Release - Versiones del producto que se ponen a disposición de los usuarios. Repository /Repositorio - Espacio centralizado donde se almacena, organiza, mantiene y difunde información digital, habitualmente archivos informáticos, conjuntos de datos o software. REST - Protocolo de intercambio y manipulación de datos en los servicios de internet , usa HTTP para obtener datos o generar operaciones sobre esos datos en todos los formatos posibles, como XML y JSON. Scrum - Marco de trabajo para desarrollo ágil de software. Adopta una estrategia de desarrollo incremental, en lugar de la planificación y ejecución completa del producto. Scrum Master - En s crum , es el rol del facilitador del proyecto en el equipo, individuo responsable de que los equipos alcancen sus objetivos, eliminando las dificultades con las que se puedan encontrar. Slack - Herramienta de comunicación en equipos de trabajo.

Uniform Resource Locator / URL - Dirección específica que se asigna a cada uno de los recursos disponibles en la red con la finalidad de que estos puedan ser localizados o identificados Update - Acción de actualizar localmente los cambios realizados en el repositorio. User Story / Historia de usuario - Representación de un requisito escrito en lenguaje de usuario. Whatsapp - Aplicación de mensajería. Webhooks - Es un método de alteración del funcionamiento de una página o aplicación web , con callbacks personalizados.

Índice

Resumen de los productos resultantes en función de los objetivos trazados

    1. Introducción
      • Descripción del cliente
      • Objetivos...................................................................................................
    • 1.2.1. Objetivos académicos
    • 1.2.2. Objetivos de producto
    • 1.2.3. Objetivos de proyecto........................................................................
      • Entorno conceptual de ORT Software Factory.........................................
      • Estructura del documento
      • Definición y descripción del equipo, experiencia y motivación
    1. Planteamiento del problema.............................................................................
      • Marco contextual
      • Interesados y sus necesidades
    1. Descripción de la solución
      • Ideando la prueba de concepto y entendiendo su alcance
      • Descripción funcional
      • Descripción técnica...................................................................................
    • 3.3.1. Configuración
    • 3.3.2. Ejecución
      • Arquitectura
      • Versiones soportadas en la prueba concepto
      • Transferencia de la solución al cliente
    1. Proceso y ciclo de vida
      • Ciclo de vida
      • Metodología de referencia
    • 4.2.1. Selección del marco de trabajo.......................................................... - Descripción general del proceso
    • 4.3.1. Roles
    • 4.3.2. Artefactos
      • 4.3.2.1. Product Backlog
      • 4.3.2.2. Sprint Backlog
      • 4.3.2.3. Burndown chart
    • 4.3.3. Ceremonias
      • 4.3.3.1. Sprint Planning
      • 4.3.3.2. Daily Meeting
      • 4.3.3.3. Sprint Review
      • 4.3.3.4. Sprint Retrospective
    • 4.3.4. Duración de las iteraciones y capacidad del equipo
    • 4.3.5. Estimación
    1. Gestión del proyecto - Estrategias de gestión - Planificación de los recursos - Planificación temporal
      • 5.3.1.1. Etapa de investigación
      • 5.3.1.2. Etapa de desarrollo
      • 5.3.1.3. Etapa de cierre y documentación
        • Plan de comunicación
        • Seguimiento y evaluación de iteraciones
    • 5.5.1. Sprint
      • 5.5.1.1. Sprint Review
      • 5.5.1.2. Sprint Retrospective
    • 5.5.2. Sprint - 5.5.2.1. Sprint Review - 5.5.2.2. Sprint Retrospective
      • 5.5.3. Sprint
        • 5.5.3.1. Sprint Review
        • 5.5.3.2. Sprint Retrospective
      • 5.5.4. Sprint
        • 5.5.4.1. Sprint Review
        • 5.5.4.2. Sprint Retrospective
          • Gestión de riesgos
      • 5.6.1. Metodología de análisis
      • 5.6.2. Identificación
        • 5.6.2.1. Detalle de riesgos identificados
      • 5.6.3. Seguimiento....................................................................................... - Métricas de gestión - Conclusiones...........................................................................................
    1. Ingeniería de requerimientos - Proceso de Ingeniería de requerimientos
      • 6.1.1. Descubrimiento y análisis
        • 6.1.1.1. Reuniones con el cliente
        • 6.1.1.2. Reuniones con el usuario final
      • 6.1.2. Investigación y selección
    • software 6.1.2.1. Tipos de herramientas de apoyo a los ciclos de vida de desarrollo de - 6.1.2.2. Tipo de integración a desarrollar - 6.1.2.3. Investigación y selección de las herramientas
      • 6.1.3. Especificación
    • 6.1.4. Validación
    • 6.1.5. Evolución - Criterio de priorización de requerimientos - Requerimientos funcionales - Requerimientos no funcionales - Conclusiones...........................................................................................
    1. Diseño arquitectónico - Características de calidad - Descripción y fundamentación de la arquitectura - Principales mecanismos y tecnologías - Validaciones realizadas a la arquitectura................................................ - Estrategia de desarrollo
    1. Calidad - Definición de calidad - Objetivos de calidad
    • 8.2.1. Objetivos de calidad desde el punto de vista del proceso
    • 8.2.2. Objetivos de calidad desde el punto de vista del producto - Gestión de calidad
    • 8.3.1. Estándares........................................................................................
      • 8.3.1.1. Estándares de documentación
      • 8.3.1.2. Estándares de código...................................................................
      • 8.3.1.3. Definición de hecho ( “done” )
      • 8.3.1.4. Estándares de proceso
    • 8.3.2. Revisiones
      • 8.3.2.1. Revisiones de documentación
      • 8.3.2.2. Revisiones de código
      • 8.3.2.3. Revisiones de procesos
    • 8.3.3. Validaciones
      • 8.3.3.1. Validación con tutor
      • 8.3.3.2. Validación con revisores
      • 8.3.3.3. Validación con el cliente
    • 8.3.4. Pruebas
      • 8.3.4.1. Pruebas unitarias
      • 8.3.4.2. Pruebas funcionales
      • 8.3.4.3. Registro de incidentes
        • Métricas del producto y proceso
    • 8.4.1. Velocidad estimada versus real
    • 8.4.2. Hora de retrabajo
    • 8.4.3. Incidentes por Sprint
    • 8.4.4. Warnings en análisis de código
    • 8.4.5. Cobertura del código
    • 8.4.6. Resultado de encuesta de uso
    • 8.4.7. Porcentaje de commit exitosos - Conclusiones...........................................................................................
    1. Gestión de la configuración - Identificación de elementos de configuración - Organización de repositorios
    • 9.2.1. Código fuente
    • 9.2.2. Documentación y archivos multimedia - Control de versiones
    • 9.3.1. Código fuente
    • 9.3.2. Documentación................................................................................ - Ciclo de control y seguimiento de cambios - Gestión de incidentes - Conclusiones...........................................................................................
    1. Conclusiones
      • Conclusiones generales...........................................................................
    • 10.2.1. Objetivos académicos
    • 10.2.2. Objetivos del producto
    • 10.2.3. Objetivos de proyecto...................................................................... - Detalle de las lecciones aprendidas - Línea de trabajo para el futuro
    1. Referencias bibliográficas..............................................................................
    1. Anexos
      • Gestión de riesgos
    • 12.1.1. Planificación de riesgo
    • 12.1.2. Detalle de la evolución de los riesgos - Manuales de configuración.....................................................................
    • 12.2.1. Manual GeneXus Plugin para Jenkins
      • 12.2.1.1. Objetivo.....................................................................................
      • 12.2.1.2. Pasos a seguir
    • 12.2.2. Manual Slack Plugin para Jenkins
      • 12.2.2.1. Objetivo.....................................................................................
      • 12.2.2.2. Pasos a seguir
    • 12.2.3. Manual de Slack
      • 12.2.3.1. Objetivo.....................................................................................
    • 12.2.3.2. Pasos a seguir
    • 12.2.3.3. Configuración adicional
  • 12.2.4. Manual de Jenkins
    • 12.2.4.1. Objetivo.....................................................................................
    • 12.2.4.2. Prerrequisitos
    • 12.2.4.3. Pasos a seguir
  • 12.2.5. Manual de Jira
    • 12.2.5.1. Objetivo.....................................................................................
    • 12.2.5.2. Pasos a seguir
      • Análisis de herramientas
      • Plan de comunicación
  • 12.4.1. Principales involucrados
  • 12.4.2. Canales de comunicación y herramientas
  • 12.4.3. Actividades de comunicación.......................................................... - Informe de Sprints
  • 12.5.1. Sprint
    • 12.5.1.1. Sprint Backlog
    • 12.5.1.2. Sprint Review
    • 12.5.1.3. Conclusiones
  • 12.5.2. Sprint
    • 12.5.2.1. Sprint Backlog
    • 12.5.2.2. Sprint Review
    • 12.5.2.3. Conclusiones
  • 12.5.3. Sprint
    • 12.5.3.1. Sprint Backlog
    • 12.5.3.2. Sprint Review