Metodologías de Desarrollo (PDF)
Document Details
Uploaded by HardierAltoSaxophone7651
University of A Coruña
2024
Anxo Pérez & Javier Parapar
Tags
Summary
This document provides a contextualization of software development methodologies. It defines key terms such as methodology, methodology, and method. It also details different types of methodologies, including classic and agile methods, within the field of computer science.
Full Transcript
METODOLOXÍAS DE DESENVOLVEMENTO Contextualización Septiembre 2024 Anxo Pérez & Javier Parapar [email protected] Information Retrieval Lab Computer Science Department University of A Coruña Terminología Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.ir...
METODOLOXÍAS DE DESENVOLVEMENTO Contextualización Septiembre 2024 Anxo Pérez & Javier Parapar [email protected] Information Retrieval Lab Computer Science Department University of A Coruña Terminología Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 1 Terminología metodoloxía 1. f. Parte da lóxica que se ocupa do estudo dos métodos de investigación e da práctica das ciencias, así como dos principios en que estas se fundamentan Fonte: Real Academia Galega metodología (Do grego., método, y -logía). 1. f. Ciencia del método. 2. f. Conjunto de métodos que se siguen en una investigación científica o en una exposición doctrinal. Fonte: Real Academia Española ©Todos los derechos reservados Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 2 Terminología methodology 1: a body of methods, rules, and postulates employed by a discipline : a particular procedure or set of procedures 2: the analysis of the principles or procedures of inquiry in a particular field Fonte: Merriam Webster Dictionary ©2013 Merriam-Webster, Incorporated methodology the methods and principles used for doing a particular kind of work, especially scientific or academic research Fonte: Macmillan English Dictionary ©2007 A&C Black Publishers Ltd Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 3 Terminología método 1. m. Maneira de facer algo, razoando e seguindo unha orde 2. m. Conxunto de regras e exercicios para ensinar ou aprender a facer algo 3. m. Maneira particular de actuar ou de realizar algo, con relación a outras formas distintas de facelo Fonte: Real Academia Galega método (Del latin., methodus y este del griego, y -logía). 1. m. Modo de decir o hacer con orden. 2. m. Modo de obrar o proceder, hábito o costumbre que cada uno tiene y observa. 3. m. Obra que enseña los elementos de una ciencia o arte. Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 4 Fonte: Real Academia Española ©Todos los derechos reservados Terminología method 1. a procedure or process for attaining an object: as ◦ a (1) : a systematic procedure, technique, or mode of inquiry employed by or proper to a particular discipline or art (2) : a systematic plan followed in presenting material for instruction ◦ b (1) : a way, technique, or process of or for doing something (2) : a body of skills or techniques 2. a discipline that deals with the principles and techniques of scientific inquiry 3. ◦ a : orderly arrangement, development, or classification : plan ◦ b : the habitual practice of orderliness and regularity 4. capitalized : a dramatic technique by which an actor seeks to gain complete identification with the inner personality of the character being portrayed Fonte: Merriam Webster Dictionary ©2013 Merriam-Webster, Incorporated Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 5 Terminología proceso 2. Conxunto de etapas sucesivas que se producen nun fenómeno, nun procedemento industrial etc Fonte: Real Academia Galega proceso 3. m. Conjunto de las fases sucesivas de un fenómeno natural o de una operación artificial. Fonte: Real Academia Española ©Todos los derechos reservados process 2. b : a series of actions or operations conducing to an end; especially : a continuous operation or treatment especially in manufacture Fonte: Merriam Webster Dictionary ©2013 Merriam-Webster, Incorporated Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 6 Terminología Revisaremos de manera básica las metodologías clásicas. # Cascada, Espiral, Prototipado Rápido, etc... Entraremos en detalle en el estudio de 4 metodologías ágiles. # SCRUM # Programación Extrema (XP) # Kanban # Proceso Unificado Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 7 Terminología ¿Cómo estudiarlas? # Orígenes # Clasificación # Ciclo de vida # Artefactos # Roles # Prácticas # Valores # Errores y malentendidos # Adopción Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 8 Ingeniería del Software Aplicación sistemática de conocimientos “ técnicos y científicos, metodologías y expe- riencia al diseño, implementación, pruebas [, mantenimiento] y documentación de productos software IEEE ” Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 9 Metodología de Desarrollo Conjunto ordenado y bien estructurado que “ contempla todos, o algunos, de los siguientes tipos de elementos: planteamientos, filosofías, políticas, procesos, fases, etapas, iteraciones, procedimientos, reglas, técnicas, herramientas, documentación formación y que asegura a los desarrolladores la realización oportuna y en tiempo y forma de un software de calidad ade- ” cuado a las necesidades Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 10 Metodología de Desarrollo Una Metodología de Desarrollo software (tam- “ bién llamada Proceso de Desarrollo software) es una forma de dividir y organizar las dis- tintas fases o etapas del desarrollo del pro- ducto, así como la definición y estructuración de las actividades a realizar dentro de cada una de dichas etapas, con el objetivo de con- seguir una mejor planificación, ejecución y ” gestión del proyecto. Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 11 Procedimiento Definición y regulación del compor- “ tamiento con el objetivo de lograr una organización y ejecución eficiente de las actividades que posibilitan la resolución de una operación general, o trámite, para el logro ” de un objetivo concreto. Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 12 En otras palabras... # Un procedimiento es un conjunto detallado de pasos o instrucciones que deben seguirse para realizar una tarea o actividad. # Los procedimientos suelen ser prescriptivos y garantizan la repetibilidad y consistencia en la ejecución de una tarea o actividad. # Ejemplo: El procedimiento para realizar una copia de seguridad en un sistema de TI. El procedimiento sería el cómo: incluye pasos específicos como seleccionar los archivos, iniciar el software de backup y verificar la integridad de la copia. Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 13 Ejemplo de procedimiento # Procedimiento: Cierre de caja al final del día. # Pasos: ◦ ? ◦ ? ◦ ? ◦ ? Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 14 Ejemplo de procedimiento # Procedimiento: Cierre de caja al final del día. # Pasos: ◦ Contar el efectivo en la caja registradora. ◦ Comparar el total con los recibos emitidos. ◦ Registrar el balance en el sistema contable. ◦ Guardar el dinero en la caja fuerte. Pregunta: ¿Un procedimiento que seguís en la práctica? Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 15 Actividad Unidad compleja funcionalmente consis- “ tente en las que se dividen los procedimientos para facilitar la organización del trabajo, la asignación de los recursos y fijar la respons- ” abilidad sobre los resultados Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 16 En otras palabras... # Una actividad es una acción específica dentro de un procedimiento y/o proceso que contribuye al cumplimiento de un objetivo mayor. # Ejemplo: Dentro del proceso de desarrollo de software, la actividad de codificación es una acción concreta que contribuye a la creación del producto final. Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 17 Tarea “Unidad elemental” en las que se dividen las “ actividades, y que suelen ser efectuada por un agente concreto o actor singular ” Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 18 Tarea # Una tarea es una unidad de trabajo más pequeña que una actividad, generalmente asociada a una acción muy específica y concreta. # Ejemplo: Dentro de la actividad de codificación, una tarea podría ser escribir la función de inicio de sesión. Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 19 Ejemplos de Actividad y Tarea # Fantasy League Web: Nos encargan crear la funcionalidad dentro de la aplicación que permita a los usuarios gestionar su equipo de jugadores, incluyendo agregar, eliminar y actualizar jugadores. Ejemplo de actividades a realizar: # Actividad de pruebas # Actividad de diseño # Actividad de obtención de requisitos # Actividad de desarrollo Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 20 Actividad y Tarea # Fantasy League Web: Queremos crear la funcionalidad dentro de la aplicación que permita a los usuarios gestionar su equipo de jugadores, incluyendo agregar, eliminar y actualizar jugadores. Tareas dentro de la actividad de desarrollo: # Crear la interfaz de usuario para agregar jugadores al equipo. # Implementar la lógica de negocio para calcular el valor del jugador. # Conectar el sistema de gestión de jugadores con la base de datos. # Probar la funcionalidad de agregar y eliminar jugadores. # (...) Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 21 Actividad y Procedimiento # Procedimiento: Pasos detallados que explican cómo realizar algo, compuestos por una o varias actividades, asegurando que se siga un método estándar para garantizar la calidad y consistencia en el código. Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 22 Actividad y Procedimiento # Fantasy League Web: Queremos crear la funcionalidad dentro de la aplicación que permita a los usuarios gestionar su equipo de jugadores, incluyendo agregar, eliminar y actualizar jugadores. # Qué ejemplo de actividad recogería un procedimiento relacionado sobre la captura de requisitos?: Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 23 Actividad y Procedimiento # Fantasy League Web: Queremos crear la funcionalidad dentro de la aplicación que permita a los usuarios gestionar su equipo de jugadores, incluyendo agregar, eliminar y actualizar jugadores. # Ejemplo de actividad de obtención de requisitos: Definir los requisitos funcionales # Tareas? ◦ ? ◦ ? ◦ ? Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 24 Actividad y Procedimiento # Procedimiento: Definir los requisitos funcionales # Tareas? ◦ Recolección de Requisitos ◦ Análisis de Requisitos ◦ Documentación de los Requisitos Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 25 Actividad y Procedimiento # Tarea: Recolección de Requisitos. # Sub-Tareas? ◦ ? ◦ ? ◦ ? Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 26 Actividad y Procedimiento # Actividad: Recolección de Requisitos. # Sub-Tareas ◦ Reunir al equipo de producto. ◦ Entrevistar a los usuarios clave. ◦ Establecer una lista inicial de requisitos funcionales. Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 27 Proceso Trabajo realizado y que se espera de la ejecu- “ ción de uno o varios componentes del software, lógicamente relacionados ” Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 28 Diferencia entre Proceso y Procedimiento # Proceso: Es un conjunto de actividades interrelacionadas que se ejecutan para alcanzar un objetivo. Ejemplo: Proceso de contratación de empleados. # Procedimiento: ? Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 29 Diferencia entre Proceso y Procedimiento # Proceso: Es un conjunto de actividades interrelacionadas que se ejecutan para alcanzar un objetivo. Ejemplo: Proceso de contratación de empleados. # Procedimiento: Es una secuencia detallada de pasos dentro de un proceso. Ejemplo: Procedimiento para entrevistar a un candidato. # Un proceso es más amplio y engloba varios procedimientos y actividades, mientras que un procedimiento especifica cómo llevar a cabo una actividad o tarea particular. Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 30 Producto/Entregable Resultado software válido y utilizable de “ cada etapa, fase, iteración o ajuste, obtenido por la evolución continua o por versiones, de un proyecto desarrollado metódicamente para la construcción y desarrollo de sistemas y apli- ” caciones Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 31 Ciclo de vida del Desarrollo de Software Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 31 Systems Development Life Cycle (SDLC) # El SDLC es una serie de fases estructuradas a través de las cuales se construye y mantiene el software # Comienza con la idea inicial y termina cuando el software deja de utilizarse # Cada fase tiene objetivos claros y resulta en entregables tangibles que guían la siguiente etapa # (?) ¿Por qué es importante tener fases estructuradas en el desarrollo de software? Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 32 Fases del SDLC # Las fases clave del SDLC incluyen: ◦ Análisis de Requisitos: ¿Qué necesita el software hacer? ◦ Diseño: ¿Cómo vamos a construir el software? ◦ Implementación: Programar el software. ◦ Pruebas: Asegurarse de que todo funcione correctamente. ◦ Producción y Mantenimiento: Entrega y mantenimiento continuo del software. (Liga fantasy): Pensad en la gestión de jugadores. ¿Qué pasos del SDLC serían necesarios para desarrollar esta funcionalidad? Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 33 Objetivos de Cada Fase # Cada fase tiene como objetivo: ◦ Definir claramente los pasos a seguir ◦ Generar un entregable concreto al finalizar ◦ Preparar el terreno para la siguiente fase del ciclo Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 34 Iteración en el SDLC: Desarrollo Ágil # En lugar de seguir un SDLC lineal (como en Cascada), el desarrollo ágil implementa fases iterativas, donde se entregan pequeñas versiones del software en ciclos cortos. Pregunta: ¿Qué ventajas tendría desarrollar la liga fantasy usando una metodología ágil? Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 35 Iteración en el SDLC: Desarrollo Ágil # Pregunta: ¿Qué ventajas tendría desarrollar la liga fantasy usando una metodología ágil? # Liga fantasy: En cada iteración, podríamos agregar una nueva funcionalidad, como la gestión de jugadores en la primera iteración y la asignación de puntos en la siguiente. Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 36 Ejemplos Análisis de Requisitos # Proyecto de Gestión Universitaria: ◦ Identificación de necesidades: Un sistema para gestionar matrículas y expedientes. ◦ Reuniones con stakeholders: (?). ◦ ¿Qué requisitos identificáis de primeras? (?) ◦ Resultados: (?). Diseño # Aplicación de e-commerce: ◦ Diseño de la arquitectura: (?). ◦ Algún diseño más? (?) ◦ Resultados: (?) Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 37 Ejemplos Análisis de Requisitos # Proyecto de Gestión Universitaria: ◦ Identificación de necesidades: Un sistema para gestionar matrículas y expedientes. ◦ Reuniones con stakeholders: Profesores, personal administrativo y estudiantes. ◦ Resultados: Documento de especificación de requisitos que incluye funcionalidades como inscripción de cursos, gestión de notas, y emisión de certificados. Diseño # Aplicación de e-commerce: ◦ Diseño de la arquitectura: Decisión de utilizar una arquitectura de microservicios. ◦ Creación de wireframes: Prototipos de la interfaz de usuario. ◦ Resultados: Especificaciones técnicas detalladas, diagramas UML y prototipos de interfaz. Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 38 Ejemplos Implementación # Desarrollo de un Sistema de Reservas Online: ◦ Programación: Desarrollo del backend con Node.js y el frontend con React. ◦ Integración: Conexión con bases de datos para manejar reservas y pagos en tiempo real. ◦ Resultados: Módulos funcionales del sistema que se integran para crear una solución operativa. Pruebas # Aplicación Móvil de Salud: ◦ Pruebas unitarias: Verificación de funciones individuales como el seguimiento de pasos y monitorización de la frecuencia cardíaca. ◦ Pruebas de integración: Asegurar que los módulos de la aplicación funcionen juntos sin errores. ◦ Resultados: Un informe de pruebas detallado con los bugs encontrados y las correcciones implementadas. Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 39 Ciclo de vida del Desarrollo de Software code-and-fix (codifica y arregla): escribir código, depurar (repetir). cascada : requisitos, diseño, implementación, pruebas y mantenimiento. espiral : objetivos, resolver riesgos, desarrollo y pruebas (repetir). prototipado : requisitos reducidos, desarrollar, evolucionar requisitos y código bajo demanda. desarrollo ágil : iterativo, adaptativo, mejora incremental en equipos auto-organizados. Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 40 ¿Por qué es importante entender el SDLC? # El SDLC no solo es una guía técnica, sino también una herramienta de gestión que ayuda a cumplir con las expectativas del cliente. # Entender el SDLC es fundamental para poder aplicar correctamente cualquier metodología de desarrollo. # Proporciona un marco de referencia para comparar y seleccionar la metodología más adecuada según el tipo de proyecto. Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 41 Metodologías vs. Ciclo de Vida del Desarrollo de Software (SDLC) # Metodologías de Desarrollo: ◦ Conjunto de prácticas, técnicas y herramientas específicas para ejecutar las fases del SDLC. ◦ Las metodologías guían cómo se implementa el SDLC en proyectos concretos. ◦ Ejemplos: Cascada, Espiral, SCRUM, XP. ◦ Objetivo: Ofrecer un enfoque particular para gestionar y ejecutar el proceso de desarrollo. Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 42 Metodologías vs. Ciclo de Vida del Desarrollo de Software (SDLC) # Diferencias Clave: Metodologías vs. SDLC ◦ El SDLC define qué fases se siguen en el desarrollo, mientras que las metodologías determinan el cómo se ejecutan esas fases. ◦ El SDLC es un marco conceptual; las metodologías son aplicaciones prácticas adaptadas a contextos específicos. ◦ Las metodologías pueden variar dentro del mismo SDLC, adaptándose a las necesidades del proyecto. Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 43 Alcance del SDLC y Stakeholders # El SDLC no solo guía el proceso técnico de desarrollo, sino que también afecta a todos los interesados en el proyecto. # Stakeholders clave: ◦ Clientes y Usuarios Finales: ◦ Definición de requisitos y expectativas. ◦ Interacción durante las pruebas y validación. ◦ Afectados por el rendimiento, calidad y funcionalidad del software. ◦ Desarrolladores: ◦ Responsables de implementar los requisitos según las fases del SDLC. ◦ Afectados por decisiones de diseño y planificación. ◦ Interacción directa con herramientas y metodologías elegidas. ◦ Gestores de Proyectos: ◦ Encargados de asegurar que el SDLC se siga de manera efectiva. ◦ Gestionan los recursos, cronogramas y cumplimiento de objetivos. ◦ Coordinan la comunicación entre stakeholders. Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 44 Alcance del SDLC y Stakeholders # Quiénes son los clientes en la Liga Fantasy? # Quiénes son los usuarios en la Liga Fantasy? # Quiénes afectan más al diseño de la aplicación? Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 45 Impacto del SDLC en Diferentes Áreas del Proyecto # Comunicación y Colaboración: ◦ Un SDLC bien definido facilita la comunicación clara entre todos los stakeholders. ◦ Cada fase tiene entregables que son puntos clave de interacción (ej. Documentos de requisitos, prototipos, resultados de pruebas). # Calidad y Satisfacción del Cliente: ◦ Un SDLC riguroso asegura que el producto final cumpla con los estándares de calidad y expectativas del cliente. ◦ La participación continua del cliente en el SDLC (especialmente en metodologías ágiles) mejora la satisfacción. Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 46 Impacto del SDLC en Diferentes Áreas del Proyecto # Gestión de Riesgos: ◦ Identificar y gestionar riesgos es una parte integral de cada fase del SDLC. ◦ Involucrar a todos los stakeholders en la identificación de riesgos reduce sorpresas y permite una mitigación temprana. # Adopción y Mantenimiento: ◦ Los usuarios finales y el equipo de mantenimiento son cruciales para la adopción exitosa del software. ◦ El SDLC incluye fases de transición y mantenimiento que aseguran que el software se mantenga relevante y funcional a lo largo del tiempo. Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 47 Impacto del SDLC en Diferentes Áreas del Proyecto # ¿Qué riesgos podría haber en el desarrollo de la liga fantasy? ◦ ? ◦ ? ◦ ? ◦ ? ◦ ? Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 48 Impacto del SDLC en Diferentes Áreas del Proyecto # ¿Qué riesgos podría haber en el desarrollo de la liga fantasy? ¿Cómo se podrían mitigar? ◦ Requisitos mal definidos ¿Probabilidad? ¿Impacto? ◦ Errores en el diseño ◦ Código de mala calidad ◦ Falta conocimiento arquitectura ◦ Dificultades con las tecnologías ◦ Enfermedades o emergencias personales ◦ Sobrecarga de trabajo # ¿Cómo se podrían mitigar? Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 49 Uso, Necesidades y Objetivos del SDLC Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 49 Uso # Estructurar el proyecto en subproyectos y etapas ◦ Divide y vencerás # Determinar y organizar el alcance de cada etapa y planificar sus trabajos de desarrollo # Definir los resultados y los tiempos # Establecer las condiciones, restricciones y circunstancias que han de tenerse en cuenta y aplicarse # Decidir las herramientas a emplear # Gestionar y controlar el proyecto y los recursos Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 50 Necesidades # Conseguir mejores aplicaciones, más adaptadas al dominio y a las necesidades del cliente, más robustas y flexibles, de mayor calidad y en tiempo # Mejorar la eficiencia en los trabajos de desarrollo # Estandarizar los procedimientos y procesos organizativos Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 51 Objetivos I # Investigar los requerimientos y redactar los requisitos de los productos software # Disponer de un método sistematizado para abordar el proceso de desarrollo y maximizar la eficiencia de los medios aplicados al mismo # Asegurar el cumplimiento de los plazos y costes (oportunidad y buena economía del proyecto) # Documentar adecuadamente el sistema, utilizando estándares para ello, y con el fin de garantizar su comprensión, su validez en producción, las actualizaciones necesarias que precise su evolu- ción y el fácil mantenimiento Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 52 Objetivos II # Permitir que los cambios necesarios, de cualquier origen, se de- terminen e identifiquen con prontitud, y sean planteados y es- tablecidos con todas sus implicaciones y sobre todos los compo- nentes afectados (control de cambios) # Proporcionar una implantación de los sistemas que sirva efi- cientemente a todas las personas que se relacionen con él (stake- holders): técnicos, usuarios, directivos, controllers, auditores, etc. Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 53 Ciclos de Vida y Metodologías Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 53 Metodología vs SDLC # Entendemos por Ciclo de Vida la indicación de las pautas del proceso de desarrollo de un proyecto para sus fases iniciales, in- termedias y finales ◦ lo que hay que obtener con el desarrollo y no el como # Entendemos por Metodología la regulación del orden y forma de conseguir los resultados, organizada como un conjunto de métodos ◦ como hay que obtener los productos parciales y llegar a la com- posición del producto final Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 54 Metodología vs SDLC # Una metodología puede aplicarse a distintos modelos de ciclos de vida # Los métodos evolucionaron iniciándose con la Programación Estructurada, continuando con el Diseño Estructurado, y termi- nando por el Análisis Estructurado. # Posteriormente se enlazaron estas fases, surgiendo métodos más avanzados. Para finalmente, surgir nuevas filosofías y metodologías: Orientación a Objetos, PUDS, Ágiles, XP, etc. Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 55 SDLC # La finalidad de un proyecto es obtener un producto, proceso o servicio # Las actividades que llevan a ello se agrupan en fases, y cada fase está relacionada con un objetivo que responde a unos requisi- tos y precisa recursos humanos, técnicos y de otros tipos # Las fases de un proyecto conforman su Ciclo de Vida, y per- miten pautar el control de los tiempos y el avance de los trabajos. # Las fases pueden subdividirse un función de optimizar el en- tendimiento de la evolución proyecto y sus expectativas Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 56 Evolución Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 56 Origen I # Las metodologías para el desarrollo del software surgen en la dé- cada de los 60, pero especialmente se se plantean a partir de la década de los 70 # Casi la totalidad de las metodologías estaban basadas en el análi- sis de las organizaciones y el estudio de la oportunidad de los desarrollos # Algunas metodologías fueron inducidas por los grandes fabri- cantes de ordenadores de la época # Casi todas las metodologías se orientaban al desarrollo de sis- temas y aplicaciones de gestión. (Informática de Gestión) # Las primeras metodologías presentaban propuestas top-down de desarrollo y se estructuraban por capas. Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 57 Origen II # Los conceptos y diagramas entre capas no se basaban en lengua- jes únicos, lo que dificultaba el transmisión de las especifica- ciones entre ellas y suponía pérdida de semántica # Cada capa buscaba profundizar en la estructuración. Se inician con la programación estructurada, continúan con el diseño y terminan en el análisis. Esto implica que se dispuso de normas metodológicas primero en las capas inferiores de la estructura Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 58 Metodologías Estructuradas # Las metodologías estructuradas surgen como respuesta a la cri- sis del software que reveló las deficiencias en los enfoques ad hoc de desarrollo. # Estas metodologías contemplaban distintas capas, que enfoca- ban: ◦ Aspectos previos de análisis, estudio de la organización y la opor- tunidad ◦ Aspectos de análisis previo y conceptual ◦ Aspectos de programación ◦ Aspectos de planificación de trabajos de explotación Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 59 La Crisis del Software # En la década de 1960, los proyectos de software comenzaron a fallar debido a la complejidad creciente y la falta de métodos es- tructurados. # Problemas comunes: ◦ Sobrecostes y retrasos significativos en los proyectos. ◦ Software entregado con fallos graves o que no cumplía con los requisitos. ◦ Dificultad en el mantenimiento y escalabilidad del software. # Esta crisis llevó a la búsqueda de enfoques más disciplinados y sistemáticos en el desarrollo de software, dando origen a las primeras metodologías formales. Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 60 Proyectos Fallidos # Proyecto de Defensa Aérea Semi-Automática (SAGE) - 1950s: ◦ Desarrollo complejo, sobrecostes masivos y múltiples problemas técnicos. ◦ Motivó la necesidad de una planificación más rigurosa en proyec- tos a gran escala. # Proyecto de Desarrollo del IBM OS/360 - 1960s: ◦ Uno de los proyectos de software más caros de su época, sufrió de problemas de integración y sobrecostes. ◦ Llevó a reconocer la importancia de la gestión de requisitos y el control de versiones. # Proyecto del Sistema de Control de Tráfico Aéreo (FAA) - 1980s: ◦ Retrasos de décadas y un costo de más de 3.000 millones de dólares. ◦ Ejemplificó la necesidad de enfoques iterativos y la mejora con- tinua. Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 61 Impacto de la Crisis del Software en las Metodologías # La crisis del software impulsó el desarrollo de metodologías que buscaban: ◦ Estandarizar el proceso de desarrollo y garantizar la calidad. ◦ Mejorar la planificación y gestión de proyectos para evitar sobre- costes y retrasos. ◦ Introducir fases claras en el desarrollo que pudieran ser contro- ladas y revisadas. # El modelo en cascada (1970s) y el modelo en espiral (1980s) fueron respuestas directas a estos desafíos. # La adopción de metodologías ágiles (1990s) fue una respuesta a la necesidad de mayor flexibilidad y adaptación a los cambios en requisitos. Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 62 Profesionales # Las metodologías hacen surgir nuevos perfiles profesionales, como son: ◦ Programadores de Aplicaciones ◦ Programadores de Sistemas ◦ Analistas Programadores ◦ Analistas de Aplicaciones (Análisis Orgánico) ◦ Analistas de Sistemas (Análisis Funcional) ◦ Analistas de Organización y Métodos ( Análisis Previo, Concep- tual, Estudio de Organización, Estudios de Oportunidad) Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 63 Profesionales # Complementariamente y debido al continuo crecimiento, y avance de la complejidad y de la tecnología surgen: ◦ Técnicos de Sistemas ◦ Administradores de Datos ◦ Planificadores de Trabajos ◦ Operadores y jefes de operación ◦ Departamentos de captura de datos Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 64 Estándares de modelado # En las primeras metodologías estructuradas empezaron a surgir propuestas de estandarización de símbolos y diagramas: ◦ Las plantillas de símbolos (IBM) ◦ Los diagramas de la programación lógica del método Warnier ◦ Los diagramas de procesos y procedimientos (heredados de la In- geniería Industrial) ◦ Los diagramas de bloques en el Análisis Funcional ◦ Los cuadernos de carga ◦ etc. Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 65 Almacenamiento # La evolución de los sistemas operativos, los gestores de ficheros y BBDD, las redes y comunicaciones, y los planteamientos de teleproceso, informática repartida e informática distribuida, re- orientaron las metodologías: ◦ Orientadas a Datos (por ejemplo MERISE) ◦ Orientadas a Procesos (por ejemplo SSADM) ◦ Jerarquizadas para el flujo (Por ejemplo el método HIPO de adop- tado por IBM). ◦ Basadas en el Flujo de Datos, y DFD,s , y surgen muchos diagra- mas y se amplía la simbología. Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 66 DFDs Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 67 Evolución del dominio # La evolución de los sistemas operativos y entornos, lleva al enfoque de plataformas, marcos e interfaces # La evolución de equipos y redes lleva al enfoque de la organi- zación de los sistemas y al control de los despliegues # La evolución de la arquitectura lleva al enfoque del establec- imiento de artefactos y a la inclusión de métodos para control de revisiones y versiones Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 68 Evolución del dominio # La combinación de la tecnología emergente y la globalización abre los horizontes de los servicios “en la nube” y a la evolu- ción metódica de las soluciones distribuidas y de la arquitectura cliente/servidor # Todos estos aspectos interactúan entre sí en la evolución general de los planteamientos metodológicos # La necesidad de considerar el legacy y tratar la integración de sitemas de datos es todavía un reto para cualquier metodología. Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 69 Evolución del dominio # La combinación de la tecnología emergente y la globalización abre los horizontes de los servicios “en la nube” y a la evolu- ción metódica de las soluciones distribuidas y de la arquitectura cliente/servidor # Todos estos aspectos interactúan entre sí en la evolución general de los planteamientos metodológicos # La necesidad de considerar el legacy y tratar la integración de sitemas de datos es todavía un reto para cualquier metodología. Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 70 Evolución Hacia Metodologías Ágiles # En la década de 1990, la industria del software reconoció la necesi- dad de un enfoque más flexible y adaptativo: ◦ Modelo en Espiral (Boehm, 1986): Introducción del concepto de iteración, permitiendo revisiones continuas y gestión de ries- gos. ◦ Desarrollo Rápido de Aplicaciones (RAD, 1990s): Enfoque en la rápida construcción de prototipos funcionales para una mejor retroalimentación. ◦ Agile Manifesto (2001): Formalización de principios para el de- sarrollo ágil, como la colaboración con el cliente y la adaptación continua. # Estas metodologías cambiaron el enfoque de un proceso rígido a uno más iterativo y centrado en el cliente, permitiendo una mejor respuesta a los cambios y necesidades del mercado. Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 71 Evolución de las Metodologías # La evolución de las metodologías de desarrollo de software ha sido impulsada por la necesidad de abordar la creciente comple- jidad y los desafíos de los proyectos de software. # Desde enfoques rígidos y estructurados hasta metodologías ágiles y flexibles, cada etapa en la evolución ha respondido a problemas específicos experimentados en la práctica. # Hoy en día, la elección de una metodología adecuada depende del contexto del proyecto, la naturaleza del software y las necesi- dades del cliente. # La lección clave es la importancia de la adaptación continua y la mejora del proceso de desarrollo para enfrentar nuevos desafíos en la industria del software. Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 72 Timeline # 1950s Code&Fix Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 73 Timeline # 1950s Code&Fix # 1960s Diseño-Codificación-Test-Mantenimiento Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 73 Timeline # 1950s Code&Fix # 1960s Diseño-Codificación-Test-Mantenimiento # 1970s Modelo en cascada [Royce] Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 73 Timeline # 1950s Code&Fix # 1960s Diseño-Codificación-Test-Mantenimiento # 1970s Modelo en cascada [Royce] # 1980s Modelo en espiral [Boehm] Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 73 Timeline # 1950s Code&Fix # 1960s Diseño-Codificación-Test-Mantenimiento # 1970s Modelo en cascada [Royce] # 1980s Modelo en espiral [Boehm] # 1990s Desarrollo Rápido de Aplicaciones (RAD) [James Martin] Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 73 Timeline # 1950s Code&Fix # 1960s Diseño-Codificación-Test-Mantenimiento # 1970s Modelo en cascada [Royce] # 1980s Modelo en espiral [Boehm] # 1990s Desarrollo Rápido de Aplicaciones (RAD) [James Martin] # 2000s Modelos Ágiles (Iterativo e Incremental) Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 73 Timeline # 1950s Code&Fix # 1960s Diseño-Codificación-Test-Mantenimiento # 1970s Modelo en cascada [Royce] # 1980s Modelo en espiral [Boehm] # 1990s Desarrollo Rápido de Aplicaciones (RAD) [James Martin] # 2000s Modelos Ágiles (Iterativo e Incremental) # 2010s Escalado de Modelos Ágiles Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 73 La Crisis del Software... ¿Algo del pasado? # A pesar de los avances en metodologías, un porcentaje significa- tivo de proyectos de software sigue fracasando. # Problemas comunes que persisten: ◦ Sobrecostes y retrasos en el cronograma. ◦ Incapacidad para cumplir con los requisitos originales. ◦ Complejidad en la integración de nuevas tecnologías y frame- works. ◦ Falta de adopción efectiva de las metodologías ágiles en algunos contextos. # La crisis del software se ha transformado, pero no ha desapare- cido. El desafío de desarrollar software de alta calidad y a tiempo sigue vigente. Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 74 Proyectos Fallidos Recientes # NHS National Programme for IT (2002-2011): ◦ Iniciativa del Reino Unido para modernizar los sistemas de TI del NHS. ◦ Cancelado después de gastar 12 mil millones de libras, sin cumplir con sus objetivos. ◦ Problemas clave: mala gestión de requisitos y falta de flexibilidad, según un informe del National Audit Office. ◦ NAO Report, 2011 Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 75 Proyectos Fallidos Recientes # La Caída de Microsoft (2024): ◦ Fallo Masivo de Software: Una actualización defectuosa en los servicios de Microsoft provocó interrupciones significativas en múltiples sistemas a nivel global. ◦ Aerolíneas Afectadas: Más de 15 aerolíneas a nivel mundial, incluyendo Delta, United, y Lufthansa, se vieron obligadas a can- celar más de 3,000 vuelos y retrasar otros 11,400 vuelos, afectando a cientos de miles de pasajeros. ◦ Interrupciones en Otros Sectores: Empresas de sectores clave, como la banca y los servicios en la nube, reportaron interrup- ciones significativas, afectando a millones de usuarios en todo el mundo y causando pérdidas operativas aún no cuantificadas. ◦ Coste Reputacional: Este incidente representó un golpe signi- ficativo a la reputación de Microsoft y CrowdStrike, afectando la confianza de clientes empresariales en sus soluciones tecnológi- cas. ◦ EuroNews, 2024 Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 76 Desafíos en la Adopción de Nuevas Tecnologías # La adopción de nuevas tecnologías y frameworks sigue siendo un reto para muchas organizaciones: ◦ Resistencia al Cambio: Los equipos a menudo se resisten a adoptar nuevas herramientas y métodos debido a la curva de apren- dizaje y el temor a lo desconocido. ◦ Problemas de Integración: Las nuevas tecnologías deben inte- grarse con sistemas heredados, lo que puede ser complejo y cos- toso. ◦ Falta de Formación: La falta de capacitación adecuada puede llevar a la mala implementación de nuevas tecnologías. # Según un informe de Gartner, la adopción de la nube en em- presas tradicionales ha sido lenta debido a preocupaciones sobre seguridad, privacidad y la complejidad de la migración. # Gartner Report, 2019 Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 77 Metodologías en Constante Evolución # Las metodologías de desarrollo de software siguen evolucionando para abordar los desafíos actuales: ◦ DevOps: Fusión de desarrollo y operaciones para mejorar la en- trega continua y la calidad del software. ◦ Métodos Ágiles Escalados (SAFe, LeSS): Adaptación de metodologías ágiles para su uso en grandes organizaciones. ◦ Métodos Basados en IA: Uso de inteligencia artificial para mejo- rar la gestión de proyectos, pruebas automatizadas y predicción de riesgos. # La evolución continua es clave para enfrentar los nuevos desafíos en el desarrollo de software, incluyendo la integración de tec- nologías emergentes y la gestión de sistemas complejos. Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 78 El Futuro de las Metodologías # A medida que la tecnología y las necesidades de los usuarios evolucionan, también lo hacen las metodologías de desarrollo de software. # La crisis del software sigue presente, pero con la evolución de las metodologías y la adopción de nuevas tecnologías, se están creando soluciones más robustas. # El enfoque debe estar en la flexibilidad, la mejora continua y la adaptación a los cambios tecnológicos. # El futuro de las metodologías se centra en la integración de tec- nologías avanzadas, como la inteligencia artificial y la autom- atización, para mejorar la eficiencia y calidad del desarrollo de software. Anxo Perez| Information Retrieval Lab | Computer Science Department | http://www.irlab.org 79 End of Part I