INGENIERÍA EN DESARROLLO DE SOFTWARE€¦ · programador, a la colaboración con el cliente y al...

16
1 INGENIERÍA EN DESARROLLO DE SOFTWARE INVESTIGACIÓN DOCUMENTAL Y DE CAMPO INFORME FINAL IMPORTANCIA DE UTILIZAR METODOLOGÍA ÁGIL EN EL DESARROLLO DE SOFTWARE” JUAN IGNACIO CARRANZA MARAVILLA MAYO 2019

Transcript of INGENIERÍA EN DESARROLLO DE SOFTWARE€¦ · programador, a la colaboración con el cliente y al...

Page 1: INGENIERÍA EN DESARROLLO DE SOFTWARE€¦ · programador, a la colaboración con el cliente y al incremento gradual del software, este enfoque está mostrando ser muy efectivo y

1

INGENIERÍA EN DESARROLLO DE SOFTWARE

INVESTIGACIÓN DOCUMENTAL Y DE CAMPO

INFORME FINAL

“IMPORTANCIA DE UTILIZAR

METODOLOGÍA ÁGIL EN EL

DESARROLLO DE SOFTWARE”

JUAN IGNACIO CARRANZA MARAVILLA

MAYO 2019

Page 2: INGENIERÍA EN DESARROLLO DE SOFTWARE€¦ · programador, a la colaboración con el cliente y al incremento gradual del software, este enfoque está mostrando ser muy efectivo y

2

Indice 1.-Introduccion ....................................................................................................... 3

1.1 Objetivos ...................................................................................................... 3

2.- Metodología ...................................................................................................... 4

2.1 Plan de trabajo ............................................................................................. 4

2.2 Selección y recopilación de la información ................................................... 4

2.3 Análisis y abstracción de la información ....................................................... 5

2.3.1 Marco teórico ......................................................................................... 5

2.3.2 Metodología Scrum ................................................................................ 5

2.3.3 Metodología Kanban .............................................................................. 6

2.3.4 Metodología XP...................................................................................... 6

2.4 Bitácora de investigación .............................................................................. 7

2.5 Planeación y aplicación de entrevista ........................................................... 8

2.6 Aplicación de encuesta ................................................................................. 8

3.-Resultados ......................................................................................................... 9

3.1 Entrevista ..................................................................................................... 9

3.2 Encuesta .................................................................................................... 10

4.-Conclusion ....................................................................................................... 14

5.-Referencias ...................................................................................................... 15

6.-Anexos ............................................................................................................. 16

6.1 Guion de la Entrevista ................................................................................ 16

Page 3: INGENIERÍA EN DESARROLLO DE SOFTWARE€¦ · programador, a la colaboración con el cliente y al incremento gradual del software, este enfoque está mostrando ser muy efectivo y

3

1.-Introduccion

En este informe presento la investigación que realice, sobre el tema que elegí

“importancia de utilizar Metodología Ágil en el Desarrollo de Software”, se realizó la

recopilación de información con el propósito de saber si es recomendable el usos

de estas metodologías en los proyectos de Desarrollo de Aplicaciones y en lo

personal me interesa este tema Y sobre todo el Desarrollar Aplicaciones.

El desarrollo de software se inició como una invención propia de la informática, pero

con el paso de los años su importancia dentro de las corporaciones grandes,

medianas y pequeñas ha revolucionado la industria a tal punto que en la vida diaria

ocupamos Aplicaciones comúnmente.

Ante todo esto se crearon muchas metodologías para tratar de hacer más fácil y ágil

esta tarea, las propuestas más tradicionales se centran en el control de procesos,

estas metodologías fueron de gran ayuda para su tiempo y revolucionarias, pero los

tiempos actuales necesitan tiempos más cortos sin disminuir la calidad del producto,

aquí es donde entran las Metodologías Agiles, las cuales dan mayor valor al

programador, a la colaboración con el cliente y al incremento gradual del software,

este enfoque está mostrando ser muy efectivo y está revolucionando la forma de

desarrollar software.

1.1 Objetivos

El objetivo principal es analizar la importancia de la implementación de

Metodologías Ágiles en el proceso de Desarrollo de Software.

Como objetivo secundarios tenemos

Definir que es una metodología ágil de desarrollo de software.

Comprender en qué consisten las principales Metodologías Agiles de

desarrollo de software (scrum, kanban y xp), y beneficios que conlleva

utilizarlas.

Con esto pretendemos saber si se recomienda el uso de Metodologías Ágiles y cuál

de las 3 principales es la que usan más los Desarrolladores de Software.

Page 4: INGENIERÍA EN DESARROLLO DE SOFTWARE€¦ · programador, a la colaboración con el cliente y al incremento gradual del software, este enfoque está mostrando ser muy efectivo y

4

2.- Metodología

2.1 Plan de trabajo

Para realizar esta investigación se elaboró un plan de trabajo con las actividades a

realizar, delimitando el tema los objetivos y dándole un tiempo a cada actividad, esto

con el fin de tener una mejor organización de los tiempos y poder cumplir en tiempo

y forma con cada actividad.

2.2 Selección y recopilación de la información

La investigación se seleccionó en internet, utilice los buscadores Google y Google

académico, después de seleccionar los sitios, procedí a recopilar la información

para la investigación.

Page 5: INGENIERÍA EN DESARROLLO DE SOFTWARE€¦ · programador, a la colaboración con el cliente y al incremento gradual del software, este enfoque está mostrando ser muy efectivo y

5

2.3 Análisis y abstracción de la información

2.3.1 Marco teórico Las metodologías ágiles son métodos de desarrollo de software en los que las

necesidades y soluciones evolucionan a través de una colaboración estrecha entre

equipos multidisciplinarios. Se caracterizan por enfatizar la

Comunicación frente a la documentación, por el desarrollo evolutivo y por su

flexibilidad.

Teóricamente, la agilidad se puede aplicar a cualquier proceso de software, sin

embargo han surgido modelos de proceso propios con esta filosofía. Es este tipo de

modelos, según el Manifiesto Ágil publicado en 2001, se valora lo siguiente:

A los individuos sobre los procesos y herramientas. Pues nada sustituye a

las personas a pesar de todas las ayudas que existen para desarrollar

software. Toda la importancia hay que dársela a las personas, que deben

permanecer en un primer plano.

Al software funcionando sobre la documentación exhaustiva. Esto se debe a

que había llegado un punto en el que la documentación de un trabajo había

alcanzado tanta importancia como el objeto de trabajo en sí mismo, el

producto. Cuando realmente la mayor atención debe estar puesta siempre

en lo que queremos construir, y lo demás debería ser secundario.

La colaboración del cliente sobre la negociación de un contrato. A la hora de

sacar un proyecto adelante, la forma más productiva siempre será

estableciendo un marco de colaboración y confianza con quien nos lo

encarga. Lo que estaba cobrando mayor importancia antaño era cerrar un

contrato atado que sirviese por encima de todo como una herramienta de

protección, de manera que el cliente y el equipo parecían partes enfrentadas,

cuando en realidad comparten objetivos e intereses.

La respuesta al cambio sobre seguir un plan. Se trata de apreciar la

incertidumbre como un componente básico del trabajo, de tal manera que la

adaptabilidad y la flexibilidad se convierten en virtudes y no en defectos de la

manera de trabajar del equipo. Por norma general, el seguimiento ciego de

un plan suele llevar al fracaso si no se puede corregir la dirección ante los

inevitables cambios que van surgiendo.

2.3.2 Metodología Scrum

En la metodología Scrum se definen un conjunto de roles, estrategias y actividades,

que se toman como punto de partida para definir el proceso que se llevara a cabo

durante el proyecto, creando equipos auto organizado impulsando la auto gestión

de todos los miembros del equipo, y la comunicación verbal entre todos los

miembros involucrados en el proyecto

Page 6: INGENIERÍA EN DESARROLLO DE SOFTWARE€¦ · programador, a la colaboración con el cliente y al incremento gradual del software, este enfoque está mostrando ser muy efectivo y

6

Principales características de Scrum:

Gestión regular de las expectativas del cliente, resultados anticipados, flexibilidad y

adaptación, retorno de inversión, mitigación de riesgos, productividad y calidad, alineamiento

entre cliente y equipo, por último, equipo motivado.

Se hace uso de equipos auto-dirigidos y auto-organizados.

Se realiza a diario una reunión de Scrum, que es una reunión de avance diaria que no dura

más de 15 minutos con el objetivo de obtener realimentación sobre las tareas del equipo y

los obstáculos que se presentan.

2.3.3 Metodología Kanban

El método Kanban es una aproximación gradual al objetivo, contempla la evolución

y el cambio en los sistemas de las organizaciones. Extrae las funciones básicas del

sistema para exponer los problemas de funcionamiento del sistema o de un proceso

en específico y estimula el trabajo en equipo para la mejora continua del sistema.

Principales características de Kanban:

Visualizar el flujo de trabajo y hacerlo visible es la base para comprender cómo avanza el

trabajo.

Limitar el trabajo en curso implica que un sistema de extracción se aplica en la totalidad o

parte del flujo de trabajo.

Se debe supervisar, medir y reportar el flujo de trabajo a través de cada estado.

Configure las reglas y directrices de su trabajo. Entienda las necesidades y asegúrese de

seguir las reglas.

Cuando los equipos tienen un entendimiento común de las teorías sobre el trabajo, el flujo

de trabajo, el proceso y el riesgo, es más probable que sea capaz de construir una

comprensión compartida de un problema y proponer acciones de mejora que puedan ser

aprobadas por consenso.

2.3.4 Metodología XP

Es una metodología que cuenta con cinco valores, simplicidad, comunicación,

retroalimentación, coraje y respeto, esto se logra con código simple y sencillo, fácil

de leer para que cualquier miembro del equipo pueda comunicarse con el código, el

cliente es parte fundamental del proceso y los cambios los vea inmediatamente, la

valentía le da a los programadores la libertad de reescribir su código siempre que

sea necesario y el respeto se debe dar entre los miembros del equipo de no

modificar código sin avisar al resto del equipo que a echo cambias antes de las

pruebas.

Principales características de XP:

Desarrollo iterativo e incremental: pequeñas mejoras, unas tras otras.

Pruebas unitarias continuas, frecuentemente repetidas y automatizadas, incluyendo pruebas

de regresión.

Page 7: INGENIERÍA EN DESARROLLO DE SOFTWARE€¦ · programador, a la colaboración con el cliente y al incremento gradual del software, este enfoque está mostrando ser muy efectivo y

7

Programación en parejas: se recomienda que las tareas de desarrollo se lleven a cabo por

dos personas en un mismo puesto.

Frecuente integración del equipo de programación con el cliente o usuario. Se recomienda

que un representante del cliente trabaje junto al equipo de desarrollo.

Corrección de todos los errores antes de añadir nueva funcionalidad. Hacer entregas

frecuentes.

Refactorización del código, es decir, reescribir ciertas partes del código para aumentar su

legibilidad y mantenimiento pero sin modificar su comportamiento.

Propiedad del código compartida: en vez de dividir la responsabilidad en el desarrollo de

cada módulo en grupos de trabajo distintos, este método promueve el que todo el personal

pueda corregir y extender cualquier parte del proyecto. Las frecuentes pruebas de regresión

garantizan que los posibles errores serán detectados.

Simplicidad en el código: es la mejor manera de que las cosas funcionen. Cuando todo

funcione se podrá añadir funcionalidad si es necesario. La programación extrema apuesta

que es más sencillo hacer algo simple y tener un poco de trabajo extra para cambiarlo si se

requiere, que realizar algo complicado y quizás nunca utilizarlo.

2.4 Bitácora de investigación

Se elaboró un diario de campo y el resultado fue el siguiente: Mi investigación se basa

en la importancia de utilizar Metodologías Agiles en el desarrollo de software, base mi

investigación en la empresa llamada DEVMICROSYSTEM que realiza desarrollo de

software en android, java, psp y asp.

Empecé el día 14 de mayo a buscar información, visitando la empresa en donde conocí

un poco de la estructura que tienen y como funciona su organización, la persona con la

que entable contacto es un líder de proyecto de los cuales existen 3 personas con ese

rol, cada equipo de proyecto se compone del líder, un gerente de interfaz que sirve

como puente entre el equipo de desarrollo y el cliente y 4 programadores que se

encargan de desarrollar los módulos.

El líder de proyecto me explico que tienen 3 principios para desarrollar software y los

cuales han sido muy funcionales:

1.- Comunicación directa

Comunicación directa tanto con el cliente por medio del gerente de interfaz, como con

los programadores y para ello utilizan diversas herramientas de comunicación,

colaboración, organización y compartición de archivos, algunas de estas herramientas

son:

trello.

slack.

google drive.

skype.

notion.

Page 8: INGENIERÍA EN DESARROLLO DE SOFTWARE€¦ · programador, a la colaboración con el cliente y al incremento gradual del software, este enfoque está mostrando ser muy efectivo y

8

toggi.

2.- Software en línea para pruebas

El cliente debe tener acceso a todos los cambios que se generen para pruebas y definir

si existen cambios, el propósito de esto es que exista lo que se denomina prueba y

error, ya que muchas veces el cliente no suele explicar bien que es lo que busca o

quiere por eso se tiene un sistema en paralelo para la prueba y error una vez que el

cliente está satisfecho este servidor paralelo pasa a ser el principal y se empieza con

un nuevo servidor en paralelo para la siguiente actividad.

3.- Maximizar los tiempos de programación.

Lo que pretenden con esto es evitar perdida de tiempos en reuniones tardadas, tiempo

que se puede aprovechar para desarrollar módulos del sistema en cuestión para ello

realizan las siguientes reuniones.

Reuniones diarias entre el Líder de Proyecto y su equipo que duran de 10 a 15 min.

Para definir y repartir las actividades del día.

Reuniones diarias entre el Líder de Proyecto y el Director para revisar lo que se

desarrolló el día anterior esta reunión Dura 10 min. A lo mucho.

Reuniones cada 2 o 4 semanas con el cliente para definir si existen problemas o

nuevas solicitudes en relación al desarrollo del sistema o aplicación en cuestión.

Todo esto aunado a la comunicación diaria con el cliente y el equipo de desarrollo

permiten tener un desarrollo exitoso.

2.5 Planeación y aplicación de entrevista

Como parte de la investigación se realizó una entrevista a uno de los líderes de

proyecto de la empresa DEVMICROSYSTEM se concertó la cita y acudí a realizarla

recabando datos de como llevan a cabo sus desarrollos.

2.6 Aplicación de encuesta

Se realizó una encuesta a 20 personas que se dedican al desarrollo de software

para recabar datos y analizarlos.

Page 9: INGENIERÍA EN DESARROLLO DE SOFTWARE€¦ · programador, a la colaboración con el cliente y al incremento gradual del software, este enfoque está mostrando ser muy efectivo y

9

3.-Resultados Para el análisis de resultados contamos con dos herramientas la entrevista realizada

a un líder de proyecto y la encuesta realizada a 20 Desarrolladores de Software. Y

de antemano podemos ver que es muy recomendable utilizar Metodologías Ágiles

en el desarrollo de software.

3.1 Entrevista

Se realizó la entrevista a unos de los 3 líderes de proyecto con que cuenta la

empresa DEVMICROSYSTEM, les dejo la entrevista:

¿Cuál es su nombre?

R.- Aldo Valdez.

¿Cuál es el puesto que desempeña aquí?

R.-Soy Líder de Proyecto.

¿Cuánto años de experiencia tiene en desarrollo de software?

R.-17 Años Desarrollando Aplicaciones.

¿Cuáles son sus Actividades en esta empresa?

R.- Mis funciones son liderar el equipo de desarrollo para lograr terminar el proyecto

en tiempo y forma, administrando los tiempos, repartiendo las actividades, dándole

seguimiento a cada miembro del equipo, escuchando los requerimientos del cliente

y trasmitiéndolos a los integrantes del equipo entre otras cosas más.

¿Conoce Las Metodologías Agiles y que son para usted?

R.- Si, ofrecen herramientas para la toma de decisiones en los proyectos, basadas

en el desarrollo incremental, con autogestión dentro del equipo.

¿Utilizan Metodologías Agiles en sus Proyectos?

R.-Si Claro son las metodologías que utilizamos.

¿Qué Metodologías Agiles ha utilizado?

R.-Scrum, Kanban y XP

¿Qué Metodología Ágil Recomienda utilizar?

R.- en experiencia Propia me ha funcionado mejor Scrum.

Page 10: INGENIERÍA EN DESARROLLO DE SOFTWARE€¦ · programador, a la colaboración con el cliente y al incremento gradual del software, este enfoque está mostrando ser muy efectivo y

10

¿Qué beneficios ofrecen las Metodologías Agiles?

R.-con las Metodologías Agiles se pueden obtener mejores resultados, en un tiempo

menor y con mayor capacidad de adaptación para poder competir con la

competencia a nivel internacional.

¿Alguna recomendación para los desarrolladores que van empezando?

R.-Trabaja en equipo y aprende todo lo que puedas de otros desarrolladores con

más experiencia, si no te sientes a gusto con tu equipo de trabajo busca otro donde

puedas crecer y aprender más cada día.

Con Base en los datos de la entrevista podemos ver que a esta empresa le ha

funcionado la utilización de Metodologías Agiles y en particular al entrevistado le

gusta más la Metodología Ágil Scrum, fue de mucha ayuda esta entrevista y creo

que se resume en la siguiente respuesta del entrevistado:

”Con las Metodologías Agiles se pueden obtener mejores resultados, en un tiempo

menor y con mayor capacidad de adaptación para poder competir con la

competencia a nivel internacional”

3.2 Encuesta

Se Realizó una encuesta a 20 Desarrolladores y estos fueron los resultados Más

destacados:

Con Respecto al sexo de los encuestados tenemos un 60% de hombres con mayor

participación y no muy atrás un 40% de mujeres.

Page 11: INGENIERÍA EN DESARROLLO DE SOFTWARE€¦ · programador, a la colaboración con el cliente y al incremento gradual del software, este enfoque está mostrando ser muy efectivo y

11

Podemos ver que la mayoría trabaja en alguna empresa con un 80% y solo el 20%

es independiente.

Con respecto al tamaño de los equipos de desarrollo podemos ver que predominan

los equipos con pocas personas y de 1 a 5 integrantes tiene 60% y de 5 a 10 tiene

40% los de más de 10 se quedaron con 0%, esto nos dice que es mejor y más viable

tener una mejor organización con equipos pequeños.

Page 12: INGENIERÍA EN DESARROLLO DE SOFTWARE€¦ · programador, a la colaboración con el cliente y al incremento gradual del software, este enfoque está mostrando ser muy efectivo y

12

En la siguiente grafica vemos el porcentaje de personas que utilizan Metodologías

Agiles en sus desarrollos y el 80% las usa solo el 20% no las utiliza.

Sobre si recomiendan el uso de Metodologías Ágiles la encuesta arrojo que el 80%

de los encuestados dijo que si y solo el 20% dijo que no.

Page 13: INGENIERÍA EN DESARROLLO DE SOFTWARE€¦ · programador, a la colaboración con el cliente y al incremento gradual del software, este enfoque está mostrando ser muy efectivo y

13

Y por último cual Metodología Ágil es la que más ocupan la encuesta arrojo que la

más usada es Programación Extrema XP con 45%, seguida de Scrum con 30% y

por ultimo Kanban con 15%.

Page 14: INGENIERÍA EN DESARROLLO DE SOFTWARE€¦ · programador, a la colaboración con el cliente y al incremento gradual del software, este enfoque está mostrando ser muy efectivo y

14

4.-Conclusion La tecnología crece a pasos gigantescos y se ha hecho necesario el uso de Apps.

Que nos hagan las tareas más fáciles, las empresas poco a poco han ido

aumentando la demanda de sistemas para sus organizaciones y no hablamos solo

de grandes corporaciones, inclusive la tiendita de la esquina puede beneficiarse de

estos sistemas, el uso también se ha extendido al tráfico, a entregas de comida, a

servicio de transporte, juegos, compras, básicamente a todo.

Por lo cual es necesario que exista el Desarrollo de Aplicaciones y con esta

investigación observamos que es muy recomendable el uso de Las Metodologías

Agiles para el desarrollo de proyectos, ya que hacen que se llegue al objetivo más

rápidamente y aseguran que el sistema esté preparado y adaptado al cambio,

reduciendo tiempos y costos en el desarrollo y actualización de sistemas ya que no

se ve como un proyecto como tal ya que el proyecto se divide en varios proyectos

más pequeños.

Podemos observar que los equipos de trabajo son pequeños y eficaces utilizando

estas metodologías y los desarrolladores recomiendan su uso y lo utilizan, cabe

señalar que la Metodología Ágil más utilizada según la encuesta es la Programación

Extrema XP, esta metodología se caracteriza por ir de pequeñas mejoras una tras

otra y realizar pruebas continuas, manteniendo una estrecha comunicación con el

cliente para que paralelamente se puedan ver los errores y de inmediato corregirlos.

A diferencia de las metodologías tradicionales que son predictivas, orientadas a

procesos, rígidas, poca comunicación con el cliente, entrega de software al finalizar

el proyecto y con una extensa documentación.

Las Metodologías Agiles son adaptativas, orientadas a personas, flexibles,

comunicación constante con el cliente, entregas constantes de procesos y poca

documentación.

Page 15: INGENIERÍA EN DESARROLLO DE SOFTWARE€¦ · programador, a la colaboración con el cliente y al incremento gradual del software, este enfoque está mostrando ser muy efectivo y

15

5.-Referencias

José H. Canós, Mª Carmen Penadés Patricio Letelier. (2012). Métodologías Ágiles

en el Desarrollo de Software. MAYO 09, 2019, de Universidad de las Tunas Sitio

web: http://roa.ult.edu.cu/handle/123456789/476

Juan Daniel; Morales Vélez, Jonathan. (2013). Revisión de metodologías ágiles

para el desarrollo de software. mayo 09, 2019, de Universidad Autónoma del Caribe

Colombia Sitio web: https://www.redalyc.org/pdf/4962/496250736004.pdf

Eduardo Martínez. (2014). Las 8 grandes ventajas de las metodología ágiles. Mayo

09,2019, Sitioweb: https://www.iebschool.com/blog/que-son-metodologias-agiles-

agile-scrum/

Creative Commons Atribución Compartir Igual 3.0. (2019). Desarrollo ágil de

software. mayo 09,2019, de Wikipedia Sitio web:

https://es.wikipedia.org/wiki/Desarrollo_%C3%A1gil_de_software

Page 16: INGENIERÍA EN DESARROLLO DE SOFTWARE€¦ · programador, a la colaboración con el cliente y al incremento gradual del software, este enfoque está mostrando ser muy efectivo y

16

6.-Anexos

6.1 Guion de la Entrevista

Buena tarde mi nombre es Juan Ignacio Carranza Maravilla, soy aspirante a la

carrera Ingeniería en Desarrollo de Software, en el curso propedéutico se nos pide

realizar la investigación de un tema, el tema que elegí es: importancia de utilizar

Metodología Ágil en el Desarrollo de Software, por este motivo le pedí me ayudara

con esta entrevista de antemano le agradezco sus atenciones.

Preguntas a Realizar:

¿Cuál es Su nombre?

¿Cuál es el puesto que desempeña aquí?

¿Cuánto años de experiencia tiene en desarrollo de software?

¿Cuáles son sus Actividades en esta empresa?

¿Conoce Las Metodologías Agiles y que son para usted?

¿Utilizan Metodologías Agiles en sus Proyectos?

¿Qué Metodologías Agiles ha utilizado?

¿Qué Metodología Ágil Recomienda utilizar?

¿Qué beneficios ofrecen las Metodologías Agiles?

¿Alguna recomendación para los desarrolladores que van empezando?