Como mencioné hace un tiempo en otro artículo, estoy trabajando junto a Sergio Villagra en preparar una de las nuevas materias de la licenciatura. El nombre formal de la materia es Métodos y Modelos en la Ingeniería de Software 2 (95.21) aunque informalmente es posible que termine siendo MeMo2 o Ingeniería 2.
Hace un par de semanas cumplimos con la formalidad de presentar el programa analítico que obviamente esperamos ajustar a medida que corra el cuatrimestre. Comparto a continuación lo presentado:
- Semana 1: presentación del materia. El desarrollo de software: ingeniería vs. artesanía.
- Semana 2: Breve historia de los movimientos de calidad. Ciclo de vida del software (procesos típicos) Más allá del software: operaciones, servicios, gestión y gobierno.
- Semana 3: Proyectos, programas y portafolios. Por qué los proyectos de software son diferentes ¿De dónde vienen los proyectos?: ideas y oportunidades.
- Semana 4: Modos de contratación: fix-price vs. time&materials. Visual Story Mapping, Impact Mapping, Técnicas de particionamiento de User Stories. Planificación basada en control de alcance. Iniciativa #NoEstimates.
- Semana 5: Técnicas de priorización de requerimientos. Lean Startup.
- Semana 6: Conceptos de arquitectura. Atributos de calidad. Modelización, diseño e implementación de los atributos de calidad. Métodos de evaluación de la arquitectura. Walking Skeleton y otras técnicas de arquitectura emergente. Diagrama UML para presentar la arquitectura.
- Semana 7: Herramientas de soporte al proceso de desarrollo. Control de la configuración. Ambientes. Modelos de branching. Técnicas avanzadas de branching: branch-by-abstraction, feature-branching, feature toggling
- Semana 8: Especificación con ejemplos. Ciclo BDD+TDD. Domain Driven Design.Tipos de TDD. Estrategias de integración de aplicaciones. Definición de interfaces.Protocolo REST.
- Semana 9: Control de calidad. Tipos de pruebas. Pirámide de pruebas de Cohn. Cuadrantes de prueba de Marick. Automatización de pruebas.Arquitectura de prueba. Dobles de prueba.
- Semana 10: Pruebas de performance. Pruebas A/B
- Semana 11:Infraestructura como código. Tecnologías de virtualización y conteinerización. Plataformas cloud. X as a Service: IaaS, PaaS, SaaS.
- Semana 12: Integración y despliegue continuo. Pipeline de deployment. Estrategias de deployment: blue-green, canaries.
- Semana 13: Monitoreo, Auto-Scaling y Failover. Antifragile
- Semana 14: Evaluación e implantación de software de terceros.
- Semana 15: Presentación y puesta en común de trabajos prácticos finales
- Semana 16: Cierre y conclusiones