1. Introducción a la Ingeniería de Software
1.1. Definición
1.1.1. Disciplina que aplica principios de ingeniería al diseño, desarrollo, mantenimiento, pruebas y evaluación de software.
1.2. Objetivo
1.2.1. Crear software de alta calidad, fiable, eficiente y que satisfaga las necesidades del usuario.
2. Ciclo de Vida del Desarrollo de Software (SDLC)
2.1. Modelos de SDLC
2.1.1. Cascada: Enfoque secuencial con fases claras.
2.1.1.1. Iterativo: Desarrollos repetidos y refinados.
2.1.1.1.1. Ágil: Entregas rápidas y flexibles, enfoque en la colaboración.
2.2. Fases del SDLC
2.2.1. Recolección de Requisitos: Identificación de necesidades y expectativas del cliente.
2.2.1.1. Análisis del Sistema: Desglose de los requisitos, especificaciones técnicas.
2.2.1.1.1. Diseño del Sistema: Arquitectura del sistema, diseño de interfaces y bases de datos.
3. Prácticas en Ingeniería de Software
3.1. Programación Estructurada: Modularidad, estructuras de control claras.
3.1.1. Desarrollo Orientado a Objetos (OOP): Uso de clases, objetos, herencia, polimorfismo.
3.1.1.1. Pruebas de Software: Unitarias, de integración, de sistema, de aceptación.
3.1.1.1.1. Control de Versiones: Uso de sistemas como Git para gestionar el código fuente.
4. Principios de la Ingeniería de Software
4.1. Abstracción: Simplificación de sistemas complejos.
4.1.1. Modularidad: Dividir el software en módulos independientes.
4.1.1.1. Encapsulamiento: Ocultar los detalles de implementación.
4.1.1.1.1. Cohesión y Acoplamiento: Alta cohesión dentro de módulos y bajo acoplamiento entre ellos.
5. Prácticas de Gestión en Ingeniería de Software
5.1. Gestión de Proyectos: Planificación, seguimiento, y control de proyectos.
5.1.1. Gestión de la Calidad: Aseguramiento de que el software cumple con los estándares.
5.1.1.1. Gestión de Riesgos: Identificación y mitigación de riesgos en el desarrollo.
5.1.1.1.1. Gestión de Configuración: Control de versiones, cambios y documentación del software.
6. Tecnologías y Herramientas
6.1. Lenguajes de Programación: Java, C++, Python, etc.
6.1.1. Entornos de Desarrollo Integrado (IDE): Visual Studio, Eclipse, NetBeans.
6.1.1.1. Herramientas de Gestión de Proyectos: JIRA, Trello.
6.1.1.1.1. Herramientas de CI/CD: Jenkins, Travis CI.