Lucasianlabs.ujaveriana.mnaranjo.def Arquitectura.ver1.6.0
-
Upload
salazarviktor -
Category
Documents
-
view
39 -
download
0
description
Transcript of Lucasianlabs.ujaveriana.mnaranjo.def Arquitectura.ver1.6.0
Fundamentos de Definicin de Arquitectura en RUP, IFM y SunTone AMMauricio NaranjoChief Software Architect www.lucasian.comThe Software Architecture And Engineering Company1
ObjetivosEsta presentacin introduce: Conceptos de arquitectura de software y su importancia Definiciones de Calidades Sistmicas El rol del arquitecto Fundamentos de Definicin de Arquitectura en Procesos de Desarrollo Lecciones aprendidas en consultora de arquitectura y diseo de aplicaciones J2EE
2
Fundamentos de Definicin de ArquitecturaAgenda Parte 1 - Fundamentos de Arquitectura de Software Que es arquitectura de software? Cual es el rol de arquitecto? Calidades Sistmicas
Parte 2 Conceptos de Definicin de Arquitectura Rational Unified Process (RUP) Suntone Architecture Methodology (AM) Iterative Founding Method3
Arquitectura de SoftwareQue es una arquitectura?No estamos seguros, pero la reconocemos cuando vemos una IEEE-1471-FAQ
4
Arquitectura de Software Software Architecture in IEEE 1471 Practice - Kazman 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.La estructura de estructuras de un sistema, la cual abarca componentes de software, propiedades externas visibles de estos componentes y sus relaciones.
El objetivo de esta definicin es que la arquitectura de software debe abstraer alguna informacin del sistema y an proveer suficiente informacin para ser la base del anlisis, toma de decisiones y lograr la reduccin de riesgos.5
Arquitectura de Software Rational Unified Process SUN SL-425: Architecting and Designing J2EE Applications Arquitectura es la estructura de los componentes ms Arquitectura se refiere a la significativos de un sistema representacin abstracta de los interactuando a travs de componentes de un sistema y interfaces con otros su comportamiento. componentes conformados por componentes sucesivamente La arquitectura no contiene detalles de implementacin. pequeos e interfaces.
6
Arquitectura de SoftwareQue es un Proceso de Arquitectura?Rational Unified Process: Secuencia de actividades que conllevan a la produccin de artefactos arquitectnicos: Descripcin de arquitectura Prototipo arquitectnico
7
Por que es importante definir una arquitectura?Premisa Las arquitecturas de los sistemas, existen indiferente si han sido definidas formalmente o no. Dos factores primarios en la ingeniera de software que han incrementado la importancia de la arquitectura:
8
Evolucin de ArquitecturasAplicaciones 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 SQLsAlta administracin Bajo rendimiento Alto trfico de red Baja accesibilidad
Presentacin Lgica negocio Persistencia
Presentacin Lgica de negocio
Persistencia9
Evolucin de ArquitecturasArquitectura Cliente-Servidor Mejorada Clientes pesados, no estndar. Conexiones dedicadas a la BD. Lgica de negocios en BD Mejora en rendimiento Alta administracin Baja escalabilidad Baja flexibilidad Baja portabilidad Aplicaciones 3 niveles
Reutilizacin de lgica de negocio para diferentes clientes o sistemas. Mejora la escalabilidad. Mejora la flexibilidad. Independencia de la base de datos.Servidor de Aplicaciones
Clientes GUI semi-livianos
Base de Datos
PresentacinClientes GUI Semilivianos
Procedimientos Almacenados
Negocio (EJB, CORBA, COM+)10
Evolucin de ArquitecturasAplicaciones N-niveles (clientes livianos)Clientes livianos 100.000+ Web Server Servidor de Aplicaciones Database Servers
Despliegue de contenido
Presentacin
Lgica de negocios
Bajo costo de administracin de clientes. Alta accesibilidad. Alta flexibilidad. Alta disponibilidad y tolerancia a fallos. Alta escalabilidad. Independencia de DB11
Evolucin de Arquitecturas Situacin actual de Sistemas Empresariales Las empresas necesitan agilidad en su negocio: Requerimientos cambian continuamente. Implementacin de nuevos programas o servicios para atraer o retener clientes. Requieren unificar, refina y medir sus procesos de negocio
Requieren que su infraestructura de IT se pueda adaptar al cambio, se flexible y tener libertad de escoger nuevas tecnologas o productos en una relacin costo beneficio.12
Evolucin de ArquitecturasProcesos fragmentados Aplicaciones publicadas en diferentes departamentos y unidades de negocios
Como se pueden integrar procesos y datos en una empresa con una relacin costo beneficio efectiva?Como ayuda la arquitectura de software?13
Evolucin de ArquitecturasVisin idealizada de Arquitectura Orientada a Servicios (SOA)Portal de Servicios Integrados Cluster de Servidores de Aplicaciones
Sistema Batch
Requerimientos Arquitectnicos
Base de Datos
Heterogeneidad Servidor de Procesos Escalabilidad (BPM) Aplicaciones Disponibilidad Legadas Distribucin Manejabilidad de Procesos Administracin y monitoreo de procesos, servicios e infraestructura14
Que es un Arquitecto de Software? Rational Unified ProcessArquitecto es un rol en un proyecto de desarrollo de software el cual tiene las siguientes responsabilidades: 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.
15
Arquitectura Vs. DiseoDiscusin Existe alguna diferencia entre arquitectura y diseo de software?
16
Arquitectura Vs. Diseo La arquitectura y el diseo difieren en tres reas:Arquitectura DiseoBajo nivel. Enfoque especfico en detalles Diseo detallado componentes, Especificaciones de codificacin
Nivel de Abstraccin Entregables
Alto nivel Planear subsistemas, interfaces con sistemas externos, servicios horizontales, frameworks, componentes reutilizables, prototipo arquitectnicoSeleccin de tecnologas, Requerimientos no funcionales (QoS), Manejo de riesgos
reas de Enfoque
Requerimientos funcionales
17
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.
Cdigo Implementacin
Diseo
Arquitectura
Las decisiones de arquitectura son las decisiones ms fundamentales, por lo tanto, cambiarlas ocasiona efectos significativos.
18
Artefactos de ArquitecturaRational Unified Process:En el proceso de definicin de arquitectura se producen: Arquitectura Inicial. Arquitectura de Referencia. Documento de Descripcin de arquitectura (SAD): Subsistemas Componentes Arquitectura Runtime. Guas para el proyecto y estndares de Diseo.
SunTone AM:Adicionalmente se producen: Matriz Tecnolgica de Layers y Tiers Template de Arquitectura
19
Evaluacin de TecnologasDiscusin Es importante para el arquitecto tener experiencia en evaluacin de tecnologas? Si es as por que?
20
Evaluacin de Tecnologas Beneficios de las habilidades del arquitecto para evaluacin de tecnologas en proyectos: Aceptacin. Conseguir la aceptacin de los participantes del proyecto sustentando sus recomendaciones y decisiones con un buen nivel de fundamentacin. Uso adecuado. Asegurar el uso apropiado de las tecnologas por los miembros del equipo.
Un Arquitecto es un facilitador y lder. No toma decisiones unilaterales, irracionales. Evita riesgos en los proyectos, agrega valor.21
Control de RiesgosDiscusin Por que fallan usualmente los proyectos?
22
Control de RiesgosQuiz Una tienda virtual que vende juguetes no puede manejar la carga de usuarios por su alta demanda y sale de lnea: Dos semanas antes de navidad Despus de una campaa de 20 Millones de USD. La expansin de capacidad tomar 6 semanas. Cual es su diagnstico respecto a la situacin? Los problemas que tiene esta aplicacin son funcionales? Estn asociados a su arquitectura, diseo o implementacin?
23
Control de Riesgos La calidad de servicio (QoS = Quality Of Service) es un riesgo primario relacionado con la arquitectura.
El manejo inadecuado de los requerimientos no funcionales, es una de las fuentes ms importante de riesgo en los proyectos: Reglas de negocio de alta complejidad. Calidades sistmicas Seguridad Rendimiento Escalabilidad Disponibilidad Extensibilidad24
Calidades SistmicasDefinicin Familias de Calidades Sistmicas
Son propiedades que establecen la calidad de servicio (QoS) que Manifiestas (Manifiest). un sistema expone. Operacionales (Operational). Son globales a toda la Desarrollo (Developmental). arquitectura e influencian el diseo. Evolutivas (Evolutionary). Son no-funcionales pero observables. No se pueden satisfacer completamente por un componente.25
Calidades SistmicasCalidades Manifiestas (Manifest) Observables por los usuarios del sistema. Performance. Tiempo de respuesta desde el punto de vista del usuario. Reliability. Grado de probabilidad de realizar operaciones correctamente. Availability. Porcentaje de tiempo que un sistema puede procesar solicitudes.
26
Calidades SistmicasCalidades Manifiestas (Manifest) Observables cuando el sistema est operando en produccin: Throughput. Solicitudes atendidas por unidad de tiempo. Manageability. Cantidad inversa de esfuerzo para realizar labores administrativas. Serviceability. Esfuerzo para actualizar el sistema para reparar errores. Security. Prevencin de uso indeseado, por abuso o uso inapropiado: Identidad Autoridad Confidencialidad Auditabilidad Integridad
Testability. Esfuerzo invertido para detectar y aislar errores.27
Calidades SistmicasCalidades Evolutivas (Evolutionary)Relacionadas con el comportamiento del sistema cuando es actualizado.
Escalability. La habilidad para Reusability. Esfuerzo ganado soportar la calidad de servicio en la utilizacin de requerida conforme la carga componentes existentes. aumenta. Portability. Esfuerzo ahorrado Flexibility. Esfuerzo ahorrado cuando se migra a una cuando se hace un cambio de infraestructura diferente. configuracin. Mantainability. Esfuerzo Extensibility. Esfuerzo ahorrado para revisar y corregir ahorrado para adicionar nuevas errores de diseo. funcionalidades.28
Recursos de Arquitectura y DiseoDiscusin Que son los patrones de diseo?
Por que son relevantes para un arquitecto?
29
Recursos de Arquitectura y Diseo Un Patrn describe una solucin probada a un problema recurrente de diseo, el cual ocurre en un contexto.Existen patrones de arquitectura, anlisis y diseo. La definicin de arquitectura requiere un proceso basado en el raciocinio sobre patrones: Un arquitecto reutiliza patrones para definir la estructura y el comportamiento interno y externo de un sistema.
Utilizar patrones de diseo es diferente a disear patrones
30
Recursos de Arquitectura y DiseoCatlogos de Patrones Como arquitecto se debe familiarizar con la mayor cantidad de patrones posibles: Dedique tiempo a los catlogos de patrones. Conozca los patrones que estn disponibles. Adquiera experiencia en el uso de los patrones. Conozca como tipificar los problemas que resuelven los patrones.31
Recursos de Arquitectura y DiseoCatlogos de Patrones Un arquitecto experimentado reutiliza: Arquitecturas de sistemas exitosos. Diseos que han funcionado correctamente en el pasado. Frameworks conceptuales y tecnolgicos. Componentes y libreras.
32
Recursos de Arquitectura y DiseoDiscusin Que es un Framework?
33
Recursos de Arquitectura y DiseoDefinicin de Framework Es un subsistema de software parcialmente construido, de propsito general para un tipo especfico de problema, el cual debe ser instanciado para resolver un problema particular. Caractersticas Define la arquitectura para una familia de subsistemas Provee bloques bsicos de construccin y adaptadores. Tpicamente un framework se construye a partir de patrones de diseo. El framework impone patrones de diseo para su uso.34
Recursos de Arquitectura y DiseoEjemplos de FrameworksTecnolgicos Struts y Java Server Faces (JSF) para Interfaces Web. Log4J para auditora tcnica o negocios en app. Toplink, Hybernate, ROME para mapeos objeto-relacionales. Enterprise Java Beans para construccin de servicios de negocios. Framework de patrones de diseo para J2EE de Sun Microsystems. Grinder como framework para testing de performance. Conceptuales El Cubo para definicin de arquitecturas. eTom para empresas de telecomunicaciones. RUP como metodologa para definicin de procesos de desarrollo.
35
Mtodos de DesarrolloDiscusin Cuales son los principios fundamentales en los mtodos de desarrollo de software modernos?
36
Mtodos de DesarrolloPrincipios Fundamentales de Mtodos 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.
37
Desarrollo Iterativo e Incremental Compare el costo de hacer correcciones en un desarrollo tradicional, con el costo de hacer correcciones en un desarrollo iterativo.
Desarrollo Tradicional Costo fijo Costo fijo
Desarrollo Iterativo
Tiempo
Tiempo
38
Desarrollo Iterativo e IncrementalRiesgo Riesgo de un proceso en cascadaReduccin de Riesgo
Riesgo de un proceso iterativo
Tiempo
39
Desarrollo Conducido por las Calidades Sistmicas Las calidades sistmicas son requerimientos no funcionales, los cuales definen la calidad de servicio que un sistema expone. Algunos ejemplos: Rendimiento Confiabilidad Escalabilidad Seguridad Las calidades sistmicas impactan directamente la arquitectura de un sistema.
40
Desarrollo Centrado en la Arquitectura4 + 1 View Model Framework de definicin de arquitectura del RUP SunTone AM agrega dos caractersticas importantes a RUP: Un enfoque en las calidades sistmicas El uso de patrones basados en el razonamiento Framework el Cubo:
41
Desarrollo Basado en ModelosDefinicin Los modelos son mecanismos primarios de comunicacin entre todos los participantes de un proyecto de software. Reflejan un aspecto particular de un sistema y abstraen detalles no relevantes.Tipos Documentos de texto Diagramas UML Prototipos Objetivos Comunicacin Resolver Problemas Pruebas de ConceptoAplicacin
Negocios
Middleware
Sistema
42
Definicin de Arquitectura en RUP Proceso de Desarrollo Unificado
43
Definicin de Arquitectura en RUPFase de Inicio Durante la fase de inicio se establece: Requerimientos no-funcionales. Arquitectura inicial, la cual se considera viable para el proyecto. Lista de Riesgos y Restricciones.
Entregables: Documento de Visin Arquitectura Inicial Plan de la siguiente fase
44
Definicin de Arquitectura en RUPFase de Elaboracin Durante esta fase se crean: Arquitectura lnea base. 80% de los requerimientos del sistema. Plan de iteraciones para la fase de construccin. Entregables: Requerimientos del Sistema. Documento de Definicin de Arquitectura. Prototipo evolutivo de arquitectura. Guas y Estndares. Plan de Iteraciones.
45
Definicin de Arquitectura en RUPModelo de Vista 4+1 Framework para Descripcin de Arquitecturas del Rational Unified Process (RUP), basado en vistas lgicas y fsicas UML y una vista funcional de casos de uso.
Logical View
Implementation View
Analysts/Designers Structure
End-user Functionality
Programmers Software management
Use-Case View
Process ViewSystem integrators Performance Scalability Throughput
Deployment ViewSystem engineering System topology Delivery, installation communication
46
Definicin de Arquitectura en RUP[Early Elaboration Iteration] [Inception Iteration (Optional)]
Architecture Analysis
Architect
Define a Candidate Architecture
Perform Architectural Synthesis
Describe the Run-time Architecture Architect
Analyze Behavior (Optional)
Refine the Architecture
Describe Distribution Define Components Design the Database
47
Definicin de Arquitectura en SunTone AM SunTone AM es una metodologa de desarrollo de software anloga al Unified Process (UP), con un fuerte nfasis en las calidades sistmicas y patrones de diseo. Tiene un framework conceptual, el cubo, el cual provee una vista tridimensional de: Tiers lgicos Layers tecnolgicos Calidades sistmicas
Con el cubo se puede definir la matriz tecnolgica de Layers y Tiers, la cual documenta las decisiones tecnolgicas para soportar la arquitectura de un sistema.48
Definicin de Arquitectura en SunTone AMTiers LayersAplicacin Plataforma Virtual Plataforma Superior Plataforma Inferior Transporte
S S E R C C A E A U P V L L E A R I A R I I A B F L T B I O A Y I L R B L I M I I T A L T Y N I Y C T E Y49
Definicin de Arquitectura en SunTone AM
Cliente
Presentacin
Negocios
Integracin
Recursos
-
Estabilidad Volatilidad
+ 50
+
Definicin de Arquitectura en SunTone AMLayersCliente Aplicacin Presentacin
TiersNegocios Integracin Recursos
Plataform a Virtual Plataform a Superior
Plataform a Inferior Red
51
Definicin de Arquitectura en SunTone AMLayersCliente Aplicacin HTML Java Script Presentacin Java Servlets JSPs Servlets 2.1 JSPs 1.1 Web Browser Apache 1.3.x, Tomcat 4.x MySQL
TiersNegocios POJO Integracin DAO Recursos Tablas
Plataform a Virtual Plataform a Superior
Plataform a Inferior Red
Independiente HTTP
Linux JDBC
POJO: Plain Old-Style Java Object
52
Definicin de Arquitectura en SunTone AMLayersCliente Aplicacin HTML Java Script Presentacin JSPs ActionForms, Actions Struts 1.x Servlets 2.1 JSPs 1.1 Web Browser Apache 1.3.x Tomcat 4.x
TiersNegocios Session Beans EJB 2.0 Integracin DAO Recursos Tablas
Plataform a Virtual Plataform a Superior
JBOSS
Oracle DB
Plataform a Inferior Red
Independiente HTTP RMI/IIOP
Linux JDBC
53
Definicin de Arquitectura en SunToneFundamentos La arquitectura es primariamente necesaria para crear un framework para el desarrollo basado en patrones y para la entrega de calidades sistmicas predecibles.Presentation Action Factory Business Integration Business Database Integration
Business Delegate Action Session Facade Front Controller View JSF Components Service Locator Value Object Composite Entity
DAO Factory
Oracle DAO Factory
DAO OracleDAO
54
Definicin de Arquitectura en Iterative Founding MethodDefinicin Metodologa con un enfoque de retorno a la inversin (ROI) informado, en el cual el software es desarrollado y puesto en produccin, en trozos de funcionalidades que agregan valor al usuario, cuidadosamente priorizados, llamados MMFs (Minimum Marketable Features). IFM integra actividades de ingeniera de software, con estrategias financieras de administracin de proyectos. Descompone la arquitectura en elementos arquitectnicos (AEs).55
Definicin de Arquitectura en Iterative Founding MethodPrincipios Arquitectnicos El proceso de creacin de arquitectura, debe ser un proceso de creacin de valor. Descompone la arquitectura en elementos arquitectnicos (AEs). Disminuye los costos de implementacin de los AEs en un modelo de secuencia. Crea la arquitectura de software incrementalmente acorde a un proceso secuencial dirigido por el retorno a la inversin (ROI).Primer principio arquitectnico: Difiera la solucin de cualquier conflicto arquitectnico, hasta el momento en que la decisin sea necesaria.56
Definicin de Arquitectura en Iterative Founding MethodDefinir arquitectura candidata Evaluar Req. No Funcionales (NFR) Refinar y Seleccionar la Arquitectura Prototipar la Arquitectura Medir Calidades Sistmicas Ajustar Arquitectura57
La codependencia de la Arquitectura en procesos tradicionales.
Definicin de Arquitectura en Iterative Founding MethodAE 1 AE 3 AE 7 AE 8 AE 2
Dependencias arquitectnicas en IFM. La instanciacin de los elementos arquitectnicos (AEs) se realiza incrementalmente acorde a la secuencia de MMFs, determinada por el ROI.AE 7 AE 8
MMF A
MMF B
MMF C
58
Conclusiones y RecomendacionesRespecto a la arquitectura de software La Arquitectura aborda la problemtica de ms alto nivel de los proyectos, es crtica debido al alto riesgo de los proyectos actuales por su escala, distribucin y complejidad. La arquitectura determina la estructura general de un sistema, la cual debe satisfacer la calidad de servicio requerida, mitigar riesgos. Las decisiones de arquitectura restringen el diseo y la implementacin de un proyecto.
Respecto al arquitecto
Es un rol crtico en los proyectos, se focaliza en la calidad de servicio y lidera el proceso de definicin y la implementacin de la arquitectura. El arquitecto reutiliza arquitectura exitosas, frameworks y patrones de diseo. No es un diseador en un proyecto.
Respecto al Proceso de Definicin de Arquitectura
El proceso de definicin de arquitectura debe ser un proceso incremental de creacin de valor. Defina solo los entregables necesarios para definir la arquitectura acorde a las necesidades y trace la estrategia adecuada.59
Preguntas y Respuestas
60
Fundamentos de Definicin de Arquitectura en RUP, IFM y SunTone AMMauricio NaranjoChief Software Architect [email protected] Software Architecture And Engineering Company61