Story Transcript
Arquitectura de Software
Juan Bernardo Quintero
¿Quienes conforman OMG? Object Management Group AT&T
Fujitsu
John Deere
Pfizer
BEA
Glaxo SmithKline
Microsoft
Rational
Borland
Hewlett Packard
MITRE
SAGA Software
Boeing
Hitachi
MSC.Software
SAP
CA
Hyperion
NASA
SAS Institute
Citigroup
IBM
NEC
Secant
Compaq
IONA
NetGenics
Siemens
Compuware
io Software
NTT
Sprint
Ericsson
Kabira
OASIS
Sun
Ford
Kennedy Carter
Oracle
Unisys Vertel
Definición de MDA MDA (Model Driven Architecture) es un Framework que proporciona una solución para los cambios de negocio y de tecnología, permitiendo construir aplicaciones independientes de la plataforma e implementarlas en plataformas como CORBA, J2EE, Servicios Web, etc. [OMG]
¿Qué es MDA? MDA Guide v1.0.1 (www.omg.org/mda): MDA is an approach to system development, which increases the power of models in that work. It is modeldriven because it provides a means for using models to direct the course of understanding, design, construction, deployment, operation, maintenance and modification.
¿Qué es MDA? IBM, An MDA Manifesto: MDA is a style of enterprise application development and integration, based on using automated tools to build system independent models and transform them into efficient implementations. In essence, the foundations of MDA consist of three complementary ideas: Direct Representation, Automation and Open Standards.
Principios de MDA IBM, An MDA Manifesto 1.
Representación Directa: Enfocándose en el dominio del problema y no de la tecnología.
2.
Automatización: Herramientas que apoyen facilitan las labores mecánicas.
3.
y
Estándares abiertos: Que eliminen la diversidad y formalicen el desarrollo en cada plataforma.
¿Por Qué MDA? Muchas plataformas y tecnologías - Objetos Distribuidos, Componentes, Web services, ... - No hay mucha interoperabilidad - Y con tendencia aumentar
Evolución muy rápida -
Tecnologías evolucionadas que son obsoletas muy pronto Cual tecnología va a salir mañana? Y cuanto va a durar la ultima? Y como protejo mi inversión?
Por consiguiente, nunca tenemos un estándar en SO. DB, Servidores, Plataformas, Middleware, etc Es complejo consensualizar un modelo y una forma de transformarlo con el propósito de ser menos dependiente de la tecnologías
¿Que es un Modelo? Un modelo es la descripción de (una parte de) un sistema lenguaje bien definido.
en un
Un lenguaje bien definido es un lenguaje con una forma definida (sintaxis) y significado (semántica), el cual sea apropiado para se interpretado automáticamente por un computador. [MDA Explained] Un modelo es frecuentemente presentado como una combinación de dibujos y de texto. [MDA Guide]
Problemas con los modelos de software Los modelos son usados solo como documentación Vacíos entre el modelo y la implementación de los sistemas - Vacíos semánticas en los lenguajes - Los cambios en el modelo no se reflejan en el código - Los cambios en el código nos se reflejan en los modelos (Solo se genera el código de los modelos la primera vez y nunca se actualiza) No hay mezcla de modelos - Vistas desconectadas de un sistema (horizontal) - Grupos de modelos desconectados (vertical) No hay transformación de modelos - Pocos lenguajes de transformación populares - No hay herramientas
Espacios del Problema y de la Solución
1. Modelar Problema Problema
Espacio del problema
2. Analizar Problema
3. Diseñar Solución
Espacio de la solución
4. Construir Solución
Solución
Espacios del Problema y de la Solución
MDA
CIM- Modelo Independiente de la Computación
1. Modelar Problema Problema
2. Analizar Problema
PSM- Modelo Específico de la Plataforma
PIM- Modelo Independiente de la Plataforma
3. Diseñar Solución 4. Construir Solución
CODE- Código de la Aplicación
Solución
MDA - Arquitectura Dirigida por Modelos
Espacio del problema Problema
• • • •
CIM: Modelo Independiente de la Computación PIM: Modelo Independiente de la Plataforma PSM: Modelo Específico de la Plataforma Código: Modelo de Texto
CIM
Espacio de la solución
PIM
PSM Procesos de transformación, en lo posible apoyados con herramientas.
Código
Solución
Proceso de Desarrollo Cascada vs. MDA
Adaptado de: Kleppe, A., Warmer , J., Bast, W.: MDA Explained. Addison-Wesley (2003)
PDM: Platform Description Model
De un ciclo de vida en “V” Hacia un ciclo de vida e “Y”
PDM: Platform Description Model
PIM
PDM
Requirement
Technical Requirements
PIM
Analysis PDM
Design (Abstract) Design (concrete) Production (fine)
PIM
Technical Architecture
Platform description PSM
PSM
Code
Platform integration
Proceso de Transformación de Modelos
Enfoques en el Proceso de Transformación
Propagación de errores desde el CIM Si el modelo inicial de las transformaciones tienen errores, estos se propagaran a través de todos las transformaciones y la aplicación resultante tendrá este error ampliamente potenciado.
Conceptos de MDSD MDSD (Model Driven Software Development) se refiere a hacer desarrollo de software mas relacionado con el dominio que con la computación, esta es una forma de hacer desarrollo de software en un determinado dominio mas eficiente. [Markus Völter]
Conceptos de MDSD MDSD en una imagen [Markus Völter]
Arquitectura de Dominio en MDSD Estructura de una Arquitectura de Dominio y su relación con las Líneas de Productos
Adaptado de: Völter, M. y Stahl, T. Model-Driven Software Development (Technology, Engineering, Management) ISBN: 978-0-470-02570-3, 444 p, 2006.
Elementos de una Arquitectura de Dominio Para clarificar la diferencia entre los frentes físicos y lógicos definiremos los tres conceptos que componen una arquitectura de dominio:
Un DSL (Lenguaje Específico de Dominio): Se refiere a un concepto de carácter lógico que se usa en el espacio del problema, se define como un lenguaje diseñado para modelar o resolver problemas en un dominio particular bien definido, esto significa que en vez de ser un lenguaje para propósito general, es un lenguaje que captura con precisión la semántica de un dominio determinado. Una plataforma: Se refiere a conceptos de carácter físico que hacen parte del espacio de la solución, se define como la agregación de conceptos como: el Middlewares, Librerías, Frameworks, Componentes y Aspectos. Las transformaciones: Definen los mecanismos para llevar los modelos desde el espacio del problema hasta el espacio de la solución.
DSL (Domain Specific Language) en MDSD
¿Qué es un DSL? Software Factories Definition: A domain specific language (DSL) is a language that enables the specification of software from a specific viewpoint. It defines abstractions that encode the vocabulary of the domain that is focus of the viewpoint.
DSL (Ejemplos) Gráficos No SW:
Textuales en SW:
Gráficos en SW: (Transformado en Textual)
Plataformas en MDSD
¿Que es Plataforma? MDA Guide v1.0.1 by OMG: is a set of subsystems and technologies that provide a coherent set of functionality through interfaces and specified usage patterns, which any application supported by that platform can use without concern for the details of how the functionality provided by the platform is implemented.
Plataforma (otra definición) En informática, una plataforma es precisamente el principio, ya sea de hardware o software, sobre el cual un programa puede ejecutarse. Ejemplos típicos incluyen: arquitectura de hardware, sistema operativo, lenguajes de programación y sus librerías de tiempo de ejecución.
Transformación de Modelos en MDSD
Tipo de transformación
M2M
M2T
Adaptado de: OBJECT MANAGEMENT GROUP. Business Processes and the OMG: An Overview.
El Arquetipo de la Transformación de Modelos
Meta-modelo A
Definición de la transformación
Meta-modelo B
Transformación Conforme a
Conforme a
Modelo A
Aplicación de la transformación
Modelo B
Perfiles de UML Un Perfil es un mecanismo definido por UML para extender y adaptar UML a una plataforma o dominio particular. Incluye 3 elementos: estereotipos, valores etiquetados y restricciones.
Ejemplo de Perfil EJB
Ejemplo del uso del Perfil EJB
Los Perfiles y los Meta-modelos Los Perfiles se basan en Meta-modelos. Un meta-modelo es un modelo que define el lenguaje para expresar un modelo. La siguiente figura ilustra las diferentes capas definidas en la arquitectura de la OMG que sustenta MOF, el meta-modelo de UML. [OMG-MOF2003].
Imagen Tomada de: The Tao of Modeling Spaces Dragan Djurić, Dragan Gašević, Vladan Devedžić,
Ejemplo de un Meta-modelo de un RDBMS
MOF: El Meta-modelo de UML MOF
UML Meta-Model
UML
Instancias con datos
Ecore el meta-modelo de UML en Eclipse
Ecore el meta-modelo de UML en Eclipse
Relación entre BPM, EA y OOAD
http://www.ibm.com/developerworks/webservices/library/ws-soad1/
Caracterización de Proyectos ¿Dadas las características de un proyecto o empresa, qué modelo de proceso de desarrollo de software debo aplicar?
Métodos Ascendente (Bottom-Up)
Técnicas Lenguajes Herramientas
Descendente (Top-Down)
Desarrollo de Aplicaciones Registro de información en bases de datos. Aplicaciones transaccionales. Aplicaciones Web. Interfaces de usuario. … Métodos: RUP Técnicas: OO, Componentes, …
Lenguajes: UML, Java, PHP, …, SOAP, …
Herramientas: Modeladores UML, Eclipse, Netbeans, …
Descendente (Top-Down)
Proyectos de Procesos Mejoramiento continuo. Automatización de procesos. Monitoreo de procesos. Estrategias de negocio. … Métodos: PMF, … Técnicas: BPM Lenguajes: BPMN, BPEL, …, SOAP, … Herramientas: BPMS como Intalio, BizAgi, Oracle, etc.
Descendente (Top-Down)
Proyectos de Procesos con BPM Desarrollo de Software con BPM (Business Process Management)
BPMS Business Process Management System
Proceso de transformación, generalmente no manipulable por parte del desarrollador.
Herramienta de Modelado (BPMN)
Motor de Ejecución de Procesos Transformación BPMN - BPEL
Modelo de procesos de Negocio construido usando BPMN (Business Process Modeling Notation)
(BPEL)
Aplicación Web desplegada desde un BPMS usando BPEL (Business Process Execution Language)
Enfoques orientados por procesos
Un proceso de desarrollo que involucre “proyectos de procesos” debe realizar actividades que cubran todas las Capas de Procesos de Negocio.
http://www.bpminstitute.org/articles/article/article/a-soa-based-business-rules-approach-decision-services.html
Enfoques orientados por procesos
Suelen aplicar ciclos de vida en espiral, o se basan en el ciclo de vida de los procesos, buscando cubrir las diferentes aspectos del proceso de negocio.
En el ejemplo se ven los roles y las fases, usando la plataforma BEA Aqualogic BPMS.
http://soaagenda.com/journal/articulos/category/bpm/
Enfoques orientados por procesos En algunos casos las plataformas definen enfoques propios definidos por el ciclo de vida del proceso, como recientemente Intalio con PMF. The Process Modeling Framework (P.M.F.) is a structured approach to process modeling that results in consistent, accurate, readable process diagrams using the BPMN
Enfoques orientados por procesos Se basan principalmente en el uso de “Suites de Gestión de Procesos de Negocio”
Adobe Livecycle - Adobe Systems BizAgi BPM Suite - BizAgi Fujitsu Interstage BPM - Fujitsu IBM BPMS - IBM Intalio Enterprise Edition - Intalio Lombardi Teamworks - Lombardi Software Oracle BPM Suite - Oracle SAP's NetWeaver Composition Environment - SAP Tibco iProcess - Tibco Software
http://mediaproducts.gartner.com/reprints/lombardi/article2/article2.html
BPMN como el CIM en MDA
Proyectos de Servicios Integración de tecnologías. Negocios basados en tercerización. Aplicaciones que acceden plataformas heterogéneas (Legadas). Estrategias de proceso basados en tecnología. … Métodos: SOAD, … Técnicas: SOA Lenguajes: SOAP, WSDL, …, BPEL, … Herramientas: ESB como OpenESB, OESB, WESB, WMB
Ascendente (Bottom-Up)
Arquitectura Orientada a Servicios SOA (Service Oriented Architecture) es una aproximación para construir sistemas usando servicios que se adhieren a 4 pilares fundamentales: Los limites son explícitos. Los servicios son Autónomos. Los servicios comparten esquemas y contratos, no clases. La compatibilidad de los servicios, se determina basados en las políticas.
Implementación de una SOA con un ESB
http://msdn.microsoft.com/en-us/library/ff647678.aspx
Enfoques orientados por servicios Un proceso de desarrollo que involucre “proyectos de servicios” debe realizar actividades que cubran todas las Capas de una SOA.
http://www.ibm.com/developerworks/webservices/library/ws-soa-design1/
Enfoques orientados por servicios Suelen aplicar ciclos de vida en cascada, o se basan en el ciclo de vida de los servicios, buscando cubrir las diferentes capas de una SOA. En cada capa se desarrollan los componentes necesarios para el funcionamiento de la misma
http://soaagenda.com/journal/articulos/category/soa/
Enfoques orientados por servicios Los métodos orientados por servicios suelen poner especial énfasis en la arquitectura y el modelado, los aspectos mas relevantes a representar en la arquitectura son: Datos Reglas de Negocio Servicios Perfiles de Configuración
Variaciones
http://www.ibm.com/developerworks/webservices/library/ws-soa-design1/
Enfoques orientados por servicios Se basan principalmente en el uso de “Buses de Servicios Empresariales” y herramientas para “SOA Governance”
http://mediaproducts.gartner.com/reprints/oracle/article53/article53.html http://mediaproducts.gartner.com/reprints/oracle/article65/article65.html
OMG’s Workshop on Building a Service Oriented Architecture with BPM and MDA
Estándares SOA según Oracle
http://download.oracle.com/docs/cd/E12839_01/integration.1111/e10223/suite_02.htm
¿Qué es SCA? La Arquitectura de Componentes de Servicio (SCA) es un conjunto de especificaciones que describen un modelo para construir aplicaciones y sistemas usando una Arquitectura Orientada a Servicios (SOA). SCA extiende y complementa enfoques predecesores para implementar servicios (EJB, JMS, JCA, Java EE Integration), diversas tecnologías (Java, C, C++, Spring, PHP, COBOL, BPEL) y estándares existentes (Web Services).
http://www.osoa.org/display/Main/Service+Component+Architecture+Home
¿Qué es SCA? Está basado en la idea de que la funcionalidad de negocios es provista como una serie de servicios, que se ensamblan para crear soluciones que sirven una necesidad de negocio particular. Estas aplicaciones compuestas pueden contener tanto servicios nuevos como funcionalidad expuesta como servicios de aplicaciones existentes, reusadas como parte de la composición.
http://www.osoa.org/display/Main/Service+Component+Architecture+Home
Conceptos de SCA Un artefacto básico de SCA es el componente, el cual es una unidad de construcción para SCA. Un componente consiste de una instancia configurada de una funcionalidad implementada. La funcionalidad es ofrecida mediante servicios. Su implementación pueden depender de otros servicios; dichas dependencias se llaman referencias. Los componentes pueden tener propiedades configurables.
http://www.osoa.org/display/Main/The+Assembly+Model
Conceptos de SCA SCA describe el contenido y ensamblaje de una aplicación en ensambles conocidos como composites. Los composite pueden contener componentes, servicios, referencias, declaraciones de propiedades, así como el wiring que describe las conexiones de estos elementos. Los servicios y referencias de componentes pueden ser promovidos a servicios y referencias del composite.
Notación en SCA
http://www.osoa.org/display/Main/The+Assembly+Model
SDO: Service Data Objects Especificación complementaria a SCA, diseñada para simplificar y unificar el acceso a datos en las aplicaciones, bajo el enfoque SOA. Usando SDO, las aplicaciones pueden acceder y manipular datos a través de orígenes heterogéneos, como RDBMS, repositorios XML, Web services, y sistemas de información empresariales (ERP, SRH, CRM entre otros)
SDO: Service Data Objects Actualmente existen especificaciones e implementaciones para diversos lenguajes: - Java - PHP -C - C++ - COBOL
http://www.ibm.com/developerworks/websphere/techjournal/0510_peterson/0510_peterson.html
Ejemplo de Aplicación Compuesta Aplicación de “Atención de Solicitudes”
Ejemplo de Aplicación Compuesta Aplicación de “Atención de Solicitudes”
Implementación del Proceso en BPEL
Ejemplo de Aplicación Compuesta Aplicación de “Atención de Solicitudes”
Implementación del Servicio de Negocio, con las 4 operaciones, y referencias a los servicios de entidad y de aplicación requeridos.
Ejemplo de Aplicación Compuesta Aplicación de “Atención de Solicitudes”
Servicios de Aplicación (SRH y CRM)
Servicios de Entidad, implementados con SDO
El Metamodelo de SCA
http://www.eclipse.org/stp/sca/
Referencias
Open SOA group. The SCA and SDO specifications. http://www.opensoa.org
Eclipse SCA Tools wiki. http://www.eclipse.org/stp/sca/
Wokflow Management http://www.wfmc.org/xpdl.html
Baeyens, Tom. InfoQ Articles. Process Model http://www.infoq.com/articles/process-component-models
Dubray, Jean-Jacques. InfoQ Articles. The Seven fallacies of business process model execution. http://www.infoq.com/articles/seven-fallacies-of-bpm
White, Stephen. "Mapping http://www.bpmn.org
Coallition.
BPMN to
The
XPDL
BPEL Example".
specification. Components.
Febrero
2005.
Referencias 1. Vallecillo, Antonio. El Futuro de los Servicios Web. Universidad de Málaga 2. Naranjo, Julio. Arquitectura Basada en Servicios, Microsoft. 3. Álvarez, José Mauricio. EL Valor de Negocio de Arquitecturas Orientadas a
Servicios. Microsoft. 4. NET
Architecture Center: Service http://msdn.microsoft.com/architecture/soa/
Oriented
Architecture
5. Understanding Service-Oriented Architecture
http://msdn.microsoft.com/architecture/soa/default.aspx?pull=/library/enus/dnmaj/html/aj1soa.asp 6. Patterns & Practices http://www.microsoft.com/resources/practices 7. FTPOnline:
SPECIAL REPORT: http://www.ftponline.com/special/soa/
Service-Oriented
8. MetaGroup – Disruptive SOA Trends - Transcript 2034
Architecture