Como Desarrollar SW Distribuido de Calidad ¿Como podemos desarrollar software de calidad para...

15
Como Desarrollar SW Como Desarrollar SW Distribuido de Calidad Distribuido de Calidad ¿Como podemos desarrollar software de ¿Como podemos desarrollar software de calidad para sistemas distribuidos? calidad para sistemas distribuidos? ¿Cómo pueden interoperar diferentes ¿Cómo pueden interoperar diferentes tecnologías en un mismo sistema? tecnologías en un mismo sistema? Necesidad de cambiar de tecnología cada 20 Necesidad de cambiar de tecnología cada 20 años. ¿Qué hacemos con los sistemas años. ¿Qué hacemos con los sistemas antiguos? antiguos?

Transcript of Como Desarrollar SW Distribuido de Calidad ¿Como podemos desarrollar software de calidad para...

Page 1: Como Desarrollar SW Distribuido de Calidad ¿Como podemos desarrollar software de calidad para sistemas distribuidos? ¿Como podemos desarrollar software.

Como Desarrollar SW Distribuido de Como Desarrollar SW Distribuido de CalidadCalidad

¿Como podemos desarrollar software de calidad para sistemas ¿Como podemos desarrollar software de calidad para sistemas distribuidos?distribuidos?¿Cómo pueden interoperar diferentes tecnologías en un mismo ¿Cómo pueden interoperar diferentes tecnologías en un mismo sistema?sistema?Necesidad de cambiar de tecnología cada 20 años. ¿Qué Necesidad de cambiar de tecnología cada 20 años. ¿Qué hacemos con los sistemas antiguos?hacemos con los sistemas antiguos?

Page 2: Como Desarrollar SW Distribuido de Calidad ¿Como podemos desarrollar software de calidad para sistemas distribuidos? ¿Como podemos desarrollar software.

Evolución de la programaciónEvolución de la programación

La programación ha evolucionado.La programación ha evolucionado. Hemos pasado de lenguajes de bajo nivel como C, pasando por Hemos pasado de lenguajes de bajo nivel como C, pasando por

FORTRAN hasta llegar a C++ o Java.FORTRAN hasta llegar a C++ o Java. Antes se dedicaba un 20% del tiempo a desarrollar, un 60% a Antes se dedicaba un 20% del tiempo a desarrollar, un 60% a

programar y un 20% a las pruebas.programar y un 20% a las pruebas. Ahora se emplea un 60% del tiempo al desarrollo, un 20% a la Ahora se emplea un 60% del tiempo al desarrollo, un 20% a la

programación y otro 20% a las pruebas.programación y otro 20% a las pruebas. Ahora la mayor parte del peso de un proyecto recae en el Ahora la mayor parte del peso de un proyecto recae en el

trabajo previo a la programación.trabajo previo a la programación. Para la realización de un proyecto de calidad, hay que partir de Para la realización de un proyecto de calidad, hay que partir de

unas buenas especificaciones.unas buenas especificaciones.

Page 3: Como Desarrollar SW Distribuido de Calidad ¿Como podemos desarrollar software de calidad para sistemas distribuidos? ¿Como podemos desarrollar software.

Una solución: MDAUna solución: MDA

MDA es una forma de modelar SW MDA es una forma de modelar SW distribuido.distribuido.

La especificación completa de La especificación completa de MDA consta de:MDA consta de: Modelo independiente de la Modelo independiente de la

plataforma (PIM) basado en UML.plataforma (PIM) basado en UML. Varios modelos específicos de la Varios modelos específicos de la

plataforma (PSM)plataforma (PSM) Descripciones de cómo pasar de PIM a Descripciones de cómo pasar de PIM a

un PSM.un PSM.

Page 4: Como Desarrollar SW Distribuido de Calidad ¿Como podemos desarrollar software de calidad para sistemas distribuidos? ¿Como podemos desarrollar software.

Una solución: MDAUna solución: MDA

Una aplicación desarrollada con la ayuda Una aplicación desarrollada con la ayuda de MDA consta de:de MDA consta de:

Un modelo independiente de la plataforma Un modelo independiente de la plataforma (PIM).(PIM).

Una o varias implementaciones concretas Una o varias implementaciones concretas (PSMs), una por cada aplicación que se (PSMs), una por cada aplicación que se quiera soportar.quiera soportar.

Page 5: Como Desarrollar SW Distribuido de Calidad ¿Como podemos desarrollar software de calidad para sistemas distribuidos? ¿Como podemos desarrollar software.

Pero, ¿qué es MDA?Pero, ¿qué es MDA?

MDA son las siglas de Model Driven Architecture MDA son las siglas de Model Driven Architecture (Arquitectura de (Arquitectura de conducción del modelado)conducción del modelado)..

Ha sido desarrollado por el Ha sido desarrollado por el OMGOMG.. Esta basado en el modelado con Esta basado en el modelado con UMLUML.. MDA nos permite unir diferentes implementaciones mediante MDA nos permite unir diferentes implementaciones mediante puentes.puentes. MDA nos permite construir aplicaciones independientemente de la MDA nos permite construir aplicaciones independientemente de la

plataforma (PIM).plataforma (PIM). Nos permite controlar el ciclo de vida completo del software:Nos permite controlar el ciclo de vida completo del software:

AnálisisAnálisis DiseñoDiseño ImplementaciónImplementación DesarrolloDesarrollo MantenimientoMantenimiento

Hay otras plataformas para desarrollar Sistemas Distribuidos, como .NET, Hay otras plataformas para desarrollar Sistemas Distribuidos, como .NET, pero estas son individuales.pero estas son individuales.

Page 6: Como Desarrollar SW Distribuido de Calidad ¿Como podemos desarrollar software de calidad para sistemas distribuidos? ¿Como podemos desarrollar software.

El OMGEl OMG

El OMG está formado por un consorcio de empresas, entre las El OMG está formado por un consorcio de empresas, entre las que se encuentran:que se encuentran: CompaqCompaq EricssonEricsson FujitsuFujitsu MicrosoftMicrosoft NASANASA SunSun OracleOracle

Algunos de los logros más importantes del OMG han sido:Algunos de los logros más importantes del OMG han sido: CORBA (Common Object Request Broken Architecture)CORBA (Common Object Request Broken Architecture) UML (Unified Modeling Language)UML (Unified Modeling Language) XML (Metadata Interchange)XML (Metadata Interchange)

Desde 1989, el OMG ha trabajado desarrollando una Desde 1989, el OMG ha trabajado desarrollando una arquitectura para el diseño de aplicaciones distribuidas. Como arquitectura para el diseño de aplicaciones distribuidas. Como resultado tenemos el MDA.resultado tenemos el MDA.

Page 7: Como Desarrollar SW Distribuido de Calidad ¿Como podemos desarrollar software de calidad para sistemas distribuidos? ¿Como podemos desarrollar software.

Relación entre UML y MDARelación entre UML y MDA

Breve historia de UML:Breve historia de UML: UML es una metodología para el desarrollo de SW OO.UML es una metodología para el desarrollo de SW OO. UML es el sucesor de las diferentes notaciones OO de los años 90.UML es el sucesor de las diferentes notaciones OO de los años 90. OMG desarrolló UML entre el 96 y el 97.OMG desarrolló UML entre el 96 y el 97.

Los modelos UML se pueden implementar en cualquier plataforma, pero la Los modelos UML se pueden implementar en cualquier plataforma, pero la gran proliferación de middleware, recomienda la utilización de un gran proliferación de middleware, recomienda la utilización de un modelado UML independiente de la plataforma.modelado UML independiente de la plataforma.

MDA está basado en el modelado UML independiente de la plataforma MDA está basado en el modelado UML independiente de la plataforma (PIM).(PIM).

Además MDA tiene varios modelos específicos (PSM)Además MDA tiene varios modelos específicos (PSM) La fuerza de MDA está en que todas las aplicaciones desarrolladas con La fuerza de MDA está en que todas las aplicaciones desarrolladas con

MDA, están basada en un modelado UML, que es un estándar reconocido.MDA, están basada en un modelado UML, que es un estándar reconocido.

Page 8: Como Desarrollar SW Distribuido de Calidad ¿Como podemos desarrollar software de calidad para sistemas distribuidos? ¿Como podemos desarrollar software.

Diseño con MDA (I) Diseño con MDA (I)

Primero se crea un modelo Primero se crea un modelo independiente de la plataforma independiente de la plataforma (PIM).(PIM).

Representará el modelo de Representará el modelo de negocio, la funcionalidad y el negocio, la funcionalidad y el comportamiento del sistema.comportamiento del sistema.

No tendremos la complicación No tendremos la complicación añadida de pensar en una añadida de pensar en una plataforma concreta.plataforma concreta.

Platform Independent Model

Page 9: Como Desarrollar SW Distribuido de Calidad ¿Como podemos desarrollar software de calidad para sistemas distribuidos? ¿Como podemos desarrollar software.

Diseño con MDA (II) Diseño con MDA (II)

Con MDA podemos aplicar un Con MDA podemos aplicar un mapping para generar un mapping para generar un modelo dependiente de la modelo dependiente de la plataforma (PSM) a partir del plataforma (PSM) a partir del PIM.PIM.

Se puede mapear el PIM a Se puede mapear el PIM a diferentes tecnologías gracias al diferentes tecnologías gracias al mapping estándar del OMG.mapping estándar del OMG.

A las futuras tecnologías se les A las futuras tecnologías se les podrá dar también soporte.podrá dar también soporte.

Platform Independent Model

CorbaModel

JavaModel

XML/SOAPModel

Page 10: Como Desarrollar SW Distribuido de Calidad ¿Como podemos desarrollar software de calidad para sistemas distribuidos? ¿Como podemos desarrollar software.

Diseño con MDA (III) Diseño con MDA (III)

También se podrá generar También se podrá generar código de forma automática.código de forma automática.Platform Independent

Model

CorbaModel

JavaModel

XML/SOAPModel

CorbaSystem

JavaSystem

XML/SOAPSystem

Page 11: Como Desarrollar SW Distribuido de Calidad ¿Como podemos desarrollar software de calidad para sistemas distribuidos? ¿Como podemos desarrollar software.

Diseño con MDA (IV) Diseño con MDA (IV)

La interoperabilidad entre La interoperabilidad entre diferentes tecnologías es un diferentes tecnologías es un punto crucial.punto crucial.

La generación de puentes se La generación de puentes se simplifica con el PIM.simplifica con el PIM.

Las herramientas MDA generan Las herramientas MDA generan puentes de forma automática puentes de forma automática uniendo las diferentes uniendo las diferentes implementaciones.implementaciones.

Se consigue una simplificación Se consigue una simplificación substancial en la creación de substancial en la creación de aplicaciones integradas.aplicaciones integradas.

Platform Independent Model

CorbaSystem

JavaSystem

CorbaModel

JavaModel

Bridge

Page 12: Como Desarrollar SW Distribuido de Calidad ¿Como podemos desarrollar software de calidad para sistemas distribuidos? ¿Como podemos desarrollar software.

Ciclo de DesarrolloCiclo de Desarrollo

PIM (Platform Independent Model)

Platform Specific Models Build/Test

A la hora de diseñar un sistema distribuido, comenzaremos A la hora de diseñar un sistema distribuido, comenzaremos con un modelo independiente de la plataforma. Nuestro con un modelo independiente de la plataforma. Nuestro sistema podrá adaptarse a las nuevas tecnologías, ya que en sistema podrá adaptarse a las nuevas tecnologías, ya que en su base es independiente de estas.su base es independiente de estas.

Page 13: Como Desarrollar SW Distribuido de Calidad ¿Como podemos desarrollar software de calidad para sistemas distribuidos? ¿Como podemos desarrollar software.

Servicios disponibles en MDAServicios disponibles en MDA

Para el desarrollo de sistemas distribuidos se precisa de un Para el desarrollo de sistemas distribuidos se precisa de un conjunto de servicios, como los que ofrece CORBA.conjunto de servicios, como los que ofrece CORBA.

En MDA, a estos servicios se los conoce como En MDA, a estos servicios se los conoce como Pervasive Pervasive Services Services (Servicios Extendidos).(Servicios Extendidos).

Independientemente de la plataforma utilizada, se dará Independientemente de la plataforma utilizada, se dará servicio a toda aplicación o cliente, gracias a los puentes que servicio a toda aplicación o cliente, gracias a los puentes que automáticamente genera MDA.automáticamente genera MDA.

OMG define cuatro Servicios:OMG define cuatro Servicios: Servicios de Directorio.Servicios de Directorio. Servicios de Transacción.Servicios de Transacción. Servicios de Seguridad.Servicios de Seguridad. Servicios de Notificación.Servicios de Notificación.

Page 14: Como Desarrollar SW Distribuido de Calidad ¿Como podemos desarrollar software de calidad para sistemas distribuidos? ¿Como podemos desarrollar software.

Beneficios de usar MDABeneficios de usar MDA

Soporte completo para el ciclo de vida de la aplicaciónSoporte completo para el ciclo de vida de la aplicación Reducción de costos desde el principio hasta el finReducción de costos desde el principio hasta el fin Reutilización de código, aplicaciones, experienciaReutilización de código, aplicaciones, experiencia Representación independiente de la tecnologíaRepresentación independiente de la tecnología Escalabilidad y robustezEscalabilidad y robustez Está predestinado a ser un estándarEstá predestinado a ser un estándar Interoperatividad entre diferentes tecnologíasInteroperatividad entre diferentes tecnologías

Page 15: Como Desarrollar SW Distribuido de Calidad ¿Como podemos desarrollar software de calidad para sistemas distribuidos? ¿Como podemos desarrollar software.

Futuro del MDAFuturo del MDA

Según Paul Harmon:Según Paul Harmon: Se incluirá MDA dentro de los paquetes para el modelado Se incluirá MDA dentro de los paquetes para el modelado

OO y herramientas de desarrollo.OO y herramientas de desarrollo. Transcurrirán unos dos años antes de que emerja de forma Transcurrirán unos dos años antes de que emerja de forma

natural las herramientas MDA.natural las herramientas MDA. Es muy posible que el mercado de MDA crezca de forma Es muy posible que el mercado de MDA crezca de forma

rápida, gracias a todo lo que tiene detrás: UML, MOF, rápida, gracias a todo lo que tiene detrás: UML, MOF, CWMCWM

Casi todas las herramientas de modelado UML se Casi todas las herramientas de modelado UML se desarrollaron en 3 años.desarrollaron en 3 años.