Ingeniería de Software Hernán Astudillo Departamento de Informática Universidad Técnica Federico Santa María <hernan at acm.org>
Componentes y organizaciones
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) Sesión 10 [2004/v/25] Ingeniería de Software - H.Astudillo 3
diagrama de componentes levitator.exe (Win32) mod_levit (Apache) UsmViews.dll (Win32) GTK.dll Aqua.dll Kerber10.dll (Win32) [*** EJEMPLO ***] Sesión 10 [2004/v/25] Ingeniería de Software - H.Astudillo 4
Fuentes de componentes Dominio (entidades, propiedades...) Interfaces Capas de abstracción ( máquinas virtuales ) Instanciaciones de arquetipos Componentes Sesión 10 [2004/v/25] Ingeniería de Software - H.Astudillo 5
Interoperabilidad Problema: cooperación entre componentes Número exponencial de pares de tecnologías Mecanismos estandarizados para describir interfaces CORBA IDL COM IDL Interoperabilidad entre tecnologías Modelos de componentes COM, CORBA, EJB Wrappers (envoltorios) Servicios ofrecidos/esperados Propiedades transaccionales Manejo de seguridad Monitoreamiento Sesión 10 [2004/v/25] Ingeniería de Software - H.Astudillo 6
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) Sesión 10 [2004/v/25] Ingeniería de Software - H.Astudillo 7
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 10 [2004/v/25] Ingeniería de Software - H.Astudillo 8
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 (además de ACID) 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 Sesión 10 [2004/v/25] Ingeniería de Software - H.Astudillo 9
Organizaciones para reuso Sesión 10 [2004/v/25] Ingeniería de Software - H.Astudillo 10
Empresas y reuso Hasta ahora: Conciencia personal de que hay recursos reusables para evitar reinventar la rueda Problema: Cómo hacer que (la mayoría de) el personal de una empresa lo sepa? Sesión 10 [2004/v/25] Ingeniería de Software - H.Astudillo 11
Incentivar reusabilidad Problema: Quién es responsable de hacer/gestionar componentes reusables? idea: asociar escalas de arquitectura a niveles de la organización estandarizar vía lenguaje compartido arquitectura de referencia patrones y estilos 3 niveles: empresa (p.ej. Kerberos para seguridad) departamento (unidad) (p.ej. UsmViews para UI) proyecto (p.ej. mod_levit para levitación) Sesión 10 [2004/v/25] Ingeniería de Software - H.Astudillo 12
Incentivar reuso Problema: Propiedad y control de componentes Pueden no calzar con las unidades organizacionales Control de cambios: quién lo hace? Redundancia: quién factoriza? y a dónde? Soluciones Imponer propiedad y/o factorización Reestructurar la organización Separar componentes compartidos a otra unidad 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 Sesión 10 [2004/v/25] Ingeniería de Software - H.Astudillo 13
Terminología de mercado
2 Capas 2 capas: cliente-servidor Razón: concentrar recursos escasos en servidores centralizados Redundancia mínima Rendimiento puede sufrir Autonomía mínima Sesión 10 [2004/v/25] Ingeniería de Software - H.Astudillo 15
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 10 [2004/v/25] Ingeniería de Software - H.Astudillo 16
4 capas Sesión 10 [2004/v/25] Ingeniería de Software - H.Astudillo 17
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 10 [2004/v/25] Ingeniería de Software - H.Astudillo 18
Recursos y referencias Ivar Jacobson, Martin Griss, Patrik Jonsson Software Reuse: Architecture, Process and Organization for Business Success, Addison Wesley (1997) Brett McLaughlin Building Java Enterprise Applications, Vol. 1: Architecture, O'Reilly (2002) Marc T. Sewell, Laura M. Sewell The Software Architect's Profession: An Introduction, Prentice Hall (2001) Sesión 10 [2004/v/25] Ingeniería de Software - H.Astudillo 19