31
UNIVERSIDAD DE EL SALVADOR FACULTAD DE INGENIERIA Y ARQUITECTURA ESCUELA DE INGENIERIA DE SISTEMAS INFORMATICOS HERRAMIENTAS DE PRODUCTIVIDAD UML ANALISIS ORIENTADO A OBJETOS

Guía de laboratorio N° 2-ArgoUML

Embed Size (px)

Citation preview

Page 1: Guía de laboratorio N° 2-ArgoUML

UNIVERSIDAD DE EL SALVADOR

FACULTAD DE INGENIERIA Y ARQUITECTURA

ESCUELA DE INGENIERIA DE SISTEMAS INFORMATICOS

HERRAMIENTAS DE PRODUCTIVIDAD

UML

ANALISIS ORIENTADO A OBJETOS

Page 2: Guía de laboratorio N° 2-ArgoUML

CONCEPTUALIZACION

Actor

Un actor es una entidad externa al sistema que necesita intercambiar información con el sistema. La

notación utilizada en UML para representar un actor es una figura humana con el nombre del actor.

Caso de uso

A diferencia las técnicas de análisis estructurado, el diagrama de casos de uso no persigue modelar

un flujo de datos. Un caso de uso puede definirse como un flujo completo de eventos en el que se

especifica la interacción entre el actor y el sistema o como un negocio trabaja actualmente. La

ejecución de un caso de uso termina cuando el actor genere un evento que requiera un caso de uso

nuevo.

Page 3: Guía de laboratorio N° 2-ArgoUML

Extensión

Una extensión indica que la realización del caso de uso que extiende no es obligatoria durante la

realización del caso de uso que está siendo extendido.

En el ejemplo que se muestra, el caso de uso Crear perfil puede o no ser realizado al ejecutarse el caso de uso Registrar usuario.

Inclusión

Una inclusión indica que un caso de uso se realizará incondicionalmente durante la realización del

caso de uso que lo referencia.

En el ejemplo que se muestra, el caso de uso Autenticar debe ser realizado para que el caso de uso Mostrar contenido sea realizado correctamente.

Page 4: Guía de laboratorio N° 2-ArgoUML

Clases

Una clase define las características de un tipo de objeto. Estas características toman la forma de

atributos y operaciones que ese tipo de objetos realiza.

Para representar gráficamente una clase en el modelo conceptual se utiliza un rectángulo con el

nombre. En el diagrama de clases se representa a través de un rectángulo divido horizontalmente en

tres partes: nombre, atributos y operaciones.

Código Java:

Clase abstracta

Las clases abstractas incorporan un nivel de abstracción que permite definir un comportamiento

específico a una clase, sin detallar dicho comportamiento. A diferencia de las interfaces, las

clases abstractas pueden tener métodos implementados. La representación de las clases abstractas es

igual que las clases normales, excepto que el nombre se escribe en cursiva.

class Persona{

String nombre;

String apellidos;

String dui;

}

Page 5: Guía de laboratorio N° 2-ArgoUML

Código Java:

Relaciones

Existen 4 tipos de relaciones: composición, asociación, uso y herencia.

Todas las relaciones describen ciertos detalles que deben ser tomados en cuenta, para hacer una

descripción correcta del modelo.

Navegabilidad

La navegabilidad se refiere al sentido en el que se puede dar la relación.

En el ejemplo que se presenta, la relación entre Persona y Empresa, que podría llamarse Trabaja se da de Persona a Empresa. La navegabilidad de las relaciones ayuda a hacer más clara la semántica

del modelo. Sin la navegabilidad, podríamos interpretar que la Empresa trabaja para la Persona, lo que tergiversaría el significado (semántica) del modelo.

public abstract class Persona {

String nombre;

String apellidos;

String dui;

}

Page 6: Guía de laboratorio N° 2-ArgoUML

Código Java:

Multiplicidad

La multiplicidad se refiere a la cantidad objetos de una clase puede estar relacionados con otra

cantidad de objetos de otra clase.

Por defecto las relaciones de asociación no requieren la especificación explícita de la

multiplicidad cuando esta es de 1. Cuando esta cantidad de objetos no es conocida, se puede indicar

un rango estimado. Las multiplicidades más utilizadas son:

a) 0..*

b) 1..*

c) 0..1

d) *

ArgoUML no cuenta con la multiplicidad de tipo *, que significa muchos. Para ello es posible usar

1..* ó 0..*.

public class Persona {

Empresa patrono;

}

public class Empresa {

}

Page 7: Guía de laboratorio N° 2-ArgoUML

Código Java:

Cuando en las relaciones binarias, las clases se relacionan con muchos objetos entre ellos, se está

indicando una relación de muchos a muchos, que en POO es perfectamente describible sin requerir una

entidad intermedia a menos que esta relación incorpore nuevos elementos al modelo. En esos casos

son necesarias las clases de asociación.

Código Java:

public class Persona {

Empresa patrono;

}

public class Empresa{

List<Persona> empleados; // Persona[] empleados; es otra alternativa

}

Page 8: Guía de laboratorio N° 2-ArgoUML

Rol

El rol se puede definir como las responsabilidades que cumple cada uno de los objetos en la

relación. La interpretación semántica del modelo que se presenta puede ser leído de la siguiente

manera: Una o varias personas trabajan como empleados para una o varias empresas (sus patronos).

En una relación con otra entidad, la persona puede jugar otro rol. Por ejemplo, si la entidad

persona estuviera relacionada con la entidad Libro, teniendo como rol escritor podríamos leer esa relación como: Una o varias personas, escritores, son los autores de uno o varios libros publicados.

Clases de asociación

Las clases de asociación son utilizadas cuando en la asociación entre dos entidades, es necesario

incorporar nuevos atributos producto de esa relación.

Se denota con una clase que se une a la línea de asociación a través de una línea discontinua.

public class Persona {

List<Empresa> patronos;

}

public class Empresa{

List<Persona> empleados;

}

Page 9: Guía de laboratorio N° 2-ArgoUML
Page 10: Guía de laboratorio N° 2-ArgoUML

Código Java:

Composición

La composición es una forma de incorporar niveles de abstracción al modelo. Indica que una clase

contiene (o está compuesta por) objetos de otras clases.

A diferencia de la agregación, la composición indica que la relación entre los objetos es de tipo

“parte/todo”. En el ejemplo que se muestra, cuando el objeto de la clase Empleado, que incluye

dos objetos (uno de la clase Persona y otro de la clase Puesto), será destruido cuando el objeto

que los contiene sea destruido.

public class Persona{

List<Trabajo> trabajos;

}

public class Empresa{

}

public class Trabajo{

Double salario;

}

Page 11: Guía de laboratorio N° 2-ArgoUML

Código Java:

Este tipo de relación sirve para indicar al programador que los objetos incluidos en el objeto que

los contiene, serán referenciados por valor. En leguajes como C++, donde el uso de punteros es

fundamental, esta especificación es útil.

En lenguajes como Java, donde únicamente los tipos primitivos se referencian por valor, este tipo

de relaciones se implementan bajo el supuesto que la misma clase inicializará los objetos que

componen el objeto base. Sin embargo, en el transcurso de la ejecución, a menos que los objetos se

declarar como tipo final, es posible asignarles un objeto creado fuera de los métodos de la clase.

Por esta razón, este tipo relaciones son poco usadas en el modelado de objetos cuando se programará

en Java o se asume que la composición y la agregación tienen el mismo significado.

Agregación

La agregación es similar a la composición. Indica que el objeto de una clase, estará compuesto por

objetos de otras clases.

A diferencia de la composición, la agregación indica que los objetos incluidos en el objeto que los

contiene son incluidos por referencia.

En este ejemplo, los objetos de Persona y Puesto que se incluyen en un objeto Empleado, existen

indistintamente de que el objeto empleado exista.

public class Empleado{

Persona persona = new Persona();

Puesto puesto = new Puesto();

}

Page 12: Guía de laboratorio N° 2-ArgoUML
Page 13: Guía de laboratorio N° 2-ArgoUML

Código Java:

Herencia

La herencia es otra forma de abstracción. A la clase base se le llama clase “padre”, a la clase

que hereda se llama clase “hija”.

La clase hija heredará todos los atributos y operaciones de la clase padre que no sean privados.

En el ejemplo, la clase Empleado hereda de la clase Persona y la extiende.

Código Java:

public class Persona{

}

public class Empleado extends Persona{

}

public class Empleado{

Persona persona;

Puesto puesto;

}

Page 14: Guía de laboratorio N° 2-ArgoUML

Uso

La relación de uso indica que una clase hace uso de otra en un momento determinado.

En las relaciones de tipo uso se utilizan la figura de una relación cliente/servidor. Las clases

que usan son llamadas clientes y las clases usadas son llamadas servidores.

Código Java:

Interfaces

Las interfaces son utilizadas para especificar el comportamiento mínimo que deben cumplir todas las

clases que la implementen, sin especificar cómo será implementado dicho comportamiento.

Son una especie de “plantilla” que debe ser detallado por las clases que las implementan. Esto es

usado para garantizar la compatibilidad entre clases, sin limitar sus propias características. Un

ejemplo de esto es la interfaz Iterable, que permite que todas las clases que implementan dicha interfaz puedan ser recorridas por una instrucción de tipo foreach.

public class Marcador{

}

public class Persona{

public void marcar(){

Marcador marcador = new Marcador();

marcador.registrar(this.codigo, new Date()){

...

}

}

}

Page 15: Guía de laboratorio N° 2-ArgoUML

Código Java:

Objeto

La representación gráfica para un objeto consiste en un rectángulo con el nombre del objeto. El

nombre del objeto es el mismo nombre de la clase antecedido por dos puntos (:) y subrayado.

interface Laboral{

verificarAsistencia();

calcularDescuentos();

}

public class Empleado extends Persona implements Laboral{

}

Page 16: Guía de laboratorio N° 2-ArgoUML

Diagrama de secuencia

Los diagramas de secuencia son una representación de los mensajes que intercambian los objetos en

el transcurso del tiempo.

En ArgoUML, la notación de los objetos en el diagrama de secuencia varía en cuanto a que no se

subraya el nombre del objeto y la línea de tiempo de vida del objeto no es discontinua.

Page 17: Guía de laboratorio N° 2-ArgoUML

ArgoUML

ArgoUML es una herramienta gráfica para el diseño de software orientado a objetos. Pretende dar

soporte al proceso en las fases de análisis, diseño, programación y documentación.

Las características principales de ArgoUML son:

Estándares abiertos: XMI (XML Metadata Interchange), SVG (Scalable Vector Graphics), PGML

(Precision Graphics Markup Lenguage).

100% independiente de la plataforma, gracias al uso exclusivo de Java para su desarrollo.

Open source

Características cognitivas como: reflexión en la acción, diseño oportunista y, comprensión y

resolución de problemas.

Para detalles sobre la instalación y configuración de ArgoUML consulte la guía rápida en el sitio

oficial: http://argouml.tigris.org/.

Page 18: Guía de laboratorio N° 2-ArgoUML

EL ENTORNO DE ArgoUML

La ventana principal de ArgoUML consta de:

1. Una barra de menú

2. Una barra de Herramientas

3. Panel de Herramientas de Diagramas

4. Área de trabajo

5. Opciones y elementos de Diagramas

6. Navegación de Proyectos y Archivos

Utilizaremos un ejemplo para hacer una descripción de las funciones más importantes de ArgoUML.

1

2

4

5

3

6

Page 19: Guía de laboratorio N° 2-ArgoUML

SISTEMA DE TRANSACCIONES BANCARIAS EN LINEA

DESCRIPCION DEL SISTEMA

Se requiere un sistema que permita a un cliente de una banco realizar transacciones bancarias en

línea. Una vez que el usuario ingrese sus credenciales de acceso, si las credenciales son válidas,

el sistema deberá desplegar el contenido principal del sistema.

El contenido principal es un menú de opciones y un lista de cuentas asociadas al cliente.

El cliente podrá ver los detalles de la cuenta seleccionándola de la lista de cuentas mostradas en

el contenido principal. Como parte de los detalles debe mostrarse una opción para consultar los

movimientos de la cuenta.

Para realizar una transacción el cliente deberá seleccionar una de las opciones del menú, donde

posteriormente debe seleccionar la cuenta con la que desea realizar dicha transacción.

Al realizar una transacción, el sistema debe validar que la cuenta que esté siendo cargada (a la

que se le esté restando de su saldo) tenga suficiente saldo para poder ser cargada.

CASOS DE USO

Actores

Cliente

Casos de uso

Iniciar sesión

Consultar cuenta

Iniciar transacción

Consultar movimientos

Diagrama de casos de uso

Page 20: Guía de laboratorio N° 2-ArgoUML

Antes de iniciar la creación del Diagrama de casos de uso, iniciaremos con dar el nombre a nuestro

modelo. Para ello hacemos clic en nodo Modelo sin título del panel de navegación de objetos. En la pestaña Propiedades del panel de detalles escribimos el nombre Sistema de transacciones bancarias.

Nótese que en el panel de tareas se agrega una tarea pendiente de prioridad media. Al revisar la

tarea nos indica que el nombre no es adecuado, puesto que ese nombre se convertirá posteriormente

en un nombre de paquete.

Page 21: Guía de laboratorio N° 2-ArgoUML

Al hacer clic en el botón siguiente, nos permitirá cambiar el nombre a bancaenlinea. Ahora ya tenemos el nombre del paquete ingresado de forma correcta.

Nótese que ArgoUML nos advertirá de cualquier inconsistencia de nuestro modelo a través de

Críticas, que irán apareciendo en el panel de tareas.

Ahora para crear un diagrama de casos de uso, seleccione el directorio raíz y con el botón derecho

elija la opción Crear diagrama y luego de clic en Diagrama de casos de uso para crear el diagrama.

Page 22: Guía de laboratorio N° 2-ArgoUML

Para crear el diagrama de casos de uso, iniciamos agregando el actor identificado.

Al agregar el actor, se puede observar que se activan varias de las pestañas del panel de detalles.

Las pestañas del panel de detalles se activan según el componente que se seleccione en el diagrama.

Revisaremos las pestañas más importantes que se tienen disponibles para los actores.

La pestaña más importante de todos los objetos es la de propiedades. En esta pestaña podemos

agregar el nombre del actor, en este caso Cliente.

La pestaña Documentación nos permite ir documentando los diagramas. En este ejemplo únicamente agregaremos el autor y la versión del modelo.

Page 23: Guía de laboratorio N° 2-ArgoUML

ArgoUML trae consigo un generador de código a partir de los modelos. En el desarrollo del ejercicio

veremos cómo los diagramas van integrándose de forma consistente, que junto a la función de

generador de código puede producir una base de implementación del código del modelo.

Puede observarse que la pestaña de código del actor genera una clase con el mismo nombre. En

general, se considera que los actores no deberían ser clases del modelo. Sin embargo, dependiendo

del problema esto puede ser necesario.

En la opción Operaciones de la pestaña Propiedades, es posible incorporar operaciones al actor. Esto no necesariamente se convertirá en un método de la clase. Es más, el actor no necesariamente

se convertirá en una clase del modelo.

Page 24: Guía de laboratorio N° 2-ArgoUML

ArgoUML además nos provee de una lista de control de calidad del modelado. La pestaña Lista de control realiza una serie de preguntas que permiten afinar el modelado. Estas preguntas no tienen ningún impacto directo en el modelo en el que se está trabajando, simplemente es una ayuda que nos

provee ArgoUML para verificar la validez del modelo.

Ahora podemos agregar un caso de uso al modelo. Seleccionamos la elipse que se encuentra en la

barra de objetos del panel de edición.

De la misma forma que con el actor, varias de las pestañas del panel de detalles se activan al

seleccionar el caso de uso recién ingresado. Le damos el nombre al caso de uso: Iniciar sesión. Nótese que también los casos de uso pueden ser concebidos como una clase en ArgoUML, por lo que es

posible definir operaciones.

En la pestaña de código fuente también se encontrará código generado, que supone también que se

Page 25: Guía de laboratorio N° 2-ArgoUML

trata de una clase. Usualmente los casos de uso no se convierten en una clase en el modelo de

clases. Generalmente, esto depende del nivel de detalle con el que se aborde el problema, y cuando

esto ocurre, es una señal de que es necesaria una iteración de afinamiento para ahondar más en los

detalles del problema.

Ahora es necesario establecer la relación entre el caso de uso y el actor. Para ello se utiliza el

icono de asociación que se encuentra en la barra de objetos del panel de edición.

Una vez incorporada la asociación entre el actor y el caso de uso, podemos darle un nombre a la

asociación. En este caso Ingresar credenciales.

En una primera mirada, podríamos pensar que los casos de uso identificados son “disparados” por

el usuario, de tal manera que el diagrama de casos de uso quedaría como se muestra en el diagrama 1

Page 26: Guía de laboratorio N° 2-ArgoUML

Diagrama 1

Análisis

Hemos identificado ya una serie de casos de uso que se requieren en el sistema.

Es importante entender la relación que existe entre los casos de uso y los

actores, o entre los casos de uso mismos.

Las relaciones entre los actores y los casos de uso resultan relativamente

fáciles de advertir. Sin embargo, las relaciones entre los casos de uso es algo

que requiere de un análisis más detallado.

Cuando un usuario use (o realice) el caso de uso Iniciar sesión, si el nombre

de usuario y clave son correctas, el sistema deberá mostrar las opciones del

sistema y las cuentas de ese usuario. Si las credenciales no son correctas, el

sistema deberá mostrar un mensaje de error al usuario.

Para que un cliente realice el caso de uso Consultar movimiento, el sistema

debería brindar una forma en la que el cliente seleccione la cuenta de la que

desea hacer una consulta. Sin embargo, esto solo puede hacerse si ha iniciado

la sesión. Con eso podemos asumir que al iniciar la sesión, el sistema

mostrará las cuentas bancarias. Algo similar ocurre con las opciones del

sistema, por ejemplo realizar un pago.

Al realizar una transacción satisfactoriamente, podríamos dar al cliente la

posibilidad de regresar a la pantalla principal del sistema, donde se muestra

la lista de cuentas relacionadas.

Page 27: Guía de laboratorio N° 2-ArgoUML

Diagrama 2

Podemos asumir que por tratarse de un menú, las opciones del sistema siempre

estarán disponibles para el usuario. Para hacer esto posible, haremos una

modificación en el modelo de comportamiento que tenemos hasta ahora, separando

segmentos de los casos de uso que tenemos hasta ahora, para poder reutilizarlos

en cualquier momento.

Podemos observar que una vez que el cliente haya iniciado sesión, el sistema

puede mostrarle las opciones del sistema y las cuentas de las que es dueño. La

posibilidad está condicionada a que el inicio de sesión haya sido exitoso, por

esta razón estos casos de uso son extensiones del caso de uso Iniciar sesión.

Lo mismo podemos presumir del caso de uso Consultar movimientos, ya que es

hasta que el cliente realice el caso de uso Consultar cuenta, el sistema le

permitirá elegir el caso de uso Consultar movimientos, que permitirá regresar

también a la pantalla principal del sistema.

Page 28: Guía de laboratorio N° 2-ArgoUML

ACTIVIDADES

El diagrama de actividades tiene como objetivo ayudarnos a conocer lo que se espera que ocurra al

interior de cada uno de los casos de uso.

Los diagramas de actividades describen procesos, por lo que en un diagrama puede describirse el

comportamiento de uno o más casos de uso.

Una vez agregado el diagrama, nos aparecerá un nodo con el nombre Sin nombre ActivityGraph. Al seleccionarlo se activan las pestañas aplicables en el panel de detalles. En la pestaña nombre

agregamos el nombre Ingreso al sistema. Dentro del nodo del diagrama que acabamos de agregar se mostrarán los objetos que vayamos agregando a ese diagrama.

Por defecto ArgoUML ingresa un objeto con el nombre bancaenlinea activity 1, que podemos cambiar a bancaenlinea ingreso al sistema.

Ahora podemos incorporar los objetos que contendrá el diagrama. Como es lógico iniciaremos con el

objeto de inicio, posteriormente ingresamos la actividad Ingresar al sistema, posteriormente la actividad Ingresa credenciales y finalmente los nodos de inicio de acuerdo al flujo de eventos que deben ir ocurriendo.

Page 29: Guía de laboratorio N° 2-ArgoUML

Procesos: Ingreso al sistema

El proceso inicia con el hecho de que el usuario ingresa al sistema. El sistema muestra la pantalla

correspondiente para que posteriormente, el usuario ingrese las credenciales de acceso al sistema.

Si las credenciales son correctas, el proceso termina. Si no son correctas, el sistema solicita al

usuario que repita el ingreso de sus credenciales. En ese punto, el usuario puede intentarlo de

nuevo o finalizar el proceso.

Puede notarse que esta descripción de los procesos nos servirá para identificar el curso de eventos

de los casos de uso involucrados en el proceso. Eso nos servirá para construir los casos de uso

extendidos del sistema.

Proceso: Consulta de cuentas

Page 30: Guía de laboratorio N° 2-ArgoUML

Proceso: Transacción

Page 31: Guía de laboratorio N° 2-ArgoUML

EJERCICIOS

1. Elabore los casos de uso extendidos del ejemplo desarrollado en esta guía.

2. Realice un análisis para el sistema descrito a continuación.

SISTEMA DE PAGOS

Se requiere un sistema para el control de los pagos que se realizan en una institución.

El gestor de pagos podrá ingresar los datos de pago que incluyen el monto a pagar, el concepto de

pago, el nombre del cobrador del documento de pago y la fecha.

Los documentos de pago solo pueden ser autorizados por el jefe de la unidad de finanzas de la

institución. Para ello el jefe de finanzas debe contar con una opción de consulta de los pagos

pendientes de autorización y tener la capacidad de autorizarlos o denegar su realización.

El gestor de pagos podrá consultar todos aquellos pagos que ya han sido autorizados y tener la

capacidad para imprimirlos en forma de cheques.

Realice:

Diagrama de casos de uso

Diagrama de actividades

Casos de uso extendidos