jueves, 16 de octubre de 2008

¿Qué es UML?
UML es un lenguaje estándar que sirve para escribir los planos del software, puede utilizarse para visualizar, especificar, construir y documentar todos los artefactos que componen un sistema con gran cantidad de software. UML puede usarse para modelar desde sistemas de información hasta aplicaciones distribuidas basadas en Web, pasando por sistemas empotrados de tiempo real.
UML es un lenguaje por que proporciona un vocabulario y las reglas para utilizarlo, además es un lenguaje de modelado lo que significa que el vocabulario y las reglas se utilizan para la representación conceptual y física del sistema.
UML es un lenguaje que nos ayuda a interpretar grandes sistemas mediante gráficos o mediante texto obteniendo modelos explícitos que ayudan a la comunicación durante el desarrollo ya que al ser estándar, los modelos podrán ser interpretados por personas que no participaron en su diseño (e incluso por herramientas) sin ninguna ambigüedad. En este contexto, UML sirve para especificar, modelos concretos, no ambiguos y completos.

Orígenes e historia de UML

Creado hace más de una década, el UML o Lenguaje de Modelado Unificado se ha convertido en un estándar de facto en la industria ya que permite modelar, construir y documentar los elementos que forman un sistema de software orientado a objetos. El resultado: ahorro de costos, mejor calidad de aplicaciones e importantes reducciones de tiempo en los proyectos de desarrollo.
UML (Unified Model Language) o Lenguaje de Modelado Unificado posee tres fuentes distintas en sus orígenes. Se trata de la “Técnica de Modelado de Objetos” (OMT), de James Rumbaugh, el “Método Booch”, de Grady Booch, y “Objetory”, de Ivar Jacobson (creador de OOSE - Object Oriented Software Engineer). Estos tres reconocidos expertos en 1994 realizaron la primera versión de UML para la empresa Rational Software Corporation (adquirida en el 2003 por IBM en 2.100 millones de dólares), haciendo cada uno aportes desde las perspectivas que venían desarrollando.
Rápidamente, en 1997, UML fue aceptado por la OMG (Object Management Group), una organización sin fines de lucro compuesta por destacadas compañías de la industria, como IBM, Sun Microsystems y HP, entre otras, que se encargan de la definición y mantenimiento de estándares para aplicaciones. Junto con UML, la OMG también ha definido otros estándares conocidos a nivel mundial, como, por ejemplo, CORBA (Common Object Request Broker Architecture).

UML es un lenguaje de modelado unificado, lo cual significa que, en tanto lenguaje, contiene sintaxis y semánticas y, por ende, reglas de cómo deben agruparse sus elementos y significados de dicho conjunto. Es “modelado” por ser visual y “unificado” porque reúne diversas técnicas. Nace en el contexto de la necesidad de un lenguaje que no sólo comunicara ideas a otros desarrolladores, sino que también pudiera servir de apoyo en los procesos de análisis de un problema.
UML, que se ha convertido en el estándar de facto de la industria especialmente para las fases de análisis y de diseño, suele definirse, en términos simples, como “un lenguaje que permite modelar, construir y documentar los elementos que forman un sistema de software orientado a objetos”.
Los principales objetivos en los orígenes de UML fueron obtener un lenguaje simple que permitiera modelar aplicaciones en cualquier dominio, obtener un lenguaje legible, ya que sería utilizado por las personas, así como permitir la generación automática de código. En efecto, aunque UML está pensado para modelar sistemas complejos con gran cantidad de software, el lenguaje es lo suficientemente expresivo como para modelar sistemas que no son informáticos, como, por ejemplo, los flujos de trabajo (workflow) en una empresa, el diseño de la estructura de una organización e incluso en el diseño de hardware.
UML es así un lenguaje capaz de abstraer cualquier tipo de sistema (informático o no), mediante los diagramas, esto es, mediante representaciones gráficas que contienen toda la información relevante del sistema. Para lograrlo, utiliza distintos tipos de diagramas, como los diagramas de implementación, diagramas de comportamiento o interacción, diagramas de casos de uso y diagramas de clases.
Aún siendo independiente del proceso de desarrollo, UML cuenta con su propia metodología de desarrollo, denominada “Proceso Unificado de Desarrollo”, la cual está basada en componentes. Este proceso utiliza UML para expresar gráficamente todos los esquemas de un sistema de software.
Actualmente, el estándar UML se encuentra en la versión 2. Con UML 2 la OMG se propuso dos objetivos principales. El primero, es hacer de UML un lenguaje mucho más extensivo de lo que era y el segundo, permitir la validación y ejecución de modelos creados con UML.



Historia del UML
La notación UML se deriva y unifica las tres metodologías de análisis y diseño Orientada a Objeto más extendidas:
• Metodología de Grady Booch para la descripción de conjuntos de objetos y sus relaciones.
• Técnica de modelado orientada a objetos de James Rumbaugh (OMT: Object-Modeling Technique).
• Aproximación de Ivar Jacobson (OOSE: Object- Oriented Software Engineering) mediante la metodología de casos de uso (use case).
El desarrollo de UML comenzó a finales de 1994 cuando Grady Booch y Jim Rumbaugh de Rational Software Corporation empezaron a unificar sus métodos. A finales de 1995, Ivar Jacobson y su compañía Objectory se incorporaron a Rational en su unificación, aportando el método OOSE.
De las tres metodologías de partida, las de Booch y Rumbaugh pueden ser descritas como centradas en objetos, ya que sus aproximaciones se enfocan hacia el modelado de los objetos que componen el sistema, su relación y colaboración. Por otro lado, la metodología de Jacobson es más centrada a usuario, ya que todo en su método se deriva de los escenarios de uso. UML se ha ido fomentando y aceptando como estándar desde el OMG que es también el origen de CORBA, el estándar líder en la industria para la programación de objetos distribuidos. En 1997 UML 1.1 fue aprobada por la OMG convirtiéndose en la notación estándar de facto para el análisis y el diseño orientado a objetos.

Aplicaciones de UML
Visualizar: UML permite expresar de una forma gráfica un sistema de forma que otro lo puede entender.
Especificar: UML permite especificar cuáles son las características de un sistema antes de su construcción.
Construir: A partir de los modelos especificados se puede construir los sistemas diseñados.
Documentar: Los propios elementos gráficos sirven como documentación del sistema desarrollado, sirviendo para su futura revisión.
Conceptos Base para el diseño de aplicaciones
Un modelo UML esta compuesto por tres clases de bloques de construcción. El primero de ellos son los elementos, es decir, las abstracciones de cosas reales o ficticias (como objetos y acciones, por ejemplo); luego se encuentran las Relaciones, esto es la relación entre los elementos (la cual puede ser de dependencia, asociación, generalización, etc.); finalmente, se encuentran los Diagramas, que son colecciones de elementos con sus relaciones.
Los elementos de UML pueden ser estructurales, de comportamiento de agrupación o de anotación.
1. Elementos Estructurales
Actor: "Algo" o "alguien" que puede interaccionar con el sistema que se está desarrollando.
Casos de Uso: Descripción de un conjunto de secuencias de acciones que un sistema ejecuta y que produce un resultado observable de interés para un actor particular.
Clase: Corresponde a una descripción de un conjunto de objetos que comparten los mismos atributos, operaciones, relaciones y semántica.
i. Objetos: Un objeto es una instancia de alguna clase.

Herencia (Especialización/Generalización):
Indica que una subclase hereda los métodos y atributos especificados por una Super Clase, por ende la Subclase además de poseer sus propios métodos y atributos, poseerá las características y atributos visibles de la Super Clase (public y protected), ejemplo:

En la figura se especifica que Auto y Camión heredan de Vehículo, es decir, Auto posee las Características de Vehículo (Precio, VelMax, etc) además posee algo particular que es Descapotable, en cambio Camión también hereda las características de Vehiculo (Precio, VelMax, etc) pero posee como particularidad propia Acoplado, Tara y Carga.
Cabe destacar que fuera de este entorno, lo único "visible" es el método Caracteristicas aplicable a instancias de Vehículo, Auto y Camión, pues tiene definición publica, en cambio atributos como Descapotable no son visibles por ser privados.


2. Elementos de Comportamiento
Mensajes: Los mensajes se usan para especificar una comunicación entre objetos.
Beneficios de UML
UML representa para los desarrolladores de aplicaciones y sistemas una serie de ventajas, al igual que para las organizaciones, entre estos beneficios destacan:
*Produce un aumento en la calidad del desarrollo.
*Reduce los costos del proyecto.
*Mejora en un 50% o más los tiempos totales de desarrollo.
*Permite especificar la estructura y el comportamiento del sistema y comunicarlo a todos los integrantes del proyecto.
*Brinda la posibilidad de obtener un "plano" del sistema.
*Permite dimensionar mejor los riesgos de un proyecto tener un mejor rendimiento antes de construir el sistema.
*Facilita la documentación de las decisiones de la arquitectura del proyecto.
*Ofrece un mejor soporte a la planificación y control del proyecto.
*Ofrece mayor rigurosidad en la especificación.
*Permite realizar una verificación y validación del modelo realizado.
*Se pueden automatizar determinados procesos y permite generar código a partir de los modelos y viceversa.




Seguimientos de algoritmos y diseño de aplicaciones:









Nombre: Manejo de Pacientes
Alias:
Actores: Usuario del Sistema, Cliente

Función: Permitir el mantenimiento del catalogo de pacientes.
Descripción: El Usuario del Sistema puede registrar pacientes nuevos, ingresando sus datos. El sistema debe validar:

1. Que se ingrese una cédula.
2. Que se ingrese el primer nombre y el primer apellido.
3. Se asigne un Sexo.
4. Se ingrese la fecha de nacimiento del paciente.
5. Se ingrese un teléfono de contacto.
6. Se ingrese la fecha de registro, esta será tomada de la fecha del sistema.

También es posible modificar o Eliminar un paciente.
Referencias:
Nombre: Manejo de Citas
Alias:
Actores: Usuario del Sistema, Cliente
Función: Permitir el mantenimiento del catalogo de citas.
Descripción: El Usuario del Sistema puede registrar nuevas citas, ingresando sus datos. El sistema debe validar:

1. Que se ingrese un motivo de la cita.
2. Que se ingrese un código para la cita, es generado por el sistema.
3. Se ingrese una fecha de registro, esta será tomada del sistema...
4. Se ingrese la fecha en que se realizará la cita.
5. Se ingrese la hora de la cita.
6. Se ingrese la cédula del paciente.
7. Se ingrese el estatus de la cita, por defecto "abierta"

También es posible modificar el registro de un paciente o eliminarlo.
Clase

UML Clase Asociación Generalización Agregación
Booch Clase Usa Hereda Contiene
Coad Clase y objeto Conexión de instancias Espec-gen Parte-todo
Jacobson Objeto Asociación por reconocimiento Hereda Consiste en
Odell Tipo de objeto Relación Subtipo Composición
Rumbaugh Clase Asociación Generalización Agregación
Shlaer/ Mellor Objeto Relación Subtipo N/A










Combinaciones en UML
Los bloques de construcción de UML no pueden combinarse de cualquier manera. Como cualquier lenguaje UML tiene unas reglas que especifican a qué debe parecerse un modelo bien formado. Un modelo bien formado es aquel que es semánticamente auto consistente y está en armonía con todos sus modelos relacionados.
UML tiene reglas semánticas para:
• Nombres: Cómo llamar a los elementos, relaciones y diagramas.
• Alcance: El contexto que da significado específico a un nombre.
• Visibilidad: Cómo se pueden ver y utilizar esos nombres por otros.
• Integridad: Cómo se relacionan apropiada y consistentemente unos elementos con otros.
Responsabilidades La responsabilidad es el conocimiento que el objeto debe mantener y las acciones que puede realizar, en esencia la responsabilidad equivale a los servicios. (Verbos, frases y acciones verbales).

Atributos: es una propiedad de una clase identificada con un nombre, que describe un rango de valores que puedan tomar las instancias de la propiedad. Una clase puede tener cualquier número de atributos o no tener ninguno.
Operaciones: Es la implementación de un servicio que puede ser requerido a cualquier objeto de la clase para que muestre un comportamiento, en otras palabras es una abstracción de algo que se puede hacer a un objeto y que es compartido por todos los objetos de la clase.
Mecanismos comunes.
Bajo una serie de mecanismos que se aplican durante todo el proceso de desarrollo de modelos en UML, se consiguen diseños simples y eficientes. Estos mecanismos son los siguientes:
• Especificaciones: UML no es simplemente un lenguaje que proporciona elementos gráficos para modelado, tras cada elemento existe una especificación que nos va a permitir detallar textualmente el comportamiento de los mismos; de esta forma con los elementos gráficos conseguimos una visualización global del sistema y con la especificación conseguimos una visualización detallada del mismo.
• Adornos: Todos los elementos gráficos en UML poseen una notación gráfica que representa los aspectos más importantes de éstos; aún así existe una notación que permite representar los aspectos más específicos a través de adornos, consiguiendo así una especificación aún más detallada.


Área Vista Diagramas Conceptos Principales
Estructural Vista Estática Diagrama de Clases Clase, asociación, generalización, dependencia, realización, interfaz
Vista de Casos de Uso Diagramas de Casos de Uso Caso de Uso, Actor, asociación, extensión, generalización.
Vista de Implementación Diagramas de Componentes Componente, interfaz, dependencia, realización.
Vista de Despliegue Diagramas de Despliegue Nodo, componente, dependencia, localización.
Dinámica Vista de Estados de máquina Diagramas de Estados Estado, evento, transición, acción.
Vista de actividad Diagramas de Actividad Estado, actividad, transición, determinación, división, unión.
Vista de interacción Diagramas de Secuencia Interacción, objeto, mensaje, activación.
Diagramas de Colaboración Colaboración, interacción, rol de colaboración, mensaje.
Administración o Gestión de modelo Vista de Gestión de modelo Diagramas de Clases Paquete, subsistema, modelo.
Extensión de UML Todas Todos Restricción, estereotipo, valores, etiquetados