Académique Documents
Professionnel Documents
Culture Documents
Es necesario conocer y comprender los elementos que deben abordar al disear una arquitectura de
software, de lo contrario se tiende a caer en el crculo vicioso de un diseo somero y a la codificacin
del sistema.
Desarrollar una arquitectura de software es como llevar a cabo el diseo arquitectnico de un edificio
que ser construido. Para construir, los ingenieros, albailes, plomeros, electricistas, etc. requieren
estudiar y comprender los planos de los cimientos, la estructura, y de toda la infraestructura
necesaria para que cuente con servicios tales como: luz, agua, telfono, red de datos, etc. Cuando
no existen estos planos que nos guen, estaremos construyendo algo que se nos viene a la
imaginacin justo en el momento de realizarlo. Por ello, tambin es importante que los diferentes
interesados en el sistema se involucren en el diseo de la arquitectura pues, con ello, se podr
acordar y consensuar de una mejor manera la solucin a la que se llegue despus de conocer los
requerimientos.
Un elemento crtico y muy importante que se debe considerar en una arquitectura de software, y en
lo que precisamente est basado el diseo, son los requerimientos no funcionales del sistema,
especficamente los atributos de calidad establecidos para el mismo, es decir, atributos como:
desempeo, confiabilidad, seguridad, facilidad de modificacin, facilidad de uso, robustez,
portabilidad, escalabilidad, reutilizacin, disponibilidad, etctera.
Ahora bien, resulta imposible aceptar todos los atributos de calidad para un sistema; cada interesado
en dicho sistema (usuario, cliente, desarrollador, arquitecto, patrocinador, etc.) estar preocupado
por alguno en especfico, pero es imposible alcanzar todos, pues es sabido que alcanzar ciertos
atributos de calidad impide que se logren otros, y es cuando se dice que entran en conflicto. El
secreto est en priorizarlos y en determinar cules son los verdaderamente importantes para el
cliente y cules est dispuesto a sacrificar para alcanzar su objetivo.
De no considerar lo anterior cometeremos un error grave, pues ningn sistema puede cumplir con
todos los atributos de calidad al 100%, resultara incoherente por el conflicto que puede existir entre
ellos. Es por esto que, en muchas ocasiones, los usuarios y clientes quedan insatisfechos con un
sistema, pues esperaban todos los atributos de calidad que acordaron con el proveedor. Muy
probablemente el analista y arquitecto, por desconocimiento, aceptaron y se comprometieron a
cumplir con todos ellos sin analizarlos.
En ese sentido, podemos determinar que la arquitectura de software se encuentra influenciada por
los involucrados o interesados en el desarrollo del sistema de software, la organizacin para la que
est siendo desarrollado, los requerimientos no funcionales, el ambiente tcnico y la experiencia del
arquitecto.
Otro elemento importante dentro de la arquitectura de software es que debe definirse a travs de
vistas, que representan las diferentes perspectivas de nuestro diseo, como mostrar el diseo de la
estructura general de un edificio, junto con el plano de la instalacin hidrulica, el plano de la
instalacin elctrica, o de la instalacin de la red de voz y datos.
Las vistas arquitectnicas pueden representarse mediante lenguajes de modelado, como UML,
aunque tambin existen lenguajes especializados de descripcin arquitectnica (ADLs) como ACME,
para especificar de manera sintctica y grfica los componentes de una arquitectura de software.
Un vez generada y documentada la arquitectura de software, sta debe evaluarse para verificar que
cumpla con todos los requerimientos; especficamente con los atributos de calidad establecidos.
Dicha evaluacin puede realizarse mediante tcnicas cualitativas, como cuestionarios o escenarios,
o a travs de tcnicas cuantitativas, como simulaciones o modelos matemticos. En la literatura
existen diferentes mtodos de evaluacin para verificar desde mltiples atributos de calidad hasta
algunos en especfico. Ejemplos de estos mtodos de evaluacin son ATAM, ABAS, SAAM, SNA,
ALMA, RMA, teora de colas, teora de confiabilidad, entre otras.
En conclusin el diseo de una arquitectura de software debe considerarse una parte fundamental,
crtica e indispensable en el desarrollo de un sistema de software, ya que es precisamente en esta
fase en donde recae toda la creatividad, experiencia y creacin de la propuesta de solucin que ms
se adecue a las necesidades de nuestro cliente y le permita lograr sus objetivos.
Se trata de un concepto que naci hace ya varios aos, no obstante, emerge recientemente como
concepto formal, como un proceso de ingeniera. En general, la mayora no tiene un proceso formal
definido para desarrollar la industria de software y, aunque no es una tarea sencilla el adoptar la
creacin de una arquitectura de software, se requiere romper paradigmas en la forma de trabajo de
las personas. Los profesionales de la industria de software y, especficamente, quienes estn
dedicados al diseo de sistemas, deben capacitarse ampliamente en el campo de la arquitectura de
software para cumplir con esta importante etapa del ciclo de vida de un sistema. .
BIBLIOGRAFA.
Traducido y modificado de White, Sharon A.; Lemus-Olalde, Cuauhtmoc. The Software Architecture
Process, 1997.
Traducido de Clements, P.; Bass, L.; Kazman, R. Software Architecture in Practice. Edited by SEI
Series, first edition, SEI Series in Software Engineering: Addison Wesley, 2003.
Traducido de Clements, P.; Bass, L.; Kazman, R. Software Architecture in Practice. Edited by SEI
Series, first edition, SEI Series in Software Engineering: Addison Wesley, 2003.
Modificado de Bosh, Jan. Design and Use of Software Architectures, Adopting and Evolving a
Product-Line Approach, first edition, London: Addison Wesley, 2000.