Una arquitectura software consiste en un conjunto de patrones y abstracciones coherentes que proporcionan el marco de referencia necesario para guiar la construcción del software para un sistema de información ] La Arquitectura del Software es el diseño de más alto niel de la estructura de un sistema! •
Una Arquitectura de Software Software"" tambi#n denominada Arquitectura lógica" consiste en un conjunto de patrones y abstracciones coherentes que proporcionan el marco
•
Una arquitectura de software se selecciona y diseña con base en objetios $requerimientos% y restricciones! Los objetios son aquellos prefijados para el sistema de información" pero no solamente los de tipo funcional" tambi#n otros objetios como la mantenibilidad" auditabilidad" fle&ibilidad e interacción con otros sistemas de información! Las restricciones son aquellas limitaciones deriadas de las tecnolog'as disponibles para implementar sistemas de información! Unas arquitecturas son más recomendables de implementar con ciertas tecnolog'as mientras que otras tecnolog'as no son aptas para determinadas arquitecturas! (or ejemplo" no es iable emplear una arquitectura de software de tres capas para implementar sistemas en tiempo real!
)ree reseña histórica *n los años +,-. ya +,-. ya se acercaba el concepto de arquitectura de software en los c'rculos de inestigación $por ejemplo" por *dsger por *dsger /ij0stra%! /ij0stra%! 1o obstante" toma popularidad en los años +,,. tras +,,. tras reconocerse la denominada crisis del software y como tema de inter#s de la incipiente disciplina de la ingenier'a del software
)ree 2istoria de la Arquitectura del software +,-. la historia de la arquitectura del software remonta a la #poca de los años -. desde ese entonces se empe3ó a utili3ar el t#rmino cuando *dsger /ij0stra de la Uniersidad 4ecnológica de *indhoen en 2olanda en +,-5 propuso que se estable3ca una estructura correcta de los sistemas de software antes de que se inicie la programación como tal" escribiendo código de cualquier manera!
*n +,-, un año despu#s de la sesión en que se fundara la ingenier'a de software" (! 6! Sharp formuló que la ingenier'a era diferente a la 7arquitectura8! *n +,-, 9red )roo0s :r y ;en 6erson llamaban arquitectura a la estructura conceptual de un sistema en la perspectia del programador " (arnas publicó un ensayo en el que discut'a la forma en +,=> que la modularidad en el diseño de sistemas pod'a mejorar la fle&ibilidad y el control conceptual del sistema" introduciendo el concepto de ?cultamiento de información" La herencia de este concepto en la ingenier'a y la arquitectura ulterior es inmensa" y se confunde estrechamente con la idea de abstracción! *n +,=@" )roo0s" diseñador del sistema operatio ?S<-. y (remio +,=@ 4uring >..." utili3aba el concepto de arquitectura del sistema para designar 7la especificación completa y detallada de la interfa3 de usuario8! *n la d#cada de +,5." los m#todos de desarrollo estructurado +,5. demostraron no escalar suficientemente y fueron dejando el lugar a un nueo paradigma" el de la programación orientada a objetos! B! )ree 2istoria de la Arquitectura del software La d#cada de +,,." fue la d#cada de la 7arquitectura de software8" dando cumplimiento a las profec'as de (erry y Colf" fue sin duda la d#cada de consolidación y diseminación de la AS en una escala sin precedentes! Las contribuciones más importantes surgieron en torno del instituto de ingenier'a de la información de la Uniersidad Darnegie Eellon $DEU S*6%! *n la misma d#cada" demasiado pródiga en acontecimientos" surge tambi#n la programación basada en componentes" que en su momento de mayor impacto impulsó a algunos arquitectos mayores" como (aul Dlements $Dlements *nero de +,,-!%" a afirmar que la AS promo'a un modelo que deb'a ser más de integración de componentes preFprogramados que de programación! -! Donceptos fundamentales $inicios y fundamentos % G *stilosH Un estilo" es un concepto descriptio que define una forma de articulación u organi3ación arquitectónica! *l conjunto de los estilos cataloga las formas básicas posibles de estructuras de software" siendo este" un aspecto fundamental de la AS $Colfy (erry%! G*l modelado ?? y UEL no lo cubren satisfactoriamente! GSu descripción" se puede formular en lenguaje natural o en diagramas
GSe recomienda hacerlo en un lenguaje de descripción arquitectónica $A/Ls% o en lenguajes formales de especificación! *jemplosH arquitecturas basadas en flujo de datos" las peerFtoFpeer" las de inocación impl'cita" las jerárquicas" las centradas en datos o las de int#rpreteF máquina irtual! G Lenguajes de descripción arquitectónica $A/Ls% Los A/Ls permiten modelar una arquitectura mucho antes que se llee a cabo la programación de las aplicaciones que la componen" anali3ar su adecuación" determinar sus puntos cr'ticos y eentualmente simular su comportamiento! GAparecieron a principios de los ,.Is GLo integran un conjunto de propuestas" ampliamente conocidas en el ámbito acad#mico GSe fundamentan en la incapacidad de e&presar conectores en UEL GAlrededor de >. A/Ls han sido reconocidos GSon poco utili3ados en la industria del software *jemplosH AA/L" Acme" Japide" L6L*A1A" etc! 9ramewor0s y Kistas G Un framewor0 permite ordenar las diferentes perspectias de una arquitectura en t#rminos de istas! Una ista es un subconjunto resultante de practicar una selección o abstracción sobre una realidad" desde un punto de ista determinado! +9ramewor0s y Kistas La 6*** Std +B=+F>... procura establecer una base comn para la descripción de arquitecturas de software" e implementa para ello tres t#rminos básicosH GArquitectura! *s la organi3ación fundamental de un sistema" encarnada en sus componentes" las relaciones entre ellos y con su entorno" y los principios que gobiernan su diseño y eolución! GKista! *s la representación concreta de un sistema en particular desde una perspectia unitaria! G(unto de ista! /efine un patrón o plantilla $template% para representar un conjunto de incumbencias $concerns% relatias a una arquitectura! *jemplosH punto de ista estructural" punto de ista conductual" punto de ista de intercone&ión f'sica! *l punto de ista estructural ha sido motiado por el trabajo de los A/Ls +B! (rocesos y metodolog'as
G(roceso! 2ace alusión a los marcos de trabajo las cuales son representados por istas! (or ejemploH las istas estáticas se corresponden con las perspectias particulares de los diferentes participantes y las istas dinámicas tienen que er con etapas del proceso" el ciclo de ida o metodolog'a caracteri3adas en requerimientos" análisis" diseño" implementación e integración! GEetodolog'a! 2ace referencia a un framewor0 que es usado para estructurar" planear y controlar el proceso de desarrollo en sistemas de informaciónH JU(" JA/" JS/" AJ6S" (*JA" D6E?SA" MJA6" M*JAE" DEE! *n el campo de a AS la dominante es el Eodelo de Eadure3 de la Dapacidad $DEE%! +5! Abstracción Una abstracción denota las caracter'sticas esenciales de un objeto que lo distingue de otras clases de objeto y proee de este modo delimitaciones conceptuales bien definidas" relatias a la perspectia del obserador! Mrady )ooch" +,,+ La abstracción consiste en e&traer las propiedades esenciales" o identificar los aspectos importantes" o e&aminar selectiamente ciertos aspectos de un problema" posponiendo o ignorando los detalles menos sustanciales" distractios o irreleantes! 6***" Jumbaugh" Shaw" et! *n un estilo" 7menos es más8H Si una decisión se pospone hasta el momento de tratar las cosas a bajo niel" entonces" #sta no es una decisión arquitectónica )ass" Dlemennts" ;a3man" +,,5 +,! *scenarios Son t#cnicas que se implementan en la elicitación de los requerimientos" particularmente en relación a los operadores de sistemas! Los escenarios" tambi#n son utili3ados como m#todos para comparar alternatias de diseño ya que permiten reali3ar una descripción anticipada del sistema y t'picamente se e&presan en una frase >B! Arquitecturas más comunes GEonol'tica! /onde el software se estructura en grupos funcionales muy acoplados ! GDlienteFseridor! /onde el software reparte su carga de cómputo en dos partes independientes pero sin reparto claro de funciones! GArquitectura de tres nieles! *speciali3ación de la arquitectura clienteF seridor donde la carga se diide en tres partes $o capas% con un reparto claro de funcionesH Nuna capa para la presentación $interfa3 de usuario%" Notra para el cálculo $donde se encuentra modelado el negocio% y Notra para el almacenamiento $persistencia%!
>@! Arquitecturas mas comunes desde otra perspectiaH G/escomposición Eodular GArquitecturas de /ominio *spec'fico G/iseño Software Arquitectura Eultiprocesador G/iseño Software Arquitectura Dliente Seridor G/iseño Software /istribuido G/iseño Software 4iempo Jeal >-! Eodalidades y tendencias GDorrientes de la AS propuestas por Darlos )illy Jeynoso $>..B%H +!Arquitectura como etapa de ingenier'a y diseño orientada a objetos! *sta perspectia concierne a decisiones sobre organi3ación" selección de elementos estructurales" comportamiento" composición y estilo arquitectónicos susceptibles de ser descritas a tra#s de las cinco istas clásicas del modelo BO+ de ;ruchten $UEL y Jational%! Jumbaugh" :acobson" )oo0" Larman" ;ruchten" entre otros!! >!Arquitectura estructural! )asada en un modelo estático de estilos" A/Ls y istas! La representan los acad#micos de la Uniersidad Darnegie Eellon de (ittsbughH Shaw" Dlements" Marlan" Allen" Abowd" ?c0erbloom! *n ella se reconocen tres modalidades en cuanto a formali3aciónH N/escripción erbales o diagramas de caja $los más informales% N Los que se siren de A/Ls $intermedios%" y NLos que utili3an lenguajes formales de especificación como D2AE y P $los más e&igentes% !Arquitectura basada en patrones! 1o está r'gidamente inculada con el modelado UEL" ni a las metodolog'as de DEE! *l diseño consiste en identificar y articular patrones pree&istentes" que se definen en forma parecida a los estilos de arquitectura ! Arquitectura procesual! 6ntenta establecer modelos de ciclo de ida y t#cnicas de elicitación de requerimientos" brainstorming" diseño" análisis" selección de alternatias" alidación" comparación" estimación de calidad y justificación económica espec'ficas para la arquitectura de software! La documentación se encuentra en S*6" pero no se me3cla con DEE! !Arquitectura basada en escenarios! *s la corriente más nuea! Se trata de un moimiento predominantemente europeo" con centro en 2olanda! Jecupera el ne&o de la AS con los requerimientos y la funcionalidad del sistema" el cual es" ocasionalmente borroso en la arquitectura estructural clásica! *n esta corriente suele utili3arse diagramas de casos de
uso UEL como herramienta informal u ocasional" dado que los casos de uso son uno de los escenarios posibles! Los casos de uso no están orientados a objeto! ?tras menos populares sonH Men#tica%" Arquitectura centrada en la acción $inteligencia artificial heideggeriana%" Arquitectura epistemológicamente refle&ia" etc! Q del lado opuestoH la antiFarquitectura /iferencias entre arquitectura y diseño La arquitectura es el primer paso en la producción de un diseño de software $Shaw y Marlan"+,,-%" en donde los pasos que la distinguen sonH +! Arquitectura! Asocia los requerimientos con los componentes del sistema que habrán de implementarla! *stilos complejos a partir de estilos simples" es decir" sistemas a partir de subsistemas! >!/iseño de código! Domprende algoritmos y estructuras de datosR los componentes son primitias de los lenguajes de programación $nmeros" caracteres" punteros" etc!%! ! /iferencias entre arquitectura y diseño 4aylor Eedidoic $>...%! Señala que la literatura mantiene un estado ambiguo al e&istir diferentes interpretaciones! +% Arquitectura y diseño son lo mismo >% La AS se encuentra en un niel de abstracción por encima del diseño < %La AS es otro paso en el proceso de software B%La AS es algo nueo y en alguna medida diferente al diseño Fundamentos de la arquitectura del software La Arquitectura de Software es la organi3ación fundamental de un sistema encarnada en sus componentes" las relaciones entre ellos y el ambiente y los principios que orientan su diseño y eolución
Jepositorios de la Arquitectura de Software *&isten unos cuantos repositorios de información arquitectónica" cuyas direcciones son más o menos permanentes! *l más importante hoy en d'a parece ser el del Software *ngineering 6nstitute en la Uniersidad Darnegie Eellon de (ittsburgh" (ennsylania $httpHwww!sei!cmu!eduataatainit!html% *l sitio del S*6 incluye abundante literatura acad#mica Jeleancia de la Arquitectura de Software Aunque toda'a no se ha constituido un repositorio uniformi3ado de estudios de casos en base al cual se pueda e&traer una conclusión responsable" la AS ha resultado instrumental en un nmero respetable de escenarios reduciendo costos" eitando errores" encontrando fallas" implementando sistemas de misión cr'tica! Dada uno de los documentos que describen lenguajes de descripción arquitectónica" por ejemplo" subraya su utili3ación e&itosa en proyectos de gran energadura requeridos por organi3aciones de gobierno o por grandes empresas! /efiniciones de estilos *stilo tambi#n se utili3a en la informáticaH las hojas de estilo en cascada $Dascading Style Sheets" DSS segn sus siglas en ingl#s% componen un lenguaje que se emplea para estipular cómo se presentará un documento que ha sido desarrollado en TEL" 24EL o T24EL! *s BB! Los estilos arquitectónicos H *s la clasificación arquitectónica en los t#rminos de forma" t#cnicas"materiales" per'odo" región" etc!Surgen del estudio de la eolución y la historia de la arquitectura! *l estilo arquitectónico es una manera de clasificar la arquitectura que da #nfasis a las caracter'sticasdel diseño" dando lugar a una terminolog'a *s un estilo bastante sencillo! 1o llea molduras $ detalles en reliee % ni detalles recargados" es de l'neas rectas y simples!La decoración transmite una sensación de informalidad y juentud! *s simple y funcional" se caracteri3a por crear espacios amplios y luminosos! Se puede optar por colores claros en paredes y muebles! *s un estilo muy práctico" los muebles son de l'neas puras y detalles discretos!Un mobiliario apropiado ser'aH Sillas! /e madera laqueada" sola o con base de acero! (odr'amos usar" asimismo" sillas en plástico decolores" con tapicer'a tambi#n colorida y diseños modernos!Eesas! Las mesas pueden ser de plástico" enchape melam'nico o madera de acabado laqueadoRpreferentemente redondas" pues son menos r'gidas!Eobiliario de apoyo! Domo en los estilos anteriores" sólo para colocar ajilla y
manteler'a! (ueden sersencillas" en madera o enchape melam'nico" con puertas y diisiones para guardar utensilios! B=! Los patrones arquitectónicos (or su parte" se han materiali3ado con referencia a lenguajes y paradigmas tambi#n espec'ficos de desarrollo" mientras que ningn estilo presupone o establece preceptias al respecto! Si hay algn código en las inmediaciones de un estilo" será código del lenguaje de descripción arquitectónica o del lenguaje de modeladoR de ninguna manera será código de lenguaje de programación Los patrones de arquitectura están claramente dentro de la disciplina arquitectónica" solapándose con los estilos B5! (atrones Arquitectónico Segn )uschmann los patrones de arquitectura se pueden er como la descripción de un problema en particular y recurrente de diseño" que aparece en conte&tos de diseño arquitectónicos espec'ficos" y representa un esquema gen#rico demostrado con #&ito para su solución! )uschmann" et al!" +,,-%! Los patrones arquitectónicos se definen sobre aspectos fundamentales de la estructura del sistema software" donde se especifican un conjunto de subsistemas con sus responsabilidades y una serie de recomendaciones para organi3ar los distintos componentes! B,! (atrón de /iseño Un patrón de diseño proee un esquema para refinar los subsistemas o componentes de un sistema de software" o las relaciones entre ellos! /escribe la estructura comnmente recurrente de los componentes en comunicación" que resuele un problema general de diseño en un conte&to particular