miércoles, 28 de noviembre de 2012

Arquitectura - removiendo las bases

Arquitectura - removiendo las bases

En muchas ocasiones, he visto o he estado en aplicaciones donde una modificación de los requisitos, te puede trastocar o simplemente no poder implementarse con la arquitectura con la que ha sido construida la aplicación.

Siempre que ha querido hacer una analogía entre la construcción de un edificio con la construcción software. Vamos a intentar hacer lo mismo para el caso de "remover la arquitectura por los requisitos de usuario".

Imaginemos que estamos desarrollando una aplicación 3d, donde el terreno 3d, se forma através de un fichero .jpg o .bmp donde el código de color es una altura. La arquitectura tiene encuenta este hecho y se construye la malla de del terreno, conforme al grid del .jpg. Es decir, internamente se trabajo con coordenadas del tipo grid [i][j]  para acceder a la altura. Y todo funciona a la perfección!!!

Hasta que el cliente llega y dice..."Vamos a trabajar con una empresa donde tiene archivos con curvas de nivel en vez de con .jpg. Entonces, la aplicación nos gustaría que importase y trabajase con archivos de curva de nivel".

Y va el ing. sw, o el desarrollador y se queda a cuadros. Y se queda por que sabe que tendrá que modificar toda la arquitectura de la aplicación, pero ¿cómo explicarlo?

Imaginemos que estamos construyendo un bloque (esto le paso a un arquitecto que realizo un diseño para un cliente. Eran un bloque de pisos en una pequeña ladera).

El arquitecto empezo por diseñar los pilares, los cuales sustentaran todo el peso y de hay subir pisos. Es decir, con los pilares hizo el esquelo del edificio, la arquitectura.
Cuando termino los planos, se los enseño al cliente:
- "bien..bien..pero...yo quería garaje.."
El arquitecto se quedo a cuadros también, claro esta. Y se quedo por que como el garaje va debajo de los pisos, tendría que haber una separación entre los pilares para crear las plazas de garaje, con lo cual, tendría que modificar la arquitectura de los pilares para encajar las plazas de garaje.



Aquí, en este ejemplo, se ve claramente como se modifica la arquitectura.
En el caso del software, la dependencia de que cada i,j tiene su altura, hizo que cuando este supuesto no es cierto, todo se cae a bajo, como un castillo de naipes.
Algo como, hallar el dato de altura más cercano a punto i,j podría haber sido una arquitectura más resistente los cambios de requisitos.

Como punto final, la diferencia entre el aquitecto del garaje y el arquitecto del terreno 3d, es que el primero, solo tuvo que hacer las modificaciones en un papel, el otro es sobre código, sobre algo ya construido.
Es como si el arquitecto del edificio, despues de haber consstruido los pilares, según la distrubición que le ha marco un programa de calculo de estructuras, llega el arquitecto y manda a los albañiles a mover los pilares para dejar espacio a las plazas de garaje. Da miedo, no?.

happy coding!


No hay comentarios:

Publicar un comentario