Dam M05 03 1909 Qa03
Dam M05 03 1909 Qa03
Dam M05 03 1909 Qa03
Entornos de desarrollo
Módulo 5: Entornos de Desarrollo
Página 2 de 133
Módulo 5: Entornos de Desarrollo
1. Desarrollo de software
Página 3 de 133
Módulo 5: Entornos de Desarrollo
Página 4 de 133
Módulo 5: Entornos de Desarrollo
Página 5 de 133
Módulo 5: Entornos de Desarrollo
La licencia que más se usa en el software libre es la licencia GPL (GNU General Public
License – Licencia Pública General) que nos dejará usar y cambiar el programa, con el
único requisito que se hagan públicas las modificaciones realizadas.
Página 6 de 133
Módulo 5: Entornos de Desarrollo
Página 7 de 133
Módulo 5: Entornos de Desarrollo
• El Reloj: marca el ritmo del DI y nos proporciona unos impulsos eléctricos con
intervalos constantes a la vez que marca los tiempos para ejecutar las
instrucciones.
• El secuenciador: son órdenes que se sincronizan con el reloj para que
ejecuten correctamente y de forma ordenada la instrucción.
Cuando escribimos un código pasa por distintos estados hasta que se ejecuta:
Página 8 de 133
Módulo 5: Entornos de Desarrollo
• Código objeto: es el código que se crea tras realizar la compilación del código
fuente. Este código no es entendido ni por el ordenador ni por nosotros. Es una
representación intermedia de bajo nivel.
• Código ejecutable: este código se obtiene tras unir el código objeto con varias
librerías para que así pueda ser ejecutado por el ordenador.
1.3.2. Compilación
Dentro del compilador tendremos varias fases en las que se realizan distintas
operaciones:
Página 9 de 133
Módulo 5: Entornos de Desarrollo
Página 10 de 133
Módulo 5: Entornos de Desarrollo
Las máquinas virtuales requieren de grandes recursos por lo que hay que tener
cuidado y ejecutarlas en ordenadores capaces de soportar los procesos que
requieren dichas máquinas para que no nos funcionen lentas o se colapsen.
1º) El código fuente estará escrito en archivos de texto planos con la extensión .java.
2º) El compilador javac generará
uno o varios archivos siempre que
no se produzcan errores y tendrán
la extensión .class.
3º) Este fichero .class contendrá
un lenguaje intermedio entre el
ordenador y el SO y se llamará
bytecode.
4º) La Java VM coge y traduce el
bytecode en código binario para
que el procesador de nuestro
ordenador sea capaz de
reconocerlo.
Los ficheros .class podrán ser
ejecutados en múltiples
plataformas.
Página 11 de 133
Módulo 5: Entornos de Desarrollo
Entre las tareas que puede realizar la máquina virtual Java pueden estar:
Una de las desventajas de usar este tipo de lenguajes que se basan en una máquina
virtual puede ser que son más lentos que los lenguajes ya compilados, debido a la
capa intermedia. No obstante, cabe destacar que no una desventaja demasiado
crítica.
Para poder instalar la Java VM tendremos que acceder a la siguiente url:
http://www.oracle.com/technetwork/java/javase/downloads/index.html, pulsar en
el botón download donde aparece JRE (Java Runtime Environment) y descargar el
fichero que nos interese según el sistema operativo que usemos. Una vez
descargado, la instalación es fácil, ya que solo tendremos que ir siguiendo los pasos
indicados. Cuando finalice la instalación puede que debamos reiniciar el equipo.
Página 12 de 133
Módulo 5: Entornos de Desarrollo
Lenguajes interpretados
Lenguajes funcionales
Lenguajes lógicos
Lenguajes estructurados
Página 13 de 133
Módulo 5: Entornos de Desarrollo
Fuente: https://es.wikipedia.org/wiki/Lenguaje_ensamblador
Página 14 de 133
Módulo 5: Entornos de Desarrollo
− Lenguajes interpretados:
Son otra variante para traducir programas de alto nivel. En este caso nos
da la apariencia de ejecutar directamente las instrucciones del programa
fuente con las entradas proporcionadas por el usuario. Cuando
ejecutamos una instrucción, se debe interpretar y traducir al lenguaje
máquina.
El compilador es, de forma general, más rápido que un intérprete al
asignar las salidas. Sin embargo, al usar el intérprete evitaremos tener que
compilar cada vez que hagamos alguna modificación. Ejemplos de
algunos lenguajes son: PHP, JavaScript, Python, Perl, Logo, Ruby, ASP,
Basic, etc.
El lenguaje Java usa tanto la compilación como la interpretación. Un
programa fuente en Java puede compilarse primero en un formato
intermedio, llamado bytecodes, para que luego una máquina virtual lo
interprete.
Página 15 de 133
Módulo 5: Entornos de Desarrollo
El paradigma de programación nos detalla las reglas, los patrones y los estilos de
programación que usan los lenguajes. Cada lenguaje puede usar más de un
paradigma, el cual resultará más apropiado que otro según el tipo de problema que
queramos resolver.
Página 16 de 133
Módulo 5: Entornos de Desarrollo
− Lenguajes funcionales:
− Lenguajes lógicos:
− Lenguajes estructurados:
Página 17 de 133
Módulo 5: Entornos de Desarrollo
Página 18 de 133
Módulo 5: Entornos de Desarrollo
Mantenimiento
Página 19 de 133
Módulo 5: Entornos de Desarrollo
Análisis
Diseño
Codificación
Pruebas
Mantenimiento
Análisis
Diseño
Codificación
Pruebas
Mantenimiento
Página 20 de 133
Módulo 5: Entornos de Desarrollo
Ventajas Inconvenientes
Fácil de comprender, planificar y La necesidad de tener todos los
seguir. requisitos definidos desde el principio.
La calidad del producto resultante es Es difícil volver atrás si se cometen
alta. errores en una etapa.
Permite trabajar con personal poco El producto no está disponible para su
cualificado. uso hasta que no está completamente
terminado.
Se recomienda cuando
El proyecto es similar a alguno que ya se haya realizado con éxito
anteriormente.
Los requisitos son estables y están bien comprendidos.
Los clientes no necesitan versiones intermedias.
Entrega del 2º
INCREMENTO 2 Análisis Diseño Código Pruebas incremento
Entrega del 4º
INCREMENTO 4 Análisis Diseño Código Pruebas incremento
Página 21 de 133
Módulo 5: Entornos de Desarrollo
Ventajas Inconvenientes
No necesitan conocer rodos los Es difícil estimar el esfuerzo y el coste final
requisitos. necesario.
Permite la entrega temprana al cliente Se tiene el riesgo de no acabar nunca.
de partes operáticas del software.
Las entregas facilitan la realimentación No es recomendables para desarrollo de
de los próximos entregables. sistemas de tiempo real, de alto nivel de
seguridad, de procesamiento distribuido,
y/o de alto índice de riesgos.
Se recomienda cuando
Los requisitos o el diseño no están completamente definidos y es posibles que haya
grandes cambios.
Se están probando o introduciendo nuevas tecnologías.
Modelo en espiral
Este modelo combina el modelo cascada con el modelo iterativo de construcción de
prototipos. El proceso de desarrollo del software se representa como una espiral,
donde cada ciclo se desarrolla una parte de este. Cada ciclo está formado por cuatro
fases y, cuando termina, produce una versión incremental del software con respecto
al ciclo anterior. En este aspecto se parece al modelo iterativo incremental con la
diferencia de que en cada ciclo se tiene en cuenta el análisis de riesgos.
Durante los primeros ciclos, la versión incremental podría ser maquetas en papel o
modelos de pantallas (prototipos de interfaz); en el último ciclo se tendría un
prototipo operacional que implementa algunas funciones del sistema. Para cada
ciclo, los desarrolladores siguen estas fases:
Página 22 de 133
Módulo 5: Entornos de Desarrollo
Ventajas Inconvenientes
No requiere una definición completa Es difícil evaluar los riesgos.
de los requisitos para empezar a
funcionar.
Análisis del riesgo en todas las El costo del proyecto aumenta a
etapas. medida que la espiral pasa por
sucesivas iteraciones.
Reduce riesgos del proyecto. El éxito del proyecto depende en gran
medida de la fase de análisis de
riesgos.
Incorpora objetivos de calidad.
Se recomienda cuando
Proyectos de gran tamaño y que necesitan constantes cambios.
Proyectos donde sea importante el factor riesgo.
Modelo en V
Es un proceso que representa la secuencia de pasos en el desarrollo del ciclo de vida
de un proyecto. En él se describen las actividades y resultados que deben producirse
durante el desarrollo del producto. El lado izquierdo de la V representa la
descomposición de las necesidades y la creación de las especificaciones del sistema.
El lado derecho de la V representa la integración de las piezas y su verificación. Es
muy similar al modelo de cascada, ya que es muy rígido y contiene una gran cantidad
de iteraciones.
Página 23 de 133
Módulo 5: Entornos de Desarrollo
Indistintamente del modelo que escojamos deberemos seguir una serie de etapas:
Especificación de Pruebas de
requisitos aceptación
Análisis de Pruebas de
requisitos sistema
Diseño de la Pruebas de
arquitectura integración
1.5.1. Análisis
Página 24 de 133
Módulo 5: Entornos de Desarrollo
Página 25 de 133
Módulo 5: Entornos de Desarrollo
Página 26 de 133
Módulo 5: Entornos de Desarrollo
1.5.2. Diseño
Una vez hemos identificado los requerimientos necesarios, ahora tendremos que
componer la forma para solucionar el problema. Traduciremos los requisitos
funcionales y los no funcionales en una representación de software.
Página 27 de 133
Módulo 5: Entornos de Desarrollo
Página 28 de 133
Módulo 5: Entornos de Desarrollo
Página 29 de 133
Módulo 5: Entornos de Desarrollo
• Diagramas de flujo
Página 30 de 133
Módulo 5: Entornos de Desarrollo
• Diagrama de cajas
Surgió para la representación del diseño procedimental sin que violara las
construcciones estructuradas.
o Secuencia: varias cajas seguidas.
o Condicional: una caja para la parte SI y otra para la parte NO. Encima
indicamos la condición.
o Repetitiva: proceso que se repite, se encierra en una caja que se sitúa
dentro de otra en la que indicamos la condición del bucle en la parte
superior (do-while) o inferior (repeat-until).
o Selección múltiple: la parte superior indica el caso de condición,
mientras que en la parte inferior se definen tantas columnas como
valores se quieran comprobar. Debajo de cada valor se indica la parte
a ejecutar.
Página 31 de 133
Módulo 5: Entornos de Desarrollo
• Tablas de decisión
Nos permiten representar en una tabla las condiciones y las acciones que se llevarán
a cabo al combinar esas condiciones. Se dividirá en cuatro cuadrantes:
En las diferentes columnas podemos implementar las reglas que se deben cumplir
para una determinada acción.
Al construir la tabla seguimos los siguientes pasos:
1) Crear una lista con todas las acciones y todas las condiciones.
2) Relacionar los conjuntos con las acciones específicas, eliminando las
combinaciones imposibles.
3) Determinar las reglas indicando la acción o acciones que ocurren para un
conjunto de condiciones.
• Pseudocódigo
Esta herramienta utiliza un texto descriptivo para crear el diseño de un algoritmo. Se
asemeja al lenguaje de programación, ya que mezcla el lenguaje natural con la
sintaxis de la programación estructurada, incluyendo palabras clave.
No existe un estándar definido y, al no ser un lenguaje de programación, no puede
compilarse. La representación en pseudocódigo de las estructuras básicas de la
programación estructurada es:
Secuencial Instrucción 1
Instrucción 2
…
Página 32 de 133
Módulo 5: Entornos de Desarrollo
Instrucción n
Repetir-hasta Repetir
<instrucciones>
Hasta que <condición>
Página 33 de 133
Módulo 5: Entornos de Desarrollo
Fin mientras
Cerrar Archivo
Fin
El diseño de software orientado a objetos (DOO) es muy complicado. Por ello, antes
abordaremos un análisis orientado a objetos (AOO). En este análisis tendremos que
definir las clases, las operaciones y los atributos asociados, así como las relaciones,
comportamientos y comunicaciones entre clases.
1.5.3. Codificación
Página 34 de 133
Módulo 5: Entornos de Desarrollo
• Nombre de ficheros
Los archivos de código fuente tendrán como extensión .java y los archivos
compilados .class.
• Organización de ficheros
Cada archivo deberá tener una clase pública y podrá tener otras clases privadas e
interfaces que irán definidas después de la pública y estarán asociadas a ésta. El
archivo se dividirá en varias secciones:
• Indentación
− Se usarán 4 espacios como unidad de indentación.
− Longitud de líneas de código no superior a 80 caracteres.
− Longitud de líneas de comentarios no superior a 70 caracteres.
− Si una expresión no cabe en una sola línea se deberá romper antes de una
coma o un operador y se alineará al principio de la anterior.
• Comentarios
Contendrá solo información que sea relevante para la lectura y comprensión del
programa. Habrá dos tipos: de documentación y de implementación.
Página 35 de 133
Módulo 5: Entornos de Desarrollo
Los primeros describen la especificación del código como las clases Java, interfaces,
constructores, métodos y campos. Se situarán antes de la declaración. La
herramienta Javadoc genera páginas HTML partiendo de este tipo de comentarios.
Un ejemplo sería:
/**
* Esta clase Prueba nos proporciona…
*/
public class Prueba (…
− De bloque: /*
* Esto es un comentario de bloque
*/
− De línea: /* Comentario de línea */
− Corto: // Comentario corto
• Declaraciones
− Declarar una variable por línea
− Inicializar una variable local al comienzo donde se declara y situarla al
comienzo del bloque.
− En clases o interfaces:
o No poner espacios en blanco entre el nombre del método y el
“(“.
o Llave de apertura “{“, situarla en la misma línea que el nombre
del método.
o Llave de cierre “}”, situarla en una línea aparte y en la misma
columna que el inicio del método. Excepto cuando esté vacío.
o Métodos separados por una línea en blanco.
• Sentencias
− Cada línea contendrá una sentencia.
− Si es un bloque, debe de estar sangrado con respecto a lo anterior y entre
llaves, aunque solo tenga una sentencia.
Página 36 de 133
Módulo 5: Entornos de Desarrollo
− Sentencias if-else, if else-if else. Nos definen bloques y tendrán todos los
mismos niveles de sangrado.
− Bucles. Tendrán las normas anteriores y si está vació no irá entre llaves.
− Sentencias return no irán entre paréntesis.
• Separaciones
• Nombres
Los nombres de las variables, métodos, clases, etc. hacen que los programas sean
más fáciles a la hora de leerlos. Las normas que hay que seguir para asignar nombres
son:
− Paquetes: se escriben en minúscula. Se podrán utilizar puntos para algún
tipo de organización jerárquica. Ej.: java.io
− Clases e interfaces: deben ser sustantivos o descriptivos, según lo que
estemos creando. Si está compuesta por varias palabras, la primera letra
de cada palabra irá en mayúscula.
− Métodos: se usarán verbos en infinitivo. Si está formado por varias
palabras, el verbo estará en minúscula y la siguiente palabra empezará
con mayúscula.
− Variables: deben ser cortas (incluso una letra) y significativas. Si está
formada por varias palabras, la primera debe ir en minúscula.
− Constantes: el nombre debe ser descriptivo. Será totalmente escrita en
mayúscula y si son varias palabras, separadas por un carácter de
subrayado.
Una vez hemos terminado de escribir el código lo tendremos que traducir al lenguaje
máquina a través de compiladores o intérpretes. El resultado será el código objeto,
aunque este no será todavía ejecutable hasta que lo enlacemos con las librerías para
obtener así el código ejecutable. Una vez obtenido este código tendremos que
Página 37 de 133
Módulo 5: Entornos de Desarrollo
1.5.4. Pruebas
Las recomendaciones para llevar a cabo las pruebas son las siguientes:
− Cada prueba definirá los resultados de la salida esperados.
− Evitar que el programador pruebe sus propios programas.
− Comprobación de cada resultado en profundidad.
− Incluir todo tipos de datos, tanto válidos y esperados como inválidos e
inesperados.
− Comprobar que el software hace lo que debe y lo que no debe hacer.
− No hacer pruebas que no estén documentadas.
− No suponer que en las pruebas no se van a cometer errores.
− A más pruebas que se realicen, mayor es la probabilidad de encontrar errores
y, una vez solucionados, tendremos una probabilidad mayor de poder
perfeccionar nuestro sistema.
Página 38 de 133
Módulo 5: Entornos de Desarrollo
Para la realización del diseño de prueba se usan dos técnicas: prueba de caja blanca
y prueba de caja negra. La primera valida la estructura interna del sistema y, la
segunda, los requisitos funcionales sin observar el funcionamiento interno del
programa. No son pruebas excluyentes y podemos combinarlas para descubrir
distintos tipos de error.
Página 39 de 133
Módulo 5: Entornos de Desarrollo
1.5.5. Documentación
Cada etapa del desarrollo tiene que quedar perfectamente documentada. Para ello,
necesitaremos reunir los documentos generados y hacer una clasificación según el
nivel técnico de sus descripciones.
Estos documentos:
− Deben actuar como medio de comunicación para que los miembros del equipo
se puedan comunicar entre sí.
− Deben ser un almacén de información del sistema para poder ser utilizado por
personal de mantenimiento.
− Proporcionan información para facilitar la planificación de gestión del
presupuesto y programar el proceso del desarrollo del software.
− Algunos documentos deben especificar al usuario cómo debe usar y
administrar el sistema.
Página 40 de 133
Módulo 5: Entornos de Desarrollo
Mientras que la documentación del proceso se usa para gestionar todo el proceso de
desarrollo del software, la documentación del producto se usará una vez que el
sistema ya esté funcionando, aunque también puede ser útil durante el desarrollo.
Página 41 de 133
Módulo 5: Entornos de Desarrollo
Página 42 de 133
Módulo 5: Entornos de Desarrollo
Plan de pruebas del sistema Evaluación individual de las unidades del sistema y
las pruebas que se realizan
Cuando los sistemas son más pequeños, la documentación también suele ser menos
amplia. Aun así, deberá incluir, como mínimo, la especificación del sistema, el
documento de diseño arquitectónico y el código fuente del programa.
El mantenimiento de esta documentación muchas veces se descuida y se deja al
usuario desprotegido ante cualquier problema sobre el manejo y errores de la
aplicación.
Componente Descripción
Página 43 de 133
Módulo 5: Entornos de Desarrollo
Información sobre los comandos Descripción de cada uno de los comandos del software
software
1.5.6. Explotación
Página 44 de 133
Módulo 5: Entornos de Desarrollo
1.5.7. Mantenimiento
Página 45 de 133
Módulo 5: Entornos de Desarrollo
Las metodologías ágiles son métodos de gestión que permiten adaptar la forma de
trabajo al contexto y naturaleza de un proyecto, basándose en la flexibilidad y la
inmediatez, y teniendo en cuenta las exigencias del mercado y de los clientes. Los
pilares fundamentales de las metodologías ágiles son el trabajo colaborativo y en
equipo.
Página 46 de 133
Módulo 5: Entornos de Desarrollo
Página 47 de 133
Módulo 5: Entornos de Desarrollo
Página 48 de 133
Módulo 5: Entornos de Desarrollo
• Kanban:
Kanban es una palabra japonesa que significa tarjetas visuales. Esta técnica
se creó en Toyota, y se utiliza para controlar el avance del trabajo, en el
contexto de una línea de producción. Actualmente está siendo aplicado en la
gestión de proyectos software.
Página 49 de 133
Módulo 5: Entornos de Desarrollo
1.7.2. Compilación:
La compilación de un programa se lleva a cabo mediante dos programas: el compilador y el
enlazador. Si el compilador en el proceso de traducción devuelve algún error, no se generará
el programa objeto; será necesario modificar el programa fuente y pasarlo de nuevo por el
compilador.
El compilador se compone internamente de varias etapas o fases que realizan
distintas operaciones:
Página 50 de 133
Módulo 5: Entornos de Desarrollo
Programa
fuente Análisis Léxico Análisis Léxico
Programa
Análisis Semántico Análisis Léxico objeto
El programa enlazador inserta en el código objeto las funciones de librería necesarias para
producir el programa ejecutable.
Página 51 de 133
Módulo 5: Entornos de Desarrollo
Página 52 de 133
Módulo 5: Entornos de Desarrollo
Existen muchos tipos de entornos de desarrollo, pero en esta unidad hemos optado
por la instalación de 2 tipos: uno orientado al trabajo con bases de datos y crear
modelos de datos (SQLDEVELOPER con Data Modeler, herramienta de Oracle), y
otro orientado al desarrollo de programas (Eclipse).
Página 53 de 133
Módulo 5: Entornos de Desarrollo
Página 54 de 133
Módulo 5: Entornos de Desarrollo
La forma más básica de Eclipse no posee una interfaz gráfica de usuario para crear
aplicaciones, sino que tendremos que instalar un plugin que nos permita realizar esa
función. Uno de los más populares es WindowsBuilder, desarrollado por Google, que
nos permite realizar de forma rápida y sencilla las GUI de las aplicaciones Java.
Página 55 de 133
Módulo 5: Entornos de Desarrollo
Se habrá creado una clase con el nombre, no se podrá editar en modo Source (fuente)
o en modo Desing (diseño). En esta vista se podrán distinguir varios bloques:
• Structure, se verán de forma jerárquica los componentes que se han agregado
a la ventana.
Para añadir los componentes a dicha ventana, primero pulsamos en Absolute layout
(Palette/Layouts) y arrástralo arrastramos al marco interno de la ventana, lo que nos
va a permitir colocar los componentes en cualquier parte de la misma.
Otra forma para poder abrir la ventana en modo diseño es pulsando sobre el clic
derecho del ratón y seleccionar Open With/WindowsBuilder Editor.
Página 56 de 133
Módulo 5: Entornos de Desarrollo
Una vez creada una conexión, si hacemos clic sobre ella veremos la ventana de
trabajo SQL, donde podremos escribir y ejecutar sentencias SQL. También
podremos ver los objetos asociados a una conexión, las tablas y, si hacemos clic
sobre ella, el detalle de la misma.
Si nos aparece una ventana alertando de que la contraseña va a caducar al acceder
con el usuario, deberemos escribir en la hoja de trabajo alter user USUARIO identified
by hr2, donde USUARIO será el nombre del usuario de la conexión y hr2 la nueva
clave. Ejecutamos la sentencia con el icono (Sentencia de ejecución). También
debemos poner la contraseña en propiedades de la conexión.
Si queremos crear una BD distinta de Oracle tendremos que instalar el driver JDBC
que corresponda. Para MySQL instalaremos mysql-connector-java-5.1.18-bin.jar
situado en la carpeta recursos. Lo copiamos en otra carpeta y vamos a
Herramientas/Preferencias. En la siguiente ventana accedemos a la sección Bases de
datos y seleccionamos Controladores JDBC de Terceros. Ahora seleccionamos la ruta
Página 57 de 133
Módulo 5: Entornos de Desarrollo
del fichero .jar. En este punto, ya nos aparecerá una pestaña nueva en la ventana de
creación de conexiones. Habrá que reiniciar el SQL Developer.
Para conectarnos a la base de datos pulsaremos en nueva conexión, escribimos el
nombre de usuario, el servidor y el puerto de entrada. En la selección de la base de
datos elegimos la que queramos usar y guardamos la conexión.
Una vez conectados se podrán realizar consultas y otro tipo de sentencias SQL.
En este apartado vamos a estudiar la versión Data Modeler que incorpora SQL
Developer versión sqldeveloper-3.2.10.09.57. Para abrir el explorador de Data
Modeler pulsamos en el menú Ver/Data Modeler/Explorador y se mostrará el módulo
del Data Modeler. Si queremos abrir una ventana del modelo lógico, desde el menú
contextual de Modelo Lógico elegimos Mostrar. En cambio, si queremos crear un
modelo relacional elegimos Modelo Relacional del menú contextual de Modelos
Relacionales.
Antes de empezar a crear ningún modelo insertaremos las tablas de nuestro usuario.
Para ello vamos a elegir desde el menú contextual de Modelos Relacionales la opción
Nuevo Modelo Relacional. En la hoja de trabajo que se nos muestra arrastraremos
todas las tablas.
Página 58 de 133
Módulo 5: Entornos de Desarrollo
En la barra de botones vamos a poder incluir, entre otras funciones, tablas, vistas y
claves ajenas y podremos dividir también tablas. En la opción de Realizar ingeniería
al modelo lógico se van a crear las diferentes entidades y relaciones de un
determinado modelo relacional.
Cuando queramos guardar este diseño de datos pulsamos en el menú Archivo/Data
Modeler/Guardar o Guardar como, seleccionamos la carpeta de almacenamiento y
guardamos. Si lo que queremos es abrir un modelo, lo haremos desde el menú
Archivo/Data Modeler/Abrir. Cuando se guarda el proyecto se crea un fichero con la
extensión .dmd y una carpeta con el mismo nombre.
Para crear un nuevo diseño, dentro del explorador de Data Modeler abrimos el menú
contextual del nodo Diseños y seleccionamos Nuevo Diseño. Usando la barra de
botones añadimos las entidades y relaciones que tengan entre ellas y cuando lo
tengamos creado se realiza la ingeniería inversa para crear el modelo relacional.
Para crear una nueva entidad pulsamos el botón Nueva Entidad. Desde esta ventana
añadimos las propiedades que tendrá la entidad, pero prestaremos especial atención
en las propiedades de los apartados general y atributos.
− Propiedades de General. Datos que tienen que ver con la entidad. Lo más
importantes es poner el nombre y, si trabaja con jerarquías indicar el
Página 59 de 133
Módulo 5: Entornos de Desarrollo
Página 60 de 133
Módulo 5: Entornos de Desarrollo
• CREAR RELACIONES
Para crear relaciones utilizamos los botones de la barra de botones del modelo
lógico. Creamos primero dos entidades y luego las relacionamos. Las relaciones
pueden ser del tipo 1:N, M:N y 1:1. Al crear una relación 1:M, se hace clic en el botón
1:N y primero seleccionamos la entidad de 1 y arrastramos a la entidad del N.
Cuando creamos la relación se abre una ventana de propiedades en la que aparecerá
los siguientes elementos:
Página 61 de 133
Módulo 5: Entornos de Desarrollo
• CREAR JERARQUÍAS
Antes de crear jerarquías deberemos establecer primero todas las entidades en las
propiedades subtipo:
− En Estrategia Ingeniería directa, seleccionamos el tipo de transformación que
realizaremos:
o Tabla única: engloba todos los atributos de los subtipos en el supertipo.
Se suele elegir esta opción cuando los subtipos se diferencian muy poco
entre ellos.
o Tabla por secundario: suprimir el supertipo y se quedan los subtipos con
atributos comunes y los suyos propios. Elegiremos esta opción en el caso
de que tengamos una gran cantidad de atributos y los accesos sobre los
mismos.
o Tabla para cada entidad: genera una tabla separada para cada entidad
supertipo y subtipo. Se elegirá esta opción cuando los subtipos tengan
muchos atributos distintos.
− En Supertipo, seleccionamos la entidad supertipo de los subtipos.
Página 62 de 133
Módulo 5: Entornos de Desarrollo
• CREAR DOMINIOS
Es un conjunto de valores que puede tomar un atributo e indica qué valores pueden
ser asumidos por los atributos de las tablas. Se define a través de la declaración de
un tipo de dato para el atributo, aunque también es posible definir dominios más
complejos y precisos.
Data Modeler ya dispone de un administrador de dominios, el cual abriremos
pulsando en el menú Herramientas/Data Modeler/Administración de Dominios. En la
ventana que aparecerá se mostrarán opciones similares a la creación de atributos en
los modelos lógicos y relacional.
Página 63 de 133
Módulo 5: Entornos de Desarrollo
Al añadir restricciones serán de tipo check cuando vayamos a crear la DLL de una
tabla con dominios asociados.
Para más información sobre este plugin podemos visitar la siguiente página:
http://ermaster.sourceforge.net/
Para proceder a la instalación abrimos el menú Help/Install New Software, en
el cuadro Work With escribimos:
http://ermaster.sourceforge.net/update-site/
Y pulsamos en Add y en el siguiente cuadro OK. Una vez hemos localizado el
plugin y seleccionado todos los elementos pulsamos en Next. Aceptamos los
términos y pulsamos en Finish para que comience la instalación. Pedirá
reiniciar el equipo una vez terminada.
Página 64 de 133
Módulo 5: Entornos de Desarrollo
• IMPORTAR ESQUEMAS
Antes de crear nuestro propio esquema vamos a ver cómo se importa un esquema
de otro usuario. Para ello iremos al menú Importar/Database y en el cuadro
mostrado rellenaremos la información en todos los campos.
Una vez rellenados, pulsamos en Next y nos pedirá el path, ruta donde se encontrará
el driver de la BD para realizar la conexión. Será necesario tener los drivers de la base
de datos –en Oracle se usa clases12.jar y en MySQL mysql-connector-java-5.1.18-
bin.jar–.
En la próxima ventana seleccionamos el esquema a importar. Pulsamos en Next,
seleccionamos todos los objetos y pulsamos en OK.
Para finalizar se muestra toda la información de las tablas, vistas y objetos
importados.
• CREAR MODELOS
Página 65 de 133
Módulo 5: Entornos de Desarrollo
Al crear una tabla nos mostrará la ventana Table Information, la cual nos detallará los
campos para añadir sus propiedades.
A la hora de crear las relaciones, seleccionaremos la tabla origen y la de destino. Una
vez relacionadas las dos tablas haciendo doble clic, tendremos toda la información.
Al crear las relaciones, las claves se traspasan también a la tabla de destino. El
siguiente paso será crear este modelo de datos dentro de una base de datos MySQL,
por lo que pulsaremos en el botón Exportar a BD y procedemos como en pasos
anteriores.
Página 66 de 133
Módulo 5: Entornos de Desarrollo
− Aseguren que se ejecutan por lo menos una vez todos los caminos de
cada módulo.
− Todas las sentencias sean ejecutadas al menos una vez.
− Todas las decisiones lógicas se ejecuten al menos una vez en parte
verdadera y otra en la falsa.
− Todos los bucles sean ejecutados en sus límites.
Página 67 de 133
Módulo 5: Entornos de Desarrollo
Una de las pruebas más utilizadas en este tipo será la del camino básico que
abordaremos más adelante.
Algunas técnicas para estos casos son: clases de equivalencia, análisis de valores
límite, métodos basados en grafos, pruebas de comparación, etc. Más adelante
veremos algunos de ellos.
Página 68 de 133
Módulo 5: Entornos de Desarrollo
Algunas herramientas usadas para estas pruebas son: JUnit, CPPUnit, PHPUnit, etc.
Página 69 de 133
Módulo 5: Entornos de Desarrollo
Esta prueba está formada por varias pruebas que tendrán como misión ejercitar en
profundidad el software. Serán las siguientes:
− Prueba de recuperación: se fuerza el fallo del software y que la recuperación
se realice correctamente.
− Prueba de seguridad: se comprueba que el sistema esté protegido frente a
acciones ilegales.
− Prueba de resistencia (Stress). se realizan acciones que requieran una gran
cantidad de recursos.
Página 70 de 133
Módulo 5: Entornos de Desarrollo
SECUENCIAL
Instrucción 1
Instrucción 2
…
Instrucción n
Página 71 de 133
Módulo 5: Entornos de Desarrollo
CONDICIONAL
Si <condición> Entonces
<instrucciones>
Si no
<instrucciones>
Fin si
HACER MIENTRAS
Mientras <condición Hacer
<instrucciones>
Fin mientras
REPETIR HASTA
Repetir
<instrucciones>
Hasta que <condición>
Página 72 de 133
Módulo 5: Entornos de Desarrollo
CONDICIONAL MÚLTIPLE
Según sea <variable> Hacer
Caso opción 1:
<instrucciones>
Caso opción 2:
<instrucciones>
Caso opción 3:
<instrucciones>
Fin según
Página 73 de 133
Módulo 5: Entornos de Desarrollo
Página 74 de 133
Módulo 5: Entornos de Desarrollo
Página 75 de 133
Módulo 5: Entornos de Desarrollo
Página 76 de 133
Módulo 5: Entornos de Desarrollo
Página 77 de 133
Módulo 5: Entornos de Desarrollo
• COMPLEJIDAD CICLOMÁTICA
Métrica del software que nos proporciona una medida cuantitativa de la complejidad
lógica de un programa. Nos establecerá el número de casos de prueba que deberán
ejecutarse para que las sentencias sean ejecutadas al menos una vez.
La complejidad ciclomática V(G) se podrá calcular de 3 formas:
1) V(G) = Número de regiones del grafo
2) V(G) = Aristas – Nodos + 2
3) V(G) = Nodos predicado + 1
El valor V(G) nos va a dar el número de caminos independientes del conjunto básico
de un programa. Un camino independiente será un camino en el cual se introducirán
nuevas sentencias de proceso o una condición. Referente a los diagramas de flujo,
estarán constituidos por al menos una arista que no ha sido recorrida anteriormente
a la definición del camino.
Página 78 de 133
Módulo 5: Entornos de Desarrollo
Este será el último paso de la prueba del camino básico y consistirá en construir los
casos de prueba que fuerzan la ejecución de cada camino. Para comprobar cada
camino escogeremos los casos de prueba de tal forma que las condiciones de los
nodos predicado estén establecidas adecuadamente. Podemos representar los
casos de prueba como nos muestra la siguiente tabla:
Página 79 de 133
Módulo 5: Entornos de Desarrollo
El camino 1 no podrá ser probado por sí solo, deberá formar parte también de las
pruebas 2 y 3.
Página 80 de 133
Módulo 5: Entornos de Desarrollo
Los caminos independientes y los casos de prueba para cada camino se muestran en
la siguiente tabla:
Página 81 de 133
Módulo 5: Entornos de Desarrollo
Este análisis se basa en la hipótesis de que suelen ocurrir más errores en los valores
extremos de los campos de entrada. Complementa a la técnica anterior. Además, no
solo estará centrado en las condiciones de entrada, sino que definen también las
clases de salida.
Tendrá las siguientes reglas:
1) Si una condición de entrada especifica un rango de valores, deberemos
concretar casos de prueba para los límites del rango y para los valores
justo por encima y por debajo. Ejemplo: para un rango de valores enteros
que estén comprendidos entre 5 y 15, tenemos que escribir casos de
prueba para 5, 15, 4 y 16.
2) Si especifica número de valores, similar al anterior.
3) Para la condición de salida aplicaremos la regla 1.
4) Usar también para la condición de salida la regla 2. Tanto en esta regla
como en la anterior no se generarán valores que estén fuera del rango.
5) Si la estructura interna posee límites prestablecidos nos aseguraremos de
diseñar casos de prueba que ejerciten la estructura de datos en sus
límites, primer y último elemento.
Hasta ahora, hemos realizado pruebas de forma manual. En este apartado veremos
cómo funciona un programa que realiza pruebas para verificar nuestro programa.
La herramienta que utilizaremos para las pruebas automatizadas será JUnit. Estará
integrada en Eclipse por lo que no deberemos descargarnos ningún paquete. Estas
pruebas se realizarán sobre una clase independientemente del resto de clases.
Página 82 de 133
Módulo 5: Entornos de Desarrollo
MÉTODOS MISIÓN
Página 83 de 133
Módulo 5: Entornos de Desarrollo
JUnit tiene disponible unas anotaciones que permite ejecutar el código antes y
después de las pruebas:
Página 84 de 133
Módulo 5: Entornos de Desarrollo
2. Documentación y optimización.
La refactorización tiene como objetivo limpiar el código para que se entienda mejor
y se pueda modificar de forma más fácil, lo que nos va a permitir una mejor lectura y
comprensión de lo que se realiza. Esta modificación no alterará su ejecución ni los
resultados.
Página 85 de 133
Módulo 5: Entornos de Desarrollo
Página 86 de 133
Módulo 5: Entornos de Desarrollo
El proceso de refactorización posee algunas ventajas entre las que están la facilidad
de mantenimiento en el diseño del sistema y el incremento de la facilidad en la
lectura y en el código fuente.
Las bases de datos y las interfaces son áreas conflictivas para la refactorización. El
cambio de base de datos tendría como consecuencia la migración de la estructura y
de los datos.
Página 87 de 133
Módulo 5: Entornos de Desarrollo
• MÉTODOS DE REFACTORIZACIÓN
Página 88 de 133
Módulo 5: Entornos de Desarrollo
• TERMINOLOGÍA
Página 89 de 133
Módulo 5: Entornos de Desarrollo
Para trabajar con el control de versiones habrá que crear primero una copia local con
Checkout, realizar las modificaciones y, por último, subir las modificaciones con
commit. Si ya está vinculada la copia habrá que hacer Update para que se haga sobre
la última versión.
− Trunk (tronco): se guardan las carpetas del proyecto. Aquí estará la versión
básica, o sea, la línea principal.
Página 90 de 133
Módulo 5: Entornos de Desarrollo
− Tags (etiquetas): copia del proyecto, carpeta o archivo para obtener una
versión que no se modifique. Serán copias del tronco y es útil para crear
versiones ya finalizadas.
− Branches (ramas): desarrolla versiones que serán publicadas. Es una copia
del tronco, que será modificada para conseguir un producto final distinto al
original. Serán modificaciones de versiones cerradas.
Página 91 de 133
Módulo 5: Entornos de Desarrollo
Para crearlo debemos crear una carpeta en nuestro disco duro, la seleccionamos y
haciendo clic derecho elegimos la opción TortoiseSVN y accedemos a la opción Crear
repositorio aquí. A continuación, hacemos clic en el botón Crear estructura de carpetas
(se creará la estructura branches, tags y trunks) y pulsaremos Navegador de
repositorios para que nos muestre el navegador. La revisión creada será la 1 e irá
aumentando conforme hagamos cambios en el repositorio. Para acceder a las demás
revisiones pulsamos en el botón HEAD.
Podremos crear todos los repositorios que queramos y administrarlos desde el
navegador. Se creará la estructura de carpetas trunk-tags-branches. Esa estructura
variará dependiendo de la organización que queramos, ya que podremos organizarlo
por ramas o por proyectos.
Página 92 de 133
Módulo 5: Entornos de Desarrollo
• RESOLVER CONFLICTOS
Una vez ya hemos realizado los cambios, subimos los archivos al repositorio con la
opción SVN Confirmar. Si alguien ha realizado cambios en el fichero antes que
nosotros se producirá un conflicto, TortoiseSVN nos avisará del fallo y no subirá el
cambio. Podremos seleccionar que se actualice o se cancele la copia. Si actualizamos
se creará una copia de cada archivo y entrará en estado “En conflicto”. Para
resolverlo pulsaremos en Resolver dentro del menú.
• CREAR ETIQUETAS
Para crear carpetas, nos colocamos en la carpeta o archivo dentro del repositorio
local y hacemos clic con el botón derecho. Seleccionamos Rama/etiqueta del menú.
En la ventana se indicará el origen y el destino de la etiqueta y sobre qué elementos
se crea.
Antes de crear las ramas deberemos crear una carpeta en el repositorio dentro de
branches o tags, para que no cuelguen directamente desde ellas.
Página 93 de 133
Módulo 5: Entornos de Desarrollo
• CREAR RAMAS
El proceso es similar a las etiquetas. Tendremos que crear una carpeta dentro de
branches poniendo el mismo nombre a la carpeta a enramar. Trabajar desde un tag
no es buena idea. Pero si se necesitan realizar cambios se deberá crear una rama
desde la etiqueta, realizar los cambios y después crear una nueva etiqueta con esta
rama. Si se realiza algún cambio desde una rama y se confirman, los cambios irán a
la rama y no al tronco.
• FUSIONAR RAMAS
Los cambios se realizarán siempre en las ramas y, una vez se han fusionado, las
modificaciones al tronco se confirmarán desde las copias de trabajo asociadas. La
fusión siempre se realizará sobre copias de trabajo.
Para fusionar los cambios realizados en la rama, se abre la carpeta sobre la que se
creó la rama y, dentro de esa carpeta modificada, se abre el menú TortoiseSVN y se
elige Fusionar. Aparecen dos opciones de fusión:
− Fusionar un rango de revisiones: Este método cubre el caso en el que ha hecho
una o más revisiones a una rama (o al tronco) y desea portar estos cambios a una
rama diferente. La dirección de la carpeta que deseamos cargar en la copia de
trabajo la escribiremos en el campo URL desde.
− Fusionar dos árboles diferentes: Este método se usará cuando queramos
fusionar las diferencias de dos ramas distintas en una copia de trabajo. Se le dirá
que haga los cambios necesarios para ir desde la revisión inicial del rango a
fusionar, hasta la revisión del fin del rango a fusionar, y que se apliquen esos
Página 94 de 133
Módulo 5: Entornos de Desarrollo
cambios a la copia de trabajo. El objetivo de esta fusión es que la copia del tronco
sea igual a la de la rama.
Página 95 de 133
Módulo 5: Entornos de Desarrollo
Ahora podremos elegir el tipo de acceso de los usuarios, pero dejaremos las opciones
seleccionadas por defecto. Para finalizar pulsamos en Create y en la ventana se nos
mostrará la URL que tendremos que usar para conectarnos desde los clientes como
TortoiseSVN o vía web.
Página 96 de 133
Módulo 5: Entornos de Desarrollo
Una vez tenemos todo instalado, tanto el plugin como el conector, procedemos a
incluir un proyecto al repositorio. Sin embargo, antes deberemos crear un
repositorio nuevo con la misma estructura que el anterior. Para ello, seleccionamos
un proyecto ya creado o creamos uno nuevo y pulsamos sobre él con el botón
derecho del ratón, eligiendo la opción Team/Share Project.
En el primer cuadro seleccionamos el tipo de repositorio al que nos conectaremos,
elegimos SVN y pulsamos en Next. Ahora nos pedirá la información del repositorio y
en la pestaña Advanced desmarcamos la casilla para que se cargue dentro de trunk
nuestro proyecto.
En la pestaña General indicamos la URL del proyecto. Pulsamos en Browse para
elegir la carpeta Trunk de nuestro proyecto y nos pedirá la conexión con el usuario.
En Authentication añadiremos los datos del usuario. Pulsamos en Next. Y
seguidamente en Finish.
Al observar el proyecto vemos que cada nodo tendrá un icono indicando que está en
un repositorio, y también aparecerá el número de revisión al lado.
Página 97 de 133
Módulo 5: Entornos de Desarrollo
A la hora de realizar las operaciones con Eclipse veremos que podremos realizar las
mismas operaciones que cualquier otro cliente. Al posicionarnos sobre el proyecto o
sobre un nodo veremos las opciones de SVN.
Si lo que queremos es obtener una copia del trabajo, pulsaremos sobre Check Out,
que almacenará la copia en la carpeta actual. En cambio, si elegimos Check Out As,
la almacenará en la carpeta que elijamos. Para ver el historial de revisiones
pulsaremos sobre Show History.
En la perspectiva Java se realizan los cambios en el proyecto. Si se realiza algún
cambio aparecerá un símbolo > en los elementos asociados.
Si visualizamos ahora el menú contextual sobre el elemento veremos las opciones
de SVN.
Para poder ver los cambios accederemos a la pestaña Synchronize de la barra de
botones o también desde la perspectiva Team Synchronizing.
Desde la barra de botones podremos hacer update, validar o ver los conflictos. Si hay
cambios salientes aparece una flecha negra hacia fuera, si aparece el signo “+” es
que el archivo es nuevo. Lo que habría que hacer es validar este archivo.
Cuando hay cambios entrantes nos aparece una flecha hacia dentro en azul,
mientras que si aparece el signo “+” es que el archivo es nuevo. Tendríamos que
actualizar los cambios entrantes.
• SOLUCIÓN DE CONFLICTOS
• CREAR RAMAS
Página 98 de 133
Módulo 5: Entornos de Desarrollo
carpeta que creamos en la rama. Toda la operación se hace desde la vista SVN
Repository Exploring y desde la conexión a la raíz del repositorio.
Ahora los CheckOut que se realicen se harán desde las ramas. Para añadir los cambios
de las ramas a la versión trunk se hará un Merge/Reintegrate desde la copia de
trabajo del trunk con la copia del repositorio de la rama. Colocados encima de la
copia de trabajo, pulsamos el botón derecho del ratón y elegimos Team/Merge
pestaña Reintegrate. Mostramos la vista Synchronize con dichos cambios,
aceptamos los cambios y se hace commit de la copia local del proyecto de trunk con
la del repositorio. Para finalizar, haremos update para realizar la sincronización de
ambos sitios.
Página 99 de 133
Módulo 5: Entornos de Desarrollo
La documentación del código del programa también es fundamental para que todo
el equipo pueda realizar funciones de actualización y reparación de errores de
manera mucho más sencilla.
Esta debe describir lo que se está haciendo y por qué. Hay 2 reglas que no se deben
olvidar:
− Todos los programas poseen errores y es cuestión de tiempo que se detecten.
− Todos los programas sufren modificaciones a lo largo de su vida.
Al realizar las modificaciones es necesario que el código esté bien documentado para
que otro programador ajeno localice los cambios que quiere realizar.
Al documentarlo, habrá que explicar lo que realiza una clase o un método y por qué
y para qué lo hace.
Para documentar proyectos existen muchas herramientas como pueden ser
PHPDoc, phpDocumentor, Javdoc o JSDoc, el javadoc para JavaScript. Nosotros
usaremos Javadoc.
Las etiquetas de Javadoc van precedidas por @ y las más utilizadas son:
ETIQUETA DESCRIPCIÓN
• GENERAR LA DOCUMENTACIÓN
Casi todos los entornos de desarrollo incluyen un botón para poder configurar
Javadoc. Para hacerlo desde Eclipse, abrimos el menú Project y elegimos el botón
Generate Javadoc. En la siguiente ventana nos pedirá la siguiente información:
− En Javadoc command se indicará dónde se encuentra el fichero ejecutable de
Javadoc, el javadoc.exe. Pulsamos en Configure para buscarlo dentro de la
carpeta del JDK y elegimos la carpeta bin.
− En los cuadros inferiores elegiremos el proyecto y las clases a documentar.
− Elegimos la privacidad de los elementos. Con Private se documentarán todos
los miembros públicos, privados y protegidos.
Pulsar en Next, en la siguiente ventana poner el título del documento html que se
genera, y elegir las opciones para la generación de las páginas HTML. Como mínimo
se seleccionará la barra de navegación y el índice.
1. Introducción al UML
El lenguaje de modelado unificado (UML) es un lenguaje gráfico para visualizar,
especificar y documentar cada una de las partes que comprende el desarrollo de
software. Este lenguaje se puede utilizar para modelar sistemas de software, de
hardware u organizaciones del mundo real. Para ello utiliza una serie de
diagramas en los que se representan distintos puntos de vista de modelado.
Podemos decir que UML es un lenguaje que se utiliza para documentar.
Diagrama de
clases
Diagrama de
estructuras
compuestas
Diagrama de
componentes
Diagrama de
Estructuras
Diagrama de
despliegue
Diagrama de
objetos
Diagrama de
paquetes
Diagrama de
secuencia
Diagrama
resumen de
Diagrama de interacción
interacción
Diagrama de
comunicación
Diagrama de
actividad
Diagrama de Diagrama de
comportamiento tiempo
Diagrama de
casos de uso
Diagrama de
maquina de
estado
2.1. Objetos
2.2.1. Clases
Son la unidad básica que contendrá toda la información referente a un objeto. A
través de ella se podrá modelar el entorno en estudio. Una clase en UML podemos
representarla con un rectángulo dividido en 3 partes:
− Parte
• ATRIBUTOS
• MÉTODOS
2.2.2. Relaciones
Los objetos estarán vinculados entre sí, y se corresponden con asociaciones entre
objetos. En UML, estos vínculos se describen a través de asociaciones al igual que los
objetos se describen mediante clases.
Estas relaciones poseen un nombre y una cardinalidad llamada multiplicidad, que
representa el número de instancias de una clase que se relaciona con las instancias
de otra clase. La asociación es similar a la utilizada en el modelo Entidad/Relación.
En cada extremo será posible indicar la multiplicidad mínima y máxima para indicar
el intervalo de valores al que tendrá que pertenecer siempre la multiplicidad. Se
usará la siguiente notación:
Notación Cardinalidad/Multiplicidad
N N veces
• ASOCIACIÓN
En una asociación bidireccional, cada una de las clases Sí se convierte en dos clases
unidas por una asociación bidireccional, cada una de las clases tendrá un objeto que
lo relacione. En cambio, en la asociación unidireccional, la clase destino no sabrá de
la existencia de la clase origen, y la clase origen contendrá un objeto o set de objetos
de la clase destino.
Dependiendo de la multiplicidad podemos pasar de un objeto de una clase a uno o
varios de la otra. A este proceso se le llama navegabilidad. En la asociación
unidireccional, la navegabilidad es solo en un sentido, desde el origen al destino,
pero no al contrario.
Algunas clases pueden asociarse consigo mismas creando así una asociación
reflexiva. Estas asociaciones unen entre si instancias de una misma clase.
• CLASE ASOCIACIÓN
Hay asociaciones entre clases que podrán tener información necesaria para dicha
relación, por lo que se creará una clase llamada clase asociación. Recibirá el estatus
de clase y las instancias serán elementos de la asociación, al igual que podrán
vincularse con otras clases.
• COMPOSICIÓN
• AGREGACIÓN
• REALIZACIÓN
Será la relación de herencia que existe entre la clase interfaz y una subclase que
implementa esa interfaz.
Se representa gráficamente con una flecha con línea discontinua
• DEPENDENCIA
Relación que se establece cuando una clase utiliza el contenido de otra clase.
Se representa con una flecha sin relleno discontinua que irá desde la
clase principal a la utilizada. Un cambio en la clase utilizada puede afectar a la
principal, pero no al contrario.
2.3.1. ArgoUML
Es una herramienta líder de modelado UML de código abierto e incluye
soporte para todos los diagramas UML. Podrá ejecutarse en cualquier plataforma
Java y está disponible en 10 idiomas.
Una vez instalada, al abrirla nos aparecerá la ventana inicial con la barra de menú y
la barra de herramientas.
Se distinguirán 4 paneles:
− Panel de explorador: situado a la izquierda, se verá en forma de árbol los
diagramas del modelo y los elementos que lo componen.
− Panel de diseño: situado a la derecha, se colocarán los elementos que lo
forman.
− Panel de críticas: situado a la parte inferior izquierda. Es de gran utilidad para
los desarrolladores durante el diseño.
− Panel de detalles y propiedades: situado en la parte inferior derecha. Se
configurarán las propiedades de los elementos y podremos visualizar el código
que se va generando.
Cuando abrimos el programa ArgoUML por defecto nos aparecerá la ventana para
crear el diseño de diagramas de clases. En la barra de botones tendremos las
herramientas para poder insertar los elementos en el diagrama, solo tendremos que
hacer clic en el elemento escogido. Si queremos crear una asociación, seleccionamos
el tipo de asociación y hacemos clic desde la clase origen a la clase destino.
Podemos elegir el tipo de asociación de forma más rápida si pasamos el cursor por
encima de la clase.
Valor por
Propiedad Descripción
defecto
Cuando asignamos un tipo de dato a los atributos, nos aparece una ventana para
elegir el tipo de dato. Para elegir los tipos de datos int, float, String y Date lo haremos
desde la lista PrimitiveType<Primitive Type>.
Para crear una operación escribimos el nombre, la visibilidad, marcamos el tipo y
añadimos los parámetros si los tuviera. Para ello pulsamos en Parameters y el botón
añadir (+). En la nueva ventana, escribimos el nombre del parámetro, elegimos el
tipo de dato y se marca el tipo de parámetro (in para indicar que es de entrada, inout
de entrada-salida, out de salida y return si devuelve un valor de retorno).
Podemos cambiar las propiedades de la clase. Si no se muestra el cuadro abrimos el
menú Windows/Show view/Properties. Podremos ver, añadir y cambiar los
atributos, las operaciones, las relaciones de la clase, la apariencia y la semántica.
DIAGRAMA RESUMEN
Los casos de uso siempre serán iniciados por actores que pueden solicitar o modificar
información del sistema. El nombre debe coincidir con el objetivo del actor principal
que será el que normalmente comience el caso de uso.
En este caso, el caso de uso extendido no sabe nada del caso de uso que
lo extiende. Por tanto, el caso de uso de extensión (Y) no será
indispensable que ocurra, y si lo hace, ofrece un valor extra (extiende) al
objetivo original del caso de uso base
• ArgoUML
Anteriormente hemos visto cómo se instala este programa y sus características. En
este apartado vamos a abordar la creación de diagramas.
Cuando abrimos ArgoUML, nos aparece un diagrama de clase y un diagrama de
casos de uso. Si hacemos clic sobre ellos, aparecerá el panel de edición con iconos
para elaborarlos.
Para crear el límite del sistema usamos la herramienta límites que se muestra en la
barra y se arrastra al diagrama.
Para crear la relación de asociación pulsamos en el botón Asociación nueva en la
barra de botones y solo tendremos que arrastrar del actor al caso de uso o viceversa.
También se puede realizar pulsando en el actor y arrastrando desde el icono que se
muestra a derecha e izquierda hasta el caso de uso.
Para borrar algún elemento tendremos que seleccionarlo, hacer clic derecho con el
ratón y pulsar la opción Borrar del modelo. Se podrá crear varios diagramas en un
mismo modelo.
Si queremos crear un punto de extensión, crearemos primero la relación extiende
sobre el caso de uso a ser extendido.
Para obtener una imagen del diagrama, pulsamos sobre él con el botón derecho del
ratón y seleccionamos la opción Copiar diagrama al portapapeles como imagen.
El diagrama de secuencia nos mostrará gráficamente los eventos que fluyen de los
actores del sistema. Partimos de los casos de uso elaborados en la etapa de análisis.
El diagrama tendrá dos dimensiones: la dimensión vertical, que representa el
tiempo; y la dimensión horizontal, que representa los roles de la interacción.
Cada rol será representado por un rectángulo en la parte superior del diagrama, y
cada uno tendrá una línea vertical llamada línea de vida, la cual describe la
interacción a lo largo del tiempo. Cada línea vertical tendrá flechas horizontales que
mostrarán la interacción, y encima de ellas habrá un mensaje. Es importante ver la
secuencia porque nos indicará el orden en que van ocurriendo los eventos. A veces la
secuencia puede ir acompañada de una descripción del curso normal de eventos del
caso de uso.
Mensaje síncrono
Mensaje
Mensaje asíncrono
Mensaje de retorno
En estos diagramas hemos visto solamente eventos que fluyen desde el cliente hacia
el sistema. En la dimensión horizontal solo se incluían esos dos roles. Dado que
trabajamos en un sistema orientado a objetos en el que tenemos varias clases y
varios objetos que se comunican unos con otros, las clases y los objetos se
representarán en la dimensión horizontal.
• ALTERNATIVAS Y BUCLES
Bibliografía