View
64
Download
2
Category
Preview:
Citation preview
Orgenes La arquitectura descansa en tres principios: la Belleza (Venustas), la
Firmeza (Firmitas) y la Utilidad (Utilitas)
(Vitruvio, siglo I a de C)
Templo de Artemisa en Efeso Siglo IV a de C.
127 columnas de 20 metros de altura
El coloso de rodas 277 a de C.
32 metros de altura Placas de bronce sobre armazn de hierro
Fuente: http://sietemaravillas.tripod.com/
Orgenes (2) Es arquitecto aquel que con mtodo y procedimiento seguro y perfecto
sepa proyectar racionalmente y realizar en la prctica obras que se
acomoden perfectamente a las ms importantes necesidades humanas.
Len Batista Alberti ( 1485)
El faro de Alejandra. Ao 280 a de C.
Altura 120 metros. Cima equipada con espejos metlicos
que reflejaban la luz del sol; y por las noches,
a falta de luz, se enciende una hoguera.
Las pirmides de Egipto.
Ao 2750 a de C.
146.59 m de altura, 230 m de ancho
Alineadas hacia el norte con una inclinacin de
51 grados
Arquitectura de Software
Que es una arquitectura?
No estamos seguros, pero la reconocemos cuando vemos una
IEEE-1471-FAQ
IEEE 1471 El nivel conceptual ms alto de un sistema en su ambiente.
Arquitectura es la organizacin fundamental de un sistema descrita en: Sus componentes.
Relacin entre ellos y con el ambiente.
Principios que guan su diseo y evolucin.
Arquitectura de Software + Software Architecture in
Practice - Kazman La estructura de estructuras de un sistema, la cual abarca componentes de software, propiedades externas visibles de estos componentes y sus relaciones.
La arquitectura del software define el sistema en trminos de sus componentes computacionales y de las relaciones entre ellos (Shaw & Garlan, 1996)
Estructura o estructuras del sistema que comprende componentes de software, propiedades visibles de esos componentes y las relaciones entre ellos.
Otras Definiciones de Arquitectura
Dos factores primarios en la ingeniera de software que han incrementado la importancia de la arquitectura:
Evolucin de Arquitecturas
Evolucin de Arquitecturas Aplicaciones Monolticas
Interfaces grficas de usuario (GUI).
Servicios de presentacin, negocios y persistencia en la misma mquina.
No hay concurrencia de usuarios.
Alto acoplamiento entre tiers.
Arquitectura Cliente-Servidor
+ Clientes pesados, no estndar
+ Conexiones dedicadas a BD
+ Protocolos pesados
+ Ejecucin remota de SQLs
+ Alta administracin
+ Bajo rendimiento
+ Alto trfico de red
+ Baja accesibilidad
Evolucin de Arquitecturas
Arquitectura Cliente-Servidor Mejorada
Lgica de negocios en BD
Clientes pesados, no estndar.
Conexiones dedicadas a la BD.
Mejora en rendimiento
Alta administracin
Baja escalabilidad
Baja flexibilidad
Baja portabilidad
Arquitectura de 3 niveles
+ Reutilizacin de lgica de negocio para
diferentes clientes o sistemas.
+ Mejora la escalabilidad.
+ Mejora la flexibilidad.
+ Independencia de la base de datos.
Evolucin de Arquitecturas
Arquitectura de N-niveles
100.000+
+ Bajo costo de administracin de clientes. + Alta accesibilidad. + Alta flexibilidad. + Alta disponibilidad y tolerancia a fallos. + Alta escalabilidad. + Independencia de DB
Evolucin de Arquitecturas
Visin de Arquitectura Orientada a Servicios (SOA)
Cluster de Servidores de Aplicaciones
Aplicaciones Legadas
Servidor de Procesos
(BPM)
Base de Datos
Sistema Batch
Portal de Servicios Integrados
+ Requerimientos
Arquitectnicos
+ Heterogeneidad
+ Escalabilidad
+ Disponibilidad
+ Distribucin
+ Manejabilidad de Procesos
+ Administracin y monitoreo de procesos,
servicios e infraestructura
Que es un Arquitecto de Software?
Rational Unified Process Arquitecto es un rol en un proyecto de desarrollo de software el cual es responsable de:
Liderar el proceso de arquitectura.
Producir los artefactos necesarios: Documento de descripcin de arquitectura
Modelos y prototipos de arquitectura.
SUN SL-425:
El arquitecto:
Visualiza el comportamiento
del sistema.
Crea los planos del sistema.
Define la forma en la cual los
elementos del sistema
trabajan en conjunto.
Responsable de integrar los
requerimientos no-funcionales
(NRFs) en el sistema.
Discusin
Existe alguna diferencia entre arquitectura
y diseo de software?
Arquitectura Vs. Diseo + La arquitectura y el diseo difieren en tres reas:
Arquitectura Diseo
Nivel de
Abstraccin
Alto nivel Bajo nivel. Enfoque
especfico en detalles
Entregables Planear subsistemas, interfaces
con sistemas externos,
servicios horizontales,
frameworks, componentes
reutilizables, prototipo
arquitectnico
Diseo detallado
componentes.
Especificaciones de
codificacin
reas de
Enfoque
Seleccin de tecnologas,
Requerimientos no funcionales
(QoS),
Manejo de riesgos
Requerimientos
funcionales
Arquitectura Vs. Diseo
La arquitectura envuelve un conjunto de decisiones estratgicas de diseo, lineamientos, reglas y patrones que restringen el diseo y la implementacin de un software.
Las decisiones de arquitectura causan un alto impacto en los proyectos de IT
Arquitectura
Diseo
Implementacin
Cdigo
Discusin
Cules son los principios fundamentales
en los mtodos de desarrollo de software
modernos?
Arquitectura y Procesos de Desarrollo
Principios Fundamentales de Procesos Modernos
+ Desarrollo iterativo e incremental.
+ Conducido por las calidades sistmicas.
+ Centrado en la arquitectura.
+ Dirigido por los casos de uso.
+ Basada en Modelos.
+ Mejores prcticas de diseo.
EL PROCESO DE DESARROLLO BASADO
EN LA ARQUITECTURA
PASOS GENERALES DE UN PROCESO DE DESARROLLO BASADO EN LA ARQUITECTURA
1. Evaluar la necesidad empresarial del sistema
Asegurar que la organizacin requiere el sistema
Cunto costar el producto?
Cul es el mercado objetivo?
Cul es el tiempo de puesta en el mercado?
Qu interacciones se requieren con otros sistemas?
2. Entender los requerimientos
Tcnicas de elicitacin de requisitos (casos de uso, escenarios)
Para sistemas de seguridad crtica utilizar aproximaciones rigurosas como
mquinas de estado finito o lenguajes formales
Cules son las caractersticas particulares del sistema con respecto a otros
sistemas (por ejemplo lneas de producto)?
..\Pasos generales de un proceso basado en la arquitectura
3. Crear o seleccionar la Arquitectura
Cules son los estilos de arquitectura adecuados?
Layer, MVC, Blackboard, Tuberias y Filtros, etc.
Qu papel juegan las aplicaciones legado?
Cules son las tcticas de arquitectura para cumplir un atributo de calidad?
4. Representar y comunicar la arquitectura
Uso de modelos y de documentos de definicin de arquitecturas
Sesiones para comunicacin y discusin de la arquitectura con todos los
stakeholders
5. Analizar o evaluar la arquitectura
Definir varias alternativas de arquitectura
Utilizar mtodos de evaluacin de arquitectura
6. Implementar el sistema basado en la arquitectura
Implementar las interfaces definidas en la arquitectura
Tener un ambiente o infraestructura que asista activamente a los
desarrolladores en la creacin y mantenimiento de la arquitectura
7. Asegurar que la implementacin corresponde a la
arquitectura
Establecer un proceso de monitoreo permanente para asegurar que la
arquitectura actual y su representacin se mantienen consistentes
durante su operacin y evolucin
..\Pasos generales de un proceso basado en la arquitectura
La arquitectura y la propuesta del Proceso Unificado
Phases Process Workflows
Supporting Workflows
Management Environment
Business Modeling
Implementation
Test
Analysis & Design
Preliminary Iteration(s)
Iter. #1
Iter. #2
Iter. #n
Iter. #n+1
Iter. #n+2
Iter. #n
Iter. #n+1
Deployment
Configuration Mgmt
Requirements
Elaboration Transition Inception Construction
Especificacin precisa de requisitos no funcionales Pruebas de concepto de la arquitectura Definicin de la lnea base de la arquitectura Procesos formales de anlisis y evaluacin de la arquitectura
Enfatiza la importancia de:
Definicin de Arquitectura en RUP
Fase de Inicio
+ Con respecto a la arquitectura, en la
fase de inicio de los proyectos se
establece:
Requerimientos no-funcionales
Lista de riesgos y restricciones
Arquitectura inicial
Definicin de Arquitectura en RUP
Fase de Elaboracin
+ Con respecto a la arquitectura, en la
fase de elaboracin se establece:
Arquitectura lnea base.
+ Entregables:
Documento de Definicin de
Arquitectura.
Prototipo evolutivo de arquitectura.
Guas y Estndares de Diseo.
IMPACTOS DEL DESARROLLO BASADO EN LA ARQUITECTURA
Desarrollo
Basado en
la Arquitectura
Importancia de modelos de alto nivel que luego se refinan Desarrollo basado en interfaces antes que clases Uso de patrones y tcticas de arquitectura
Estimar esfuerzo de construccin Plan de construccin de los CU segn su impacto en la arquitectura
Nuevos esquemas de negociacin del proyecto Nuevos esquemas de interaccin cliente/proveedor La arquitectura como elemento para evaluar riesgos
Medicin de la calidad sobre planos Adopcin de frameworks de atributos de calidad
En la ingeniera
En la gestin del proyecto En la calidad del producto
EVALUACIN DE LA ARQUITECTURA
Escenarios de atributos de calidad
Utilizados para:
Precisar los atributos de calidad en la fase de definicin de
requisitos
Verificar el cumplimiento del contrato en las fases de diseo e
implantacin
TCNICAS DE APOYO AL ANLISIS Y EVALUACIN DE ARQUITECTURAS PROPUESTAS POR EL SEI
Para obtener los casos de negocio y entender los
requerimientos
Quality Attribute Workshop (QAW)
Para crear o seleccionar la arquitectura
Attribute Driven Desing (ADD)
Para documentar y comunicar la arquitectura
View and Beyond Approach
Para analizar y evaluar la arquitectura
Architecture Tradeoff Analysis Method (ATAM)
Cost Benefit Analysis Method (CBAM)
Software Architecture Analysis Method (SAAM)
RBOL DE CALIDAD (ATAM)
Utilizado para articular
las metas esperadas del
sistema con respecto a
los atributos de calidad
Las hojas del rbol
presentan los escenarios
considerados relevantes a
la arquitectura
Se asignan peso a cada
rama del rbol segn su
importancia y dificultad
de implementacin
LENGUAJES PARA REPRESENTACIN DE LA
ARQUITECTURA
Qu es un ADL (Architecture Definition Language)?
Un ADL enfoca en la descripcin de la estructura de la aplicacin a alto
nivel, en lugar de la descripcin de la implementacin de cualquier
mdulo especfico.
ADL es un lenguaje que provee elementos para modelar la arquitectura
conceptual de un sistema software, distinguindola de la
implementacin del sistema (Medvidovic&Taylor)
Constructores bsicos de un ADL: Componentes, Conectores,
Configuraciones y Restricciones (Tracz, 1993).
El problema: Los lenguajes formales son difciles de entender y manejar
en aplicaciones industriales
Reto: Convertir a UML en un lenguaje suficientemente preciso para especificar una arquitectura
Relacin de ADLs con otras notaciones y herramientas
Principales lenguajes ADL ACME: Architectural interchange, predominantly at the structural level
Aesop: Specification of architectures in specific styles
C2: Architectures of highly-distributed, evolvable, and dynamic systems
Darwin: Architectures of highly-distributed systems whose dynamism is guided by strict
formal underpinnings
MetaH: Architectures in the guidance, navigation, and control (GN&C) domain
Rapide: Modelling and simulation of the dynamic behaviour described by an architecture
SADL: Formal refinement of architectures across levels of detail
UniCon: Glue code generation for interconnecting existing components using common
interaction protocols
Weaves: Data-flow architectures, characterized by high volume of data and real-time
requirements on its processing
Wright: Modelling and analysis (specifically, deadlock analysis) of the dynamic behaviour of
concurrent systemsx
XADL: Extensible XML-based ADL based on xArch
Ejemplo de un ADL: Acme Studio
Editor grfico
para diseo de
arquitecturas
Diseo de
estilos o
familias de
arquitectura
Implementado
como plug-in
de Eclipse
Alternativas de integracin de UML con ADLs
Alternativa 1. Buscar correspondencia entre ADLs existentes y
UML
ADL : Para el diseo de alto nivel
UML : Para el diseo detallado
Correspondencia ADL & UML - Ejemplo en C2
Correspondencia ADL & UML - Ejemplo en C2 (2)
Alternativas de utilizacin de UML como ADL
Esta estrategia ha sido aplicada en lenguajes como C2 , Wright y Rapide Ventajas:
Representa de manera explcita las restricciones arquitecturales a travs de OCL
Entendible por los desarrolladores y soportado por herramientas CASE Las tareas de ingeniera inversa a travs de estereotipos podran
simplificarse
Desventajas: Dificultad para establecer los lmites entre el diseo de la arquitectura y el
diseo detallado Incapacidad de las herramientas CASE para forzar el cumplimiento de
restricciones escritas en OCL Dificultad para representar en UML la semntica particular de algunos
lenguajes de ADL
Alternativa 2. Adecuar UML por medio de estereotipos
Alternativas de utilizacin de UML como ADL
Extender el metamodelo de UML para soportar directamente los constructores de arquitectura
Incorporar formalmente en UML nuevas capacidades de modelado
Se puede simplificar las tareas de generar la arquitectura a partir del diseo
Reto: Estandarizar el lenguaje sin incrementar demasiado la complejidad de la especificacin (?)
Alternativa 3. Extender UML
Caractersticas de las extensiones de UML 2.0
Mayor riqueza semntica en la definicin del comportamiento del sistema
Facilidad para definir composicin de elementos
Composicin estructural
Composicin del comportamiento
Conectores y puertos como constructores asociados a los clasificadores (clases y componentes)
UML2.0: Extensiones en la definicin del comportamiento en diagrama de secuencias
Variaciones para expresar
Paralelismo y alternativas
Iteraciones y opcionalidad
Excepciones
Este cambio reduce el nmero de
diagramas requeridos para
expresar la funcionalidad
sd ValidateCoin
:VendingMachine :User
Insert(coin)
Display(price)
RejectCoin()
alt
else
Operador
De la interaccin
UML2.0: Facilidad para especificar el comportamiento en diferentes niveles de detalle
La lnea de vida de un objeto
puede ser expandida con el
propsito de proveer diferentes
niveles de abstraccin
sd Overview
:VendingMachine
ref Decomposition
Insert(coin)
RejectCoin()
:User
sd Decomposition
:Detector
:Controller
RejectCoin()
create
Insert(coin)
ValidateCoin()
UML2.0: Facilidad para factorizar comportamientos comunes / alternativos
Evita duplicacin de
secuencias repetitivas
Mayor consistencia con la
definicin de flujos
obligatorios y opcionales
declarados en el caso de uso
sd BuyScenario
:VendingMachine :User
Display(price)
ref
ChooseProduct
ref
ValidateCoin
UML2.0: Facilidad para composicin estructural
La clase como una entidad stand-alone con interfaces requeridas y provistas
VendingMachine
Display
InsertCoin
Interface
Requerida
Interface
Provista
UML2.0: Facilidad para composicin estructural
Una misma clase con diferentes comportamientos
Cada comportamiento representa un puerto de acceso a la clase
El puerto actua como un nico punto de interaccin de la clase
Detector InsertCoin
CoinControl,
Counter
Maintenance
port composite port
pCtrl
UML2.0: Facilidad para composicin estructural
Permite descomposicin jerrquica de la clase
Los conectores son utilizados como asociaciones contextuales
VendingMachine
InsertCoin
Display
:Detector
Connector
Part Class
:Counter
:Controller
InsertCoin
pCtrl Counter
CoinControl
Display
Framework para Descripcin de Arquitectura, basado en vistas lgicas y fsicas UML y una vista funcional de casos de uso.
Process View Deployment View
Logical View
Use-Case View
Implementation View
End-user
Functionality
Programmers
Software management
Performance
Scalability
Throughput
System integrators
System topology
Delivery, installation
communication
System engineering
Analysts/Designers
Structure
El modelo de arquitectura de UML: 4+1 vistas
MDA UNA PROPUESTA DE
ARQUITECTURA
ALREDEDOR
DE LOS MODELOS
La promesa de MDA (Model Driven Architecture)
Del desarrollo basado en cdigo a desarrollo basado en modelos
From: Automating Software Development with UML 2.0, Cris Cobryn
Vista general de MDA
Quin lidera la iniciativa de MDA?
El grupo OMG (Object Management Group)
MDA: The new OMG baby
Nueva orientacin de las actividades de la OMG
Ms all de las propuestas de middleware (CORBA)
Influenciado por la amplia aceptacin de UML
Estndares que ha impulsado la OMG Meta Object FacilityTM (MOF)
Unified Modeling LanguageTM (UML)
Common Warehouse MetamodelTM (CWM)
XML Metadata InterchangeTM (XMI)
ARQUITECTURA DE UML DE CUATRO NIVELES (OMG)
the MOFMMM
the UMLMM
a UMLmodel m
a particularuse of m
the SPEMMM
the CWMMM
another UMLmodel m
anotheruse of m
Level M3
Level M2
Level M1
Level M0
EBNF
the Pascalgram
mar
a Pascalprogram
Pan execution
X of
program P
Arquitectura de UML de cuatro niveles (OMG): Ejemplo
Estructura de extensin de los lenguajes
El proceso de transformacion
La transformacin es la generacin automtica de un modelo fuente en un modelo objetivo, de acuerdo a unas definiciones de transformacin
Una definicin de transformacin esta conformada por un conjunto de reglas que describen como el modelo en el lenguaje fuente puede ser transformado en un modelo en el lenguaje destino
Una regla de transformacin es una descripcin de uno o ms constructores en el lenguaje fuente que pueden ser transformados en uno o mas constructores en el lenguaje destino
El proceso de transformacin
El proceso MDA: 1. Construccin del CIM
Modelo
Independiente
de
la Computacin
Modelo que representa
la semntica del
negocio
El proceso MDA: 2. Transformacin de CIM a PIM
El modelo representa funcionalidad y comportamiento sin detalles de la tecnologa,
Modelo
Independiente
De
Plataforma
Modelo detallado con
Pre y Post en (OCL) y
con semantica de
comportamiento
(Action Semantic)
CIM
El proceso MDA: 3. Probar PIM
Modelo
Independiente
De
Plataforma
Entorno de
Animacin del
Modelo
CIM
El proceso MDA: 4. Definir reglas de transformacin
Modelo
Independiente
De
Plataforma
Entorno de
Animacin del
Modelo
CIM
Reglas de
Transformacin
PIM - PSM
El proceso MDA: 5. Marcar el modelo
Modelo
Independiente
De
Plataforma
Entorno de
Animacin del
Modelo
CIM
Reglas de
Transformacin
PIM - PSM
+ Marcas para
transformacin
El proceso MDA: 6. Generar PSM (Platform-Specific Model)
Platform-
Independent
Model
Mapear PIM a
tecnologa de
middleware especfica CORBA
Model
Entorno de
Animacin del
Modelo
CIM
+ Marcas para
transformacin
El proceso MDA: 6. Mapear a mltiples tecnologas
Platform-
Independent
Model
CORBA
Model
MDA tool applies an standard mapping to generate Platform-Specific Model (PSM) from the PIM. Code is partially automatic, partially hand-written.
Java/EJB
Model
XML/SOAP
Model
Other
Model
Map a PIM to Many
Middleware
Technologies via OMG
Standard Mappings
El proceso MDA: 7. Generacin de cdigo
Platform-
Independent
Model
CORBA
Model
Las herramientas MDA generar la mayor parte del cdigo en la tecnologa especfica
Java/EJB
Model
CORBA
XML/SOAP
Model
Java/EJB XML/SOAP Other
Other
Model
Map PSM to application
interfaces, code, GUI
descriptors, SQL
queries, etc.
El proceso MDA: 8. Integrar aplicaciones legado y COTS
Platform-
Independent
Model
Legacy
App
Las herramientas MDA para ingeniera reversa apoyan el proceso de integracin de aplicaciones legado
COTS
App
Other
Other
Model
Reverse-engineer
existing application
into a model and
redeploy.
El proceso MDA: 9. Generacin de adaptadores (bridges)
CORBA
Model
XML/SOAP
Model
Platform-
Independent
Model
CORBA
System
XML/SOAP
System Interop
Bridge
MDA Tools
combine
application and
platform
knowledge to
generate bridges
Herramientas MDA
Herramientas MDA (Libres)
UMT - (UML Model Transformation Tool
Model Transformation Framework (MTF)
open Architectureware Eclipse plugin
iQgen 2.0
Metadata Transformer/Generator (MTG)
Motion Modeling
The ATL Engine
MTL Engine
ModFact
Generative Model Transformer (GMT) (Surge OMELET)
Kent Modelling Framework (KMF)
AndroMDA
OpenMDX
JunoMDA
Herramientas MDA (Comerciales)
ArcStyler
MCC (Model Component Compiler)
Codagen Architect
OptimalJ
Xactium XMF Mosiac
SosyInc Modeler and Transformation Engine
Model-in-Action
Clasificacin de soluciones existentes
De modelo a cdigo Visitor based: mecanismo para recorrer la representacin interna del modelo y generar el
cdigo (Ej. Jamda) Template based: (Ej: b+m Generator Framework, JET, FUUT-je, Codagen Architect,
AndroMDA, ArcStyler, OptimalJ and XDE)
De modelo a modelo direct-manipulation: Generalmente implementadas como framework OO como una
estructura para organizar las transformaciones (Ej: jamda, jmi) Relational:Aproximaciones declarativas basadas en relaciones matemticas utilizando
lenguajes lgicos (ej: F-Logic) graph-transformation-based: Se utilizan grafos para expresar en un nico formalismo los
diferentes modelos (Ej:VIATRA, ATOM, GreAT, UMLX, and BOTL) structure-driven: Realiza la transformacin en dos fases: en la primera fase se crea la
estructura jerrquica del modelo destino y en la segunda fase se actualizan las propiedades y referencias en el modelo destino (ej: OptimaJ, IOPT). Practica para transformacin a plataformas como J2EE
hybrid approaches. Combinan diferentes tcnicas de las categoras anteriores (Ej: TRL combina aproximacion declarativa e imperativa; ATL puede ser completamente declarativa, hbidra o totalmente imperativa)
transformacin utilizando XSLT. Dificultades: baja escalabilidad, dificultad para escribir las reglas de transformacin
Jamda, XDE, OptimalJ permite ambas transformaciones
Conclusiones Finales
Conclusiones
La arquitectura como estrategia para enfrentar la complejidad de los sistemas actuales
Las actividades alrededor de la arquitectura deben integrarse al proceso de desarrollo
UML2.0 provee facilidades para definicin de la arquitectura
MDA como enfoque de desarrollo donde los modelos son los constructores de primera clase
Preguntas
Para la Prxima Clase
Tema a Tratar: - Evaluacin Final
Recommended