sábado, 28 de junio de 2008

oo: Programacion Orientada a Objetos

Que es la Programacion Orientada a Objectos?

Es el metodo de implementacion por el cual un programa es organizado a partir de un conjunto de objetos que cooperan entre si, los cuales son instancias de clases, las cuales son miembros de una jerarquia de clases, vinculadas por relaciones jerarquicas.

Es importante destacar:
  • La unidad fundamental en la POO es el objeto, no los algoritmos
  • Cada objeto es instancia de alguna clase
  • Las clases pueden estar relacionadas unas con otras por relaciones jerarquicas
Caracteristicas de la Programacion Orientada a Objetos



Vinculos:

martes, 24 de junio de 2008

oo: Unified Modelling Language (UML)

Introduccion e historia

UML
es un lenguaje de modelado de proposito general que provee notacion grafica. La especificacion de UML es mantenida por el Object Management Group (OMG) y se basa en el UML Metamodel, que es un Meta-Object Facility Metamodel (MOF).

En 1994, dos de los padres de los metodos mas populares de modelado orientado a objetos, Rumbaugh y Booch, fueron contratados por Rational y comenzaron a trabajar en una metodologia que unificara las existentes:
  • OMT, mas propicio para el analisis orientado a objetos (OOA), de Rumbaugh
  • Metodo Booch, mas propicio para el diseno orientado a objetos (OOD), de Booch
En 1995, cuando Rational adquirio la compania Objectory AB, donde Jacobson, creador de ObjectOry, trabajaba, este ultimo se unio a Rambaugh y Booch en la definicion de una metodologia unificada. A este grupo se lo conocio como The Three Amigos (Los tres Amigos).

Debido a la abundancia de lenguajes de modelado orientado a objetos, algunos de ellos propietarios, la tecnologia orientada a objetos no estaba siendo adoptada con rapidez. Rational encargo a The Three Amigos crear un lenguaje de modelado unificado no propietario.
En 1996, el consorcio UML Partners, bajo la direccion tecnica de The Three Amigos, fue creado para completar la especificacion del Unified Modelling Language (UML - Lenguaje de modelado unificado).
El borrador de la especificacion UML 1.0 fue presentado al OMG en Enero de 1997. Finalmente, luego de integrar a la especificacion otros esfuerzos de estandarizacion, la especificacion UML 1.1 fue presentada al OMG en Agosto de 1997 y adoptada meses despues, en Noviembre.

UML se encuentra fuertemente influenciado por OMT. La notacion de casos fue introducida por Objectory (Jacobson) , mientras que la de componentes lo fue por Booch.
Recursos introducidos por otros metodos, como Tarjetas CRC (CRC Cards) y el metodo de Analisis de Roles (OORam) tambien son tenidos en cuenta por UML, de manera de abarcar el mas amplio espectro.

Modelado

Mediante los diversos tipos de diagramas que ofrece UML, es posible representar el modelo de un sistema mediante tres vistas:
  • Vista de Requerimientos Funcionales
    Diagrama de Casos de Uso son utilizados principalmente

  • Vista de Estructura Estatica
    Diagramas de Clase y de Componentes son utilizados principalmente

  • Vista de Comportamiento Dinamico
    Diagramas de Secuencia, de Colaboracion, de Actividad y de Transicion de Estados son utilizados principalmente
Diagramas

En la especificacion UML 2.0, existen 13 tipos de diagramas categorizados en forma jerarquica. Este conjunto de diagramas puede ser agrupado en dos grandes grupos:

Diagramas de estructura: Muestran que compone al sistema
  • de Clases
  • de Objetos
  • de Componentes
  • de Paquetes
  • de Despliegue
Diagramas de comportamiento: Muestran como se comporta el sistema
  • de Casos de Uso
  • de Actividad
  • de Secuencia
  • de Colaboracion
  • de Transicion de Estados
Vinculos:

mock: Comportamiento para metodos void

Para configurar el comportamiento en metodos que retornan algun valor, se emplea el metodo estatico expect correspondiente a la clase org.easymock.EasyMock. Por ejemplo:
InetAddress addr = createMock(InetAddress.class);
expect(addr.getHostAddress()).andReturn("localhost");
Para configurar el comportamiento en metodos void, o sea, metodos que no devuelven valor alguno, es necesario emplear el metodo estatico lastExpectCall justo despues de configurar la invocacion al metodo del objeto mock. Por ejemplo:
byte[] bytes = new byte[8192];
OutputStream os = createMock(OutputStream.class);
os.write(bytes, 0, bytes.length);
expectLastCall().andThrow(new IOException());
Asi como en el ejemplo anterior una excepcion fue configurada, se pueden emplear cualquiera de los metodos asociados al expect.

Vinculos:

domingo, 22 de junio de 2008

oo: El Metodo Booch

Es una metodologia ampliamente utilizada en el analisis y diseno de software y fue creada por Booch durante su desempeno en Rational Software Corporation.

El metodo define diferentes modelos para describir un sistema, soportando el desarrollo iterativo e incremental. El metodo tambien incluyo seis(6) tipos de diagramas:
  • De clases
  • De objetos
  • De transicion de estados
  • De modulos
  • De procesos
  • De interaccion
Diversos aspectos del Metodo Booch fueron incorporados mas tarde por RUP.

Vinculos:

oo: ObjectOry y OOSE

ObjectOry es una metodologia basada en el paradigma de orientacion a objetos, creada por la compania Objectory Systems, fundada en 1987 por Jacobson. Es una extension de lo que se conoce como Metodo Ericsson, un lenguaje de modelado de objetos creado por la compania Ericsson.

Durante 1991, Ericsson adquiere gran parte de Objectory Systems, creando la subsidiaria Objectory AB. En 1995, Rational Software Corporation adquiere dicha subsidiaria.

Object-Oriented Software Engineering (OOSE) es la metodologia para el analisis y diseno de software desarrollada por Jacobson en 1992 durante su participacion en la compania Objectory AB. Es la primera metodologia que emplea Casos de Uso en el analisis de software.

Cuando en 1995 Rational Software Corporation adquiere Objectory AB, OOSE es empleado como parte de la base que funda lo que se conoce como Rational Unified Process (RUP).

Vinculos:

oo: Object Modelling Technique (OMT)

OMT es un lenguaje de modelado de objetos orientado al analisis y diseno de software. Fue creado durante 1991 por Rumbaugh, entre otros, como una herramienta para el desarrollo de sistema basados en el paradigma de orientacion a objetos.

OMT es el predecesor de Unified Modelling Language (UML) y muchos elementos introducidos por OMT fueron heredados por UML.

Vinculos:

jueves, 19 de junio de 2008

ws: Mecanismo de invocacion de un Web Service

Invocacion en el servidor
  1. El mensaje SOAP es recibido desde el transporte (HTTP, JMS).
  2. Los manejadores de mensajes que se encargan del preprocesamiento de los mismos son invocados (persistir mensajes, analizar el encabezado, etc.).
  3. Determinar el servicio del mensaje (que operacion del WSDL invoca el mensaje).
  4. Para la operacion del WSDL, determinar el metodo a invocar en la clase Java apropiada. A esta clase se la llama Java target y a este proceso se lo conoce como dispatching.
  5. Entregar el mensaje SOAP al sub-sistema encargado de la serializacion para que lo deserialice en objetos Java que seran pasados como parametros al Java target.
  6. Invocar el Java target usando los parametros generados por el sub-sistema de serializacion y obtener el objecto Java retornado.
  7. Entregar el objeto Java retornado al sub-sistema de serializacion para ser serializado en XML segun lo especificado por el WSDL para el mensaje de retorno.
  8. Encapsular en un mensaje SOAP el XML generado a partir del objeto Java retornado, segun lo especificado por el WSDL para el mensaje de retorno.
  9. Entregar el mensaje SOAP al transporte para ser enviado al cliente.
Nota: Si ocurre una excepcion durante este proceso, la misma debe ser encapsulada en un mensaje SOAP del tipo fault y enviada al cliente.

Invocacion en el Cliente
  1. Se crea una instancia de la clase que implementa la interfaz Java para el endpoint del Web Service (SEI). El sub-sistema de invocacion emplea algun factory para crear instancias de SEI (Service Endpoint Interface). Las instancias se crean en el momento de ejecucion o se obtienen mediante JNDI. Las instancias SEI son implementadas usando proxies Java y manejadores de invocacion (invocation handler).

jax-ws: Que es y que mejora sobre JAX-RPC

Que es JAX-WS?

JAX-WS no es un entorno para el desarrollo de aplicaciones SOA sino que es un conjunto de herramientas que facilitan las tareas requeridas para consumir y desarrollar Web Services, los componentes de un entorno distribuido basado en SOA.

Mejoras introducidas por JAX-WS

Algunas de las mejoras introducidas por JAX-WS sobre su predecesor JAX-RPC son las siguientes:
  • Especificacion simplificada
  • Mejoras en el mapeo WSDL a Java
  • Soporte para endpoints REST
  • Reemplazo del data binding de XML Schema a Java por JAXB 2.0
  • Uso de annotations para controlar la creacion del WSDL a partir de la interfaz Java
  • Deployment descriptors eliminados por el uso de annotations
  • Introduccion de las interfaces Dispatch y Provider para manejo directo de XML salteando el data binding de JAXB
Los datos presentados en este articulo fueron extraidos del libro "SOA Using Java Web Services" by Mark D. Hansen.

viernes, 6 de junio de 2008

agile: Introduccion a metodologias agiles

Los comienzos de lo que hoy son las metodologias agiles se fundan en XP (Extremme Programming) a fines de la decada del 90.
XP pone enfasis en:
  • Pruebas de unidad (Unit testing)
  • Programacion de a pares (Pair programming)
  • Simplificacion de la recopilacion de requerimientos
XP surgio como alternativa a la dupla UML/RUP, ya que el analisis y modelado requerian demasiado esfuerzo, y los resultados no eran satisfactorios, en el promedio de los casos.

XP fue gratamente recibido por:
  • Programadores/Desarrolladores: Menos demoras, productos utilizables y cercanos a las necesidades de los usuarios
  • Marketing/Duenos del Producto: Menor tiempo de desarrollo, aumento en la calidad del producto
Partiendo de la base de XP, Agile busca:
  • Incrementar la frecuencia de las iteraciones
  • Permitir que el equipo de trabajo defina las fechas de entrega
  • Producir software utilizable
  • Incorporar requerimientos en forma paulatina
Vinculos: