Está en la página 1de 28

ARQUITECTURA DE

SOFTWARE
CONTENIDO
INTRODUCCION

CONCEPTOS
ESTEREOTIPOS
HISTORIA
DEFINICIN
CORRIENTES PRINCIPALES

CONCEPTOS FUNDAMENTALES
ESTILOS ARQUITECTNICOS
LENGUAJES DE DESCRIPCIN ARQUITECTNICA (ADLS)
MTODOS CLSICOS, ARQUITECTNICOS Y GILES
SITUACIN & ROADMAP

http://www.microsoft.com/spanish/msdn/arquitectura

INTRODUCCION
Inicialmente la programacin era considerada un arte y era muy complicado
entender los lenguajes de programacin pero esto con el tiempo ha ido
cambiando y hoy en da tenemos un sinnmero de herramientas con las que
se puede interactuar para realizar diferentes aplicaciones y guas que
permiten desarrollar estos software con mayor facilidad permitiendo as la
resolucin de problemas.

A estas, herramientas se les ha denominado Arquitectura de Software,


porque, a semejanza de los planos de un edificio o construccin, estas
indican la estructura, funcionamiento e interaccin entre las partes del
software.

CONCEPTOS
QUE ES ARQUITECTURA:
Una Arquitectura de Software, tambin denominada Arquitectura lgica, consiste en un
conjunto de patrones y abstracciones coherentes que proporcionan un marco definido y
claro para interactuar con el cdigo fuente del software.
Una arquitectura de software se selecciona y disea con base en objetivos (requerimientos) y
restricciones. Los objetivos son aquellos prefijados para el sistema de informacin, pero no
solamente los de tipo funcional, tambin otros objetivos como la mantenibilidad,
auditabilidad, flexibilidad e interaccin con otros sistemas de informacin. Las restricciones
son aquellas limitaciones derivadas de las tecnologas disponibles para implementar sistemas
de informacin.
La arquitectura de software define, de manera abstracta, los componentes que llevan a
cabo alguna tarea de computacin, sus interfaces y la comunicacin entre ellos. Toda
arquitectura debe ser implementable en una arquitectura fsica, que consiste simplemente en
determinar qu computadora tendr asignada cada tarea.
La arquitectura de software, tiene que ver con el diseo y la implementacin de estructuras
de software de alto nivel. Es el resultado de ensamblar un cierto nmero de elementos
arquitectnicos de forma adecuada para satisfacer la mayor funcionalidad y requerimientos
de desempeo de un sistema, as como requerimientos no funcionales, como la
confiabilidad.

ESTEREOTIPOS
Arquitectura como normativa madura
Herramientas de diseo arquitectnico

Lenguajes arquitectnicos iguales en la academia y la industria


UML como lenguaje formal de modelado
Arquitectura vinculada con ingeniera & ciclo de vida
Arquitectura vinculada a metodologa (RUP)

La AS tiene que ver con modelado OO


Hay vnculo natural entre requerimientos (casos de uso) y clases
Las herramientas arquitectnicas generan el cdigo de la aplicacin

Antecedentes histricos

El trmino arquitectura de software, tal y como lo concebimos ahora, aparece en 1992 con el
trabajo de Perry y Wolf[1], sus antecedentes se remontan al menos hasta finales de la dcada
de los sesenta. En 1968, Dijkstra habla de una estructuracin correcta de los sistemas de
software, aunque no la llama arquitectura como tal[2].

En 1969, P. I. Sharp, comentando las ideas de Dijkstra, ya usa el trmino arquitectura de software
al mencionar que quiz luego se hable de la escuela de arquitectura de software de Dijkstra,
y al mismo tiempo lamentar que la industria de ese tiempo preste muy poca atencin a sta.

Fred Brooks, 1975 MMM


Arquitectura como interfaz usuario

David Parnas
1972: Mdulos Ocultamiento de informacin
1974: Estructuras de software
1976: Familias de programas (rbol de decisin)

Dewayne Perry, Alexander Wolf 1992


Foundations for the study of software architecture
La dcada de 1990, creemos, ser la dcada de la
arquitectura de software. Usamos el trmino arquitectura en
contraste con diseo, para evocar nociones de codificacin,
de abstraccin, de estndares, de entrenamiento formal (de los
arquitectos de software) y de estilo. Es tiempo de re-examinar
el papel de la arquitectura de software en el contexto ms
amplio del proceso de software y de su administracin, as
como sealar las nuevas tcnicas que han sido adoptadas.

Escuela de Carnegie Mellon (CMU-SEI)


Mary Shaw, David Garlan, Paul Clements, Robert
Allen

Definicin
Una definicin reconocida es la de
Clements [Cle96a]: La AS es, a grandes
rasgos, una vista del sistema que incluye los
componentes principales del mismo, la
conducta de esos componentes segn se
la percibe desde el resto del sistema y las
formas
en
que
los
componentes
interactan y se coordinan para alcanzar la
misin del sistema. La vista arquitectnica
es una vista abstracta, aportando el ms
alto nivel de comprensin y la supresin o
diferimiento del detalle inherente a la
mayor parte de las abstracciones

Definicin
En una definicin semejante, hay que aclararlo, la
idea de componente no es la de la
correspondiente tecnologa de desarrollo (COM,
CORBA Component Model, EJB), sino la de
elemento propio de un estilo. Un componente es
una cosa, una entidad, a la que los arquitectos
prefieren llamar componente antes que objeto,
por razones que se vern en otros documentos de
esta serie pero que ya es obvio imaginar cules han
de ser.

Definicin
En una definicin tal vez demasiado amplia, David Garlan [Gar00]
establece que la AS constituye un puente entre el requerimiento y
el cdigo, ocupando el lugar que en los grficos antiguos se
reservaba para el diseo. La definicin oficial de AS se ha
acordado que sea la que brinda el documento de IEEE Std 14712000, adoptada tambin por Microsoft, que reza as:

La Arquitectura de Software es la organizacin


fundamental de un sistema encarnada en sus
componentes, las relaciones entre ellos y el ambiente
y los principios que orientan su diseo y evolucin.

Antes el nmero y variedad de definiciones existentes de AS, Mary Shaw y


David Garlan [SG95] proporcionaron una sistematizacin iluminadora,
explicando las diferencias entre definiciones en funcin de distintas clases
de modelos.
Destilando las definiciones y los puntos de vista implcitos o explcitos, los
autores clasifican los modelos de esta forma:
Estructurales
De framework
Dinmicos

De proceso
Funcionales

Modelos estructurales: Sostienen que la AS est compuesta por componentes,


conexiones entre ellos y (usualmente) otros aspectos tales como
configuracin, estilo, restricciones, semntica, anlisis, propiedades,
racionalizaciones, requerimientos, necesidades de los participantes. El trabajo
en esta rea est caracterizada por el desarrollo de lenguajes de descripcin
arquitectnica (ADLs).

Modelos de framework: Son similares a la vista estructural, pero su nfasis


primario radica en la (usualmente una sola) estructura coherente del sistema
completo, en vez de concentrarse en su composicin. Los modelos de
framework a menudo se refieren a dominios o clases de problemas
especficos. El trabajo que ejemplifica esta variante incluye arquitecturas de
software especficas de dominios, como CORBA, o modelos basados en
CORBA, o repositorios de componentes especficos, como PRISM.

Modelos dinmicos: Enfatizan la cualidad conductual de los sistemas.


Dinmico puede referirse a los cambios en la configuracin del sistema,
o a la dinmica involucrada en el progreso de la computacin, tales
como valores cambiantes de datos.
Modelos de proceso: Se concentran en la construccin de la arquitectura,
y en los pasos o procesos involucrados en esa construccin. En esta
perspectiva, la arquitectura es el resultado de seguir un argumento (script)
de proceso. Esta vista se ejemplifica con el actual trabajo sobre
programacin de procesos para derivar arquitecturas.

Modelos funcionales: Una minora considera la arquitectura como un


conjunto de componentes funcionales, organizados en capas que
proporcionan servicios hacia arriba. Es tal vez til pensar en esta visin
como un framework particular.

Estilos Arquitectnicos
Un estilo es un concepto descriptivo que define una
forma de articulacin u organizacin arquitectnica.
(1) transformaciones en lote, (2) transformaciones continuas, (3)
interfaz interactiva, (4) simulacin dinmica de objetos del mundo
real, (5) sistemas de tiempo real, (6) administrador de transacciones
con almacenamiento y actualizacin de datos

Pero: estilos arquitectnicos, arquitecturas comunes, marcos


de referencia arquitectnicos prototpicos, formas comunes,
clases de sistemas

Incluyen:
Componentes
Conectores
Estructuras (topologas)
Restricciones (constraints)

Estilos

Flujo de datos

Llamada y Retorno

Programa principal / subrutinas


Ocultamiento de informacin (ADT, objeto, cliente/servidor elemental)

Procesos interactivos

Procesos comunicantes
Sistemas de eventos (invocacin implcita, eventos puros)

Repositorio Orientado a Datos

Bases de datos transaccionales (cliente/servidor genuino)


Pizarra
Compilador moderno

Datos Compartidos

Secuencial en lotes
Red de flujo de datos (tuberas & filtros)
Bucle de control cerrado

Documentos compuestos
Hipertexto
Fortran COMMON
Procesos LW

Jerrquicos
- En capas (intrpretes)

Estilos y patrones
POSA 96, Shaw 96
Patrones: Christopher Alexander 1977
Elementos que se repiten
Como un elemento en el mundo, cada patrn es una relacin entre
cierto contexto, cierto sistema de fuerzas que ocurre repetidas veces
en ese contexto y cierta configuracin espacial que permite que esas
fuerzas se resuelvan. Como un elemento de lenguaje, un patrn es
una instruccin que muestra la forma en que esta configuracin
espacial puede usarse, una y otra vez, para resolver ese sistema de
fuerzas, donde quiera que el contexto la torne relevante
Los patrones arquitectnicos se abocan a un problema de aplicacin
especfica dentro de un contexto dado y sujeto a limitaciones y
restricciones. El patrn propone una solucin arquitectnica que sirve
como base para el diseo de la arquitectura.

Comentario

Problemas

Soluciones

Fase de Desarrollo

Patrones de
Arquitectura

Relacionados a la
interaccin de objetos
dentro o entre niveles
arquitectnicos

Problemas arquitectnicos,
adaptabilidad a requerimientos
cambiantes, performance,
modularidad, acoplamiento

Patrones de llamadas
entre objetos (similar a
los patrones de diseo),
decisiones y criterios
arquitectnicos,
empaquetado de
funcionalidad

Patrones de
Diseo

Conceptos de ciencia de
computacin en general,
independiente de
aplicacin

Claridad de diseo,
multiplicacin de clases,
adaptabilidad a requerimientos
cambiantes, etc

Comportamiento de
factora, ClaseResponsabilidadContrato (CRC)

Diseo detallado

Patrones de
Anlisis

Usualmente especficos de
aplicacin o industria

Modelado del dominio,


completitud, integracin y
equilibrio de objetivos mltiples,
planeamiento para capacidades
adicionales comunes

Modelos de dominio,
conocimiento sobre lo
que habr de incluirse (p.
ej. logging & reinicio)

Anlisis

Patrones de
Proceso o de
Organizacin

Desarrollo o procesos de
administracin de
proyectos, o tcnicas, o
estructuras de organizacin

Productividad, comunicacin
efectiva y eficiente

Armado de equipo, ciclo


de vida del software,
asignacin de roles,
prescripciones de
comunicacin

Planeamiento

Estndares de codificacin
y proyecto

Operaciones comunes bien


conocidas en un nuevo ambiente,
o a travs de un grupo.
Legibilidad, predictibilidad.

Sumamente especficos
de un lenguaje,
plataforma o ambiente

Implementacin,
Mantemimiento,
Despliegue

Idiomas

Diseo inicial

Lenguajes de Descripcin
Arquitectnica (ADLs)
Lenguajes para el modelado, la descripcin y (eventualmente) la prueba
de la arquitectura

ADLs

Lenguajes de descripcin arquitectnica


El arquitecto de una casa tiene un conjunto de herramientas y
notacin estandarizadas que permiten que el diseo se represente
sin ambigedades y que sea comprensible.
Aunque el arquitecto de software dispone de la notacin UML,
para un enfoque ms formal de la especificacin del diseo
arquitectnico se necesitan otras formas de diagramas y algunas
herramientas relacionadas.

Vistas
1977, anlisis estructurado (Douglas Ross)
Separacin de incumbencias
Habitualmente 2 (funcional y de datos ninguna aparece
en AS)

La AS clsica no habla de vistas


Se basa en vista nica e implcita, de carcter estructural
Muchos arquitectos evitan hablar de vistas
Cuando las vistas proliferan, se requieren lenguajes
formales especficos para cada clase de vista
Las vistas son una abstraccin conveniente, pero su
abundancia involucra problemas de sincronizacin

Lista corta (3 a 6) Lista larga (8 o 9)


Viewpoints96

Modelo-Vista-Controlador

Arquitectura en Capas

Mquina virtual

Vistas de UML
rea
Estructural

Dinmica

Gestin del
modelo

Vista
Vista esttica

Diagramas
Diagrama de clases

Vista de casos de
uso

Diagramas de casos de
uso

Vista de
implementacin
Vista de despliegue

Diagrama de
componentes
Diagrama de despliegue

Vista de mquinas
de estados
Vista de actividad

Diagrama de estados

Vista de interaccin

Diagrama de secuencia
Diagrama de
colaboracin
Diagrama de clases

Diagrama de actividad

Conceptos principales
Clase, asociacin, generalizacin,
dependencia, realizacin, interfaz
Caso de uso, actor, asociacin,
extensin, inclusin, generalizacin de
casos de uso
Componente, interfaz, dependencia,
realizacin
Nodo, componente, dependencia,
localizacin
Estado, evento, transicin, accin
Estado, actividad, transicin de
terminacin, divisin, unin
Interaccin, objeto, mensaje, activacin
Colaboracin, interaccin, rol de
colaboracin, mensaje
Paquete, subsistema, modelo

Vista de gestin del


modelo
Tabla 2 - Vistas y diagramas de UML, basado en [RJB00: 22]

Vistas de UML
Vistas y puntos de vista no estn homogeneizados en textos y autores
Cuando los 3 hablan de AS, las vistas no se refieren a viewpoints o
concerns, sino a niveles de abstraccin
Definicin diferente de arquitectura
Interfaces en vez de conectores
Objetos en lugar de componentes

Campos de AS
Fundamentos formales de la AS (bases matemticas,
caracterizaciones formales de propiedades extra-funcionales
tales como mantenibilidad, teoras de la interconexin, etc).
Tcnicas de anlisis arquitectnicas
Mtodos de desarrollo basados en arquitectura
Recuperacin y reutilizacin de arquitectura
Codificacin y gua arquitectnica
Herramientas y ambientes de diseo arquitectnico
Estudios de casos

Situacin

Academia
La arquitectura se define explcitamente

La arquitectura consiste en componentes y


conectores de primera clase
Los lenguajes de descripcin de arquitectura
(ADLs) describen la arquitectura
explcitamente y a veces la generan
Los componentes reutilizables son entidades
de caja negra
Los componentes tienen interfaces con un
solo punto de acceso

Se otorga prioridad a la funcionalidad y la


verificacin formal

Industria
Prevalece una comprensin conceptual de la
arquitectura. Las definiciones explcitas son
mnimas, eventualmente mediante notaciones
No hay conectores explcitos de primera
clase (a veces hay soluciones ad hoc de
binding en tiempo de ejecucin)
Se utilizan lenguajes de programacin

Los componentes son grandes piezas de


software de estructuras interna compleja, no
necesariamente encapsulados
Las interfaces se proporcionan mediante
entidades (clases en los componentes). Las
entidades de interfaz no tienen diferencias
explcitas de entidades que no son de interfaz
La funcionalidad y los atributos de calidad
(performance, robustez, tamao,
reusabilidad, mantenibilidad) tienen igual
importancia

Problemas de AS
Falta de criterio unificado
Desarrollo en paralelo de conceptos
antagnicos o no coordinados
Mtodos giles
Metodologas de ciclo de vida
Patrones

Poca masa crtica de herramientas y lenguajes


de modelado arquitectnico (de alto nivel, con
conectores de primera clase)

Beneficios
Decisiones tempranas
Anlisis de consistencia
Anlisis de tradeoff antes de escribir cdigo
Mary Shaw y David Garlan [1996] comparan una misma solucin de
indexacin de palabras claves en cuatro estilos diferentes (datos
compartidos, tubera y filtro, tipos abstractos de datos e invocacin
implcita). El modelo permite estimar relaciones de dependencia,
modularidad, refinamiento, reutilizacin, ventajas y desventajas de
cada arquitectura antes de escribir una sola lnea de cdigo;
demuestra tambin de qu manera los diferentes estilos definen
tcticas especficas de descomposicin funcional y establecen la
pauta que habr de seguirse en el desarrollo. Finalmente, SG aplican
diversas tablas de comparacin de atributos, en un ejercicio de
evaluacin de decisiones estilsticas que se ha convertido en un
modelo en su gnero

Re-utilizacin

También podría gustarte