Indice
1.
Introducción
2. Modelado de objetos
3. Artefactos para el Desarrollo
de Proyectos
4. Diagramas de
componentes
5. Diagramas de Clases
6. Relación de Refinamiento
7. El Proceso
de Desarrollo
Para ver la versón en Power
point, haga clik en el menú superior "Bajar trabajo"
1.
Introducción
Unified Modeling Languaje
UML [UML] es un lenguaje
para especificar, construir, visualizar y documentar los artefactos de un sistema de
software orientado a
objetos (OO). Un artefacto es una información
que es utilizada o producida mediante un proceso de desarrollo de software.
UML se quiere convertir en un lenguaje estándar con el que sea posible
modelar todos los componentes del proceso de desarrollo de aplicaciones. Sin
embargo, hay que tener en cuenta un aspecto importante del modelo:
no pretende definir un modelo estándar de desarrollo, sino únicamente un
lenguaje de modelado. Otros métodos de
modelaje como OMT (Object Modeling Technique) o Booch sí definen procesos
concretos. En UML los procesos de desarrollo son diferentes según los distintos
dominios de trabajo; no puede ser el mismo el proceso para crear una aplicación
en tiempo real, que
el proceso de desarrollo de una aplicación orientada a gestión,
por poner un ejemplo.
Las diferencias son muy marcadas y afectan a todas
las faces del proceso. El método del
UML recomienda utilizar los procesos que otras metodologías tienen definidos.
Los Inicios
A partir del año 1994, Grady Booch
[Booch96](precursor de Booch '93) y Jim Rumbaugh (creador de OMT) se unen en una
empresa
común, Rational Software Corporation, y comienzan a unificar sus dos métodos. Un
año más tarde, en octubre de 1995, aparece UML (Unified Modeling Language) 0.8,
la que se considera como la primera versión del UML. A finales de ese mismo año,
Ivan Jacobson, creador de OOSE (Object Oriented Software Engineer) se añade al
grupo.
Como
objetivos
principales de la consecución de un nuevo método que aunara los mejores aspectos
de sus predecesores, sus protagonistas se propusieron lo
siguiente:
El método debía ser capaz de modelar no sólo sistemas de software sino otro tipo de sistemas reales de la empresa, siempre utilizando los conceptos de la orientación a objetos (OO).
Crear un lenguaje para modelado utilizable a la vez por máquinas y por personas.
Establecer un acoplamiento explícito de los conceptos y los artefactos ejecutables.
Manejar los problemas típicos de los sistemas complejos de misión crítica.
Lo que se intenta es lograr con
esto que los lenguajes que se aplican siguiendo los métodos más utilizados sigan
evolucionando en conjunto y no por separado. Y además, unificar las perspectivas
entre diferentes tipos de sistemas (no sólo software, sino también en el ámbito
de los negocios),
al aclarar las fases de desarrollo, los requerimientos de análisis,
el diseño,
la implementación y los conceptos internos de la OO.
2. Modelado de
objetos
En la especificación del UML podemos comprobar que una de las
partes que lo componen es un metamodelo formal. Un metamodelo es un modelo que
define el
lenguaje para expresar otros modelos.
Un modelo en OO es una abstracción cerrada semánticamente de un sistema y un
sistema es una colección de unidades conectadas que son organizadas para
realizar un propósito específico. Un sistema puede ser descripto por uno o más
modelos, posiblemente desde distintos puntos de vista.
Una parte del UML
define, entonces, una abstracción con significado de un lenguaje para expresar
otros modelos (es decir, otras abstracciones de un sistema, o conjunto de
unidades conectadas que se organizan para conseguir un propósito). Lo que en
principio puede parecer complicado no lo es tanto si pensamos que uno de los
objetivos del UML es llegar a convertirse en una manera de definir modelos, no
sólo establecer una forma de modelo, de esta forma simplemente estamos diciendo
que UML, además, define un lenguaje con el que podemos abstraer cualquier tipo
de modelo.
El UML es una técnica de modelado de objetos y como tal
supone una abstracción de un sistema para llegar a construirlo en términos
concretos. El modelado no es más que la construcción
de un modelo a partir de una especificación.
Un modelo es una
abstracción de algo, que se elabora para comprender ese algo antes de
construirlo. El modelo omite detalles que no resultan esenciales para la
comprensión del original y por lo tanto facilita dicha comprensión.
Los
modelos se utilizan en muchas actividades de la vida humana: antes de construir
una casa el arquitecto utiliza un plano, los músicos representan la música en forma de
notas musicales, los artistas pintan sobre el lienzo con carboncillos antes de
empezar a utilizar los óleos, etc. Unos y otros abstraen una realidad compleja
sobre unos bocetos, modelos al fin y al cabo. La OMT, por ejemplo, intenta
abstraer la realidad utilizando tres clases de modelos OO: el modelo de objetos,
que describe la estructura
estática; el
modelo dinámico, con el que describe las relaciones temporales entre objetos; y
el modelo funcional que describe las relaciones funcionales entre valores.
Mediante estas tres fases de construcción de modelos, se consigue una
abstracción de la realidad que tiene en sí misma información sobre las
principales características
de ésta.
Los modelos además, al no ser una representación que incluya
todos los detalles de los originales, permiten probar más fácilmente los
sistemas que modelan y determinar los errores. Según se indica en la Metodología
OMT (Rumbaugh), los modelos permiten una mejor comunicación
con el cliente por
distintas razones:
Es posible enseñar al cliente una posible aproximación de lo que será el producto final.
Proporcionan una primera aproximación al problema que permite visualizar cómo quedará el resultado.
Reducen la complejidad del original en subconjuntos que son fácilmente tratables por separado.
Se consigue un modelo
completo de la realidad cuando el modelo captura los aspectos importantes del
problema y omite el resto. Los lenguajes de programación que
estamos acostumbrados a utilizar no son adecuados para realizar modelos
completos de sistemas reales porque necesitan una especificación total con
detalles que no son importantes para el algoritmo
que están implementando. En OMT se modela un sistema desde tres puntos de vista
diferentes donde cada uno representa una parte del sistema y una unión lo
describe de forma completa. En esta técnica de modelado se utilizó una
aproximación al proceso de implementación de software habitual donde se utilizan
estructuras
de datos (modelo
de objetos), las operaciones que
se realizan con ellos tienen una secuencia en el tiempo (modelo dinámico) y se
realiza una transformación sobre sus valores (modelo funcional).
UML
utiliza parte de este planteamiento obteniendo distintos puntos de vista de la
realidad que modela mediante los distintos tipos de diagramas que posee. Con la
creación del UML se persigue obtener un lenguaje que sea capaz de abstraer
cualquier tipo de sistema, sea informático o no, mediante los diagramas, es
decir, mediante representaciones gráficas que contienen toda la información
relevante del sistema. Un diagrama
es una representación gráfica de una colección de elementos del modelo, que
habitualmente toma forma de grafo donde los arcos que conectan sus vértices son
las relaciones entre los objetos y los vértices se corresponden con los
elementos del modelo. Los distintos puntos de vista de un sistema real que se
quieren representar para obtener el modelo se dibuja dé forma que se resaltan
los detalles necesarios para entender el sistema.
3. Artefactos para
el Desarrollo de Proyectos
Un artefacto es una información que es
utilizada o producida mediante un proceso de desarrollo de software. Pueden ser
artefactos un modelo, una descripción o un software. Los artefactos de UML se
especifican en forma de diagramas, éstos, junto con la documentación sobre el
sistema constituyen los artefactos principales que el modelador puede
observar.
Se necesita más de un punto de vista para llegar a representar
un sistema. UML utiliza los diagramas gráficos para obtener estos distintos
puntos de vista de un sistema:
Diagramas de Implementación.
Diagramas de Comportamiento o Interacción.
Diagramas de Casos de uso.
Diagramas de Clases.
Ejemplo de algunos de los
diagramas que utiliza UML.
Diagramas de Implementación
Se derivan de
los diagramas de proceso y módulos de la metodología de Booch, aunque presentan
algunas modificaciones. Los diagramas de implementación muestran los aspectos
físicos del sistema. Incluyen la estructura del código fuente y la
implementación, en tiempo de implementación. Existen dos tipos:
Diagramas de
componentes
Diagrama de plataformas despliegue
4. Diagramas de
componentes
Muestra la dependencia entre los distintos componentes de
software, incluyendo componentes de código fuente, binario y ejecutable. Un
componente es un fragmento de código software (un fuente, binario o ejecutable)
que se utiliza para mostrar dependencias en tiempo de
compilación.
Diagrama de plataformas o
despliegue
Muestra la configuración de los componentes hardware, los
procesos, los elementos de procesamiento en tiempo de ejecución y los objetos
que existen en tiempo de ejecución. En este tipo de diagramas intervienen nodos,
asociaciones de comunicación, componentes dentro de los nodos y objetos que se
encuentran a su vez dentro de los componentes. Un nodo es un objeto físico en
tiempo de ejecución, es decir una máquina que se compone habitualmente de, por
lo menos, memoria y
capacidad de procesamiento, a su vez puede estar formado por otros
componentes.
Diagramas de Interacción o Comportamiento
Muestran las
interacciones entre objetos ocurridas en un escenario (parte) del sistema. Hay
varios tipos:
Diagrama de secuencia.
Diagrama de colaboración.
Diagrama de estado.
Diagrama de actividad.
Diagrama de
secuencia
Muestran las interacciones entre un conjunto de objetos,
ordenadas según el tiempo en que tienen lugar. En los diagramas de este tipo
intervienen objetos, que tienen un significado parecido al de los objetos
representados en los diagramas de colaboración, es decir son instancias
concretas de una clase que participa en la interacción. El objeto puede existir
sólo durante la ejecución de la interacción, se puede crear o puede ser
destruido durante la ejecución de la interacción. Un diagrama de secuencia
representa una forma de indicar el período durante el que un objeto está
desarrollando una acción directamente o a través de un procedimiento.
En
este tipo de diagramas también intervienen los mensajes, que son la forma en que
se comunican los objetos: el objeto origen solicita (llama a) una operación del
objeto destino. Existen distintos tipos de mensajes según cómo se producen en el
tiempo: simples, síncronos, y asíncronos.
Los diagrama de secuencia
permiten indicar cuál es el momento en el que se envía o se completa un mensaje
mediante el tiempo de transición, que se especifica en el
diagrama.
Diagrama de
colaboración
Muestra la
interacción entre varios objetos y los enlaces que existen entre ellos.
Representa las interacciones entre objetos organizadas alrededor de los objetos
y sus vinculaciones. A diferencia de un diagrama de secuencias, un diagrama de
colaboraciones muestra las relaciones entre los objetos, no la secuencia en el
tiempo en que se producen los mensajes. Los diagramas de secuencias y los
diagramas de colaboraciones expresan información similar, pero en una forma
diferente.
Formando parte de los diagramas de colaboración nos encontramos
con objetos, enlaces y mensajes. Un objeto es una instancia de una clase que
participa como una interacción, existen objetos simples y complejos. Un objeto
es activo si posee un thread o hilo de control y
es capaz de iniciar la actividad de control, mientras que un objeto es pasivo si
mantiene datos pero no inicia la actividad.
Un enlace es una instancia de
una asociación que conecta dos objetos de un diagrama de colaboración. El enlace
puede ser reflexivo si conecta a un elemento consigo mismo. La existencia de un
enlace entre dos objetos indica que puede existir un intercambio de mensajes
entre los objetos conectados.
Los diagramas de interacción indican el
flujo de mensajes entre elementos del modelo, el flujo de mensajes representa el
envío de un mensaje desde un objeto a otro si entre ellos existe un enlace. Los
mensajes que se envían entre objetos pueden ser de distintos tipos, también
según como se producen en el tiempo; existen mensajes simples, sincrónicos,
balking, timeout y asíncronos. Durante la ejecución de un diagrama de
colaboración se crean y destruyen objetos y enlaces.
Diagramas de
actividad
Son similares a los diagramas
de flujo de otras metodologías OO. En realidad se corresponden con un caso
especial de los diagramas de estado donde los estados son estados de acción
(estados con una acción interna y una o más transiciones que suceden al
finalizar esta acción, o lo que es lo mismo, un paso en la ejecución de lo que
será un procedimiento) y las transiciones vienen provocadas por la finalización
de las acciones
que tienen lugar en los estados de origen. Siempre van unidos a una clase o a la
implementación de un caso de uso o de un método (que tiene el mismo significado
que en cualquier otra metodología OO). Los diagramas de actividad se utilizan
para mostrar el flujo de operaciones que se desencadenan en un procedimiento
interno del sistema.
Diagramas de estado
Representan
la secuencia de estados por los que un objeto o una interacción entre objetos
pasa durante su tiempo de vida en respuesta a estímulos (eventos)
recibidos. Representa lo que podemos denominar en conjunto una máquina de
estados. Un estado en UML es cuando un objeto o una interacción satisface una
condición, desarrolla alguna acción o se encuentra esperando un
evento.
Cuando un objeto o una interacción pasa de un estado a otro por la
ocurrencia de un evento se dice que ha sufrido una transición, existen varios
tipos de transiciones entre objetos: simples (normales y reflexivas) y
complejas. Además una transición puede ser interna si el
estado del que parte el objeto o interacción es el mismo que al que llega,
no se provoca un cambio
de estado y se representan dentro del estado, no de la transición. Como en todas
las metodologías OO se envían mensajes, en este caso es la acción de la que
puede enviar mensajes a uno o varios objetos destino
Diagramas de
Casos de Uso
Unos casos de uso es una secuencia de transacciones que son
desarrolladas por un sistema en respuesta a un evento que inicia un actor sobre
el propio sistema. Los diagramas de casos de uso sirven para especificar la
funcionalidad y el comportamiento de un sistema mediante su interacción con los
usuarios y/o otros sistemas. O lo que es igual, un diagrama que muestra la
relación entre los actores y los casos de uso en un sistema. Una relación es una
conexión entre los elementos del modelo, por ejemplo la relación y la
generalización son relaciones.
Los diagramas de casos de uso se utilizan
para ilustrar los requerimientos del sistema al mostrar como reacciona una
respuesta a eventos que se producen en el mismo. En este tipo de diagrama
intervienen algunos conceptos nuevos: un actor es una entidad externa al sistema
que se modela y que puede interactuar con él; un ejemplo de actor podría ser un
usuario o cualquier otro sistema. Las relaciones entre casos de uso y actores
pueden ser las siguientes:
Un actor se comunica con un caso de uso.
Un caso de uso extiende otro caso de uso.
Un caso de uso usa otro caso de uso
5. Diagramas de
Clases
Los diagramas de clases representan un conjunto de elementos
del modelo que son estáticos, como las clases y los tipos, sus contenidos y las
relaciones que se establecen entre ellos.
Algunos de los elementos que se
pueden clasificar como estáticos son los siguientes:
Paquete: Es el
mecanismo de que dispone UML para organizar sus elementos en grupos, se
representa un grupo de elementos del modelo. Un sistema es un único paquete que
contiene el resto del sistema, por lo tanto, un paquete debe poder
anidarse, permitiéndose que un paquete contenga otro paquete.
Clases: Una
clase representa un conjunto de objetos que tienen una estructura, un
comportamiento y unas relaciones con propiedades parecidas. Describe un conjunto
de objetos que comparte los mismos atributos, operaciones, métodos, relaciones y
significado. En UML una clase es una implementación de un tipo. Los componentes
de una clase son:
Atributo. Se corresponde con las propiedades de una clase o
un tipo. Se identifica mediante un nombre. Existen atributos simples y
complejos.
Operación. También conocido como método, es un servicio
proporcionado por la clase que puede ser solicitado por otras clases y que
produce un comportamiento en ellas cuando se realiza.
Las clases pueden tener
varios parámetros formales, son las clases denominadas plantillas. Sus atributos
y operaciones vendrán definidas según sus parámetros formales. Las plantillas
pueden tener especificados los
valores reales para los parámetros formales, entonces reciben el nombre de
clase parametrizada instanciada. Se puede usar en cualquier lugar en el que se
podría aparecer su plantilla.
Relacionando con las clases nos encontramos
con el término utilidad, que
se corresponde con una agrupación de variables
y procedimientos
globales en forma de declaración de clase, también puede definirse como un
estereotipo (o nueva clase generada a partir de otra ya existente) de un tipo
que agrupa variables globales y procedimientos en una declaración de clase. Los
atributos y operaciones que se agrupan en una utilidad se convierten en
variables y operaciones globales. Una utilidad no es fundamental para el
modelado, pero puede ser conveniente durante la
programación.
Metaclase: Es una clase cuyas instancias son clases.
Sirven como depósito para mantener las variables de clase y proporcionan
operaciones (método de clase) para inicializar estas variables. Se utilizan para
construir metamodelos (modelos que se utilizan para definir otros
modelos).
Tipos: Es un descriptor de objetos que tiene un
estado abstracto y especificaciones de operaciones pero no su implementación. Un
tipo establece una especificación de comportamiento para las
clases.
Interfaz: Representa el uso de un tipo para describir el
comportamiento visible externamente de cualquier elemento del
modelo.
Relación entre clases: Las clases se relacionan
entre sí de distintas formas, que marcan los tipos de relaciones
existentes:
Asociación:
Es una relación que describe un conjunto de
vínculos entre clases. Pueden ser binarias o n-arias, según se implican a dos
clases o más. Las relaciones de asociación vienen identificadas por los roles,
que son los nombres que indican el comportamiento que tienen los tipos o las
clases, en el caso del rol de asociación (existen otros tipos de roles según la
relación a la que identifiquen). Indican la información más importante de las
asociaciones. Es posible indicar el número de instancias de una clase que
participan en una relación mediante la llamada multiplicidad. Cuando la
multiplicidad de un rol es mayor que 1, el conjunto de elementos que se
relacionan puede estar ordenado. Las relaciones de asociación permiten
especificar qué objetos van a estar asociados con otro objeto mediante un
calificador. El calificador es un atributo o conjunto de atributos de una
asociación que determina los valores que indican cuales son los valores que se
asociarán.
Una asociación se dirige desde una clase a otra (o un objeto a
otro), el concepto de
navegabilidad se refiere al sentido en el que se recorre la
asociación.
Existe una forma especial de asociación, la agregación, que
especifica una relación entre las clases donde el llamado "agregado" indica él
todo y el "componente" es una parte del mismo.
Composición:
Es un tipo de
agregación donde la relación de posesión es tan fuerte como para marcar otro
tipo de relación. Las clases en UML tienen un tiempo de vida determinado, en las
relaciones de composición, el tiempo de vida de la clase que es parte del todo
(o agregado) viene determinado por el tiempo de vida de la clase que representa
el todo, por tanto es equivalente a un atributo, aunque no lo es porque es una
clase y puede funcionar como tal en otros casos.
Generalización:
Cuando se
establece una relación de este tipo entre dos clases, una es una Superclase y la
otra es una Subclase. La subclase comparte la estructura y el comportamiento de
la superclase. Puede haber más de una clase que se comporte como
subclase.
Dependencia:
Una relación de dependencia se establece entre
clases (u objetos) cuando un cambio en el elemento independiente del modelo
puede requerir un cambio en el elemento dependiente.
6. Relación de
Refinamiento
Es una relación entre dos elementos donde uno de ellos
especifica de forma completa al otro que ya ha sido especificado con cierto
detalle.
Nuevas características del UML
Además de los conceptos
extraídos de métodos anteriores, se han añadido otros nuevos que vienen a suplir
carencias antiguas de la metodología de modelado. Estos nuevos conceptos son los
siguientes:
Definición de estereotipos: un estereotipo es una nueva clase de elemento de modelado que debe basarse en ciertas clases ya existentes en el metamodelo y constituye un mecanismo de extensión del modelo.
Responsabilidades.
Mecanismos de extensibilidad: estereotipos, valores etiquetados y restricciones.
Tareas y procesos.
Distribución y concurrencia (para modelar por ejemplo ActiveX/DCOM y CORBA).
Patrones/Colaboraciones.
Diagramas de actividad (para reingeniería de proceso de negocios)
Clara separación de tipo, clase e instancia.
Refinamiento (para manejar relaciones entre niveles de abstracción).
Interfaces y componentes.
7. El Proceso de Desarrollo
UML no define un proceso
concreto
que determine las fases de desarrollo de un sistema, las empresas
pueden utilizar UML como el lenguaje para definir sus propios procesos y lo
único que tendrán en común con otras organizaciones
que utilicen UML serán los tipos de diagramas.
UML es un método
independiente del proceso. Los procesos de desarrollo deben ser definidos dentro
del contexto donde se van a implementar los sistemas.
Herramientas
CASE
Rational Rose es la herramienta CASE que comercializan los
desarrolladores de UML y que soporta de forma completa la especificación del UML
1.1.
Esta herramienta propone la utilización de cuatro tipos de modelo para
realizar un diseño del sistema, utilizando una vista estática y otra dinámica
de los modelos del sistema, uno lógico y otro físico. Permite crear y refinar
estas vistas creando de esta forma un modelo completo que representa el dominio del
problema y el sistema de software.
Desarrollo
Iterativo
Rational Rose utiliza un proceso de desarrollo iterativo
controlado (controlled iterative process development), donde el desarrollo se
lleva a cabo en una secuencia de iteraciones. Cada iteración comienza con una
primera aproximación del análisis, diseño e implementación para identificar los
riesgos
del diseño, los cuales se utilizan para conducir la iteración, primero se
identifican los riesgos y después se prueba la aplicación para que éstos se
hagan mínimos.
Cuando la implementación pasa todas las pruebas
que se determinan en el proceso, ésta se revisa y se añaden los elementos
modificados al modelo de análisis y diseño. Una vez que la actualización del
modelo se ha modificado, se realiza la siguiente iteración.
Trabajo en
Grupo
Rose permite que haya varias personas trabajando a la vez en
el proceso iterativo controlado, para ello posibilita que cada desarrollador
opere en un espacio de trabajo privado que contiene el modelo completo y tenga
un control exclusivo sobre la propagación de los cambios en ese espacio de
trabajo.
También es posible descomponer el modelo en unidades controladas
e integrarlas con un sistema para realizar el control de proyectos que
permite mantener la integridad de dichas unidades.
Generador de
Código
Se puede generar código en distintos lenguajes de
programación a partir de un diseño en UML.
Ingeniería
Inversa
Rational Rose proporciona mecanismos para realizar la denominada
Ingeniería
Inversa, es decir, a partir del código de un programa, se
puede obtener información sobre su
diseño.
Bibliografía
Booch, Grady. 1996. Análisis y Diseño
Orientado a Objetos. 2da edición. Ed. Addison-Wesley / Díaz de
Santos.
Pressman, Robert. 1998. Ingeniería de
Software.
http://agamenon.uniandes.edu.co/~pfigueroa/soo/uml
http://www.rational.com/uml/
Trabajo enviado por :
Gerardo Moreno Martínez
gmoreno[arroba]cuates.pue.upaep.mx
Trabajos relacionados
Ver mas trabajos de Ingenieria |
|
Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo en formato DOC desde el menú superior.