Metodologías y gestión de proyectos en el desarrollo de software

UNIVERSIDAD NACIONAL AUTÓNOMA DE HONDURAS

FACULTAD DE INGENIERÍA

Integrantes

Integrantes

Grupo No: 2

Nombre:                                                                      Cuenta

Acza Yozabeth Garcia Perez                                               20151020757

German Rene Tejada Alcantara                                         20151003416

Michell Esmelin Matamoros Alvarado                              20121001904

Introducción

Introducción

En el mundo de los negocios se busca obtener la mayor ganancia posible de los productos y servicios que se ofrecen en el mercado. Para lograr esto no es necesario elevar costos ni hacer grandes inversiones en marketing, sino que la mejor opción que tienen las empresas es la reducción de costos en los procesos de producción. Los procesos de producción son etapas que están presentes en todo proyecto, y todo proyecto nos conduce a un producto o servicio para ofrecer de forma competitiva en un mercado.

Todo proyecto puede hacerse de distintas formas, cada una de las cuales puede estar diseñada específicamente para funcionar adecuadamente en nuestra empresa, sin embargo, ¿la forma en la que llevamos a cabo un proyecto es la adecuada? ¿Podría hacerse mejor? ¿cómo ahorrar costos de producción? Todas estas preguntas deberíamos tenerlas en cuenta antes de diseñar un plan de desarrollo para un proyecto ya que afectan los ingresos de la organización, es por esto que se crearon las metodologías de desarrollo para conducir la creación de un producto de una forma eficaz y eficiente que aumente el valor del producto para el cliente utilizando la menor cantidad de recursos e involucrándose en la toma de decisiones.

La metodología de desarrollo de software se describe como el conjunto de herramientas, técnicas, procedimientos y soporte documental para el diseño de sistemas, por lo que se considera como una tarea la cual se debe ejecutar en una serie de fases o etapas para obtener un programa que funcione de acuerdo a métodos establecidos en disciplinas de la ingeniería.

Hoy en día hay muchas metodologías que han surgido, las más nuevas como scrum o programación extrema que son metodologías ágiles, que consisten en periodos cortos de desarrollo constantes y una alta participación del cliente y también están las metodologías tradicionales como la metodología en cascada y kanban, las cuales consisten en un proceso lineal, no un ciclo como lo son las ágiles, además de que en las tradicionales no hay tanta participación del cliente.

En este escrito se hablará de lo que son las metodologías de desarrollo, su clasificación, algunos ejemplos y sus pasos o fases para aplicarlas.

Metodologías

Metodologías y gestión de proyectos en el desarrollo de software

La metodología, ​ hace referencia al conjunto de procedimientos racionales utilizados para alcanzar el objetivo o la gama de objetivos que rige una investigación científica, una exposición doctrinal​ o tareas que requieran habilidades, conocimientos o cuidados específicos. Desarrollo de Software significa construir programas; es el conjunto de procedimientos, técnicas y soporte documental utilizados para el diseño de sistemas de información. La metodología de desarrollo de software, en ingeniería de software, es un marco de trabajo usado para estructurar, planificar y controlar el proceso de desarrollo en sistemas de información.

Desarrollo de Software

Tipos de Metodología

Metodologías de Desarrollo de Software Tradicionales

Las metodologías de desarrollo de software tradicionales se caracterizan por definir total y rígidamente los requisitos al inicio de los proyectos de ingeniería de software. Los ciclos de desarrollo son poco flexibles y no permiten realizar cambios, al contrario que las metodologías ágiles; lo que ha propiciado el incremento en el uso de las segundas. La organización del trabajo en esta metodología es lineal, es decir, las etapas suceden una tras otra y no se puede empezar la siguiente sin terminar la anterior. Tampoco se puede volver hacia atrás una vez se ha cambiado de etapa

Metodologías de Desarrollo de Software Ágiles

Agile es un proceso que ayuda a los equipos a proporcionar respuestas rápidas a los cambios que se reciben sobre su proyecto. ¿Esto qué significa? Pues que crea oportunidades para evaluar la dirección de un proyecto durante el ciclo de desarrollo del mismo. Los equipos evalúan el proyecto en reuniones regulares llamadas sprints o iteraciones.

Este tipo de metodologías permite construir equipos de trabajo autosuficientes e independientes que se reúnen cada poco tiempo para poner en común las novedades. Poco a poco, se va construyendo y puliendo el producto final, a la vez que el cliente puede ir aportando nuevos requerimientos o correcciones, ya que puede comprobar cómo avanza el proyecto en tiempo real. 

Desarrollo de Software

Tipos de Metodología

Presentación en video

De click para ingresar al enlace de descarga

link

Metodologías de Desarrollo de Software Tradicionales

 

Waterfall (cascada)

Prototipo

Espiral

Incremental

Waterfall (cascada): metodología donde las etapas se organizan de arriba a abajo, de ahí el nombre. Se desarrollan diferentes funciones en etapas diferenciadas y obedeciendo un riguroso orden. Antes de cada etapa se debe revisar el producto para ver si está listo para pasar a la siguiente fase.

Fases Cascada:

    1. Requisitos del Software: es donde hacemos un análisis de las necesidades del cliente para determinar las características del software a desarrollar.
    2. Diseño: es donde describimos la estructura interna del software y las relaciones entre las entidades que lo componen. Esta etapa organiza el sistema en elementos que puedan elaborarse por separado, aprovechando las ventajas del desarrollo en equipo.
    3. Implementación: fase donde se programan los requisitos especificados haciendo uso de las estructuras de datos diseñadas en la fase anterior.
    4. Verificación: esta fase entra en acción cuando se termina la fase de implementación ya que esta fase verifica que todos los componentes del sistema funcionen correctamente de acuerdo a los requisitos especificados en la primera fase.
    5. Instalación y Mantenimiento: fase donde instalamos la aplicación en el sistema y comprobamos que funcione correctamente en el entorno donde será utilizada. Es entonces cuando la entregamos al cliente y el mantenimiento consiste en modificar el producto después de entregarlo para corregir errores o mejorar el rendimiento.

Prototipado: se basa en la construcción de un prototipo de software que se construye rápidamente para que los usuarios puedan probarlo y aportar feedback. Es un modelo iterativo que se basa en el método de prueba y error para comprender las especificidades del producto.

Etapas:

    1. Recolección y refinamiento de requisitos.
    2. Modelado, diseño rápido.
    3. Construcción del Prototipo.
    4. Desarrollo, evaluación del prototipo por el cliente.
    5. Refinamiento del prototipo
    6. Producto de Ingeniería

Espiral: es una combinación de los dos modelos anteriores, que añade el concepto de análisis de riesgo. Se divide en cuatro etapas: planificación, análisis de riesgo, desarrollo de prototipo y evaluación del cliente. Funciona de tal forma en que se van procesando las etapas en forma de espiral. Cuanto más cerca del centro se está, más avanzado está el proyecto.

Ciclos del Espiral:

    1. Objetivo y determinación alternativa: se determinan objetivos conjuntamente con el cliente, al igual que posibles alternativas y se especifican las condiciones marco (por ejemplo, sistemas operativos, entornos y lenguajes de programación).
    2. Análisis y evaluación de riesgos: se identifican y evalúan los riesgos potenciales y las alternativas existentes. Los riesgos son registrados, evaluados y luego reducidos utilizando prototipos, simulaciones y softwares de análisis.
    3. Desarrollo y prueba: los prototipos se amplían y se añaden funcionalidades. El código real es escrito, probado y migrado a un entorno de prueba varias veces hasta que el software pueda ser implementado en un entorno productivo.
    4. Planificación del siguiente ciclo: el siguiente ciclo se planifica al final de cada etapa. Si se producen errores, se buscan soluciones, y si una alternativa es una mejor solución, se prefiere en el siguiente ciclo.

Incremental: se va construyendo el producto final de manera progresiva. En cada etapa incremental se agrega una nueva funcionalidad, lo que permite ver resultados de una forma más rápida en comparación con el modelo en cascada. El software se puede empezar a utilizar incluso antes de que se complete totalmente y, en general, es mucho más flexible que las demás. La principal diferencia del modelo incremental con los modelos tradicionales es que las tareas están divididas en iteraciones, es decir, pequeños lapsos en los cuales se trabaja para conseguir objetivos específicos. Con los modelos tradicionales no pasaba esto; era necesario esperar hasta el final del proceso.

Características esenciales:

    • Los incrementos son pequeños.
    • Permite una fácil administración de las tareas en cada iteración.
    • La inversión se materializa a corto plazo.
    • Es un modelo propicio a cambios o modificaciones.
    • Se adapta a las necesidades que surjan.

Metodologías de Desarrollo de Software Ágiles

 

Scrum

Kanban

Lean

Programación extrema (XP)

Scrum: La metodología Scrum es un marco de trabajo o framework que se utiliza dentro de equipos que manejan proyectos complejos. Es decir, se trata de una metodología de trabajo ágil que tiene como finalidad la entrega de valor en períodos cortos de tiempo y para ello se basa en tres pilares: la transparencia, inspección y adaptación.

En esta metodología existen tres roles:

    1. Product Owner: persona que tiene asignado el proyecto, es básicamente el responsable (el que da la cara) del mismo. Se encarga de maximizar el valor del trabajo del equipo de desarrollo.
    2. Scrum Master: es el manager de Scrum, pero en ningún momento se le puede considerar un jefe. Líder servil que se encarga de eliminar impedimentos o inconvenientes que tenga el equipo dentro de un sprint.
    3. Development Team Member: Son los encargados de realizar las tareas priorizadas por el Product Owner. Es un equipo multifuncional y auto-organizado. Son los únicos que estiman las tareas del product backlog, sin dejarse influenciar por nadie.

 

Kanban: Se define como un sistema de producción altamente efectivo y eficiente, ha contribuido a generar un panorama manufacturero óptimo y competitivo. Su objetivo es gestionar de manera general cómo se van completando las tareas. Kanban es una palabra japonesa que significa “tarjetas visuales”, donde Kan es “visual”, y Ban corresponde a “tarjeta”.

Pasos para configurar la estrategia Kanban:

    1. Definir el flujo de trabajo: crear un tablero accesible para todos los miembros del equipo donde cada columna indica el estado de las tareas.
    2. Visualizar las fases del ciclo de producción: dividir las tareas en pasos para agilizar el proceso de producción.
    3. Stop starting, Stop finishing: esto es priorizar el trabajo que está en curso en lugar de iniciar nuevas tareas.
    4. Control de Flujo: mantener a los trabajadores en un flujo de trabajo constante donde se realizan primero las tareas más importantes siguiendo una cola para no interrumpirlos en cada momento.

Programación extrema (XP): metodología basada en las relaciones interpersonales, que se consideran la clave del éxito. Su principal objetivo es crear un buen ambiente de trabajo en equipo y que haya un feedback constante del cliente. El trabajo se basa en 12 conceptos: diseño sencillo, testing, refactorización y codificación con estándares, propiedad colectiva del código, programación en parejas, integración continua, entregas semanales e integridad con el cliente, cliente in situ, entregas frecuentes y planificación.

Ciclo de vida XP:

    • Entender lo que el cliente necesita – Fase de Exploración
    • Estimar el esfuerzo – Fase de Planificación
    • Crear la solución – Fase de Iteraciones
    • Entregar el producto final al cliente – Fase de puesta en producción

 

Lean: está configurado para que pequeños equipos de desarrollo muy capacitados elaboren cualquier tarea en poco tiempo. Los activos más importantes son las personas y su compromiso, relegando así a un segundo plano el tiempo y los costes. El aprendizaje, las reacciones rápidas y potenciar el equipo son fundamentales. La idea principal de la filosofía Lean es aplicar un método sistemático consistente en eliminar los desperdicios, o lo que es lo mismo, el trabajo que no aporta valor al resultado final.

Su estrategia se fundamenta en tres bases:

    • Construir sólo lo necesario.
    • Eliminar todo aquello que no añade valor.
    • Parar si algo no va bien.

Principios de Lean:

    • Eliminar desperdicios/restos
    • Amplificar el aprendizaje
    • Tomar decisiones lo más tarde posible
    • Entregar lo antes posible
    • Potencial el equipo
    • Crear integridad
    • Visualizar todo el conjunto

HERRAMIENTAS

Herramientas que ayudan a las metodologías ágiles

Bibliografía

  1. (2017, 7 septiembre). Metodo Kanban: principios, características y ventajas. Apiumhub. https://apiumhub.com/es/tech-blog-barcelona/metodo-kanban-ventajas/

Abellán, E. (2020, 5 marzo). Scrum: qué es y cómo funciona esta metodología. We Are Marketing. https://www.wearemarketing.com/es/blog/metodologia-scrum-que-es-y-como-funciona.html

Beck. Beedle. Van. Bennekum. Cockburn. Cunningham. Fowler. James. Grenning. Highsmith. Hunt. Jeffries. Kern. Marick. C Robert. Martin. Mellor. Schwaber. Sutherland. Thomas. (2001). Manifiesto por el desarrollo ágil del software. https://agilemanifesto.org/iso/es/manifesto.html

Calero, W., & Perfil, V. T. M. (2010, 8 octubre). Modelo Incremental. Ingeniería de Software. http://ingenieraupoliana.blogspot.com/2010/10/modelo-incremental.html

Cevallos, K. (2015, 31 mayo). Metodología de Desarrollo Ágil: XP y Scrum. INGENIERÍA DEL SOFTWARE. https://ingsotfwarekarlacevallos.wordpress.com/2015/05/08/metodologia-de-desarrollo-agil-xp-y-scrum/

Construcción de prototipos – Metodologías de desarrollo de software. (s. f.). Google Sites. https://sites.google.com/site/metdlgsddesarrollodesoftware/5-construccion-de-prototipos

Domínguez, P. (2020, 2 junio). En qué consiste el modelo en cascada. OpenClassrooms. https://openclassrooms.com/en/courses/4309151-gestiona-tu-proyecto-de-desarrollo/4538221-en-que-consiste-el-modelo-en-cascada