lunes, 11 de enero de 2010

Elección de una Arquitectura Adecuada

En primer lugar, aclaremos que por el término “arquitectura del sistema” nos referimos a la organización fundamental de un sistema, que incluye sus componentes, las relaciones entre sí y el ambiente en el que se ejecutan, los principios que gobiernan su diseño y su evolución.

Es de común conocimiento que no existe una única arquitectura posible a la hora de definir el marco sobre el cual una aplicación deberá ser construida y, posteriormente, ejecutada. Una misma solución puede responder en forma aceptable a los requerimientos de los usuarios en más de una forma de implementación. Sin embargo, las consideraciones y el esfuerzo para construir un mismo sistema en una u otra arquitectura no son los mismos. Por ello, hay que diferenciar bien claramente lo que es una arquitectura posible de una arquitectura adecuada para un sistema dado.




Lamentablemente, muchas veces esas decisiones se toman por razones totalmente inadecuadas, como ser:

Moda: no pocas veces se decide por una arquitectura sólo porque está de moda, si cabe el término en sistemas.
Conocimiento: un analista/desarrollador se siente obviamente más cómodo al imaginar un sistema dentro del marco tecnológico que mejor domina.
Desconocimiento: hay ocasiones en que el encargado de decidir la arquitectura no tiene conocimiento de ciertos modelos posibles que serían más apropiados para una determinada problemática.

Tenga en cuenta que una mala elección tiene un impacto no sólo en los costos de desarrollo (si la arquitectura se adapta mejor a los requerimientos, el desarrollo será más rápido), sino también en el resultado final alcanzado (tal vez la aplicación no cubra las expectativas del usuario o la performance deseada).


La única elección realmente válida es mediante un proceso en el cual se analicen las características de la aplicación que debe construirse y en base a ello se determine la arquitectura más apropiada para el caso. No es posible generalizar una única respuesta para todas las aplicaciones a desarrollar, sino que debe estudiarse cada caso en particular.




Resumiendo, los principales aspectos que deberían determinar la arquitectura de un sistema son:

Funcionalidades deseadas: algunas operaciones sólo son posibles en ciertos contextos.
Tipos de usuarios que accederán a la aplicación: nivel de conocimiento, habilidad y forma de uso de la tecnología.
Ubicación física de dichos usuarios: locales, remotos, móviles.
Interoperabilidad con otras aplicaciones: formatos, protocolos y mecanismos de comunicación.
Performance: velocidad de respuesta y de procesamiento.
Seguridad: tanto de la aplicación en sí como del acceso a la información que contiene.



Conclusión

Dada la cantidad de tecnologías disponibles, es recomendable que un arquitecto de software con experiencia sea el responsable de tomar estas decisiones, incluso debería considerar la posibilidad de tercerizar al menos el proceso de evaluación de los requerimientos y determinación de la tecnología, aunque luego decida que no tercerizará el desarrollo.

Lic. Oscar Valente
CTO ItSouth Consultores
www.itsouth.com.ar



Fuentes
Arquitecto de sistemas: http://es.wikipedia.org/wiki/Arquitecto_de_sistemas
La evolución tecnológica en la última década: http://fwnet.blogspot.com/2009/11/evolucion-tecnologica-10-anos-no-son.html