¿Cual es el problema que estoy resolviendo?

Durante el proceso de diseño de una arquitectura software, la principal pregunta que necesitas hacerte es la misma que titula este texto: ¿Cual es el problema que estoy resolviendo?. Esta afirmación tan sencilla es realmente poderosa, y no imaginas la cantidad de ocasiones que se obvia, causando estancamientos posteriores en nuestros desarrollos.

Un buen modo de evitarlo es dividiendo el problema en cuatro atributos principales:
  1. La forma. Define el problema, su entorno y su desencadenante. Es importante que definas igualmente, conjuntamente con tu cliente, que es lo que determinará que el problema está resuelto.
  2. Las soluciones. Describe todas las soluciones propuestas para el problema, y como se ajustan al entorno descrito anteriormente, las tecnologías disponibles, etcétera.
  3. El coste. No te estanques en el coste económico o la cantidad de tiempo necesario para extinguir el problema. Una solución puede comprometer, por ejemplo, la escalabilidad de tu software, y este coste debe ser tenido en cuenta junto a los demás en el momento de decantarse por una de las posibles soluciones.
  4. Tiempo. No me refiero aquí al tiempo que tardarás en implementar la solución elegida, esto ya lo hemos sopesado en el punto anterior. Define como podría cambiar el problema en el futuro. Te aseguro que hacer esto trae a flote aspectos que, muy posiblemente, no se han tenido anteriormente en cuenta, y esto sin duda te ayudará a mejorar tu solución.