1.1 ¿Qué es la descomposición?
La descomposición es la técnica de dividir un problema complejo en partes más pequeñas, simples y
manejables. En lugar de intentar resolver el todo de una vez, se separa en subproblemas que pueden
abordarse de forma independiente.
Características clave:
- Jerarquización: Los subproblemas pueden descomponerse a su vez en partes aún más
simples.
- Independencia relativa: Cada componente puede analizarse y resolverse por
separado.
- Enfoque sistemático: Sigue una lógica ordenada para fragmentar el problema
original.
Ejemplo práctico:
Problema: Organizar un viaje familiar
Descomposición:
- Transporte (vuelos, coche, tren)
- Alojamiento (hotel, Airbnb, camping)
- Actividades (turismo, comidas, excursiones)
- Presupuesto (costos por categoría)
- Documentación (pasaportes, visados, seguros)
Beneficios en la vida real:
- Facilita resolver problemas grandes.
- Permite asignar tareas a diferentes personas o equipos.
- Facilita la detección de errores o cuellos de botella.
- Hace visible la complejidad real del problema.
Esta técnica, fundamental en programación y gestión de proyectos, es igualmente valiosa para
planificar proyectos personales, resolver conflictos laborales o tomar decisiones estratégicas.
1.2 Técnicas para la Descomposición
Hay varias técnicas que podemos aplicar para descomponer un problema.
a) Descomposición funcional
Dividir según las funciones o acciones que deben realizarse.
- Ejemplo: Preparar una cena → cocinar carne, preparar ensalada, poner la mesa, servir bebidas
- Cuándo usar: Problemas orientados a procesos o tareas
b) Descomposición estructural
Dividir según las partes físicas o componentes del sistema.
- Ejemplo: Arreglar un coche → motor, frenos, transmisión, sistema eléctrico
- Cuándo usar: Problemas con entidades físicas o componentes identificables
c) Descomposición secuencial
Dividir según pasos o fases temporales ordenadas.
- Ejemplo: Hacer una mudanza → empacar, cargar, transportar, descargar, desempacar
- Cuándo usar: Problemas con orden obligatorio o dependencia temporal
d) Descomposición jerárquica
Dividir en niveles de detalle (de lo general a lo específico).
- Ejemplo: Administrar un proyecto → fases → tareas → subtareas → actividades
- Cuándo usar: Problemas muy grandes con múltiples niveles de complejidad
e) Descomposición por responsabilidad
Dividir según quién o qué se encarga de cada parte.
- Ejemplo: Lanzar un producto → equipo marketing, equipo desarrollo, equipo ventas, equipo soporte
- Cuándo usar: Problemas que requieren especialización o trabajo colaborativo
f) Descomposición por criterios lógicos
Dividir según categorías o clasificaciones del dominio del problema.
- Ejemplo: Analizar gastos → fijos, variables, discrecionales, de emergencia
- Cuándo usar: Problemas con múltiples categorías naturales o claras
g) Descomposición top-down
Empezar con el problema general e irlo subdividiendo recursivamente hasta llegar a partes elementales.
- Ejemplo: Planificar boda → ceremonia → iglesia → flores → ramo de novia
- Cuándo usar: Cuando se conoce bien el problema desde una vista general
h) Descomposición bottom-up
Identificar primero las partes más pequeñas y luego agruparlas en componentes mayores.
- Ejemplo: Mejorar servicio → identificar 20 quejas concretas → agrupar en 5 áreas problemáticas
- Cuándo usar: Cuando se tienen muchos detalles pero falta la visión general
i) Descomposición por patrones
Dividir identificando subproblemas conocidos que ya tienen solución.
- Ejemplo: Construir casa → cimientos (patrón conocido), muros (patrón conocido), techo (patrón conocido)
- Cuándo usar: Problemas con partes estandarizadas o recurrentes
j) Descomposición modular
Dividir en módulos independientes con interfaces claras entre ellos.
- Ejemplo: Crear tienda online → módulo catálogo, módulo carrito, módulo pagos, módulo usuarios
- Cuándo usar: Problemas donde las partes pueden resolverse por separado
Resumen práctico:
| Técnica |
Pregunta guía |
| Funcional | ¿Qué acciones hay que hacer? |
| Estructural | ¿De qué partes se compone? |
| Secuencial | ¿En qué orden debe ocurrir? |
| Jerárquica | ¿Qué nivel de detalle necesito? |
| Responsabilidad | ¿Quién hace cada parte? |
Regla de oro: La mejor técnica de descomposición es la que hace que cada subproblema sea lo suficientemente pequeño como para poder resolverlo de forma directa y entendible.