Boost Academy
FormaciónEvaluacionesPerfil
Volver
  • En directo

SOLID — Avanzado

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

Skills que aprenderás

  • SOLID

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

Curso dirigido a desarrolladores con dominio consolidado de los cinco principios SOLID que necesitan aplicarlos de forma crítica e integrada en contextos reales de complejidad media-alta. A lo largo de las 8 horas, el participante trabajará sobre bases de código existentes y diseños nuevos para evaluar el cumplimiento de los principios con impacto medible, refactorizar violaciones simultáneas documentando trade-offs, anticipar puntos de ruptura ante cambios previsibles y automatizar la vigilancia del diseño en un pipeline CI/CD. Al finalizar, el participante será capaz de emitir juicios técnicos razonados sobre diseños propios y ajenos, proponer estrategias que minimicen la deuda técnica acumulada y dejar evidencia trazable de cada decisión arquitectónica.

  1. Identificar qué principios SOLID se cumplen o vulneran en una base de código de tamaño medio, relacionando cada hallazgo con su impacto concreto en la mantenibilidad del sistema.
  2. Explicar las tensiones que surgen entre los principios —especialmente entre responsabilidad única y abierto/cerrado— en sistemas sometidos a evolución continua, y describir estrategias de diseño que las resuelvan minimizando la deuda técnica.
  3. Refactorizar un diseño que viola simultáneamente al menos tres principios SOLID, documentando cada decisión con su trade-off explícito y la justificación de priorización adoptada.
  4. Optimizar la jerarquía de abstracciones de un sistema existente aplicando los principios de segregación de interfaces e inversión de dependencias, contrastando métricas de acoplamiento aferente y eferente antes y después de la intervención.
  5. Anticipar los puntos de ruptura de un diseño ante requisitos de cambio previsibles, argumentando qué principio falla primero y por qué.
  6. Arquitecturar un módulo nuevo desde cero integrando los cinco principios de forma coherente, dejando evidencia de las tensiones detectadas y de cómo fueron resueltas.
  7. Automatizar la detección de violaciones a los principios SOLID configurando reglas de análisis estático en un pipeline CI/CD y verificando su efectividad sobre el código trabajado en el curso.
  8. Emitir un juicio técnico razonado sobre una propuesta de diseño ajena, aplicando criterios SOLID explícitos y planteando alternativas concretas ante los problemas detectados.

Bloque 1 — Diagnóstico crítico de bases de código El punto de partida es aprender a leer código con criterio analítico. Se estudia cómo inspeccionar una base de código de tamaño medio para determinar qué principios SOLID se respetan, cuáles se vulneran y con qué consecuencia medible sobre la mantenibilidad. Se introducen métricas de acoplamiento aferente y eferente como lenguaje común para cuantificar el estado del diseño antes de cualquier intervención. Al final del bloque el participante dispone de un protocolo de auditoría propio que aplicará a lo largo del curso.

Bloque 2 — Tensiones entre principios en sistemas en evolución Los principios no operan de forma aislada: en sistemas vivos aparecen fricciones, especialmente entre la responsabilidad única y la apertura a la extensión. Este bloque examina esas tensiones de manera sistemática, modela escenarios de cambio previsible y propone estrategias de diseño que permitan avanzar sin acumular deuda técnica. Se introduce también el análisis de puntos de ruptura: dado un conjunto de requisitos futuros plausibles, ¿qué principio cede primero y por qué?

Bloque 3 — Refactorización con trade-offs documentados La refactorización avanzada requiere algo más que identificar el problema: exige priorizar, decidir y justificar. Se trabaja sobre un caso real con violaciones simultáneas de al menos tres principios, donde el participante debe proponer un plan de refactorización, estimar el coste de cada decisión y argumentar el orden de actuación. La documentación de trade-offs es parte obligatoria del entregable, reproduciendo la conversación técnica que ocurriría en una revisión de código en equipo.

Bloque 4 — Optimización de jerarquías de abstracción con ISP y DIP Con los principios de segregación de interfaces e inversión de dependencias como protagonistas, este bloque aborda la reorganización de jerarquías de abstracciones en sistemas existentes. Se parte de métricas de acoplamiento tomadas al inicio, se aplica la refactorización y se comparan los indicadores al final para validar que la intervención ha reducido efectivamente el acoplamiento. El bloque enfatiza la diferencia entre aplicar un principio en el papel y verificar su efecto en números reales.

Bloque 5 — Diseño desde cero con integración de los cinco principios Una vez ejercitado el diagnóstico y la corrección, se practica la construcción. El participante arquitectura un módulo nuevo aplicando los cinco principios de forma simultánea y coherente. El foco no está solo en el resultado sino en la trazabilidad del proceso: qué tensiones surgieron, qué decisiones se tomaron y cómo se resolvieron los conflictos. El artefacto final incluye tanto el código como la narrativa de diseño que lo acompaña.

Bloque 6 — Automatización y revisión entre pares El curso cierra con dos capacidades orientadas a sostenibilidad del diseño en equipo. Por un lado, se configura un conjunto de reglas de análisis estático integradas en un pipeline CI/CD para detectar violaciones de forma continua, discutiendo qué se puede automatizar y qué sigue requiriendo criterio humano. Por otro, se practica la revisión técnica de propuestas de diseño ajenas: cómo estructurar un juicio razonado con criterios SOLID explícitos y cómo formular alternativas concretas que sean accionables para quien recibe la revisión.

  • Entorno de desarrollo local con el lenguaje de programación orientado a objetos de preferencia configurado y funcional.
  • Acceso a una herramienta de análisis estático compatible con dicho lenguaje (por ejemplo, SonarQube, ESLint con plugins de arquitectura, Checkstyle, Pylint u equivalente) con permisos para crear y modificar reglas personalizadas.
  • Acceso a un pipeline CI/CD (GitHub Actions, GitLab CI, Jenkins u otro) con permisos suficientes para añadir pasos de análisis estático y consultar los resultados de ejecución.
  • Repositorio de control de versiones (Git) con capacidad para crear ramas y abrir solicitudes de revisión, ya que parte del trabajo práctico se entrega en forma de pull request comentado.
  • Los casos de código utilizados en los ejercicios se distribuyen como repositorios de ejemplo; se requiere conexión a internet para clonarlos al inicio del curso.

El participante debe haber completado el curso SOL02 o demostrar un dominio equivalente de los cinco principios SOLID a nivel intermedio: comprensión conceptual sólida de cada principio, capacidad para aplicarlos individualmente en ejercicios guiados y experiencia básica con refactorización orientada a diseño. Se asume también familiaridad con conceptos de orientación a objetos (herencia, polimorfismo, composición) y con al menos un lenguaje de programación orientado a objetos utilizado en el día a día. Es recomendable haber trabajado en un proyecto real con más de cinco clases para poder anclar los aprendizajes del curso en experiencia propia.