Boost Academy
FormaciónEvaluacionesPerfil
Volver
  • En directo

Swift — Avanzado

10h de clase en directo·HACK A BOSS·Español

Skills que aprenderás

  • Swift

Convocatorias

Necesitas un plan activo

Para acceder a los cursos en directo necesitas un plan activo. Estamos trabajando para que los planes estén disponibles pronto — ¡mantente atento!

No hay convocatorias abiertas ahora mismo, pero no te pierdas la oportunidad: guarda este curso y te avisamos en cuanto se abra una convocatoria.

Descripción

Objetivos

Temario

Requisitos técnicos

Conocimientos previos

Detalles de la convocatoria

Recursos

No hay recursos disponibles todavía para esta convocatoria

Dirigido a desarrolladores iOS con experiencia sólida en Swift y UIKit/SwiftUI que buscan dominar las decisiones de ingeniería que diferencian una aplicación mantenible y de alto rendimiento de una codebase frágil. A lo largo de las 10 horas del curso, los participantes abordarán el diseño de arquitecturas modulares a escala, el modelado de concurrencia segura con Swift Concurrency, la optimización del rendimiento de rendering y del tiempo de arranque, la gestión rigurosa de memoria, el diseño de capas de resiliencia frente a fallos de red, la evaluación crítica de suites de tests y la automatización de pipelines de CI/CD; todo ello respaldado por métricas medibles obtenidas en Xcode Instruments, Energy Organizer y herramientas de análisis estático, de forma que al finalizar el participante será capaz de entregar software iOS de producción con criterios de calidad, rendimiento y operabilidad justificados y verificables.

  1. Comprender los principios de las arquitecturas modulares para iOS (TCA, Clean Architecture, VIPER) y los trade-offs que determinan su elección según el tamaño y ciclo de vida del proyecto.
  2. Comprender el modelo de memoria de Swift, las causas estructurales de los retain cycles y los mecanismos de aislamiento que ofrece Swift Concurrency para prevenir condiciones de carrera.
  3. Aplicar Xcode Instruments y el Memory Graph Debugger para identificar, corregir y verificar problemas de rendimiento de rendering, tiempo de arranque en frío y fugas de memoria en una codebase real.
  4. Diseñar un modelo de concurrencia seguro con actors, structured concurrency y task groups, documentando las invariantes de aislamiento y anticipando escenarios de fallo.
  5. Construir una capa de resiliencia de red con retry exponencial, circuit breaker y caché offline, validándola mediante tests de inyección de fallos.
  6. Evaluar la calidad de una suite de tests mediante métricas de cobertura de ramas y mutation score, y proponer un plan de mejora justificado.
  7. Integrar el conocimiento anterior en un pipeline de CI/CD completo con Fastlane que automatice build, firma y distribución de forma desatendida y reproducible.

Bloque 1 — Arquitectura modular a escala. Se estudian los patrones TCA, Clean Architecture y VIPER desde una perspectiva comparativa, analizando sus invariantes estructurales, las fronteras de módulo que imponen y el coste de mantenimiento a medida que la aplicación crece. Los participantes producen un documento de decisión arquitectónica (ADR) que justifica la elección de patrón para un caso de uso concreto, evaluando alternativas descartadas.

Bloque 2 — Concurrencia segura con Swift Concurrency. Se profundiza en el modelo de actores, la structured concurrency y los task groups como herramientas para eliminar condiciones de carrera por diseño. Se estudian las invariantes de aislamiento, la interoperabilidad con código GCD legado y las estrategias de cancelación cooperativa, con especial atención a la documentación de contratos de concurrencia en código de producción.

Bloque 3 — Rendimiento de rendering y tiempo de arranque. Se trabaja con el Time Profiler, el Hang Detection y el launch profiler de Xcode Instruments para localizar hitches en vistas SwiftUI y UIKit y cuellos de botella en el arranque en frío. Se aplican técnicas de lazy loading, diferimiento de trabajo en didFinishLaunching y reducción de dependencias estáticas, verificando las mejoras con capturas comparativas de métricas antes y después.

Bloque 4 — Gestión de memoria y consumo energético. Se utilizan el Memory Graph Debugger y el Energy Organizer para auditar codebases reales, identificar retain cycles y ciclos de referencia cruzados, y medir el consumo de CPU en background. Se proponen y aplican correcciones verificables en un entorno de staging, cerrando el ciclo con una revisión de las métricas resultantes.

Bloque 5 — Resiliencia de red, calidad de tests y CI/CD. Se diseña una capa de resiliencia que integra retry con back-off exponencial, circuit breaker y caché offline, validada mediante tests de inyección de fallos. A continuación, se evalúa la suite de tests existente con métricas de cobertura de ramas y mutation score, generando un plan de mejora priorizado. El bloque cierra con la automatización del pipeline completo en Fastlane —build, test, firma con certificados y distribución a TestFlight o un canal interno— garantizando ejecución desatendida y reproducible en un servicio de CI.

  • macOS Ventura 13.5 o superior (se recomienda Sonoma 14).
  • Xcode 15 o superior con simuladores iOS 17 instalados.
  • Cuenta de Apple Developer (puede ser gratuita para la mayor parte de los ejercicios; se requiere membresía de pago para los ejercicios de firma y distribución).
  • Ruby 3.x y Fastlane 2.x instalados y configurables en el entorno local.
  • Acceso a un servicio de CI (GitHub Actions, Bitrise o equivalente) con permisos suficientes para crear y ejecutar workflows.
  • Git 2.x y familiaridad con flujos de trabajo basados en ramas (GitFlow o trunk-based development).
  • Dispositivo físico iOS recomendado para la medición de métricas energéticas y de rendimiento en condiciones reales.

Los participantes deben haber completado SWI02 o demostrar un nivel equivalente que incluya: manejo fluido del sistema de tipos avanzado de Swift (genéricos, protocolos con associatedtype, opaque types), experiencia con patrones de arquitectura reactiva (Combine o equivalente), desarrollo de vistas con SwiftUI y UIKit, escritura de tests unitarios con XCTest y conocimiento funcional de la gestión de dependencias con Swift Package Manager. Sin estos fundamentos, los ejercicios prácticos del curso no serán abordables en el tiempo previsto.