domingo, 18 de mayo de 2014

Diagramas de UML

Anteriormente los programadores intentaban de manera somera representar los requerimientos del cliente dibujando dos o tres garabatillos que solo ellos entendían. Seguidamente casi sin analizar un poco más lo que han obtenido del cliente empezaban a programar el sistema agregando poco a poco el código que fuera necesario en el proceso. Hoy en día ésta no es una práctica recomendada dado que no se transmite una idea clara del proceso al cliente y éste no puede evidenciar de manera correcta el avance del sistema. Puede ocurrir el caso de que el analista haya malinterpretrado al cliente y esto solo se evidencie después de la progamación del proyecto.


Es por esto, que hoy en día es necesario contar con un plan bien definido del proceso de desarrollo de software. Se debe organizar el proceso de diseño de tal forma que los analistas, desarrolladores, project manger, y otras personas involucradas en el desarrollo del sistema comprendan cuál es el objetivo general del mismo y el lugar que ocupa cada uno dentro de él. Es entonces cuando aparece el concepto de UML (Lenguaje unificado de modelado) que solidifica el proceso de creación de proyectos de software permitiendo al observador distinguir los aspectos relevantes del sistema, así como visualizar de forma clara y fácil el flujo del mismo.

UML utiliza una serie de diagramas para representar el comportamiento, flujo e interacción del sistema. A continuación se presentará de forma breve cada diagrama y los conceptos que representan.

Diagrama de clases


El concepto de clase hace referencia a la agrupación de entidades del mundo real según sus características y comportamiento similares. Por ejemplo, podríamos denominar una clase Laptop, con atributos como marca, modelo, memoria, y precio; y comportamientos como encender, apagar, y ejecutar aplicaciones. Para representar esta clase se utiliza el siguiente diagrama:

Diagrama de clase
Note como el símbolo UML de una clase está conformado por tres rectángulos. El primo es el nombre de la clase que debe tener su primera letra en mayúscula, el rectángulo del medio representa los atributos de la clase que deben estar minúsculas y finalmente el último rectángulo representa los métodos (comportamiento) de la clase en notación CamelCase.

Los diagramas de clases son importantes debido a que representan una parte del mundo real y de esta forma es más fácil comunicarle al cliente los detalles de los problemas que requieren ser resueltos.

Diagrama de objetos


Un objeto es un elemento propio de la clase con valores de atributos definidos. Por ejemplo, un objeto Laptop podría tener las siguientes características:

Marca: Sony
Modelo: Vaio SVE14121CLW
Memoria: 4Gb
Precio: 700 USD

Para representar cualquier objeto de la clase Laptop se utiliza el siguiente diagrama: 

Diagrama de objetos

Diagrama de casos de uso


Un caso de uso es la descripción de una parte del comportamiento del sistema desde el punto de vista del usuario. Los personajes que tomarán parte en el caso de uso de denominan actores. Un caso de uso sirve para visualizar el flujo e interacción dentro del sistema de algún proceso.

Más adelante se verá detalladamente los componentes de un caso de uso y cómo debe ser utilizado correctamente. Por ahora se muestra un ejemplo muy sencillo del caso de uso Encender laptop que tiene como objetivo encender la computadora.

Diagrama de caso de uso

Note como el actor "Usuario de laptop" ha sido representado con un "muñeco" de palo y el caso de uso con una elipse.

Diagrama de estados


El diagrama de estados es usado para dar una descripción abstracta del comportamiento del sistema. Este comportamiento es analizado y representado por una serie de eventos que pueden representar a su vez uno más posibles estados. El cambio entre estados se denomina transición. A continuación presentamos los dos estados que posiblemente podría presentar un objeto de la clase Laptop.

Diagrama de estados

Diagrama de secuencias

Los diagramas de secuencia son utilizados para modelar la interacción entre objetos en un sistema. Los diagramas vistos anteriormente como el de clases y objetos presentan información estática, sin embargo el diagrama de secuencias muestra cómo el sistema fluye de acuerdo a una secuencia preestablecida. Continuando con el ejemplo de la clase Laptop qué sucedería cuando se invoque al caso de uso "Encender Laptop" ?, la secuencia de interacción deberá ser la siguiente:

1. El computador indicará mediante un led que ya está encendido
2. El programa BIOS iniciará la secuencia POST en el computador
3. Se cargará el sistema operativo instalado
4. Se cargará el entorno de escritorio o GUI
5. Se cargarán los programas de inicio
6. El usuario interactúa con el sistema
7. Se iniciar la orden de apagado
8. El sistema cierra las aplicaciones abiertas y la GUI
9. El sistema detiene los procesos
10. El led se apaga

Diagrama de secuencia

Diagrama de actividades

El diagrama de actividades de UML permite representar los comportamientos que tiene el sistema en un paso a paso por orden pero no tan generalizado como se ha visto en el diagrama de secuencia.


Diagrama de actividades - Encendido laptop


Diagrama de colaboraciones

En la vida cotidiana observamos diversos elementos que trabajando en conjunto llevan a un fin específico, en UML fue necesario implementar una serie de diagramas que permiten representar ello.


Diagrama de componentes

Los diagramas de componentes son empleados en UML para representar piezas específicas de un sistema, en el caso del laptop se podría mostrar de componente como ejemplo, su unidad de DVD.
Diagrama de componentes

Diagrama de distribución

El diagrama de distribución se puede entender como la versión macro del diagrama de componentes pues éste está diseñado para representar la arquitectura física de cualquier sistema informático en donde, para continuar con nuestro ejemplo del laptop, vendría a ser representado con un cubo y de estar conectado a un sistema, se enlazaría por medio de líneas.
Diagrama de distribución


Diagrama de paquetes


Pero cuando tenemos tantos diagramas, es necesario en ocasiones organizar elementos en grupos y es allí donde entran los diagramas de paquetes que nos permite reunir dichos elementos en un solo lugar, UML para éstos, usa el gráfico de un folder o carpeta y dentro de ella vendrán los ítems que hemos agrupado.

Diagrama de paquetes


Referencias

Joseph Schmuller - Aprendiendo UML en 24 Horas.
http://es.wikipedia.org/wiki/Caso_de_uso
http://en.wikipedia.org/wiki/State_diagram
http://es.wikipedia.org/wiki/Diagrama_de_secuencia
http://msdn.microsoft.com/es-es/library/dd409360.aspx

sábado, 17 de mayo de 2014

UML - Nociones básicas.

Antes de iniciar en el tema de UML es necesario conocer qué es un lenguaje de programación, para ello lo definiremos como la manera de llevar a cabo procesos en la computadora mediante expresiones algorítmicas que contienen conjuntos de caracteres, símbolos y reglas sintácticas definidas por el aplicativo que usemos para programar. Lo anterior es necesario conocerlo pues UML en sus siglas significa “Lenguaje de Modelado Unificado” y al igual que un lenguaje de programación emplea una normativa clara y concisa para desarrollar expresiones o ideas, empero, lo que diferencia a UML de un lenguaje de programación es que éste (UML) está diseñado de una manera más visual que le permite a cualquier persona ver, modificar, interpretar y complementar sin inconveniente alguno.Para mayor entendimiento pondré a disposición una imagen de lo que sería un diseño UML.

Fuente: http://mexcoder.com/wp-content/uploads/2013/11/UML_Use-case-diagram1.gif

Finalmente, si cualquier persona puede modificarlo a conveniencia entonces, ¿qué importancia tiene para la elaboración de programas?, pues bien, como hemos visto antes, UML está hecho de una manera más visual, lo que permite al programador manifestar sus proyectos o ideas y recibir retroalimentaciones por parte de otras personas que finalmente podrían ser traducidas a un lenguaje de programación, vemos así que UML es como una sala en la cual el usuario común y el programador pueden trabajar a la par.


Referencias

- UML (Unified Modeling Language). Universidad Yacambú [Facultad de ingeniería de sistemas]. Fecha consulta [12 de Mayo de 2014]. Recuperado de. http://www.oocities.org/es/avrrinf/tabd/Foro/Foro_UML.htm

- LENGUAJES DE PROGRAMACION. TECNOLOGIA. Fecha consulta [12 de Mayo de 2014]. Recuperado de.