1. Metodologia Agilles
1.1. Principios Fundamentales
1.1.1. Colaboración con el Cliente:
1.1.1.1. nvolucrar al cliente y a los interesados durante todo el proceso de desarrollo para garantizar que el producto final satisfaga sus necesidades.
1.1.2. Respuesta al Cambio:
1.1.2.1. Dar prioridad a la capacidad de adaptarse a los cambios de requisitos, incluso en etapas avanzadas del desarrollo.
1.1.3. Entrega Continua de Software Funcional:
1.1.3.1. En lugar de esperar hasta el final del proyecto, se busca entregar software funcional de manera frecuente, normalmente en iteraciones cortas.
1.1.4. Trabajo en Equipo y Comunicación:
1.1.4.1. Fomentar la colaboración entre los equipos multidisciplinarios y la comunicación continua para asegurar un entendimiento común de los objetivos.
1.2. Metodologías Ágiles Comunes:
1.2.1. Scrum
1.2.1.1. Un marco de trabajo ágil que organiza el trabajo en ciclos cortos llamados sprints (normalmente de 2 a 4 semanas).
1.2.2. Kanban
1.2.2.1. Un enfoque visual que utiliza un tablero Kanban para gestionar el flujo de trabajo.
1.2.3. Extreme Programming (XP)
1.2.3.1. Se enfoca en la calidad del software y en la capacidad de respuesta a los requisitos cambiantes.
1.3. Ventajas de las Metodologías Ágiles:
1.3.1. Flexibilidad:
1.3.1.1. Capacidad para adaptarse a los cambios en los requisitos y las prioridades.
1.3.2. Colaboración:
1.3.2.1. Fomenta la comunicación constante entre los miembros del equipo y con el cliente.
1.3.3. Calidad del Producto:
1.3.3.1. A través de la integración continua y las pruebas constantes.
1.4. Herramientas Ágiles:
1.4.1. JIRA, Trello, Asana:
1.4.1.1. Herramientas para la gestión de proyectos ágiles y el seguimiento de tareas.
1.4.2. Tableros Kanban:
1.4.2.1. Para visualizar el flujo de trabajo y gestionar las tareas en progreso.
1.4.3. Herramientas de Integración Continua:
1.4.3.1. omo Jenkins, GitLab CI/CD para automatizar las pruebas y la integración del código.
2. Desarrollo orientada a objetos
2.1. Conceptos Básicos:
2.1.1. Clases y Objetos
2.1.1.1. Una clase es una plantilla que define las propiedades y comportamientos (métodos) de los objetos. Un objeto es una instancia de una clase.
2.1.2. Encapsulamiento
2.1.2.1. Consiste en agrupar los datos (atributos) y los métodos que operan sobre esos datos dentro de una clase, ocultando los detalles internos y exponiendo solo lo necesario a través de una interfaz pública.
2.1.3. Polimorfismo
2.1.3.1. Permite que una misma operación o método se comporte de manera diferente en distintas clases. Esto se logra mediante la sobrescritura de métodos y la implementación de interfaces.
2.2. 2. Fases de Desarrollo Orientado a Objetos:
2.2.1. Análisis Orientado a Objetos:
2.2.1.1. Identifican los objetos y las relaciones entre ellos a partir de los requisitos del sistema. Los casos de uso y los diagramas de clases de UML (Lenguaje Unificado de Modelado) son herramientas comunes en esta fase.
2.2.2. Diseño Orientado a Objetos:
2.2.2.1. Estructura del sistema utilizando los conceptos de clases, objetos, herencia, etc. Se crean diagramas de clases, diagramas de secuencia y diagramas de colaboración para diseñar la interacción entre los objetos.
2.2.3. Implementación:
2.2.3.1. La traducción del diseño a un lenguaje de programación orientado a objetos, como Java, C++, Python, etc. En esta fase se desarrollan las clases y se implementan sus métodos.
2.2.4. Pruebas Orientadas a Objetos:
2.2.4.1. Las pruebas verifican que los objetos interactúen correctamente y que las clases funcionen según lo esperado.
2.3. 5. Ventajas del Desarrollo Orientado a Objetos:
2.3.1. Modularidad:
2.3.1.1. Facilita la división del sistema en componentes modulares, lo que mejora la mantenibilidad.
2.3.2. Reutilización:
2.3.2.1. Las clases y los objetos pueden ser reutilizados en diferentes partes del sistema o en otros proyectos.
2.3.3. Extensibilidad
2.3.4. Escalabilidad
2.3.4.1. Facilita la creación de sistemas complejos y escalables.
2.4. Herramientas y Técnicas:
2.4.1. UML
2.4.1.1. Utilizado para visualizar, especificar y documentar los elementos de un sistema orientado a objetos
2.4.2. Patrones de Diseño:
2.4.2.1. Soluciones reutilizables a problemas comunes en el diseño de software orientado a objetos