Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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.
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
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.
David Parnas
1972: Mdulos Ocultamiento de informacin
1974: Estructuras de software
1976: Familias de programas (rbol de decisin)
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:
De proceso
Funcionales
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
Incluyen:
Componentes
Conectores
Estructuras (topologas)
Restricciones (constraints)
Estilos
Flujo de datos
Llamada y Retorno
Procesos interactivos
Procesos comunicantes
Sistemas de eventos (invocacin implcita, eventos puros)
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
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
Planeamiento
Estndares de codificacin
y proyecto
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
Vistas
1977, anlisis estructurado (Douglas Ross)
Separacin de incumbencias
Habitualmente 2 (funcional y de datos ninguna aparece
en AS)
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
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
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
Problemas de AS
Falta de criterio unificado
Desarrollo en paralelo de conceptos
antagnicos o no coordinados
Mtodos giles
Metodologas de ciclo de vida
Patrones
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