• No se han encontrado resultados

2. Diseño de software orientado a objeto con UML

2.6. Diagramas de secuencia

2.13.3. ArgoUML

El entorno de modelado ArgoUML disponible en http://argouml.tigris.org es quizá el más completo en términos de cumplimiento con el están- dar. Es un proyecto que empezó en privado en 1995 como una he- rramienta CASE y en 1999 fue evolucionando hacia un proyecto de código abierto integrando el modelado UML y prestaciones para el desarrollo rápido de aplicaciones.

Esta orientación hacia el desarrollo es notoria no sólo en su interfaz, donde el diagrama juega un papel casi secundario, también en el soporte estricto de la notación y en prestaciones como las críticas au- tomáticas al diseño o consejos que vamos recibiendo a medida que nuestro modelo va evolucionando.

La generación de código no ofrece tantas opciones como en los pro- gramas anteriores (sólo genera código Java y la propia notación UML 1.3), no soporta la inclusión de ficheros de licencia o cabeceras, etc. El enfoque de ArgoUML es totalmente hacia UML como notación y el diseño de aplicaciones orientadas a objeto.

Cabe destacar especialmente la prestación de “Críticas al diseño”, donde para cada clase, atributo, método y en general cualquier ele- mento del modelo, ArgoUML nos presenta una checklist que pode- mos repasar y validar para mejorar nuestro diseño. También nos ofrece críticas en general sobre el diagrama en aspectos como la no- tación (el uso de mayúsculas y minúsculas en los nombres de clases, atributos y métodos), el uso de patrones de diseño, la inclusión de constructores, etc.

ANOTACIONES

Éste es el aspecto de ArgoUML mostrando nuestro diagrama de clases:

Podemos ver que en la parte izquierda del entorno disponemos del árbol de elementos UML que incluye nuestro proyecto. En la parte in- ferior es donde se muestran las propiedades del elemento seleccio- nado (en este caso una clase), y en la parte inferior izquierda tenemos los consejos de diseño.

Veamos este último aspecto con un poco más de detalle:

Vemos que la información que ofrece para un elemento en concreto (crear el constructor de una clase) es muy extensa e incluye consejos

Figura 42. Diagrama de clases representado en ArgoUML

ANOTACIONES

tanto para crear el constructor con el programa, como sobre la im-

portancia del mismo y de las implicaciones que tiene en UML. Como hemos comentado, la generación de código no ofrece muchas opciones, y se limita a crear simplemente los métodos representados, así pues, a diferencia de los programas evaluados anteriormente, no generará código ni para el constructor ni para los métodos de acceso a los atributos ni para acceder a las variables representadas para las asociaciones.

import java.util.Vector;

public class Comercial extends Empleado { /* {src_lang=Java}*/

private float comisionPactada;

/* {transient=false, volatile=false}*/ private int objetivosAnuales;

/* {transient=false, volatile=false}*/ /**

*

* @element-type Propuesta */

public Vector propuesta;

public void listarVentas(int ano) { }

}

import java.lang.String; import java.util.Vector;

public class Cliente implements Comunicar { /* {src_lang=Java}*/

private int clienteID;

/* {transient=false, volatile=false}*/ private String nombre;

/* {transient=false, volatile=false}*/ private String razonSocial;

/* {transient=false, volatile=false}*/ private String nif;

/* {transient=false, volatile=false}*/ private String direccion;

/* {transient=false, volatile=false}*/

ANOTACIONES

public ContactoComercial contacto; public Vector listarFacturas() { return null;

} }

import java.lang.String; import java.util.Vector;

public class ContactoComercial { /* {src_lang=Java}*/

private int contactoID;

/* {transient=false, volatile=false}*/ private String nombre;

/* {transient=false, volatile=false}*/ private String apellidos;

/* {transient=false, volatile=false}*/ private String direccion;

/* {transient=false, volatile=false}*/ private String comentario;

/* {transient=false, volatile=false}*/ private String estado;

/* {transient=false, volatile=false}*/ public Cliente cliente;

/** *

* @element-type AccionComercial */

public Vector accion; public void borrar() { }

public void cambiarEstado(String nuevoEstado) { }

}

Vemos que ha generado código para las asociaciones y ha respeta- do correctamente la multiplicidad, creando un Vector para la multi- plicidad múltiple, y una instancia para el resto.

Debido a la calidad y a la popularidad de este software en su área de especialización (el modelado de diseño), han surgido versiones co- merciales mejoradas por otros fabricantes de software, entre las que cabe destacar PoseidonUML (http://www.gentleware.com/products/)

ANOTACIONES

que implementa una mucho mejor generación de código e integración

con entornos de desarrollo como Eclipse.

ArgoUML también incorpora funcionalidad para la importación de ficheros fuente (sólo en Java) al modelo, de modo que podamos aprovechar esas clases en los diferentes diagramas que soporta.

El análisis y diseño de software juega un papel crucial en cualquier desarrollo, pero es en la programación orientada a objeto donde las actividades relacionadas con esta fase de un proyecto han alcanzado sus cotas más altas de sofisticación. Es, además, un área donde con- tinuamente se producen avances y nuevas propuestas.

En este capítulo hemos empezado dando al estudiante una visión ge- neral del paradigma de programación orientada a objeto, donde hemos repasado desde los conceptos más básicos hasta llegar a to- dos los tipos de relaciones entre objetos que soportan la mayoría de lenguajes de programación.

Esta introducción ha sido necesaria para poder centrarnos a conti- nuación en el lenguaje de modelado UML y lo que éste puede apor- tar a lo largo de todas las fases del ciclo de vida de un proyecto. Cada uno de los diagramas se ha estudiado en detalle a partir de un caso práctico.

Aunque la mayoría de los diagramas de UML nos permiten mejorar la comunicación con el cliente en las fases iniciales, así como documentar y explorar funcionalidades y aspectos concretos de las clases de nuestro sistema durante su análisis y diseño, también hemos visto cómo UML puede ayudarnos en las fases de desarrollo e implantación.

Hemos dedicado el último apartado a la generación de código me- diante las tres mismas herramientas de código abierto que hemos utilizado en el material para generar los diagramas, demostrando así que UML en particular y el modelado en general es una muy bue- na práctica en cualquier proyecto, no sólo por la disciplina que nos

ANOTACIONES

impone en su diseño sino también por el ahorro de tiempo en el de- sarrollo que puede aportar.

Por todo ello, creemos que con la lectura de este capítulo el estudian- te habrá logrado los objetivos planteados al inicio del mismo. Este material no pretende ser la referencia última de UML para el es- tudiante, sino una visión global de este estándar de modelado, una motivación para explorar las referencias que proporcionamos y un in- centivo para poner en práctica los conocimientos y buenas prácticas que hemos indicado en los próximos proyectos en los que participe.

ArgoUML. http://argouml.tigris.org/

Birtwistle, G.M. (Graham M.) 1973. SIMULA begin. Philadelphia, Auerbach

Dia. http://www.gnome.org/projects/dia/

Eckel, B. (2003). Thinking in Java (3.ª ed.). Upper Saddle River: Pren- tice Hall. http://www.mindview.net/Books/TIJ/

Gamma, E.; Helm; R. y otros (1995). Design Patterns. Reading (Mass.): Addison Wesley.

Java Technology. http://java.sun.com

Microsoft.NET. http://www.microsoft.com/net/

Object Management Group. http://www.omg.org/

Rumbaugh, J. y otros (2004). Object-Oriented Modeling and Design with UML (2nd Edition). Englewood Cliff (N.J.): Prentice Hall.

Smalltalk. http://www.smalltalk.org

ANOTACIONES

Stroustrup, B. (2000). The C++ Programming Language (3º edition).

Reading (Mass.): Addison Wesley.

The Open Source Java Directory. http://www.onjava.com/pub/q/ java_os_directory

Umbrello. http://uml.sourceforge.net

UML1.5 The Current Official Version. http://www.uml.org/#UML1.5

Unified Modeling Languag. http://www.uml.org/

ANOTACIONES

La calidad del software es una preocupación a la que se dedican mu-

chos esfuerzos. Sin embargo, el software casi nunca es perfecto. Todo proyecto tiene como objetivo producir el software de la mejor calidad posible, que cumpla, y si puede ser supere, las expectativas de sus usuarios. Existe abundante literatura sobre los procesos de ca- lidad de software y actualmente se realiza una considerable investi- gación académica en este campo dentro de la ingeniería del software.

En este capítulo intentaremos dar una visión práctica de los controles de calidad y de pruebas en el caso particular, tanto de prácticas como de aplicaciones, del software libre, y veremos cuáles son los principales principios, técnicas y aplicaciones que se utilizan para ga- rantizar la calidad de los productos libres.

Los materiales didácticos asociados a este módulo permitirán al es- tudiante obtener los siguientes conocimientos:

• Familiarizarse con la terminología relacionada con el control de ca- lidad y pruebas que es de uso común en la ingeniería del software. • Conocer las principales técnicas de comprobación manual de software usadas en la ingeniería del software y en entornos libres. • Conocer las principales técnicas de comprobación automática de software usadas en ingeniería del software y el software libre que se utiliza en ellas.

Documento similar