Arquitectura suave

Febrero 12, 2004 - Publicaciones

Durante años hemos discutido si la ingeniería de software es, o no, una contradicción de términos. Las fallas frecuentes, hasta de los programas más populares, sugieren que la construcción de programas de cómputo carece de la rigurosidad que generalmente asociamos con la ingeniería.

Cuando las fallas no pueden ser explicadas ni por el mismo que lo escribió, se refuerzan las sospechas de que la construcción de software es una disciplina aleatoria.

Sin embargo, si bien la arquitectura de software es difícil de definir y entender, todos parecen estar de acuerdo en su realidad y necesidad.

En obras civiles, la arquitectura tiene que ver con la estética, la armonía y la eficiencia. La buena, o mala, arquitectura salta a la vista. La buena ingeniería pasa sin ser notada (todo funciona bien), mientras que la mala ingeniería puede incluso costar vidas.

A la vista o a la bolsa. La arquitectura del software es, hasta cierto punto, invisible. Los usuarios del software no ven la arquitectura ni saben nada de ella hasta que a alguien se le ocurre pedir un cambio en el sistema.

La arquitectura de algo tan suave como el software tiene que ver con la separación en componentes, con la separación y “ componentización” de asuntos relacionados; tiene que ver con la “elegancia” con la que se armó el sistema, con la manera en que los diferentes componentes se interrelacionan.

A fin de cuentas, la arquitectura del software es la que permitirá su futura comprensión y flexible reutilización. Todos hemos visto cuando, al tratar de arreglar o agregar algo a un software, se rompe otra cosa que supuestamente no tiene que ver con la modificación en cuestión. Ahí es cuando la mala arquitectura salta a la vista (o a la bolsa).

A diferencia de la arquitectura dura, cuyas bondades pueden ser subjetivas, las bondades de la arquitectura de software son muy objetivas. Hoy hay acuerdo en que las mejores arquitecturas de software son aquellas orientadas a servicios (y que las arquitecturas cliente-servidor no sirvieron).

Un software hecho con arquitectura orientada a servicios (AOS) es un software hecho a partir de piezas reutilizables e interoperables, capaces de ofrecer un servicio a otras piezas de software (que también ofrecen servicios).

Los servicios más utilizados y mejor conocidos son los llamados “servicios Web ”. Estos servicios permiten la componentización y la integración entre sistemas de un mismo departamento o de diferentes organizaciones (en diferentes continentes).

Debido a la importancia y relevancia de las AOS, el Club de Investigación Tecnológica, el INCAE y el Object Management Group (OMG, organismo sin fines de lucro dedicado a definir estándares de tecnologías de software ) organizan un seminario en Costa Rica para el mes de mayo.

Impacto en la inversión. Este tema, si bien suena muy técnico, en realidad es de interés para mucha gente ya que tendrá un fuerte impacto tanto sobre las inversiones futuras en tecnologías como en la rentabilidad de las inversiones actuales. Así como no hay que ser ingeniero, arquitecto ni albañil para entender y discutir acerca de las inversiones en obras civiles, tampoco hay que ser programador ni ingeniero de software para discutir sobre las características arquitectónicas de los sistemas en los que se apoyan las empresas y organizaciones de las que todos dependemos.

La buena noticia es que en Costa Rica tenemos la tecnología y el talento necesarios para defender las inversiones actuales y movernos de manera rápida y segura hacia sistemas basados en AOS, aprovechando al máximo el esfuerzo invertido a lo largo de los años en los sistemas actuales. Costa Rica debe utilizar y exportar dicha tecnología y talento. Pensar en sustituir lo que hemos hecho a través de los años por paquetería importada, no tiene ni pies ni cabeza.

Artículo publicado en el periódico La Nación