Want to make creations as awesome as this one?

Transcript

PRESS START

Por:Kenzo Aizawa León Salazar 5BS

Metodologías para el desarrollo de Software

+INFO

+INFO

¿qUE son los software?

¿QUE SON LAS metodologias?

introduccion

Las que iniciaron todo, esenciales, basicas e importantes.

METODOLOGIACLASICAS

tipos

Cascada

Espiral

Incremental

Desarrollo basado en componentes

Evolutivo

Prototipos

+INFO

+INFO

Cascada

Ventajas y desventajas

+INFO

esquema

Caracteristicas

+INFO

dEFINICION

+INFO

+INFO

incremental

Ventajas y desventajas

+INFO

esquema

Caracteristicas

+INFO

dEFINICION

+INFO

+INFO

evolutivo

Ventajas y desventajas

+INFO

esquema

Caracteristicas

+INFO

dEFINICION

+INFO

+INFO

Espiral

Ventajas y desventajas

+INFO

esquema

Caracteristicas

+INFO

dEFINICION

+INFO

+INFO

Prototipos

Ventajas y desventajas

+INFO

esquema

Caracteristicas

+INFO

dEFINICION

+INFO

+INFO

Desarrollo basado en componentes

Ventajas y desventajas

+INFO

esquema

Caracteristicas

+INFO

dEFINICION

enfoques flexibles y adaptativos para el desarrollo de software, diseñadas para entregar valor al cliente de manera continua a través de la colaboración, la iteración rápida y la respuesta efectiva al cambio.

meTODOLOGIASagiles

tipos

SCRUM

CRYSTAL

XP

KANBAN

Scrum

dEFINICION

Caracte-risticas

esquema

ventajas ydesventajas

+ INFO

+ INFO

+ INFO

+ INFO

xp

dEFINICION

Caracte-risticas

esquema

ventajas ydesventajas

+ INFO

+ INFO

+ INFO

+ INFO

crystal

dEFINICION

Caracte-risticas

esquema

ventajas ydesventajas

+ INFO

+ INFO

+ INFO

+ INFO

kanban

dEFINICION

Caracte-risticas

esquema

ventajas ydesventajas

+ INFO

+ INFO

+ INFO

+ INFO

Estas ofrecen opciones variadas para manejar proyectos de desarrollo de software, cada una con sus propias fortalezas y desafíos, dependiendo del contexto.

Otras Filosofías

tipos

Ingeniería Web

otros

Ganar – Ganar

+INFO

+INFO

Ingeniería Web

ventajas y desventajas

+INFO

esquema

Caracteristicas

+INFO

dEFINICION

+INFO

+INFO

Ganar – Ganar

ventajas y desventajas

+INFO

esquema

Caracteristicas

+INFO

dEFINICION

+INFO

+INFO

Otras Metodologias

ventajas y desventajas

+INFO

esquema

Caracteristicas

+INFO

dEFINICION

Las metodologías de desarrollo de software, tanto clásicas como ágiles y especializadas, ofrecen una amplia gama de enfoques adaptados a diferentes necesidades y contextos de proyecto. Cada metodología presenta un conjunto único de características, ventajas y desafíos, lo que permite a los equipos de desarrollo elegir la que mejor se alinee con sus objetivos, recursos y el entorno en el que operan.

conclusion

Congratulations you complete the game!

¡GRACIAS por su atencion!

Pressman, Roger S. Software Engineering: A Practitioner's Approach. McGraw-Hill Education.los modelos de desarrollo de software, incluidas las metodologías mencionadas.Sommerville, Ian. Software Engineering. Pearson Education.Boehm, Barry W. A Spiral Model of Software Development and Enhancement. ACM SIGSOFT Software Engineering Notes.Kruchten, Philippe. The Rational Unified Process: An Introduction. Addison-Wesley.IEEE Software Engineering Standards. IEEE Computer Society.Schwaber, Ken y Sutherland, Jeff. The Scrum Guide. Scrum.org.Beck, Kent. Extreme Programming Explained: Embrace Change. Addison-Wesley.Cockburn, Alistair. Agile Software Development: The Cooperative Game. Addison-Wesley.Anderson, David J. Kanban: Successful Evolutionary Change for Your Technology Business. Blue Hole Press.Larman, Craig. Agile and Iterative Development: A Manager's Guide. Addison-Wesley.

Referencias

Ventajas:

  • Flexibilidad para adaptar el proyecto a medida que se desarrolla.
  • Menor riesgo debido a la entrega continua de versiones funcionales.
  • Los usuarios pueden empezar a usar el sistema antes de que esté completamente terminado.
Desventajas:
  • La planificación y gestión pueden ser más complejas.
  • Puede ser difícil asegurar la integración de todos los incrementos.
  • La calidad del producto final puede ser afectada si no se gestiona adecuadamente.

La metodología es la disciplina que estudia el conjunto de técnicas o métodos que se usan en las investigaciones científicas para alcanzar los objetivos planteados. Es una pieza fundamental para el estudio de las ciencias.

La Ingeniería Web es una disciplina que aplica principios y prácticas de ingeniería de software al desarrollo de aplicaciones y servicios web. Se enfoca en la creación de sistemas web eficientes, escalables y seguros.

Ventajas:

  • Alta flexibilidad para adaptarse a cambios en los requisitos.
  • Mejor alineación con las expectativas del usuario.
  • Reducción del riesgo mediante entregas incrementales.
Desventajas:
  • Puede requerir más tiempo y recursos.
  • El alcance del proyecto puede expandirse descontroladamente (scope creep).
  • Puede ser difícil predecir el resultado final desde el inicio.

  • Análisis de Requisitos: Se identifican y documentan los requisitos específicos para la aplicación web, incluyendo funcionalidad, usabilidad, y seguridad.
  • Diseño Web: Diseño de la arquitectura del sitio, interfaces de usuario, y experiencia del usuario (UX).
  • Desarrollo y Codificación: Implementación del diseño utilizando tecnologías web, desarrollo de front-end y back-end.
  • Pruebas y Verificación: Pruebas funcionales, de rendimiento, seguridad y usabilidad para asegurar que el sitio cumple con los requisitos.
  • Despliegue y Mantenimiento: Implementación en un entorno de producción, seguido de la monitorización y mantenimiento continuo para actualizar contenidos y mejorar la seguridad.
  • El desarrollo se realiza en pequeñas partes funcionales (incrementos).
  • Cada incremento es una versión parcialmente funcional del producto.
  • Los requisitos pueden evolucionar entre incrementos.

Ventajas:

  • Fácil de entender y gestionar debido a su enfoque estructurado.
  • Ideal para proyectos pequeños o con requisitos claros y estáticos.
  • Buena documentación y seguimiento del progreso.
Desventajas:
  • Rigidez: No es flexible ante cambios en los requisitos.
  • Problemas detectados tardíamente pueden ser costosos de corregir.
  • No adecuado para proyectos complejos o innovadores.

  • Requerimientos: Se recopilan y documentan todos los requisitos del sistema.
  • Análisis: Se analizan los requisitos para crear una especificación del sistema.
  • Diseño: Se desarrolla la arquitectura del sistema y se diseña en detalle. Implementación: Se codifica el sistema según el diseño especificado.
  • Pruebas: El sistema se prueba para identificar errores y asegurar su funcionamiento.
  • Despliegue: El sistema se entrega e implementa en el entorno del cliente.
  • Mantenimiento: Se realizan mejoras y correcciones después de la entrega.

La metodología evolutiva es un enfoque en el cual el desarrollo del sistema se realiza a través de una serie de versiones mejoradas y refinadas, basadas en la retroalimentación continua de los usuarios.

La metodología en cascada es un enfoque de desarrollo de software lineal y secuencial donde cada fase debe completarse antes de que comience la siguiente. Es uno de los modelos más antiguos y tradicionales.

  • El sistema evoluciona mediante iteraciones sucesivas.
  • La retroalimentación del usuario es crucial para refinar el sistema.
  • Se centra en la adaptabilidad y el desarrollo continuo.
  • Multidisciplinar: Integra aspectos de diseño, desarrollo, usabilidad, seguridad y rendimiento.
  • Enfoque en la experiencia del usuario: Gran importancia en la interfaz de usuario y la experiencia de navegación.
  • Uso intensivo de tecnologías web: HTML, CSS, JavaScript, frameworks, y servicios web.
  • Rapidez de desarrollo: Necesidad de adaptarse rápidamente a cambios y nuevas tecnologías.
  • Requerimientos: Se identifican los requisitos básicos para el primer incremento.
  • Diseño y Desarrollo: Se diseña y desarrolla el primer incremento del sistema.
  • Pruebas: Se prueba el incremento para asegurar su funcionalidad.
  • Entrega: Se entrega el incremento al usuario para retroalimentación.
  • Repetición: Se repiten las fases para los siguientes incrementos hasta completar el sistema.

Ventajas:

  • Altamente adaptable a las necesidades cambiantes del mercado y de los usuarios.
  • Facilita la integración con otras plataformas y servicios web.
  • Enfoque en la usabilidad y experiencia del usuario, lo que puede aumentar la satisfacción del usuario final.
Desventajas:
  • Puede ser complejo debido a la variedad de tecnologías y disciplinas involucradas.
  • Los requisitos de seguridad pueden ser difíciles de cumplir debido a las vulnerabilidades inherentes del entorno web.
  • La rápida evolución de las tecnologías web requiere una actualización constante de habilidades y herramientas.

  • Planificación: Se establece una visión inicial del sistema y un plan de desarrollo.
  • Desarrollo Iterativo: Se desarrolla una versión básica del sistema.
  • Retroalimentación: Se entrega la versión al usuario para recibir comentarios.
  • Revisión y Mejoras: Se revisa el sistema y se realizan mejoras basadas en la retroalimentación.
  • Iteración Continua: Se repiten las fases hasta que el sistema cumple con todos los requisitos.
  • Fases bien definidas y secuenciales.
  • No se permite retroceder a una fase anterior.
  • Documentación extensiva en cada fase.
  • Ideal para proyectos con requisitos bien definidos y estables.

La metodología incremental combina elementos de la metodología en cascada con la entrega incremental. El proyecto se divide en pequeños incrementos que se desarrollan y entregan de manera secuencial.

El software es un conjunto de reglas o programas que dan instrucciones a un ordenador para que realice tareas específicas. También se conoce como aplicaciones de software, paquetes de software, herramientas de software y programas de software.

Ventajas:

  • Excelente para proyectos grandes y complejos.
  • Gestión de riesgos integrada en el proceso.
  • Flexibilidad para cambiar y mejorar el sistema con cada iteración.
Desventajas:
  • Puede ser costoso y complicado de gestionar.
  • Requiere experiencia en la identificación y gestión de riesgos.
  • La duración del proyecto puede ser difícil de predecir.

La metodología en espiral es un modelo de desarrollo que combina la naturaleza iterativa del prototipado con aspectos del modelo en cascada. Se centra en la gestión de riesgos a través de ciclos repetitivos.

  • Ciclos repetitivos llamados "espirales", cada uno enfocado en la identificación y mitigación de riesgos.
  • Iteraciones que incluyen planificación, análisis de riesgos, desarrollo y evaluación.
  • Enfoque en la gestión de riesgos a lo largo del proyecto.
  • Determinación de Objetivos: Se identifican los objetivos del ciclo actual.
  • Identificación y Resolución de Riesgos: Se identifican los riesgos y se desarrollan estrategias para mitigarlos.
  • Desarrollo y Pruebas: Se desarrolla una versión del sistema y se realizan pruebas.
  • Planificación del Próximo Ciclo: Se revisan los resultados y se planifica el siguiente ciclo.
  • Creación rápida de prototipos que representan partes clave del sistema.
  • Enfoque en la retroalimentación del usuario para refinar el producto.
  • Ideal para sistemas con requisitos poco claros o inestables.

Ventajas:

  • Mejora la comunicación entre desarrolladores y usuarios.
  • Reduce el riesgo de desarrollar un producto que no cumpla con las expectativas del usuario.
  • Permite la exploración de soluciones innovadoras.
Desventajas:
  • Puede ser costoso y consumir mucho tiempo si se crean muchos prototipos.
  • La calidad del producto final puede verse comprometida si el prototipo se convierte en el sistema final sin la debida refinación.
  • Puede generar expectativas poco realistas en los usuarios.

La metodología de prototipos implica la creación de versiones preliminares del sistema (prototipos) para obtener retroalimentación temprana del usuario y mejorar el diseño antes de la implementación final.

  • Recolección de Requisitos: Se identifican los requisitos iniciales.
  • Diseño del Prototipo: Se desarrolla un prototipo basado en los requisitos iniciales.
  • Retroalimentación del Usuario: Se presenta el prototipo al usuario para obtener su retroalimentación.
  • Refinamiento del Prototipo: Se mejora el prototipo basado en la retroalimentación.
  • Desarrollo Final: Una vez satisfecho el usuario, se procede al desarrollo completo del sistema.

El desarrollo basado en componentes (CBD, por sus siglas en inglés) es un enfoque de desarrollo de software donde el sistema se construye mediante la integración de componentes reutilizables previamente desarrollados.

  • Enfoque en la reutilización de componentes existentes.
  • Reduce el tiempo de desarrollo y mejora la eficiencia.
  • Los componentes son módulos independientes que se pueden integrar fácilmente.

Ventajas:

  • Reducción significativa del tiempo de desarrollo.
  • Mejora la calidad del software mediante la reutilización de componentes probados.
  • Reducción de costos de desarrollo.
Desventajas:
  • Puede ser difícil encontrar componentes que se ajusten exactamente a los requisitos.
  • La integración de componentes puede ser compleja y propensa a errores.
  • Dependencia de la calidad de los componentes externos.

  • Identificación de Componentes: Se identifican los componentes reutilizables necesarios.
  • Adquisición y Adaptación: Se adquieren o desarrollan los componentes y se adaptan según las necesidades del proyecto.
  • Integración de Componentes: Se integran los componentes en un sistema coherente.
  • Pruebas e Implementación: Se prueban los componentes integrados y se implementa el sistema.

Scrum es una metodología ágil que se enfoca en la entrega incremental de productos mediante ciclos cortos y predecibles llamados sprints. Está orientada a equipos pequeños y autosuficientes que colaboran estrechamente.

  • Sprints: Períodos de trabajo cortos (1-4 semanas) donde se entrega un incremento del producto.
  • Roles definidos: Product Owner, Scrum Master y Equipo de Desarrollo.
  • Eventos clave: Daily Stand-ups, Sprint Planning, Sprint Review, Sprint Retrospective.
  • Artefactos: Product Backlog, Sprint Backlog, Incremento.
  • Sprint Planning: Se planifica el trabajo para el sprint, seleccionando elementos del Product Backlog.
  • Daily Scrum: Reuniones diarias de 15 minutos donde el equipo sincroniza su trabajo.
  • Desarrollo del Sprint: El equipo trabaja en los elementos seleccionados para completar el incremento.
  • Sprint Review: Al final del sprint, el equipo presenta lo que ha logrado al Product Owner y a otros interesados.
  • Sprint Retrospective: Reflexión sobre el sprint para identificar mejoras en el proceso.

Ventajas:

  • Alta flexibilidad y capacidad de adaptación al cambio.
  • Entrega continua de valor al cliente.
  • Mejora continua mediante retrospección y ajuste.
Desventajas:
  • Puede ser difícil de implementar en equipos grandes o distribuidos. Requiere un fuerte compromiso y disciplina del equipo.
  • Puede haber problemas si los roles no están claramente definidos.

Ventajas:

  • Altamente adaptable a diferentes contextos y equipos.
  • Promueve la comunicación efectiva y la colaboración.
  • Fomenta la entrega rápida y continua de software.
Desventajas:
  • La flexibilidad puede generar falta de estructura en algunos equipos.
  • Puede ser difícil de escalar en proyectos grandes.
  • Requiere un equipo experimentado para adaptarse correctamente.

  • Flexibilidad: La metodología se adapta según el tamaño del equipo y la criticidad del sistema.
  • Enfoque en la comunicación: Promueve la interacción directa entre los miembros del equipo.
  • Documentación mínima: Solo lo necesario para avanzar en el proyecto.

Crystal es una familia de metodologías ágiles que se adapta a los diferentes tamaños de equipo y criticidad del proyecto. Cada "color" de Crystal (Clear, Yellow, Orange, Red) corresponde a un tipo de proyecto específico.

  • Inicialización: Se establece la visión del proyecto y se identifican las necesidades de comunicación y herramientas.
  • Ciclos de Entrega: Se trabaja en ciclos cortos con entregas frecuentes, adaptando las prácticas según el contexto del proyecto.
  • Reflexión y Mejora: Después de cada ciclo, se reflexiona sobre lo aprendido y se ajusta el enfoque según sea necesario.

Extreme Programming (XP) es una metodología ágil que se enfoca en mejorar la calidad del software y la capacidad de respuesta a los cambios mediante la adopción de prácticas de desarrollo de software intensivas y repetitivas.

Ventajas:

  • Alta calidad del código debido a prácticas como la programación en parejas y las pruebas continuas.
  • Rápida respuesta a los cambios debido a la simplicidad en el diseño y las entregas frecuentes.
  • Mejora continua y feedback constante.
Desventajas:
  • Puede ser intensivo y estresante para los desarrolladores.
  • Requiere un alto nivel de disciplina para seguir todas las prácticas.
  • No es adecuado para todos los tipos de proyectos o equipos.

  • Planeación: Reuniones frecuentes con el cliente para definir los requisitos de las historias de usuario.
  • Diseño Simple: Crear el diseño más simple que funcione para cumplir con los requisitos.
  • Codificación: Desarrollo en parejas para garantizar alta calidad y colaboración.
  • Pruebas: Pruebas continuas a través de pruebas unitarias, de aceptación y de integración.
  • Integración Continua: Integración del código en el repositorio varias veces al día para evitar conflictos.
  • Desarrollo incremental: Entregas frecuentes y pequeñas.
  • Feedback constante: A través de pruebas continuas y revisiones de código.
  • Prácticas clave: Programación en parejas, pruebas unitarias continuas, integración continua, simplicidad en el diseño, y pequeñas entregas.

Kanban es una metodología ágil que se basa en la visualización del trabajo y la gestión del flujo de trabajo mediante un sistema de tarjetas y tableros. Se enfoca en la mejora continua y la eficiencia del proceso.

Ventajas:

  • Permite una gran visibilidad del estado del proyecto.
  • Flexible y adaptable a cambios en el flujo de trabajo.
  • Fomenta la mejora continua y la eficiencia en el equipo.
Desventajas:
  • Puede ser difícil de implementar en equipos que no están acostumbrados a la autogestión.
  • No ofrece una estructura formal para roles y responsabilidades.
  • Puede resultar en una sobrecarga de trabajo si no se gestionan bien los límites del WIP.

  • Visualización del trabajo: Uso de un tablero Kanban para mostrar el estado del trabajo.
  • Limitación del trabajo en progreso (WIP): Se limita el número de tareas en cada etapa del proceso.
  • Gestión del flujo: Enfoque en mantener un flujo de trabajo constante y sin interrupciones.
  • Mejora continua: Ajustes basados en la retroalimentación y análisis del flujo.
  • Visualización del trabajo: Uso de un tablero Kanban para mostrar el estado del trabajo.
  • Limitación del trabajo en progreso (WIP): Se limita el número de tareas en cada etapa del proceso.
  • Gestión del flujo: Enfoque en mantener un flujo de trabajo constante y sin interrupciones.
  • Mejora continua: Ajustes basados en la retroalimentación y análisis del flujo.

La metodología Ganar-Ganar (Win-Win) es un enfoque de desarrollo que busca garantizar que todas las partes interesadas (clientes, desarrolladores, usuarios, etc.) obtengan beneficios y alcancen sus objetivos. Se centra en la negociación y la colaboración para lograr acuerdos que satisfagan a todas las partes.

  • Identificación de Interesados y Objetivos: Se identifican todas las partes interesadas y se determinan sus objetivos y expectativas.
  • Negociación Inicial: Se negocian los objetivos y requisitos del proyecto para asegurar un acuerdo inicial que satisfaga a todas las partes.
  • Desarrollo Colaborativo: El desarrollo se lleva a cabo con una comunicación constante entre las partes para ajustar el proyecto según sea necesario.
  • Revisiones y Ajustes: Se realizan revisiones periódicas del progreso y se ajusta el plan para mantener el enfoque en un resultado ganar-ganar.
  • Entrega y Evaluación: El producto final se entrega y se evalúa para asegurar que cumple con los objetivos acordados.
  • Enfoque colaborativo: Todas las partes trabajan juntas para definir y lograr objetivos comunes.
  • Negociación constante: Se negocian continuamente los requisitos y soluciones para asegurar que todas las partes estén satisfechas.
  • Adaptación continua: El proyecto se ajusta a medida que surgen nuevas necesidades o cambios en el entorno.

Ventajas:

  • Mejora la satisfacción de todas las partes interesadas.
  • Reduce el riesgo de conflictos y malentendidos durante el desarrollo.
  • Fomenta una comunicación y colaboración más efectiva.
Desventajas:
  • Puede ser complicado y consumir tiempo llegar a acuerdos que satisfagan a todas las partes.
  • Requiere habilidades de negociación y gestión de conflictos.
  • El enfoque en la negociación puede retrasar el desarrollo si no se gestiona adecuadamente.

Ventajas:

  • Alta flexibilidad para adaptarse a diferentes tipos de proyectos y equipos.
  • Permite aprovechar lo mejor de varias metodologías según el contexto.
  • Puede mejorar la eficiencia y efectividad del desarrollo al personalizar el enfoque.
Desventajas:
  • La creación de una metodología híbrida puede ser compleja y requiere experiencia.
  • Si no se gestiona bien, puede generar inconsistencias en los procesos y en la calidad del producto.
  • Puede ser difícil de escalar en proyectos grandes o en equipos distribuidos.

  • Selección de Metodologías: Se eligen elementos de varias metodologías existentes que sean más relevantes para el proyecto.
  • Planificación Personalizada: Se crea un plan de proyecto que integra las diferentes metodologías seleccionadas.
  • Desarrollo Iterativo: Se implementa el proyecto utilizando las prácticas elegidas, adaptando el enfoque según el progreso y los resultados obtenidos.
  • Monitoreo y Adaptación: Se monitorea el progreso y se hacen ajustes según sea necesario para mantener el proyecto en el camino correcto.
  • Evaluación Final: Se revisa el proyecto para evaluar la efectividad de la metodología híbrida utilizada y aprender lecciones para futuros proyectos.

Este apartado incluye metodologías personalizadas o híbridas que combinan elementos de diferentes enfoques de desarrollo para adaptarse a necesidades específicas de proyectos o equipos. Estas metodologías pueden ser creadas para abordar situaciones únicas o aprovechar los puntos fuertes de varios modelos.

  • Híbrido: Combinan elementos de metodologías ágiles, clásicas, y otras especializadas.
  • Adaptabilidad: Se personalizan según las necesidades específicas del proyecto.
  • Enfoque en el contexto: Elige las prácticas y procesos más adecuados según el contexto del proyecto.