29
1 Arquitectura de Software V: Prácticas Hernán Astudillo Departamento de Informática Universidad Técnica Federico Santa María <hernan at acm.org> Sesión 05 Arquitectura de Software - H.Astudillo 2 Contenido del curso Introducción, motivación y contexto Representación de arquitecturas Elaboración de arquitecturas Principios y evaluación de arquitecturas Prácticas de arquitectura Políticas y Mecanismos Re-visitando un ejemplo complejo Componentes y Organizaciones Terminología de Mercado • Estandarización La profesión Enseñando Arquitectura de Software P P P P

Arquitectura de Software V: Prácticas - inf.utfsm.clhernan/cursos/MII414-2004s2/bitacora/... · 2 Sesión 05 Arquitectura de Software - H.Astudillo 3 V: Prácticas de arquitectura

Embed Size (px)

Citation preview

1

Arquitectura de SoftwareV: Prácticas

Hernán AstudilloDepartamento de Informática

Universidad Técnica Federico Santa María<hernan at acm.org>

Sesión 05 Arquitectura de Software -H.Astudillo

2

Contenido del curso– Introducción, motivación y contexto– Representación de arquitecturas– Elaboración de arquitecturas– Principios y evaluación de arquitecturas– Prácticas de arquitectura

• Políticas y Mecanismos• Re-visitando un ejemplo complejo• Componentes y Organizaciones • Terminología de Mercado• Estandarización• La profesión• Enseñando Arquitectura de Software

PPPP

2

Sesión 05 Arquitectura de Software -H.Astudillo

3

V: Prácticas de arquitectura• Políticas y mecanismos• Re-visitando un ejemplo complejo• Componentes y organizaciones• Terminología del mercado• Estandarización• La profesión• Enseñando Arquitectura de Software

Políticas y mecanismos

3

Sesión 05 Arquitectura de Software -H.Astudillo

5

Políticas y mecanismos• Idea:

– identificar y separar “dimensiones”• Fundamento teórico

– Diferentes niveles de abstracción– Ejecutar (“realize”) políticas con mecanismos disponibles

Sesión 05 Arquitectura de Software -H.Astudillo

6

Ejemplo: e-mail• Descripción del proceso:

– Escritor de correo prepara mensaje en cliente, y envía al lector, quien lee el mensaje en su cliente de correo

– Implementación conocida por nosotros: vía Internet– Modelo: caso de uso, diagrama de secuencia, etc.

• Nuestro interés: refinar el modelado de la comunicación• Dimensiones de interés de la comunicación (en este ejemplo):

– Sincronía: síncrona vs. asíncrona– Entrega: “push” vs. “pull”– Topología: “broadcast” vs. “multicast”

4

Sesión 05 Arquitectura de Software -H.Astudillo

7

e-mail: Sincronía [1/2]• Modelo informal

– 2 personas – asíncronos – 2 clientes idem

– versión Internet:• Clientes y servidores entre sí: TCP/IP síncrono

– versión con filas:• Clientes y servidores entre sí son asíncronos

Sesión 05 Arquitectura de Software -H.Astudillo

8

e-mail: Sincronía [2/2]• Interesante: al refinar versión Internet...

– TCP/IP “realizado” por paquetes asíncronos

5

Sesión 05 Arquitectura de Software -H.Astudillo

9

e-Mail: Entrega [1/2]• Modelo informal

– usos:• “push”: entrega cuando el enviador quiere• “pull”: entrega cuando el receptor quiere

receiversender

push

pull

toma

me de

Sesión 05 Arquitectura de Software -H.Astudillo

10

e-Mail: Entrega [2/2]• Modelo UML

– (hacer in situ)

6

Sesión 05 Arquitectura de Software -H.Astudillo

11

e-mail: Topología [1/2]• Modelo informal

– “multicast” vs. “broadcast”– (1:M especificados) vs. (1:todos en la red)

Sesión 05 Arquitectura de Software -H.Astudillo

12

e-mail: Topología [2/2]• Disonancia cognitiva

– “Multicast” puede ser implementado con “broadcast”• Receptores que no debían escuchar ignoran el mensaje• Requiere cambio en cada receptor

– “Broadcast” puede ser implementado con “multicast”• Mantener catálogo de escuchadores• Necesita cambio en cada receptor y catálogo

• Moraleja– Mala opción inicial de política no impide buena solución– Pero requiere trabajo adicional (tal vez sustancial)

7

Sesión 05 Arquitectura de Software -H.Astudillo

13

Resumiendo• Distinguir “políticas” y “mecanismos”

– roles en un proceso/descripcion de refinamiento• Una solución que es mecanismo en un nivel de abstracción es

política en el nivel inferior– (política y mecanismo son roles en una relación entre elementos

de diferentes niveles de abstracción)• En general, una implementación puede ser documentada pero

no computada– UML: «trace», «derive»

Componentes y organizaciones

8

Sesión 05 Arquitectura de Software -H.Astudillo

15

Escalas de arquitectura• Arquitectura de aplicaciones

– aplicación o sistema (colaboración de aplicaciones)• Arquitectura de línea de productos• “Framework” para un dominio• Arquitectura de referencia

– definen vocabulario y permiten intercambio ínter-organizacional– CORBA, .NET...

Sesión 05 Arquitectura de Software -H.Astudillo

16

Componentes• Componente [Whitehead]

– Pieza separable (independiente del contexto) de software ejecutable

– ...que tiene sentido como unidad– ...y puede interoperar con otros componentes– ...dentro de un ambiente de apoyo– ...y es accesable sólo vía sus interfaces– ...y está listo para usar (posiblemente requiriendo instalación y

configuración)• Fuentes de componentes

– Dominio (entidades, propiedades...)– Interfaces– Capas de abstracción (“máquinas virtuales”)– Instanciaciones de arquetipos

9

Sesión 05 Arquitectura de Software -H.Astudillo

17

Interoperabilidad• Problema: cooperación entre componentes

– Número exponencial de pares• Se complica al introducir más de una tecnología• Mecanismos estandarizados para describir interfaces

– CORBA IDL– COM IDL

– Interoperabilidad entre tecnologías• “Modelos de componentes”• COM, CORBA, EJB• “Wrappers” (envoltorios)

– Servicios• Propiedades transaccionales• Manejo de seguridad• Monitoreamiento

Sesión 05 Arquitectura de Software -H.Astudillo

18

Modelos de componentes [1/3]• Modelos de componentes distribuidos (clientes y servidores)

– COM: Common Object Model (Microsoft; en .NET)– CORBA: Common ORB Architecture (OMG: Object Management

Group)• ORB: Object Request Broker

– Java (Sun, JCP)• Modelos extendidos para mejor apoyar servidores

– MTS (Microsoft Transaction Service)– CCM (CORBA Component Model)– EJB (Enterprise Java Beans)

• J2EE (Java 2 Enterprise Edition)

10

Sesión 05 Arquitectura de Software -H.Astudillo

19

Modelos de componentes [2/3]• Modelos extendidos con soporte adicional

– Manejo transaccional– Seguridad– Persistencia– Disponibilidad

• “Clustering”, balanceo de carga– Ambiente de ejecución

• Ciclo de vida (instanciación, GC...)• “Threading”• “Pooling” de conexiones• Manejo de estado

– Monitoreamiento dinámico

Sesión 05 Arquitectura de Software -H.Astudillo

20

Modelos de componentes [3/3]• Servicios

– “Location” (ubicación)• detección de componentes/servicios; análogo a guía telefónica• JNDI (Java Naming & Directory Interface)• CORBA Naming Service & Trading Service

– Manejo de transacciones• autenticación, autorización, inviolabilidad, no-repudiación• CORBA Security Service• JAASL Java Authentication & Authorization Service

– Eventos, notificaciones & mensajería• Mensajes asíncronos, point-to-point & publish-subscribe• CORBA Notification (& Event) Services, Messaging Service• JMS: Java Messaging Service

11

Sesión 05 Arquitectura de Software -H.Astudillo

21

Organizaciones para arquitectura• ¿Quién es responsable de hacer/gestionar arquitectura?

– Idea: asociar escalas de arquitectura a niveles de la organización

• [Jacobson/Griss/Jonsson] 3 niveles:– Empresa– Departamento (unidad)– Proyecto

• “Se delega autoridad, pero no responsabilidad”– Estandarizar vía lenguaje compartido

• arquitectura de referencia• patrones y estilos

Sesión 05 Arquitectura de Software -H.Astudillo

22

Organizaciones para componentes• Problema: propiedad y control de componentes

– Pueden no calzar con las unidades organizacionales– Control de cambios– Redundancia

• Soluciones– Reestructurar la organización– Imponer propiedad y/o factorización– “Mercado interno” de componentes

• Decidir quién paga el costo de hacer casos generales• Decidir quién paga cambios específicos• Decidir modelo de propagación de cambios a los afectados

– Propiedad: unidades de negocio vs. centralizada

12

Terminología de mercado

Sesión 05 Arquitectura de Software -H.Astudillo

24

“2 Capas”• 2 capas: “cliente-servidor”• Razón: concentrar recursos escasos en servidores

centralizados– Redundancia mínima– Rendimiento puede sufrir– Autonomía mínima

13

Sesión 05 Arquitectura de Software -H.Astudillo

25

“3 capas”• 3 capas

– Razón: compartir datos, preservando integridad (ACID)– “Negocio”: procesamiento propio del negocio– 2 partes: objetos de negocio (entidades del dominio) y lógica de

control (funciones)– “Presentación”: interacción con usuarios (incl. informes) y otros

sistemas– “Datos”: manejo de datos persistentes (incl. integridad)

Sesión 05 Arquitectura de Software -H.Astudillo

26

“4 capas”

14

Sesión 05 Arquitectura de Software -H.Astudillo

27

“4 capas” (Cont.)• “Usuario”: mecanismos de interacción con usuarios y otros

sistemas• “Workspace”: manejo de sesiones y transacciones• “Negocio” (empresa): procesos y entidades del negocio• “Recursos”: elementos únicos compartidos (BD, sistemas

legado, servicios)

Sesión 05 Arquitectura de Software -H.Astudillo

28

Productos• Categorías de productos

– Empaquetados por tipo de problema y tipo de solución• Tipos de solución: tecnologías

– “Middleware”– MOM, BD, “directory servers”, TP Monitors, “workflow”...

• Tipos de problemas: servicios del negocio– Paquetes– ERP (Enterprise Resource Planning), CRM (Customer

Relationship management) y variaciones, Knowledge Management...

15

Sesión 05 Arquitectura de Software -H.Astudillo

29

Middleware• “Middleware”: tecnologías para comunicar programas

distribuidos• Britton propone clasificar middleware usando 8 aspectos de

la comunicación– Transporte (enlace) (ej: TCP/IP)– Protocolo (ej: HTTP)– API (ej: ODBC)– Formato (ej: ASCII)– Control de recursos en el servidor (ej: MTS)– Directorios/nombres (ej: DNS)– Seguridad (ej: Kerberos)– Administración

Sesión 05 Arquitectura de Software -H.Astudillo

30

Middleware - Dimensiones• Participantes en la comunicación

– programas/objetos cada vez más pequeños y numerosos– IP (hardware), TCP (procesos), IIOP (objetos)

• Modo de comunicación– sesiones: protocolos con o sin ellas

• TCP (IP con sesión), UDP (IP sin sesión)– topología: 1:M, peer-to-peer, M:1– iniciador: push, pull– integridad vs. puntualidad (“timeliness”)

• Interfaz– con API: número fijo de entradas– con IDL: mecanismo para definir API ad-hoc

16

Sesión 05 Arquitectura de Software -H.Astudillo

31

Servicios Web• Integración usando infraestructura Web/Internet• Aspectos

– Transporte– Formato– Búsqueda

• Soluciones empaquetadas (aún en desarrollo)– “Web services”

• SOAP (Simple Object Access Protocol): HTTP + XML• WSDL (Web Service Description Language)• UDDI (Universal Description, Discovery and Integration)

– REST: Representational State Transfer• HTTP + URL + XML/HTML/GIF/MIME/etc. (sin directorios)

– CORBA: IIOP + “marshalling” + Directory/Trader Service

Sesión 05 Arquitectura de Software -H.Astudillo

32

Catálogos de arquitectura• Catálogos

– Ingenieros tienen catálogos de partes disponibles• con especificaciones de contexto, parámetros...

– Necesarios para centralizar y difundir información• Fundamento teórico propuesto

– Clasificar Middleware• Análisis de dimensiones aún pendiente

– Políticas y mecanismos• Enfoque análogo

17

Estandarización

Sesión 05 Arquitectura de Software -H.Astudillo

34

Estandarización• Vasta cantidad de STLs

– OMG– OMA-RM– MDA– ECA

18

Sesión 05 Arquitectura de Software -H.Astudillo

35

OMG• OMG: “Object Management Group”

– Consorcio industrial (600+ miembros)• Propósitos:

– establecer guías para la industria– crear especificaciones para administración de objetos– proveer un marco común para desarrollar aplicaciones

• OMA: “Object Management Architecture”– infraestructura conceptual para las especificaciones del OMG

• OMA-RM: “OMA Reference Model”

Sesión 05 Arquitectura de Software -H.Astudillo

36

OMA-RM [1]• ORB: “Object Request Broker”

– medio transparente para pedidos y respuestas en un ambiente distribuido

– especificación: CORBA– “Common ORB Architecture”

• Servicios de Objetos– servicios (interfaces y objetos) con funciones básicas para

implementar objetos distribuidos– especificación: CORBAservices– ejemplos: Ciclo de Vida, Persistencia

19

Sesión 05 Arquitectura de Software -H.Astudillo

37

OMA-RM [2]• Facilidades Comunes

– servicios comunes pero no fundamentales– especificación: CORBAfacilities– ejemplos: administración, e-mail

• Objetos Aplicaciones– aplicaciones (únicas por definición)

Sesión 05 Arquitectura de Software -H.Astudillo

38

Modelado OMG• Técnicas para desarrollar aplicaciones

– MOF: “Meta-Object Facility”– UML: “Unified Modeling Language”– MDA: “Model-Driven Architecture”

20

Sesión 05 Arquitectura de Software -H.Astudillo

39

MDA [1]• CIM: “Computing Independent Model”

– modelo de negocio• PIM: “Platform Independent Model”

– arquitectura sin referencia a tecnología específica• PSM: “Platform Specific Model”

– arquitectura en términos de una plataforma específica– PM: “Platform Model”

• ISM: “Implementation Specific Model”– arquitectura en términos de una implantación específica

Sesión 05 Arquitectura de Software -H.Astudillo

40

MDA [2]• Idea: a partir de modelos abstractos, refinar a modelos

concretos usando meta -modelos• PM: “Platform Model”

– permite refinar PIM a PSM

21

Sesión 05 Arquitectura de Software -H.Astudillo

41

ECA• ECA: “Enterprise Collaboration Architecture”

– CCA: “Component Collaboration Architecture”• consiste de “Process Components”

– Modelo de Entidades– Modelo de Eventos– Modelo de Proceso de Negocio

• especializa el CCA

La profesión

22

Sesión 05 Arquitectura de Software -H.Astudillo

43

Otros sentidos de “arquitectura” [1]

• Por ámbito:– “Enterprise Architecture”: visión y principios transversales en

la empresa• p.ej. seguridad, flexibilidad, políticas de compra, reuso

– Arquitectura de Dominio: específica a un área– Arquitectura de Línea de Productos: definiciones comunes a

productos (diseño y/o implementación)– Arquitectura de Referencia: vocabulario (estilo y componentes)

para dominios de aplicación

Sesión 05 Arquitectura de Software -H.Astudillo

44

Otros sentidos de “arquitectura” [2]• Por tipo de preocupación:

– Arquitectura de Negocio: estrategias, organización y metas para procesos de negocios

– Arquitectura de Aplicaciones: políticas para y soluciones de software a problemas específicos

– Arquitectura Técnica (o Infraestructura): soluciones generales y/o estandarizadas (redes, plataformas...)

– Arquitectura de Datos (o Información): almacenamiento y manejo de información (propiedad, diseño, métodos...)

23

Sesión 05 Arquitectura de Software -H.Astudillo

45

Metáforas y modelos• Metáfora de arquitecto

– más adecuada: edificio, no casa– justificar preguntas: así como el arquitecto del edificio puede

justificar sus preguntas, debemos poder justificar las nuestras• Calidad de los modelos:

– casas: maquetas (modelos analógicos), levantamientos, planos...– sistemas: vistas, diagramas...

• Apuesta de la disciplina: con el tiempo, nuestros modelos mejorarán– programa 1 de mejoramiento: ADLs– programa 2: vistas– (“programa” de investigación como en filosofía de la ciencia)

Sesión 05 Arquitectura de Software -H.Astudillo

46

*** Teatro Japonés ***• “leer” una performance

– sintaxis: gestos– razones: historia detrás

• criticar• hacer• reflexionar

24

Sesión 05 Arquitectura de Software -H.Astudillo

47

Técnicas del arquitecto [bis]• Problema

– Elaboración concurrente de modelos para múltiples aspectos• Técnicas clave

– Refinamiento• Múltiples niveles de abstracción y completitud

– Descripción en capas• Capas son modelos incompletos, pero comprensibles

– Refinamiento derivable– “Refactoring” (factorización)

Sesión 05 Arquitectura de Software -H.Astudillo

48

La gran “ility”: Rastreabilidad [bis]

• Noción fundamental de arquitectura– Rastreabilidad: propiedad de un modelo que permite relacionar

una decisión con su justificación e implicaciones– Permite estudiar impacto de cambios (forward) y razones para

acción propuesta (backward)• Los modelos deben proveer información

– Refinamiento: explicado o aparente– Niveles de abstracción : mapeables entre sí

• Una buena arquitectura “cuenta una historia”– Explicar no sólo el que y como, sino el porqué– Permite decisiones informadas a futuro

25

Enseñando Arquitectura de Software

Sesión 05 Arquitectura de Software -H.Astudillo

50

Analogías y educación• Analogías desde la industria de construcción

– El arquitecto de software como arquitecto– El diseñador o programador como constructor

• Analogías desde la industria cinematográfica– El arquitecto del proyecto es el director de la película– El jefe del proyecto es el productor de la película

• Formas de educación (y socialización)– En estudios: como los abogados y los arquitectos

• Aprender mirando por encima del hombro– En clínicas: como los médicos

• Aprender en equipo en modo crisis– Pasiva: como los ingenieros

• Cursos teóricos, práctica post-graduación

26

Sesión 05 Arquitectura de Software -H.Astudillo

51

Modelo docente• 4 “niveles de competencia”

– Lectura de arquitecturas• Poder usarlas como guía de acción

– Lectura crítica de arquitecturas• Poder evaluarlas y modificarlas

– Elaboraci ón de arquitecturas• Poder elaborar sistemas y descripciones de ellos

– Reflexión crítica sobre la disciplina• Poder reflexionar más allá de lo operacional• Ojo: no implica ser investigador

• Formatos de entrega– Secuencial vs. iterativo-incremental

• ¿Qué unidades usar?

Sesión 05 Arquitectura de Software -H.Astudillo

52

Formato – modelo aplicado aquí• Estructura de esta charla

– Sólo los 3 primeros niveles• conceptos superficiales (lectura no accionable)

– Entrega secuencial, sin iteraci ón– Nivel de competencia impartido “bottom-up”

• ejemplos someros y recibidos, no elaborados• Algunas técnicas específicas

– “Problematizaci ón” inicial• remover nociones previas, definir lo que no es arquitectura

– Uso de casos• ejemplo seguido con complejidad incremental• diálogo <flujo principal>-<”sidebars”> (introduciendo temas)

• Restricciones clave– tiempo: permitir reflexión– dedicación: audiencia mixta

27

Sesión 05 Arquitectura de Software -H.Astudillo

53

Formatos – modelos para cursos• Relajando restricciones: modelos posibles

– Casos: proyectos desarrollados en paralelo (entrelazados)– Modelo: “aprendiz” (como abogados, médicos, arquitectos)– Disyuntiva: formar arquitectos o investigadores– Casos límite: ¿cuánto tiempo y esfuerzo dedicar?

• Posibles extensiones– Lectura crítica y elaboración: evaluaci ón y comparación

• soluciones alternativas de mercado a problema dado– Reflexión: problemas aún abiertos

• derivación de arquitecturas desde requisitos sistémicos• descripción de políticas, mecanismos, y realización• relación derivación – capas (derivación aparente vs. real)

Conclusión

28

Sesión 05 Arquitectura de Software -H.Astudillo

55

¿Un modelo o un diagrama?

Sesión 05 Arquitectura de Software -H.Astudillo

56

Conclusión• Reconocimiento reciente de la disciplina

– Dicotomía teoría-práctica• Procesos, métodos y técnicas: aún madurando

– Arquitectos describen sistemas– En forma que permita su evaluación a priori– Y que permiten armar procesos para construirlos

• Rol fundamental:”stakeholders”– Noción de calidad depende de ellos

• Las arquitecturas son medios– (de comunicación y educación)

• El arquitecto es el director de la película– Flor de laburo☺

29

Sesión 05 Arquitectura de Software -H.Astudillo

57

Referencias• [Jacobson/Griss/Jonsson]

– Ivar Jacobson, Martin Griss, Patrik Jonsson– Software Reuse: Architecture, Process and Organization for

Business Success– Addison Wesley (1997)

• [Britton 2000]– Chris Britton– IT Architectures & Middleware: Strategies for Building Large,

Integrated Systems– Addison Wesley (2000)

• [McLaughlin 2002]– Brett McLaughlin– Building Java Enterprise Applications, Vol. 1: Architecture– O'Reilly (2002)

• [Sewell/Sewell 2001]– Marc T. Sewell, Laura M. Sewell– The Software Architect's Profession: An Introduction– Prentice Hall (2001)