INGENIERÍA EN DESARROLLO DE SOFTWARE€¦ · programador, a la colaboración con el cliente y al...
Transcript of INGENIERÍA EN DESARROLLO DE SOFTWARE€¦ · programador, a la colaboración con el cliente y al...
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
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
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.
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.
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
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.
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.
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.
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.
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.
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.
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.
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%.
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.
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
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?