lucasianlabs.ujaveriana.mnaranjo.def arquitectura.ver1.6.0

61
1 Fundamentos de Fundamentos de Definición de Definición de Arquitectura en Arquitectura en RUP, IFM y SunTone AM RUP, IFM y SunTone AM The Software Architecture And The Software Architecture And Engineering Engineering Company Company Mauricio Naranjo Mauricio Naranjo Chief Software Architect www.lucasian.com

Upload: salazarviktor

Post on 02-Aug-2015

39 views

Category:

Documents


0 download

DESCRIPTION

ggg

TRANSCRIPT

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