Skip to content

La multiplicidad del diseño de software

Andres Angarita edited this page Dec 28, 2019 · 1 revision

La ingeniería de software, tal vez más que cualquier otra disciplina de ingeniería, exhibe una rica multiplicidad: puede hacer lo mismo de muchas maneras correctas, y hay infinitos matices entre lo correcto y lo incorrecto. Cada camino abre un nuevo mundo. Una vez que elige una solución, aparece una gran cantidad de posibles variantes, en todos los niveles, desde el nivel de la arquitectura del sistema hasta el más mínimo detalle de codificación. El diseño de un sistema de software es una elección de soluciones de un espacio de solución combinatoria.

Pensemos en un artefacto de diseño simple de bajo nivel: un puntero inteligente. Una clase de puntero inteligente puede ser de un solo subproceso o multiproceso, puede usar varias estrategias de propiedad, puede hacer varias compensaciones entre seguridad y velocidad, y puede no admitir conversiones automáticas al tipo de puntero sin procesar el subyacente. Todas las características se pueden combinar libremente y, por lo general, exactamente una solución es la más adecuada para un área determinada de su aplicación.