miércoles, 9 de mayo de 2012

UML

El UML (Lenguaje Unificado de Modelado) es la herramienta más actual del desarrollo de sistemas, ya que permite a los creados de sistemas generar diseños que capturen sus ideas en una forma de fácil comprensión para transmitirlas a las demás personas. Un sistema es la combinación de software y hardware que da solución a un problema de negocios. El desarrollo de sistemas es la creación de un programa para un cliente, quien este tiene un problema para resolver. Un analista es el que recoge los problemas del cliente y lo notifica a los desarrolladores, el cual estos crearan el programa para el cliente. El UML es de suma importancia porque permita crear programas a los clientes de fácil comprensión, no al azar, sino programas que realmente supere los requerimientos del cliente. PORQUE ES NECESARIO EL UML: Anteriormente los programadores no realizaban un plan bien definido en los análisis para resolver los problemas, hoy en día ya se requiere de esto, pues un cliente debe de comprender qué es lo que hará un equipo de desarrolladores; el desarrollo es un esfuerzo orientado a equipos, por que cada uno de sus miembros tiene que saber qué lugar toma su trabajo en la solución final. Debido a la complejidad de los sistemas informáticos en el cual se encuentran diversas piezas de hardware y software que se comunican a grandes distancias mediante una red, se debe tener en cuenta la organización de proceso del diseño, en el cual los analistas, clientes, desarrolladores y otras personas comprendan bien el desarrollo del sistema. El UML proporciona tal información. Realizar un plan de diseño es totalmente importante porque así se satisfacen las necesidades del cliente, permitiendo que el programa generado funcione debido a las expectativas de los usuarios. Cuando el periodo de desarrollo es reducido, hace que los plazos se encuentren muy cerca uno del otro, contando así con un diseño sólido. También las adquisiciones corporativas requieren de un diseño sólido, cuando la empresa adquiere a otra, la nueva organización debe tener la posibilidad de modificar aspectos importantes de un proyecto de desarrollo que esté en proceso. Un anteproyecto bien diseñado facilitará la conversión. Si el diseño es sólido, un cambio en la implementación procederá sin problemas. Con los diseños solidos se vio la necesidad de la creación de un diseño de notación, que los analistas, diseñadores y clientes acepten como pauta. El UML es esa notación. LA CONCEPCIÓN DEL UML: El UML fue creado por Grady Booch, James Rumbaugh e Ivar Jacobson, apodados los “Tres amigos”; cada uno diseñó su propia metodología para el análisis y diseño orientado a objetos, intercambiaron sus ideas entre sí para desarrollar sus ideas en conjunto. Tras los grandes resultados de los anteproyectos, el consorcio produjo la versión 1.0 del UML, después la 1.1. El UML ha llegado a ser el estándar de facto en la industria del software, y su evolución continúa. DIAGRAMAS DEL UML: El UML esta compuesto por diferentes elementos gráficos que combinados forman diagramas. Ya que el UML es un lenguaje, cuenta con reglas para combinar dichos elementos. Los diagramas muestran diversas perspectivas de un sistema, conocida como modelo, el modelo UML describe lo que hará un sistema, pero no dice como implementar dicho sistema. DIAGRAMAS DE CLASE: Las categorías (automóviles, mobiliario, lavadoras) son llamadas también clases. Una clase es una categoría o grupo de cosas que tienen atributos (propiedades) y acciones similares. Como ejemplo se pude citar la clase Lavadora, la cual sus atributos son la marca, el modelo, el número de serio y la capacidad. Las acciones de las cosas de esta clase son “agregar ropa”, “agregar detergente”, “activarse” y “sacar ropa”. Un diagrama de clase está formado por rectángulos divididos en tres áreas, en la superior se encuentra el nombre, en la central los atributos y en la inferior las acciones. Símbolo UML de una clase:
Los diagramas de clases colaboran al análisis. Permiten al analista hablarle a los clientes en su propia terminología, lo cual hace posible que los clientes indiquen importantes detalles de los problemas que requieren ser resueltos. DIAGRAMAS DE OBJETOS: Un objeto es una entidad que valores específicos de los atributos y acciones. La lavadora podría tener la marca Laundatorium, el modelo Washmesiter, el número de serie GL57774 y una capacidad del 7kg. Veamos en la siguiente figura como se representa un objeto en UML. El símbolo es un rectángulo, como en una clase, pero el nombre está subrayado. El nombre de la instancia específica se encuentra a la izquierda de los dos puntos (:), y el nombre de la clase a la derecha. Símbolo UML del objeto:
DIAGRAMAS DE CASO DE USO: Un caso de uso es una descripción de las acciones de un sistema desde el punto de vista del usuario. Para los desarrolladores de sistemas es una técnica de aciertos y errores para obtener los requerimientos del sistema desde el punto de vista del usuario.
A la figura correspondiente al Usuario de la lavadora se le conoce como actor. DIAGRAMAS DE ESTADOS: Un objeto puede estar en un estado particular; una persona puede ser recién nacida, infante, adolescente, joven o adulta. Una lavadora podrá estar en fase de remojo, lavado, enjuague, centrifugado o apagada. En la siguiente imagen de estados UML muestra las transiciones de la lavadora de un estado al otro. El símbolo que esta en la parte superior de la figura representa el estado inicial y el de la parte inferior el estado final.
DIAGRAMA DE SECUENCIAS: Los diagramas de clases y los de objeto representan información estática. En un sistema funcional los objetos interactúan entre sí, y tales interacciones suceden con el tiempo. El diagrama de secuencias UML muestra la mecánica con la interacción con base en tiempos. La lavadora tiene como componentes: una manguera de agua, un tambor y un sistema de drenaje. Cuando se invoque el caso de lavar ropa, el orden seria el siguiente: 1. El agua empezará a llenar el tambor mediante una manguera. 2. El tambor permanecerá inactivo durante 5 minutos. 3. La manguera dejará de abastecer agua. 4. El tambor girará de un lado a otro durante 15 minutos. 5. El agua jabonosa saldrá por el drenaje. 6. Comenzará nuevamente el abastecimiento de agua. 7. El tambor continuará girando. 8. El abastecimiento de agua se detendrá. 9. El agua del enjuague saldrá por el drenaje. 10. El tambor girará en una sola dirección y se incrementará su velocidad por cinco minutos. 11. El tambor dejará de girar y el proceso de lavado habrá finalizado.
DIAGRAMAS DE ACTIVIDADES: Las actividades que ocurren dentro de un caso o dentro del comportamiento de un objeto de dan normalmente en secuencia.

DIAGRAMA DE COLABORACIONES:
Los elementos de un sistema trabajan en conjunto para cumplir con los objetivos del sistema, y un lenguaje de modelado deberá contar con una forma de representar esto. 

DIAGRAMA DE COMPONENTES:
El moderno desarrollo de software se realiza mediante componentes, lo que es particularmente en los procesos de desarrollo en equipo. 

DIAGRAMAS DE DISTRIBUCIÓN:
El diagrama de distribución UML muestra la arquitectura física de un sistema informático. Puede representar los equipos y dispositivos, mostrar sus interconexiones y el software que se encontrará en cada máquina. 
 

OTRAS CARACTERÍSTICAS:
Paquetes: En ocasiones se verá la necesidad de organizar los elementos de un diagrama en un grupo. Para ello se agruparan en un paquete que se representará por una carpeta tabular. 

Notas: La nota UML sirve para explicar del porqué está allí cierto diagrama. La nota es un rectángulo con una esquina doblada, y dentro del rectángulo se coloca la explicación. 

ESTEREOTIPOS:
El UML otorga varios elementos de utilidad. Los estereotipos clisés le permiten tomar elementos propios del UML y convertirlos en otros. Es como comprar un traje del mostrador y modificarlo para que se ajuste a sus medidas (diferente a confeccionarse uno nuevo). Imagínese a un estereotipo como este tipo de alteración. Lo representará como un nombre entre dos pares de paréntesis angulares y después los aplicará correctamente. 
Una interfaz es una clase que realiza operaciones y que no tiene atributos, es un conjunto de acciones que tal vez quiera utilizar una y otra vez en su modelo. 
ORIENTACIÓN A OBJETOS:
La orientación a objetos ha tomado el mundo del software. Tiene varias ventajas como medio para le generación de programas. Impulsa una metodología basada en componentes para el desarrollo de software. La orientación a objetos es un paradigma que depende de ciertos principios fundamentales. 
OBJETOS, OBJETOS POR DOQUIER:
Los objetos concretos y virtuales están a nuestro alrededor, ellos conforman nuestro mundo. El objeto es la instancia de una clase o categoría. Un objeto cuenta con una estructura, es decir atributos, propiedades y acciones. Las acciones son todas las actividades que el objeto es capaz de realizar. Los atributos y acciones, en conjunto, se conocen como características o rasgos.
Una clase además de categorizar, es una plantilla para fabricar objetos. 



Recuerde que el propósito de la orientación a objetos es desarrollar software que refleje particularmente un esquema del mundo. Entre más atributos y acciones tome en cuenta, mayor será la similitud de su modelo con la realidad. En el ejemplo de la lavadora, tendrá un modelo más exacto si incluye los siguientes atributos: volumen del tambor, cronómetro interno, trampa, motor y velocidad del motor. Podría hacerlo más preciso si incluye las acciones de agregar blanqueador, cronometrar el remojo, cronometrar el lavado el enjuague y el centrifugado. 

ALGUNOS CONCEPTOS:
La orientación a objetos se refiere a algo más que tan solo atributos y acciones; también posee aspectos como abstracción, herencia, polimorfismo, y encapsulamiento o encapsulación. Otros elementos importantes de la orientación a objetos son el envío de mensajes, las asociaciones y la agregación. 
Abstracción: Se refiere a quitar las propiedades y acciones de un objeto para dejar aquellas que solo sean necesarias. Diferentes tipos de problemas requieren distintas cantidades de información, aun si estos problemas pertenecen a un área en común. 
Si pertenece al equipo que de desarrollo que generará la aplicación que simule con exactitud lo que hace una lavadora, deberá agregar mas atributos y mas acciones en la prime fase. 
Herencia: Un objeto es una instancia de la clase. Como instancia de una clase, un objeto tiene todas las características de la clase de la que proviene. A esto se le conoce como herencia. 
Un objeto no sólo hereda de una clase, sino que una clase también puede heredar de otra.
La clase electrodoméstico es una superclase de todas las demás. 

Electrodoméstico es una subclase del Artículos del hogar:

Polimorfismo: En ocasiones una operación tiene el mismo nombre en diferentes clases. 

En el polimorfismo, una operación puede tener el mismo nombre en diversas clases, y funcionar distinto en cada uno. 
El polimorfismo también es importante para los modeladores ya que les permite interactuar con los clientes, en las propias palabras y terminología del cliente. El polimorfismo permite al modelador mantener tal terminología sin tener que crear palabras artificiales para sustentar una unicidad innecesaria de los términos. 
Encapsulamiento: El encapsulamiento es cuando un objeto trae consigo su funcionalidad, esta última se oculta. A este se le conoce también como ocultamiento de la información. Pero un objeto tiene que presentar un “rostro” al mundo exterior para poder iniciar sus operaciones. 



Los objetos encapsulan lo que haces; es decir, ocultan la funcionalidad interna de sus operaciones, de otros objetos y del mundo exterior. 
La importancia del encapsulamiento es que en el mundo del software, este permite reducir el potencial de errores que pueden ocurrir. 
Envío de mensajes: Recordemos que en un sistema los objetos trabajan en conjunto. Esto se logra mediante el envío de mensajes entre ellos. Un objeto envía a otro un mensaje para realizar una operación, y el objeto receptor ejecutará la operación. 
Asociaciones: Otro acontecimiento común es que los objetos se relacionan entre sí de alguna forma. 

Ejemplo de un mensaje enviado de un objeto a otro: el objeto “control remoto” envía un mensaje al objeto “televisión” para encenderse. El objeto “televisión” recibe el mensaje mediante su interfaz, un receptor infrarrojo.
Con frecuencia los objetos se relacionan entre sí de alguna forma. Cuando usted enciende su televisión, tendrá una asociación en una sola dirección con ella. 

En ocasiones, un objeto podría asociarse con otro en más de una forma. 

Una clase se puede asociar con más de una clase distinta.

La multiplicidad o diversificación es un importante aspecto de las asociaciones entre objetos. Indican la cantidad de objetos de una clase que se relacionan con otro objeto en particular de la clase asicada. 
Agregación: Una computadora es un ejemplo de agregación: un objeto que se conforma de una combinación de diversos tipos de objetos.
La computadora es una agregación o adición, un tipo de asociación entre objetos. Un equipo (computador) está constituido de diversos tipos de componentes.

Un tipo de agregación trae consigo una estrecha relación entre un objeto agregado y sus objetos componentes. A esto se le conoce como composición. El punto central de la composición es que el componente se considera como tal sólo como parte del objeto compuesto. 
La agregación y la composición son importantes dado que reflejan casos extremadamente comunes, y ello ayuda a que cree modelos que se asemejen considerablemente a la realidad. 


La recompensa: Los objetos y sus asociaciones conforman la columna vertebral de la funcionalidad de los sistemas. Para modelarlos, necesitará comprender lo que son las asociaciones. 


USO DE LA ORIENTACIÓN A OBJETOS:
Concepción de una clase: Recordemos que el rectángulo es el símbolo que representa una clase. El nombre de la clase es una palabra que con la primera letra en mayúscula y normalmente se coloca en la parte superior del rectángulo. Si el nombre de su clase consta de dos palabras, únalas e inicie cada una con mayúsculas. 

El paquete es otra estructura del UML y juega un papel en el nombre de la clase.



Si al clase “Lavadora” es parte de un paquete llamado “Electrodomésticos”, podrá darle el nombre “Electrodomésticos:: Lavadora”. Los puntos separa el nombre del paquete al nombre de la clase. A esta clase se le conoce como nombre de ruta. 

Atributos: Un atributo es una propiedad o característica de una clase y describe un rango de valores que la propiedad podrá contener en los objetos de la clase. 
Todo objeto de la clase tiene un valor específico en cada atributo. El nombre de un objeto inicia con una letra en minúscula, y esta precedido de dos puntos que a su vez están precedidos del nombre de la clase, y todo el nombre está subrayado.
El UML le da la opción de indicar la información adicional a los atributos. Cada valor de atributo tiene símbolos, entre los cuales se encuentran la cadena (string), número de punto flotante (float), entero (integer), y booleano (boolean). Para indicar un tipo, utilice dos puntos (:) para separar el nombre del atributo de su tipo.

Operaciones: Una operación es algo que la clase puede realizar, o que usted u otra clase pueden hacer a una clase.

En los paréntesis que preceden al nombre de la operación podrá mostrar el parámetro con que funcionará la operación junto con su tipo de dato. La función, que es un tipo de operación, devuelve un valor luego que finaliza su trabajo. 
Estas secciones de información acerca de una operación se conocen como la firma de la operación.

Atributos, operaciones y concepción: En la práctica no siempre mostrará todos los atributos y operaciones de una clase.
Para indicar que solo se enseñarán algunos atributos, seguirá la lista de aquellos que mostrará con tres puntos (…), los cuales se conocen como puntos suspensivos. A la omisión de ciertos o todos los atributos y operaciones se les conoce como abreviar una clase. 
Si tiene una larga lista de atributos u operaciones podrá utilizar un estereotipo para organizarla de forma que se a más comprensible. Un estereotipo es el modo en el que el UML permite extenderlo, es decir, crea nuevos elementos que son específicos de un problema en particular que intente resolver. El estereotipo esta rodeado por los paréntesis angulares. 

Responsabilidades y restricciones: La responsabilidad es un descripción de lo que hará la clase, es decir, lo que sus atributos y operaciones intentan realizar en conjunto. 
Para agregar una restricción se hace utilizando un texto libre bordeado por llaves; este texto especifica una o varias reglas que sigue la clase. 
La regla entre llaves restringe al atributo capacidad para contener uno de tres posibles valores. 

Notas adjuntas: Por encima y debajo de los atributos, operaciones, responsabilidades y restricciones, puede agregar mayor información a una clase en la figura de notas adjuntas.

Qué es lo que haces las clases y como encontrarlas: Las clases son el vocabulario y terminología de un área del conocimiento.


USO DE RELACIONES:
Asociaciones: Cuando las clases se conectan entre sí de forma conceptual, esta conexión se conoce como asociación. 

Cuando una clase se asocia con otra, cada una de ellas juega un papel dentro de tal asociación. Puede representar estos papeles en el diagrama escribiéndolos cerca de la línea que se encuentra junto a la clase que juega el papel correspondiente. 
La asociación puede funcionar en dirección inversa. Pueden aparecer dos asociaciones entre clases en el mismo diagrama.
Las asociaciones podrían ser más complejas que tan sólo una clase conectada a otra. Varias clases se pueden conectar a una.

Restricciones en las asociaciones: En algunos casos una asociación entre dos clases debe seguir cierta regla. Ésta se indica a al establecer una restricción junto a la línea de asociación. 
Puede establecer una restricción en una asociación. Es este caso, la asociación Atiende está restringida para que el Cajero atienda al cliente en turno.
Otro tipo de restricción es la relación O conocida como {Or} en una línea discontinua que conecte a dos líneas de asociación. 

Clase de asociación: Una asociación puede contener atributos y operaciones. Cuando se presente este caso, usted tendrá una clase de asociación. Una clase de asociación puede tener asociaciones con otras clases.
Una clase de asociación modela los atributos y operaciones de una asociación. Se conecta a una asociación mediante un línea discontinua, y puede asociarse a otra clase. 

Vínculos: Una asociación cuenta con instancias. Un vínculo es la instancia de una asociación. Conecta a los objetos en lugar de las clases. Deberá subrayar el nombre del vínculo, como se hace en el nombre de un objeto.  


Multiplicidad: La asociación trazada entre Jugador y Equipo sugiere que las dos clases tienen una relación de uno a uno. La multiplicidad señala la cantidad de objetos de una clase que pueden relacionarse con un objeto de una clase asociada.
Hay varios tipos de multiplicidad. Una clase puede relacionarse con otra en un esquema de uno a uno, uno a muchos, uno a uno o más, uno a ninguno o uno, uno a un intervalo definido, uno a exactamente n, o uno a un conjunto de operaciones. El UML utiliza un asterisco (*) para representar más y muchos. 

Asociaciones calificadas: Cunado la multiplicidad de una asociación es de uno a muchos, con frecuencia se presenta un reto muy particular: la búsqueda.
En el UML la información de identidad se conoce como calificador. Su símbolo es un pequeño rectángulo adjunto a la clase que hará la búsqueda. 
Un calificador en una asociación resuelve el problema de la búsqueda. 

Asociaciones reflexivas: En una asociación reflexiva, trazará la línea de la clase hacia si misma y podrá incluir los papeles, nombre de la asociación y su dirección, así como su multiplicidad. 

Herencia y generalización: Uno de los sellos distintivos de la orientación a objetos es que captura uno de los mayores aspectos del sentido común en cuanto a la vida diaria. Si usted sabe que algo es un electrodoméstico, ya sabrá que contará con un interruptor, una marca y un número de serie. La orientación a objetos se refiere a esto como herencia. El UML lo denomina generalización. 
En el UML representará la herencia con una línea que conecte a la clase principal con la secundaria. 

AGREGACIÓN, COMPOSICIÓN, INTERFACES Y REALIZACIÓN
Agregaciones: En ocasiones una clase consta de otras clases. Éste es un tipo de relación conocida como agregación o acumulación. Puede representar una agregación como una jerarquía dentro de la clase completa en la parte superior, y los componentes por debajo de ella. 


Restricciones en la agregaciones: En ocasiones el conjunto de componentes posibles en una agregación se establece dentro de una relación O. 


Composiciones: Una composición es un tipo muy representativo de una agregación. Cada componente de una composición puede pertenecer tan solo a un todo. El símbolo de una composición es el mismo que el de la agregación, excepto que el rombo esta relleno.

Contextos: Cuando modele un sistema podrían producirse, con frecuencia, agrupaciones de clases, como agregaciones o composiciones. En tal caso, deberá enfocar su atención en un agrupamiento o en otro, y el diagrama de contexto le proporciona la característica de modelaje que requiere para tal fin. Un diagrama de contexto es como un mapa detallado de alguna sección de un mapa de mayores dimensiones. 


Para mostrar la camisa en el contexto de guardarropa y de algún atuendo, tendrá que ampliar su ámbito. 

Interfaces y realizaciones: una interfaz es un conjunto de operaciones que realiza una clase. Esta última se relaciona con una interfaz mediante la realización, misma que se indica por una línea discontinua con una punta de flecha en forma de triangulo sin rellenar que apunte a la interfaz.

Visibilidad: El concepto de visibilidad está muy relacionado con las interfaces y la realización. La visibilidad se aplica a atributos u operaciones, y establece la proporción en que otras clases podrán utilizar los atributos y operaciones de una clase dada. Existen tres niveles de visibilidad: nivel público (+), nivel protegido (#), nivel privado (-).

Ámbito: Es otro concepto referente a los atributos y operaciones, y a la forma en que se relacionan dentro de un sistema. Hay dos tipos de ámbitos; el de instancia y archivador. 

INTRODUCCIÓN A LOS CASOS DE USO.
Qué son los casos de uso: Cuando nos preguntamos como utilizaremos un producto o un sistema que queremos comprar, que satisfaga nuestras necesidades, esto es análisis de caso de uso. 
Este tipo de análisis es particularmente crucial  para la fase de análisis del desarrollo de un sistema. La forma en que los usuarios utilicen un sistema le da la pauta para lo que diseñará y creará. 
A las entidades que inician secuencias se les conoce como actores. 
Importancia de los casos de uso: El caso de uso es una excelente herramienta para estimular a que los usuarios potenciales hablen, de un sistema, desde sus propios puntos de vista. La idea es involucrar a los usuarios en las etapas iniciales del análisis y diseño del sistema. 


DIAGRAMAS DE CASOS DE USO.
Representación de un modelo de caso de uso: 
Una elipse representa el caso de uso, una figura agregada representa a un actor. El actor que inicia se encuentra a la izquierda del caso de uso, y el que recibe a la derecha. El nombre del actor aparece debajo de él, y el nombre de caso de uso aparece ya sea dentro de la elipse o justo debajo de ella. Una línea asociativa conecta al actor con el caso de uso. 

Secuencias de pasos en los escenarios: Cada caso de uso es una colección de escenarios y cada escenario es una secuencia de pasos. El uso de los diagramas de caso de uso será, parte de un documento de diseño que el cliente y el equipo de diseño tomarán como referencia. 

Concepción de las relaciones entre casos de uso: 
Inclusión: Para representar una inclusión se necesita de una línea discontinua con un apunta de flecha que conecte las clases apuntando hacia las clases dependientes. Sobre esa línea, agrega un estereotipo: la palabra incluir bordeada por dos pares de paréntesis angulares.

Extensión: La extensión solo sólo se puede realizar en puntos indicados de manera específica dentro de la secuencia del caso de uso de base. A estos puntos de les conoce como pintos de extensión.
La extensión se representa con una línea de dependencia, junto con un estereotipo que muestra  extender entre paréntesis angulares. 



Generalización: Un caso de uso puede heredar el sentido y comportamiento de otro.

La relación de generalización puede establecerse entre actores, así como entre casos de uso.

Agrupamiento: En ciertos diagramas de casos de uso, podría tener varios casos de uso que querrá organizar. La forma más directa de organizar sería agrupar en un paquete los casos de uso que se relacionen. Recuerde que un paquete aparece como una carpeta tabular. Los casos de uso agrupados aparecerán dentro de la carpeta.

Comprensión del dominio: Para crear un diagrama de clases con una entrevista que refleje cómo es la vida en el mundo de la consultoría se incluyen: Consultor, Cliente, Proyecto, Propuesta, Datos e Informe.

Comprensión de los casos de uso: La jerarquía se usuarios que interactúan con la LAN.


Profundización: Un diagrama de casos de uso de alto nivel que representa una LAN para una firma de consultoría. 

El panorama: