Arquitectura de Software. Juan Bernardo Quintero

Arquitectura de Software Juan Bernardo Quintero ¿Quienes conforman OMG? Object Management Group AT&T Fujitsu John Deere Pfizer BEA Glaxo Smith...
0 downloads 3 Views 7MB Size
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