8 may 2012

INTRODUCCIÓN A UML

EL LENGUAJE UNIFICADO DE MODELADO (UML)

En todas las disciplinas de la Ingeniería se hace evidente la importancia de los modelos ya que describen el aspecto y la conducta de "algo". Ese "algo" puede existir, estar en un estado de desarrollo o estar, todavía, en un estado de planeación. Es en este momento cuando los diseñadores del modelo deben investigar los requerimientos del producto terminado y dichos requerimientos pueden incluir áreas tales como funcionalidad, performance y confiabilidad. Además, a menudo, el modelo es dividido en un número de vistas, cada una de las cuales describe un aspecto específico del producto o sistema en construcción.El modelado sirve no solamente para los grandes sistemas, aun en aplicaciones de pequeño tamaño se obtienen beneficios de modelado, sin embargo es un hecho que entre más grande y más complejo es el sistema, más importante es el papel de que juega el modelado por una simple razón: "El hombre hace modelos de sistemas complejos porque no puede entenderlos en su totalidad".UML es una técnica para la especificación sistemas en todas sus fases. Nació en 1994 cubriendo los aspectos principales de todos los métodos de diseño antecesores y, precisamente, los padres de UML son Grady Booch, autor del método Booch; James Rumbaugh, autor del método OMT e Ivar Jacobson, autor de los métodos OOSE y Objectory. La versión 1.0 de UML fue liberada en Enero de 1997 y ha sido utilizado con éxito en sistemas construidos para toda clase de industrias alrededor del mundo: hospitales, bancos, comunicaciones, aeronáutica, finanzas, etc.


Los principales beneficios de UML son:


-Mejores tiempos totales de desarrollo (de 50 % o más).

-Modelar sistemas (y no sólo de software) utilizando conceptos orientados a objetos.
-Establecer conceptos y artefactos ejecutables.
-Encaminar el desarrollo del escalamiento en sistemas complejos de misión crítica.
-Crear un lenguaje de modelado utilizado tanto por humanos como por máquinas.
-Mejor soporte a la planeación y al control de proyectos.
-Alta reutilización y minimización de costos. 


UML, ¿Método o Lenguaje de Modelado?

UML es un lenguaje para hacer modelos y es independiente de los métodos de análisis y diseño. Existen diferencias importantes entre un método y un lenguaje de modelado. Un método es una manera explícita de estructurar el pensamiento y las acciones de cada individuo. Además, el método le dice al usuario qué hacer, cómo hacerlo, cuándo hacerlo y por qué hacerlo; mientras que el lenguaje de modelado carece de estas instrucciones. Los métodos contienen modelos y esos modelos son utilizados para describir algo y comunicar los resultados del uso del método.Un modelo es expresado en un lenguaje de modelado. Un lenguaje de modelado consiste de vistas, diagramas, elementos de modelo ¾ los símbolos utilizados en los modelos ¾ y un conjunto de mecanismos generales o reglas que indican cómo utilizar los elementos. Las reglas son sintácticas, semánticas y pragmáticas (figura 1).
[Image]

LENGUAJE MODELADO UNIFICADO, ERIKSSON, Hans-Erik and PENKER, Magnus"UML Toolkit" Wiley Computer Publishing, http://profesores.fi-b.unam.mx/carlos/aydoo/uml.html, 07 de Mayo de 2012.


APRENDIENDO UML "HORA 15"




METODOLOGÍAS: ANTIGUAS Y RECIENTES


Antes de comenzar a programar, los desarrolladores tienen que comprender con claridad el problema. Esto requiere que alguien analice sus requerimientos. Alguien debe convertir tal análisis a diseño. De esta manera, los codificadores comenzarán a producir el código a partir del diseño, después de probar y distribuir el código se convertirá  en un sistema.

EL MÉTODO ANTIGUO

Esta idea demasiado simplificada del proceso de desarrollo podrá darle una idea de que las etapas deberán sucederse en lapsos claramente definidos, una después de otra.
Este método tiende a la realización de tareas individuales. Si un analista no tiene contacto con un diseñador, y éste a su vez no tiene contacto con un diseñador, existe la posibilidad de que los tres miembros rara vez trabajen juntos para compartir puntos de vista importantes.

MÉTODO RECIENTE

 La moderna ingeniería de programas tiende a la colaboración entre las fases del desarrollo.
La ventaja es que conforme crece la comprensión, el equipo incorpora nuevas ideas y genera un sistema más confiable.

¡¡Lo que debe hacer un proceso de desarrollo!!

Para desarrollar las diferentes naturalezas de sistemas que demandan los negocios de hoy, es más que necesario el uso de un equipo. El conocimiento se ha especializado tanto que una persona no puede conocer todas las facetas de un negocio, comprender un problema, diseñar una solución, traducirla a un programa, distribuir el programa en el hardware y asegurarse que los componentes del hardware funcionen de forma conjunta.
El equipo tiene que formarse de analistas para comunicarse con el cliente y comprender el problema, diseñadores para generar una solución, programadores para codificarla e ingenieros de sistemas para distribuirla.
Finalmente el proceso deberá asegurar que sus facetas no sean discontinuas. En lugar de ello, debe obtenerse información entre las cfases para fomentar la creatividad y aumentar la facilidad de innovar.

GRAPPLE

Son las Guías para la Ingeniería de Aplicaciones Rápidas. GRAPPLE consta de cinco segmentos y no fases para eliminar la idea de que una fase debe completarse antes de completar la otra. Cada segmento, en turno, consta de diversas acciones. Cada acción trae consigo un producto del trabajo, y cada acción es responsabilidad de un jugador.
GRAPPLE se encauza a los sistemas orientados a objetos. Por ello, las acciones dentro de cada segmento se orientan a crear productos de trabajo de una naturaleza orientada  a objetos.

Los segmentos son:

1.    -Recopilación de necesidades
2.    -Análisis
3.    -Diseño
4.    -Desarrollo
5.    -Distribución

Antes de iniciar tales segmentos, debe asumir que el cliente ha generado un caso de negocios para el nuevo sistema.  El analista entrevista al cliente con la finalidad de comprender las principales entidades en el dominio del cliente, donde otro miembro del equipo tomará las notas. El modelador de objetos prestará atención a los sustantivos y empezará a convertir a cada uno en una clase. Finalmente, algunos de esos sustantivos se convertirán en atributos. El modelador también prestará atención a los verbos, que se convertirán en operaciones de las clases.

PRUEBAS DE DISEÑO

Los casos de uso permiten el diseño de pruebas del software. El objetivo es evaluar si el software hace lo que se supone que debería. El desarrollador de pruebas externo al equipo de desarrollo deberá utilizar los diagramas de caso de uso para crear secuencias de comandos en herramientas automatizadas de pruebas. Tales secuencias de comandos conformarán el producto del trabajo.

INICIAR LA DOCUMENTACIÓN

Los especialistas en la documentación trabajarán en conjunto con los diseñadores para empezar a generar un panfleto de la documentación y llegar a una estructura de alto nivel para cada documento.

DESARROLLO

De este segmento se encargan los programadores. Con suficiente análisis y diseño, este segmento debería realizarse con rapidez y sin problemas.

GENERACIÓN DEL CÓDIGO

Con los diagramas de clases, de objetos, actividades y de componentes a la mano, los programadores generarán el código del sistema. Tal código es el producto del trabajo de esta acción.

VERIFICACIÓN DEL CÓDIGO

Los especialistas en pruebas ejecutarán secuencias de comandos de prueba para evaluar si el código hace lo que se pretende. Los resultados de las pruebas son los productos del trabajo.

GENERACIÓN DE INTERFACES DEL USUARIO, CONEXIÓN CON EL CÓDIGO Y PRUEBA

Esta acción crea las interfaces de usuario ya aprobadas. El especialista en GUI las genera y conecta con el código. Las pruebas anteriores aseguran que las interfaces funcionen adecuadamente. El sistema en funcionamiento junto con las interfaces de usuario, son el producto del trabajo.
GRAPPLE

Los segmentos y acciones en GRAPPLE, verá que los movimientos van de los general a lo específico. Inicia con una asimilación de conceptos del dominio, trasciende a la funcionalidad de alto nivel, profundiza en los casos de uso, depura los modelos y diseña, desarrolla y distribuye el sistema. GRAPPLE es un patrón simplificado de un proceso de desarrollo.  






APRENDIENDO UML "HORA 14"



El UML necesita de todos los diagramas para permitir ver su sistema desde diversos puntos. De esta manera no sólo se aseguran que los elementos que habían creado pudiesen mostrar una idea clara de un sistema propuesto, o completamente reestructurado.
El UML cuenta con una arquitectura de cuatro capas. Tales capas se distinguen por la generalidad de los elementos que en ellas residen.  Se puede imaginar la arquitectura como una forma de resumir un conjunto de decisiones respecto a la forma en que se organiza un sistema.



CAPA DE METAMODELADO: CERCANO Y PERSONAL
Esta capa es una formación de tres paquetes: fundamentos, elementos de comportamientos y administración de modelos.

El paquete fundamentos contiene:
·         Núcleo
·         Elementos auxiliares
·         Tipos de datos
·         Mecanismos de extensión

El paquete de elementos de comportamiento contiene:

·         Comportamiento en común
·         Colaboraciones
·         Casos de uso
·         Máquinas de estado

El paquete de administración de modelos es en sí, un modelo. Es un diagrama de clases que muestra cómo se relacionan los elementos del UML entre sí, como son los paquetes o subsistemas.

EL PAQUETE DE FUNDAMENTOS

El núcleo define lo que necesita para crear un modelo UML. Cada uno de los elementos definidos es abstracto (no se pueden crear instancias de él) o concreto(se pueden crear instancias). Entre los elementos abstractos se encuentran elemento de modelado, elemento generalizable y clasificador. En los concretos clase, interfaz asociación y tipo de datos.

PAQUETE DE LOS ELEMENTOS DE COMPORTAMIENTO

Este paquete es la parte del UML que se encarga de modelar el procedimiento de un sistema.

El paquete de comportamiento común proporciona los conceptos de los elementos dinámicos, y soporta otros paquetes como son: casos de uso, máquinas de estado y colaboraciones.
Una colaboración describe la forma en que los clasificadores y sus asociaciones trabajan en conjunto para realizar una tarea en particular. Los diagramas de colaboraciones y los de caso de uso son parte de la perspectiva.

DEPENDENCIA

Cada uno extiende una relación de dependencia entre un origen (flecha punteada) y un destino (elemento que apunta la flecha).
Una dependencia de tipo <<se convierte en>> muestra que el origen y el destino son  el mismo objeto en distintos elementos. El origen se convierte en el destino con diferentes roles y valores. <<llamar>> tiene una operación como origen y otra como su destino. En esta dependencia estereotipada, la operación de origen invoca a la de destino. Una dependencia <<copiar>> indica que el destino es una copia exacta del origen. En una dependencia <<derivar>>, el origen se deriva del destino.
Una dependencia entre dos casos de uso también puede tener un estereotipo. Ya utilizado dos de ellos, <<extender>> y <<usar>>, aunque sustituyó <<incluir>> por <<usar>>. <<extender>>le indica que los comportamientos del caso de uso de destino se agregan al caso de uso de origen.
Una dependencia <<importar>> se establece entre dos paquetes.
El estereotipo <<instancia>> indica que el origen es una instancia de su destino, que siempre será un clasificador.

CLASIFICADOR

Los estereotipos extienden a los clasificadores de diversas formas.  El estereotipo <<metaclase>> muestra que el clasificador al que está adjunto es una metaclase de otra case. El <<tipo de autoridad>> indica que un clasificador tiene objetos que provienen de un antecesor en particular. También puede usar <<tipodeautoridad>> en una dependencia para mostrar que el destino es un tipo de potestad del origen.
Los estereotipos <<proceso>> y <<subproceso>> tienen que ver con el flujo de control. Ambos indican que su clasificador es una clave activa; es decir, sus objetos pueden iniciar la actividad de control. Un proceso puede consistir de varios subprocesos (flujos de control), y puede ejecutarse al mismo tiempo que otros procesos. Un subproceso puede ejecutarse junto con otros subprocesos en el mismo proceso.

CLASE

Un <<tipo>> es una clase que establece un dominio de objetos junto con atributos, operaciones y asociaciones. El <<tipo>> no contiene métodos (algoritmos ejecutables para sus operaciones).
Una <<claseDeImplementacion>> es lo contrario de un <<tipo>>. Representa la implementación de una clase en un lenguaje de programación.
Las restricciones, que son el mecanismo de extensión que ahora trataré, pueden también funcionar con los estereotipos. En ocasiones usará una restricción para mostrar las condiciones previas a una operación, aunque algunas veces mostrará sus condiciones posteriores.

ESTEREOTIPOS GRÁFICOS

Algunas veces en su dominio, tal vez tendrá que obtener un nuevo símbolo o dos para transmitir algo a un cliente.



El UML consta de cuatro etapas: objetos del usuario, modelado, metamodelado y metametamodelado (que van desde específicos hasta generales).
















APRENDIENDO UML "HORA 13"


El elemento primordial del hardware es un nodo, que es un nombre genérico para todo tipo de recurso de cómputo.
En el UML, un cubo representa a un nodo. Deberá asignar un nombre para el nodo, y podrá utilizar un estereotipo para indicar el tipo de recurso que sea.

El nombre es una cadena de texto. Si el nodo es parte de un paquete, su nombre puede contener también el del paquete.


Una línea que asocie a dos cubos representará una conexión entre ellos. Podrá utilizar un estereotipo para dar información respecto a la conexión.



Aunque la conexión es el tipo común de asociación entre dos nodos, es posible utilizar otros (como la agregación o la dependencia). Podrá representarlas de las distintas formas.

Los sistemas actuales de varios procesadores conectan nodos que podrían encontrarse lejanos entre sí. Para visualizar completamente este problema, necesitará también ver los ejemplos que podrán servirle para adaptarlos a su propio entorno.

UNA RED TOKEN-RING

En una red token-ring, las computadoras equipadas con una NIC (tarjeta de interfaz de red) se conectan a una MSAU (unidad central de acceso  a multiestaciones). Se conectan varias MSAU en una serie que podría parecer un anillo (por ello la parte ring del nombre). El token permite a cada equipo de cómputo saber cuándo se puede transmitir información. El token va de equipo en equipo hasta que uno de ellos contenga información por enviar.
Cuando se obtiene el token, sólo esa información del equipo puede ir por la red. Una vez que se envía, la información viaja hasta su destino. Cuando llega, se devuelve un acuse de recibo al equipo que la envió.


A diferencia de los MSAU en una red token-ring, los concentradores ARCnet no mueven el token en un anillo. Los equipos se lo pasan entre sí.



 THIN ETHERNET

La red thin Ethernet es un tipo, donde los equipos se conectan a un cable de red mediante dispositivos conocidos como conectores T. Un segmento de red puede unirse a otro mediante un repetidor, un dispositivo que amplifica una señal antes de transmitirla. También pueden hacerse conexiones de tipo RJ-45.

RED INALÁMBRICA RICOCHET DE METRICOM

Los radios de microceldillas difunden señales a puntos de acceso cableados que llevan la información a un NIF (dispositivo de interconexión a la red). El NIF consta de un servidor de nombres (base de datos que valida las conexiones), un enrutador y una puerta de enlace (dispositivo que traduce la información).



 El diagrama de distribución del UML ilustra la forma en que luce un sistema físicamente cuando sea conjugado. Un sistema consta de nodos, donde cada nodo se representa por un cubo. Una línea asocia a dos cubos y simboliza una conexión entre ellos.














APRENDIENDO UML "HORA 12"



Un componente de software es una parte física de un sistema, y se encuentra en la computadora. Un componente puede ser una tabla, un archivo de datos, ejecutable, documentos, etc.
Un componente es la personificación en software de una clase. La clase representa una abstracción de un conjunto de atributos y operaciones. Los componentes puede ser la implementación de más de una clase.


COMPONENTES E INTERFACES

Un componente es una parte física y reemplazable de un sistema, conforma con un conjunto de interfaces y realiza esas interfaces.
El objeto tiene que presentar un “rostro” al mundo exterior, para que los demás objetos pueden pedirle que ejecute sus operaciones.
Una interfaz contiene una colección de operaciones y se utiliza para especificar los servicios de una clase o de un componente.

Una interfaz se conecta al componente que la implementa a través de una relación de realización, y al componente que utiliza sus servicios con una dependencia.

Diversas clases podrían no estar relacionadas con una clase principal (como en la herencia) pero sus acciones podrían incluir algunas de las mismas operaciones con las mismas firmas.
La interfaz es la construcción UML que le permite hacer esto. Una interfaz es un conjunto de operaciones que especifica algo respecto al comportamiento de una clase.
Una interfaz puede ser física o conceptual. La interfaz  que utiliza una clase es la misma que la que utiliza su implementación de software (un componente).

Sólo se podrá ejecutar las operaciones de un componente a través de su interfaz. De la misma manera que en el caso de una clase y su interfaz, la relación entre un componente y su interfaz se conoce como realización.

Un componente puede hacer disponible su interfaz para que otros componentes puedan utilizar las operaciones que contiene. El componente que proporciona los servicios se dice que provee una interfaz de exportación. Al que accede a los servicios se dice que utiliza una interfaz de importación.

TIPOS DE COMPONENTES

COMPONENTES DE DISTRIBUCION: conforman el fundamento de los sistemas ejecutables (DLL, ejecutables, controles Active X y Java Beans).

COMPONENTES PARA TRABAJAR EN EL PRODUCTO: ha permitido la creación de los componentes de distribución (como archivo de base de datos y de código).

COMPONENTES DE EJECUCION: creados como resultado de un sistema en ejecución.

El componente de distribución es el archivo. Un componente puede accederse a través de su interfaz, una colección de operaciones. La relación entre un componente y su interfaz se llama realización. Un componente puede acceder los servicios de otro.

Cuando se hace, utiliza una interfaz de importación. El componente que realiza la interfaz con tales servicios proporciona una interfaz de exportación.

Un diagrama de componentes contiene, obviamente, componentes, interfaces y relaciones. También pueden aparecer otros tipos de símbolos que ya ha visto.

REPRESENTACION DE UN COMPONENTE

La representación de un componente es un rectángulo con otros dos rectángulos pequeños sobrepuestos en su lado izquierdo.



Puede representar una interfaz de dos formas:

-Un rectángulo que contiene información de la interfaz y se conecta con el componente mediante una línea discontinua con una punta flecha representada por triangulo  sin relleno.

-Un pequeño círculo conectado al componente con una línea continúa. Ambos tipos de conexión pretenden mostrar una relación de realización.



DIAGRAMAS DE COMPONENTES EN EL PANORAMA

El diagrama de componentes, se enfoca en la arquitectura de software del sistema.