Metodología OMT en el Desarrollo Orientado a Objetos

Introducción

Desde finales de los 90, las técnicas de programación dieron un giro a lo que entonces se denominó Orientación a Objetos, irrumpiendo con fuerza en el ámbito académico, industrial y de investigación. Esta nueva forma de diseñar programas requería:

  • Técnicas de diseño y análisis nuevas.
  • Nuevas técnicas de gestión de proyectos.
  • Nuevas formas de cuantificar el software.
  • Nuevos estilos de programación.

Con el tiempo, se ha demostrado que usar estos métodos aumenta la productividad y la calidad, entre otras cosas, porque los desarrollos son más rápidos gracias a la reusabilidad. Usar componentes reutilizables implica no empezar de cero y permite ciclos de vida evolutivos (prototipos), facilidad de mantenimiento y robustez ante errores.

Además, con la aparición de los nuevos métodos de modelado, desaparecen los principales problemas de los métodos tradicionales:

Eliminación de inconsistencias

Con los métodos tradicionales, existía una separación drástica entre los datos y las funciones, hasta el punto de que podían existir equipos de desarrollo independientes, uno para la modelización de los datos y otro encargado de diseñar la funcionalidad, con las inconsistencias que ello podía acarrear.

Estandarización e independencia

Antes de la unificación del modelado, existían muchas terminologías diferentes para cada lenguaje. Se hacía necesaria una abstracción que permitiera comprender las aplicaciones orientadas a objetos con independencia del lenguaje en el que finalmente se fueran a implementar.

Mejora continua

Con la metodología tradicional, había una dificultad extrema en mantener la consistencia entre las distintas fases del proyecto (análisis / diseño / programación). El nuevo método permite un ciclo de mejora continuo de retroalimentación; es decir, desde cualquier fase pueden detectarse errores o mejoras de forma que se mantenga la integridad del proceso. Esto es posible, en gran medida, por la modularidad que ofrece la programación orientada a objetos.

Adaptación a los sistemas actuales

Desde hace ya una década, los sistemas tradicionales han evolucionado exponencialmente. Ahora nos encontramos con redes inalámbricas, interfaces gráficos avanzados, sistemas transaccionales, terminales remotos, procesamientos distribuidos… y todo ello orientado a otro tipo de comercio transaccional: el comercio electrónico o e-business.

Entre 1988 y 1997 nacieron decenas de métodos para la modelización de objetos, con sus múltiples versiones (Shaler & Mellor [89,91,97], Coad & Yourdon [91,92,93,97,99], Grady Booch [88,94], Jim Raubaugh [91,96], Martin & Odell [94,96], Jacobson [91,94,96], Hood, Bertrand Meyer…). De esta forma comienza una guerra por la estandarización.

El problema residía en que cada metodología era muy similar a las demás pero diferían en la notación, lo cual era caótico.

La comunidad internacional se planteó la necesidad imperiosa de estandarizar, proceso que comienza con la asociación entre Rumbaugh y Booch para crear «Rational», proyecto al que se uniría poco después Jacobson.

En 1996 nace UML (Unified Modeling Language) y la OMG aprueba su estandarización.

Desarrollo Orientado a Objetos

Se basa en una modelización del mundo real con lo que el diseño se hace independiente del lenguaje. Para ello vamos a estudiar tanto el proceso (OMT) como la notación (UML).

Los conceptos básicos que vamos a ver son:

Orientación a Objetos

El software se va a organizar como un conjunto de objetos discretos que contienen estructuras de datos y comportamiento y que, sobre todo, se relacionan entre sí.

Identidad

Vamos a manipular entidades que se distinguen por sí mismas (objetos). Pueden ser concretas («Libro») o conceptuales («TransacciónBD»). La implementación puede ser a través de direcciones de memoria, de índices en un array o matriz, de valores exclusivos de un atributo…

Clase

Es una plantilla que describe objetos similares, entendiendo por similares a aquellos que tienen estructura idéntica y comportamientos parecidos; es decir, atributos y operaciones.

Ciclo de Vida

Scan0007