Anteproyecto metodologias agiles

Page 1

SEMINARIO DE INVESTIGACIÓN

METODOLOGIA AGILES

Claudia Marcela Barrera Cruz (C.C. 41961745) Diana Carolina Agudelo Herrera (1094925174) Diana Marcela Daraviña Acuña (C.C 1094944935)

Docente: Juan Manuel Marulanda Eggen.

Ingeniería de sistemas y computación Universidad del Quindío Diciembre 04 2013


METODOLOGIAS AGILES

1. LINEA DE INVESTIGACION:

Las metodologías ágiles pertenecen a la línea de investigación de Desarrollo de software.

2. SELECCIÓN DEL TEMA OBJETO DE INVESTIGACION:

Implementación de metodologías ágiles para el desarrollo de software de calidad a menos costo y menos tiempo de entrega.

3. EL PROBLEMA U OBJETO DEL CONOCIMIENTO:

3.1. Planteamiento del problema u objeto del conocimiento:

El desarrollo de software (comprende el conjunto de los componentes lógicos necesarios que hacen posible la realización de tareas específicas) es un proceso complejo. Y es por esto que existen numerosas metodologías que inciden en distintas dimensiones del proceso de desarrollo; como lo son las tradicionales que se centran principalmente en el control del proceso, siguiendo estrictamente las actividades planteadas, los bienes a producir, las herramientas y notación a usar. Y funcionaban bien en el desarrollo de proyectos anteriormente. En la actualidad el desarrollo e innovación de nuevos productos es acelerado y competitivo, y aún más en el entorno de sistemas que es muy cambiante, en donde se exige reducir drásticamente los tiempos de desarrollo pero manteniendo una alta calidad. El enfoque de proyectos tradicional no funciona en este escenario. Se requiere un enfoque integral y flexible donde un equipo multidisciplinario trabaje unido para alcanzar un objetivo común.


Para el desarrollo de software se sigue un modelo de proceso, al cual se acogen las organizaciones de desarrollo software. También existen estándares internacionales que regulan el método de selección, implementación y monitoreo del ciclo de vida del software ( ISO 12207). Las actividades desarrollo de software son: a) Planificación b) Implementación, pruebas y documentación c) Despliegue y mantenimiento

El ciclo de desarrollo consiste (a grandes rasgos) en los siguientes pasos: 1. El cliente define el valor de negocio a implementar. 2. El programador estima el esfuerzo necesario para su implementación. 3. El cliente selecciona qué construir, de acuerdo con sus prioridades y las restricciones de tiempo. 4. El programador construye ese valor de negocio. 5. Vuelve al paso 1. En todas las iteraciones de este ciclo tanto el cliente como el programador aprenden. No se debe presionar al programador a realizar más trabajo que el estimado, ya que se perderá calidad en el software o no se cumplirán los plazos. De la misma forma el cliente tiene la obligación de manejar el ámbito de entrega del producto, para asegurarse que el sistema tenga el mayor valor de negocio posible con cada iteración. En los últimas años las notaciones de modelado y posteriormente las herramientas fueron un éxito en el desarrollo de software, sin embargo, las expectativas no fueron satisfechas. Ya que de nada sirven buenas notaciones y herramientas si no se proveen directivas para su aplicación.

En este escenario, las metodologías ágiles emergen como una posible respuesta para llenar ese vacío metodológico. Por estar especialmente orientadas para proyectos pequeños, las metodologías ágiles constituyen una solución a medida para ese entorno, aportando una elevada simplificación que a pesar de ello no renuncia a las prácticas esenciales para asegurar la calidad del producto.

En febrero de 2001, tras una reunión celebrada en Utah-EEUU, nace el término “ágil” aplicado al desarrollo de software. En esta reunión participan un grupo de 17 expertos de la industria del software, incluyendo algunos de los creadores de metodologías de software. Su objetivo fue analizar los


valores y principios que permitieran a los equipos desarrollar software rápidamente y respondiendo a los cambios que puedan surgir a lo largo del proyecto. Se pretendía ofrecer una alternativa a los procesos de desarrollo de software tradicionales, caracterizados por ser rígidos y dirigidos por la documentación que se genera en cada una de las actividades desarrolladas.

Tomando como base el Manifiesto Ágil, un documento que resume la idea de “ágil”; en el cual se contemplan las pautas a tener en cuenta en el proceso de desarrollo de software.

Al individuo y las interacciones del equipo de desarrollo sobre el proceso y las herramientas: El factor humano es el principal elemento en un proyecto de software, por eso es necesario construir un grupo de trabajo adecuado y que ellos mismos desarrollen su entorno de trabajo de acuerdo a las necesidades.

Desarrollar software que funciona más que conseguir una buena documentación: A la hora de tomar decisiones se hacer documentos solo de serlo necesario, y estos deben ser concisos y claros. •

La colaboración con el cliente más que la negociación de un contrato: Debe existir interacción entre el cliente y los desarrolladores. •

Responder a los cambios más que seguir estrictamente un plan: Por lo tanto el planteamiento se hace flexible y abierto, a ajustes según se requiera. Los doce principios del manifiesto: I. La prioridad es satisfacer al cliente, por medio de tempranas y continuas entregas de software que le aporte un valor. II. Dar la bienvenida a los cambios. Detectar los cambios para que el cliente tenga una ventaja competitiva.


III. Entregar frecuentemente software que funcione desde un par de semanas a un par de meses, con el menor intervalo de tiempo posible entre entregas. IV. La gente del negocio y los desarrolladores deben trabajar juntos a lo largo del proyecto. V. Construir el proyecto en torno a individuos motivados. Darles el entorno y el apoyo que necesitan y confiar en ellos para conseguir finalizar el trabajo. VI. El diálogo cara a cara es el método más eficiente y efectivo para comunicar información dentro de un equipo de desarrollo. VII. El software que funciona es la medida principal de progreso. VIII. Los procesos ágiles promueven un desarrollo sostenible. Los promotores, desarrolladores y usuarios deberían ser capaces de mantener una paz constante. IX. La atención continua a la calidad técnica y al buen diseño mejora la agilidad. X. La simplicidad es esencial. XI. Las mejores arquitecturas, requisitos y diseños surgen de los equipos organizados por sí mismos. XII. En intervalos regulares, el equipo reflexiona respecto a cómo llegar a ser más efectivo, y según esto ajusta su comportamiento.

Para el desarrollo de un proyecto implementando Metodologías ágiles se requiere elegir una de ellas:  Programación

extrema (Extreme Programming, XP): metodología ágil que resume lo anteriormente mencionado.

Es

una

Existen otras metodologías ágiles como lo son: SCRUM, Crystal Methodologies, Dynamic Systems Development Method (DSDM), Adaptive Software Development (ASD), Feature -Driven Development (FDD), Lean Development (LD).


Aunque los creadores e impulsores de las metodologías ágiles más populares han suscrito el manifiesto ágil y coinciden con los principios enunciados anteriormente, cada metodología tiene características propias y hace hincapié en algunos aspectos más específicos. A continuación se resumen otras metodologías ágiles. La mayoría de ellas ya estaban siendo utilizadas con éxito en proyectos reales pero les faltaba una mayor difusión y reconocimiento. • SCRUM: Desarrollada por Ken Schwaber, Jeff Sutherland y Mike Beedle. Define un marco para la gestión de proyectos, que se ha utilizado con éxito durante los últimos 10 años. Está especialmente indicada para proyectos con un rápido cambio de requisitos. Sus principales características se pueden resumir en dos. El desarrollo de software se realiza mediante iteraciones, denominadas sprints, con una duración de 30 días. El resultado de cada sprint es un incremento ejecutable que se muestra al cliente. La segunda característica importante son las reuniones a lo largo proyecto, entre ellas destaca la reunión diaria de 15 minutos del equipo de desarrollo para coordinación e integración. • Crystal Methodologies: Se trata de un conjunto de metodologías para el desarrollo de software caracterizadas por estar centradas en las personas que componen el equipo y la reducción al máximo del número de artefactos producidos. Han sido desarrolladas por Alistair Cockburn. El desarrollo de software se considera un juego cooperativo de invención y comunicación, limitado por los recursos a utilizar. El equipo de desarrollo es un factor clave, por lo que se deben invertir esfuerzos en mejorar sus habilidades y destrezas, así como tener políticas de trabajo en equipo definidas. Estas políticas dependerán del tamaño del equipo, estableciéndose una clasificación por colores, por ejemplo Crystal Clear (3 a 8 miembros) y Crystal Orange (25 a 50 miembros). • Dynamic Systems Development Method (DSDM): Define el marco para desarrollar un proceso de producción de software. Nace en 1994 con el objetivo de crear una metodología RAD unificada. Sus principales características son: es un proceso iterativo e incremental y el equipo de desarrollo y el usuario trabajan juntos. Propone cinco fases: estudio viabilidad, estudio del negocio, modelado funcional, diseño y construcción, y finalmente implementación. Las tres últimas son iterativas, además de existir realimentación a todas las fases. • Adaptive Software Development (ASD): Su impulsor es Jim Highsmith. Sus principales características son: iterativo, orientado a los componentes


software más que a las tareas y tolerante a los cambios. El ciclo de vida que propone tiene tres fases esenciales: especulación, colaboración y aprendizaje. En la primera de ellas se inicia el proyecto y se planifican las características del software; en la segunda desarrollan las características y finalmente en la tercera se revisa su calidad, y se entrega al cliente. La revisión de los componentes sirve para aprender de los errores y volver a iniciar el ciclo de desarrollo. • Feature-Driven Development (FDD): Define un proceso iterativo que consta de 5 pasos. Las iteraciones son cortas (hasta 2 semanas). Se centra en las fases de diseño e implementación del sistema partiendo de una lista de características que debe reunir el software. Sus impulsores son Jeff De Luca y Peter Coad. • Lean Development (LD): Definida por Bob Charettes a partir de su experiencia en proyectos con la industria japonesa del automóvil en los años 80 y utilizada en numerosos proyectos de telecomunicaciones en Europa. En LD, los cambios se consideran riesgos, pero si se manejan adecuadamente se pueden convertir en oportunidades que mejoren la productividad del cliente. Su principal característica es introducir un mecanismo para implementar dichos cambios.


3.2. Formulación del problema:

Formulación problema

del Sistematización problema

¿Qué procesos se deben seguir para desarrollar metodologías agiles al momento de realizar un software en menor tiempo y a menor costo?

del Objetivo General específicos

¿Qué beneficios futuros traerá la implementación de metodologías agiles al desarrollar software? ¿Qué ventajas tienen las metodologías agiles?

y

Objetivo general Conocer el proceso de implementación de metodologías ágiles para desarrollar un software a


¿Desde hace cuánto se están implementando las metodologías agiles? ¿Cuál es el objetivo principal que tienen las metodologías agiles? ¿Cuál es el procedimiento que se debe seguir para la implementación de metodologías agiles?

menor tiempo y costo. Objetivos Específicos:

1-Conocer la importancia que tienen las metodologías ágiles al momento de desarrollar un software. 2-Determinar y describir las ventajas que se obtienen al momento de hacer uso de las metodologías ágiles en el desarrollo de un software. 3-Identificar los diferentes tipos de metodologías ágiles que existen para desarrollar un software.

4. OBJETIVOS

4.1. Objetivo general:

Determinar el proceso de implementación de metodologías ágiles para desarrollar un software a menor tiempo y costo.

Desde hace cierto tiempo, nació el término ‘ ágil ’ aplicado al desarrollo de software, en una reunión celebrada en Utah Estados Unidos por 17 expertos en la industria del software, cuyo objetivo era agilizar el proceso de desarrollo


de software en cuanto a tiempo de ejecución y tiempo de respuesta a los cambios que puedan surgir a lo largo del desarrollo de dicho software(volatilidad de los requisitos del software).Nuestro objetivo principal es conocer dicho proceso para llevar a cabo nuestra investigación.

4.2. Objetivos específicos: •

Describir la importancia que tienen las metodologías ágiles al momento de desarrollar un software. En la actualidad hay mucha competencia a nivel de software, y la mejor manera de sobresalir entre la multitud es implementar en los proyectos (software) las metodologías ágiles; se ve claramente.

Especificar y describir las ventajas que se obtienen al momento de hacer uso de las metodologías ágiles en el desarrollo de un software. Dos de las ventajas más visibles a la hora de implementar metodologías ágiles en nuestros proyectos (software) son: a-Reducir el costo de desarrollo del software, y b-Reducir el tiempo de ejecución del proyecto.

Identificar los diferentes tipos de metodologías ágiles que existen para desarrollar un software. Algunos ejemplos de metodologías ágiles son:

Programación Extrema, es uno de los ejemplos más exitosos de metodología ágil.

Scrum

Crystal

Evolutionary Project Management (Evo)

Feature Driven Development (FDD)

Adaptive Software Development (ASD)

Lean Development (LD) y Lean Software Development (LSD)

Proceso Unificado de Desarrollo Software


5. JUSTIFICACION: 5.1. Razones teóricas:

En los últimos tiempos, el software se ha convertido en un elemento de vital importancia en las organizaciones, de ahí la importancia de conocer metodologías prácticas que faciliten su desarrollo. El proceso de desarrollo a su vez, ha sido concebido como una serie de etapas que hay que cursar, normalmente empezando por el análisis de requisitos, pasando luego por el análisis del sistema, diseño, implementación, pruebas, implantación y mantenimiento, buscando obtener un producto de calidad que satisfaga las necesidades de clientes.

5.2. Razones metodológicas:

Al principio de la Ingeniería de software, este se desarrollaba siguiendo las etapas anteriores de manera estrictamente secuencial, lo que hacía que el producto se viera en un periodo bastante tardío y que la entrega del mismo fuese más lenta. Es allí donde aparecieron las metodologías agiles las cuales dan mayor valor al individuo, a la colaboración con el cliente y al desarrollo incremental del software aportando una elevada simplificación al desarrollo de software que a pesar de ello no renuncia a las prácticas esenciales para asegurar la calidad del producto.

5.3. Justificación Práctica:

A futuro las metodologías ágiles tienden a prever una fuerte proyección industrial. Por un lado, para muchos equipos de desarrollo el uso de metodologías tradicionales les resulta muy lejano a su forma de trabajo actual considerando las dificultades de su introducción e inversión asociada en formación y herramientas. Por otro, las características de los proyectos para los cuales las metodologías ágiles han sido especialmente pensadas se ajustan a un amplio rango de proyectos industriales de desarrollo de software; aquellos en los cuales los equipos de desarrollo son pequeños, con plazos reducidos, requisitos volátiles, y/o basados en nuevas tecnologías. Es por esta razón que se hace necesario conocer más a fondo el tema de la implementación de metodologías agiles en menos tiempo y menos costo.


5.4. Delimitación del tema:

Las metodologías agiles se desempeñan dentro del campo de la ingeniería de sistemas, el término “ágil” nació en febrero de 2001 aplicado al desarrollo de software. Su objetivo principal consistió en analizar los valores y principios que permitieran a los equipos de trabajo desarrollar software rápidamente y que pudieran responder a los cambios que surgieran a lo largo del proyecto, es decir que con un poco de planificación, un poco de codificación y unas pocas pruebas se puede decidir si se está siguiendo un camino acertado o equivocado, evitando así tener que echar marcha atrás demasiado, esto le permite al cliente informarse del trabajo que se está realizando y saber si está satisfecho con este proyecto a su vez le permite al desarrollador de software hacer cambios si es necesario. Las metodologías agiles han generado un gran impacto en la actualidad mejorando el proceso dentro de un equipo de trabajo que se dedica al desarrollo de software puesto que les ha permitido desarrollar software en menor tiempo y costo. Los parámetros a tener en cuenta son: •

El objeto de investigación del presente proyecto es Implementación de metodologías ágiles para el desarrollo de software de calidad a menos costo y menos tiempo de entrega.

El presente estudio de investigación es desarrollado por los estudiantes de quinto semestre de ingeniería de sistemas y computación para aprovechar el espacio académico seminario de investigación dentro de la universidad del Quindío.

El proyecto de metodologías agiles tiene como propósito involucrar a los estudiantes, docentes, profesionales de la faculta de ingeniería de sistemas.

Este estudio está fundamentado por el tipo de investigación explicativa y también se usa el método lógico inductivo; con el propósito de que los ingenieros de sistemas comprendan el tema de metodologías agiles

7. DISEÑO METODOLOGICO:

7.1. Tipo de estudio:


7.1.1.

Estudio descriptivo

7.1.2.

Estudio explicativo

7.2. Método de investigación 7.2.1.

Método de observación

7.2.2.

Método inductivo

7.2.3.

Método deductivo:

El desarrollo ágil de software, está basado en el desarrollo iterativo y progresivo, donde los requisitos y soluciones evolucionan mediante la colaboración de grupos auto organizado y multidisciplinario. El software desarrollado en una unidad de tiempo es llamado una iteración, la cual debe durar de una a cuatro semanas. Cada iteración del ciclo de vida incluye: planificación, análisis de requisitos, diseño, codificación, revisión y documentación Para cada etapa es de gran importancia las comunicaciones cara a cara con el cliente en vez de la documentación. Ya que se deben considerar los cambios de requisitos de ser necesario. El equipo de trabajo al ser dinámico, es capaz de adaptarse a los cambios en cualquier punto del proyecto, para lograr una aproximación mejor y más realista que definir todos los requisitos al comienzo del proyecto y evitar esfuerzos y gastos de energía innecesarios.

7.3. Técnica e instrumentos para la recolección de información:

Diversos métodos de recolección de datos se utilizan para obtener información, al momento de implementar el diseño, administración, seguimiento y evaluación de programas y proyectos de desarrollo software; con el fin de lograr los mejores resultados, optimizando los recursos ofrecidos por el medio.

7.3.1.

Fuentes secundarias:

En muchas instancias, especialmente cuando se requiere de la comprensión e interpretación de un fenómeno o proceso, se recurre a documentos, libros, datos estadísticos, entre otros elementos que pueden proporcionar la información requerida. Estas son las fuentes secundarias para la recolección de información.


7.3.2.

Fuentes primarias:

Dentro de las fuentes primarias está la observación, entrevista y cuestionarios; los cuales se realizan con los gestores y personas involucradas directamente con el proyecto a desarrollar, ya que se sustentan en el juicio personal y la experiencia. Para obtener una mejor perspectiva y dar cumplimiento a los requerimientos del cliente, con una buena comprensión del tema, problema o tópico a investigar. Esto implica tanto el conocimiento teórico como la experiencia de tipo práctico. . 7.3.3.

Tratamiento de la Información:

Una vez obtenida la información es procesada y clasificada en orden prioritario, para ser dada a conocer a todo el equipo de trabajo y manejar una buena comunicación, tanto interna (grupo de trabajo) como externa (cliente).

7.3.4.

Técnicas Estadísticas:

Dentro de las técnicas estadísticas, se enfoca el proyecto a la estadística descriptiva, que se refiere a procedimientos para resumir la información obtenida para ser trasmitida de forma fácil y eficazmente; y así entrar a evaluar la comunicación con el cliente y las interrelaciones del equipo de trabajo ya que el factor humano es el principal elemente dentro de un proyecto de software, y estos a su vez deben estar dentro de un entorno adecuado a para sus necesidades. Con toda la información obtenida se busca no repetir errores del pasado y con la colaboración del cliente, llegar un desarrollo del software funcional, que se ajuste a un entorno cambiante.


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.