148
UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE INGENIERÍA INFORMÁTICA INGENIERÍA EN INFORMÁTICA PROYECTO FIN DE CARRERA COLA-CASE: POTENCIANDO EL MODELADO CONCEPTUAL CON PATRONES DE COLABORACIÓN FELICIDAD PADILLA LÓPEZ JUNIO, 2008

UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

  • Upload
    others

  • View
    14

  • Download
    0

Embed Size (px)

Citation preview

Page 1: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

UNIVERSIDAD DE CASTILLA-LA MANCHA

ESCUELA SUPERIOR DE INGENIERÍA

INFORMÁTICA

INGENIERÍA

EN INFORMÁTICA

PROYECTO FIN DE CARRERA

COLA-CASE: POTENCIANDO EL MODELADO CONCEPTUAL CON PATRONES

DE COLABORACIÓN

FELICIDAD PADILLA LÓPEZ

JUNIO, 2008

Page 2: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin
Page 3: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

UNIVERSIDAD DE CASTILLA-LA MANCHA

ESCUELA SUPERIOR DE INGENIERÍA

INFORMÁTICA

INGENIERÍA

EN INFORMÁTICA

PROYECTO FIN DE CARRERA

COLA-CASE: POTENCIANDO EL MODELADO CONCEPTUAL CON PATRONES

DE COLABORACIÓN

AUTORA: FELICIDAD PADILLA LÓPEZ

DIRECTOR: FRANCISCO MONTERO SIMARRO

JUNIO, 2008

Page 4: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin
Page 5: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

RESUMEN

Dentro del proceso de desarrollo de software, con el tiempo, se han demostrado cada

vez más importantes las primeras fases del desarrollo del mismo. Concretamente, con el

tiempo las labores de programación dejaron paso a las de diseño y, aún así, fruto de síntomas

claros de una aparentemente dolencia crónica denominada crisis del software se recurrió a

potenciar las fases de ingeniería de requisitos. De una u otra manera, son en estas fases en las

que se llevan a cabo labores de ingeniería de sistemas y de información, la planificación del

proyecto, la ingeniería de requisitos y el modelado de sistemas a diferentes niveles de

abstracción de una forma cada vez más sistemática.

Posteriormente, en el resto de fases que caracterizan el proceso de desarrollo se

llevarán a cabo el diseño del software, la generación de código, las pruebas de software en la

fase de desarrollo, y los cambios necesarios de corrección, de adaptación, de mejora y de

prevención en la fase de mantenimiento. Todas estas otras fases y labores son igualmente

importantes pero quedan o se muestran determinadas en tiempo y coste por las fases iníciales.

En las fases de análisis de los requisitos y el proceso de diseño, entre otras, una tarea se

ha demostrado especialmente interesante y reveladora para el éxito posterior del desarrollo.

Dicha tarea es la relacionada con el modelado conceptual, que se aborda tanto en la fase de

análisis de requisitos como en el diseño. Para abordar dicha labor la experiencia se presenta

determinante y dicha experiencia no está siempre disponible en los equipos de desarrollo a los

que se les encomienda la producción de software.

En este sentido, un concepto, el de patrón, se ha demostrado útil para abordar tareas

de diseño, ejemplo revelador lo constituyen los patrones de diseño (Gamma et al., 1994), que

aportan conocimiento útil para poner en práctica muchas de las facilidades que permiten el

paradigma orientado a objetos. En lo que respecta al modelado conceptual existe también

experiencia en ese contexto concreto, son los patrones de colaboración (Nicola et al., 2001)

que vienen derivado de trabajos previos de Peter Coad (Coad, 1997).

Page 6: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

En este proyecto final de carrera se pretende facilitar el uso de esta experiencia

documentada y disponible que facilita labores de modelado conceptual. Para ello se han

estudiado y documentado de forma activa los patrones de colaboración y se ha trabajado en el

desarrollo de un entorno, Cola-CASE, que permite el uso reiterado y sistemático de los

mismos.

Las ventajas que este entorno provee se traducen en un soporte al modelado

conceptual, actividad habitual en el desarrollo de software producido en estos momentos.

Page 7: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

AGRADECIMIENTOS Y DEDICATORIAS

Page 8: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin
Page 9: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

ÍNDICE

Resumen .................................................................................................................................. i

Agradecimientos Y Dedicatorias .......................................................................................... iii

Índice ..................................................................................................................................... v

Índice De Figuras ................................................................................................................. vii

Índice De Tablas ................................................................................................................... ix

Capítulo 1 . Introducción ....................................................................................................... 1

1.1 Especificación e implementación de software ........................................................ 1

1.2 Motivación y justificación ....................................................................................... 4

1.3 Objetivos ................................................................................................................. 4

1.4 Estructura del documento ........................................................................................ 6

Capítulo 2 . La importancia creciente de la especificación frente a la implementación ........ 9

2.1 Evolución histórica del desarrollo de software ....................................................... 9

2.1.1 La crisis del software ..................................................................................... 12

2.1.2 Ciclo de vida del software ............................................................................. 17

2.2 El proceso de desarrollo de un sistema software .................................................. 19

2.2.1 Fundamentos del análisis de requisitos .......................................................... 19

2.2.2 Metodologías de desarrollo del software ....................................................... 20

2.2.3 Desarrollo dirigido por modelos .................................................................... 26

2.2.4 El proceso unificado ...................................................................................... 27

2.2.5 Fases del proceso de desarrollo ..................................................................... 28

2.2.6 El proceso de desarrollo definido en Rational (RUP) .................................... 29

2.3 Lenguajes y notaciones de programación y de diseño .......................................... 31

2.3.1 Lenguajes de programación ........................................................................... 31

2.3.2 Lenguaje unificado de modelado (UML) ...................................................... 33

2.4 Herramientas para el desarrollo del software ........................................................ 36

2.4.1 CASE ............................................................................................................. 37

2.5 La utilización de la experiencia ............................................................................. 40

2.6 Los patrones .......................................................................................................... 41

2.6.1 Tipos de patrones ........................................................................................... 44

2.6.2 Antipatrones ................................................................................................... 45

2.6.3 Los patrones de colaboración ........................................................................ 45

2.6.4 Formatos de los patrones disponibles ............................................................ 49

2.7 Análisis y conclusiones ......................................................................................... 50

Capítulo 3 . Integración de los patrones de colaboración en el proceso de desarrollo ........ 53

3.1 Introducción .......................................................................................................... 53

3.2 Documentación y especificación de la aplicación desarrollada ............................ 54

3.2.1 Objetivos ........................................................................................................ 54

3.2.2 Requisitos funcionales ................................................................................... 56

3.2.3 Requisitos no funcionales .............................................................................. 70

3.2.4 Modelado conceptual ..................................................................................... 73

Page 10: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

3.2.5 Diagramas de secuencia ................................................................................. 78

3.3 Descripción y almacenamiento de los patrones de colaboración en XML ........... 81

3.4 Descripción del entorno elaborado ........................................................................ 83

3.5 Análisis y discusión ............................................................................................. 105

Capítulo 4 . Caso de estudio: utilización del entorno facilitado ........................................ 107

4.1 Descripción del caso de estudio .......................................................................... 107

4.2 La especificación gráfica ..................................................................................... 109

4.3 La generación de código ..................................................................................... 119

4.4 Las aportaciones educativas del producto software desarrollado ....................... 125

4.5 Análisis y discusión ............................................................................................. 128

Capítulo 5 . Conclusiones y Trabajo Futuro ...................................................................... 129

5.1 Conclusiones ....................................................................................................... 129

5.2 Trabajo Futuro ..................................................................................................... 130

Bibliografía ........................................................................................................................ 131

Apéndice A ........................................................................................................................ 133

Patrones de Colaboración .............................................................................................. 133

Page 11: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

ÍNDICE DE FIGURAS

Figura 2-1. Capas en la Ingeniería del Software .................................................................. 12

Figura 2-2. Los problemas de comunicación y el desarrollo del software .......................... 14

Figura 2-3. Elementos del ciclo de vida de un producto software ....................................... 18

Figura 2-4. Esquema general de operación de una fase ....................................................... 18

Figura 2-5. La metodología es lo que posibilita la asociación entre una solución y un

problema .............................................................................................................................. 21

Figura 2-6. Metodologías de desarrollo ............................................................................... 23

Figura 2-7. Perfil de Proyecto Típico .................................................................................. 29

Figura 2-8. Fases e iteraciones en la metodología RUP ...................................................... 31

Figura 2-9. Patrones de colaboración (Nicola et al., 2001) ................................................. 47

Figura 3-1. Esquema básico de la funcionalidad de la herramienta .................................... 55

Figura 3-2. Diagrama de casos de uso de la herramienta .................................................... 57

Figura 3-3. Diagrama de actividades para la elaboración de un diagrama de clases ........... 58

Figura 3-4. Diagrama de paquetes ....................................................................................... 73

Figura 3-5. Diagrama de clases de la aplicación ................................................................. 75

Figura 3-6. Diagrama de secuencia para insertar patrón sustituyendo clases ...................... 79

Figura 3-7. Diagrama de secuencia para insertar patrón sin sustituir clases ....................... 80

Figura 3-8. Modelo de dominio de clases ............................................................................ 82

Figura 3-9. Patrón Actor-Role ............................................................................................. 83

Figura 3-10. Interfaz de la aplicación .................................................................................. 84

Figura 3-11. Partes de una clase .......................................................................................... 87

Figura 3-12. Características de una clase ............................................................................. 87

Figura 3-13. Cambio de nombre no permitido para una clase ............................................. 88

Figura 3-14. Cambio de nombre duplicado para una clase .................................................. 89

Figura 3-15. Mensaje de confirmación para eliminar una clase .......................................... 89

Figura 3-16. Propiedades de un atributo .............................................................................. 90

Figura 3-17. Menú de acciones para un atributo ................................................................. 91

Figura 3-18. Propiedades de un método .............................................................................. 91

Figura 3-19. Menú de acciones para un método .................................................................. 92

Figura 3-20. Menú de acciones para una clase .................................................................... 93

Figura 3-21. Menú de acciones para una relación ............................................................... 94

Figura 3-22. Tablas de las propiedades para cada uno de los tipos de relaciones posibles . 95

Figura 3-23. Mensaje de confirmación para eliminar una relación ..................................... 95

Figura 3-24. Utilizar patrón ................................................................................................. 98

Figura 3-25. Nombres de las clases de los patrones ............................................................ 99

Figura 3-26. Cambio de color de una clase ....................................................................... 100

Page 12: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Figura 3-27. Ventana para guardar el código del diagrama de clases ............................... 101

Figura 3-28. Ventana para guardar la imagen del diagrama de clases .............................. 102

Figura 3-29. Código UsiXML para un diagrama de clases ............................................... 103

Figura 3-30. Ventana para imprimir un diagrama de clases .............................................. 104

Figura 3-31. “About us...” de la aplicación ....................................................................... 105

Figura 4-1. Clase compañía ............................................................................................... 110

Figura 4-2. Clase trayecto .................................................................................................. 111

Figura 4-3. Clase autobús .................................................................................................. 111

Figura 4-4. Clase persona .................................................................................................. 112

Figura 4-5. Clase empleado ............................................................................................... 112

Figura 4-6. Clase pasajero ................................................................................................. 113

Figura 4-7. Clase reserva ................................................................................................... 114

Figura 4-8. Relaciones de herencia en el diagrama ........................................................... 114

Figura 4-9. Patrón “Item-SpecificItem” para la relación entre compañía y trayecto ........ 115

Figura 4-10. Patrón “Group-Member” para la relación entre compañía y autobús .......... 115

Figura 4-11. Patrón “Group-Member” para la relación entre compañía y empleado ........ 116

Figura 4-12. Patrón “SpecificItem-LineItem” para la relación entre trayecto y reserva... 116

Figura 4-13. Patrón “Role-Transaction” para la relación entre pasajero y reserva. ......... 117

Figura 4-14. Relación entre compañía y pasajero ............................................................. 117

Figura 4-15. Relación entre trayecto y pasajero ............................................................... 118

Figura 4-16. Relación entre autobús y trayecto ................................................................. 118

Figura 4-17. Diagrama de clases del caso de estudio: empresa de autobuses ................... 119

Figura 4-18. Generación de código Java en el directorio autobuses. ................................ 121

Figura 4-19. autobús.java ................................................................................................... 121

Figura 4-20. compañía.java ............................................................................................... 122

Figura 4-21. empleado.java ............................................................................................... 122

Figura 4-22. pasajero.java .................................................................................................. 123

Figura 4-23. persona.java ................................................................................................... 123

Figura 4-24. reserva.java ................................................................................................... 124

Figura 4-25. trayecto.java .................................................................................................. 124

Page 13: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

ÍNDICE DE TABLAS

Tabla 2-1. Diferencias entre metodologías tradicionales y ágiles ....................................... 25

Tabla 2-2. Comparativa herramientas CASE ...................................................................... 39

Tabla 2-3. Elementos de los patrones .................................................................................. 46

Tabla 2-4. Plantilla de un patrón según Christopher Alexander .......................................... 49

Tabla 3-1. Caso de uso “Añadir Clase” ............................................................................... 59

Tabla 3-2. Caso de uso “Eliminar Clase” ............................................................................ 60

Tabla 3-3. Caso de uso “Consultar Clase” ........................................................................... 61

Tabla 3-4. Caso de uso “Modificar Clase” .......................................................................... 63

Tabla 3-5. Caso de uso “Añadir Relación” .......................................................................... 64

Tabla 3-6. Caso de uso “Eliminar Relación” ....................................................................... 64

Tabla 3-7. Caso de uso “Consultar Relación” ..................................................................... 65

Tabla 3-8. Caso de uso “Modificar Relación” ..................................................................... 66

Tabla 3-9. Caso de uso “Utilizar Patrón” ............................................................................ 67

Tabla 3-10. Caso de uso “Añadir Patrón” ............................................................................ 68

Tabla 3-11. Caso de uso “Eliminar Patrón” ......................................................................... 68

Tabla 3-12. Caso de uso “Modificar Patrón” ....................................................................... 69

Tabla 3-13. Actor-Role.usi .................................................................................................. 83

Tabla 3-14. Iconos de la barra de herramientas del panel ................................................... 85

Page 14: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin
Page 15: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Capítulo 1. Introducción

1.1 Especificación e implementación de software

Para entender el contexto en el que se ha hecho este proyecto final de carrera hay que

tener presente una serie de conceptos que vienen determinados de la evolución histórica que

ha sufrido el proceso de desarrollo del software. En el año 1968 se habló por primera vez de

crisis del software, y se acuñó este término; desde entonces y hasta nuestros días se buscan

soluciones para intentar solventar este problema que acompaña al desarrollo del software.

Los principales indicios que llegan a pensar en crisis del software son que los proyectos

no terminan en el plazo estimado, ni se ajustan al presupuesto inicial, generando software de

baja calidad, que en ocasiones no cumple con los requisitos del cliente. Y todo para obtener

proyectos, muchas veces, con un código de difícil mantenimiento.

Las posibles causas de esta crisis pueden ser, entre otras, la complejidad que supone la

tarea de programar y los cambios a los que se tiene que ver sometido un programa para ser

continuamente adaptado a las necesidades de los usuarios. Además, las aplicaciones actuales

son programas muy complejos, inabordables por una sola persona y no es posible estimar de

una manera exacta, antes de comenzar un proyecto, cuánto tiempo llevará desarrollar un

programa ni cuánto personal hará falta.

La ingeniería del software, para tratar de facilitar el proceso de desarrollo del software,

realiza diagramas que describen la forma de cómo hacer las cosas, lo que ha ocasionado que

surjan distintas metodologías de Análisis y Diseño Orientadas a Objetos y herramientas CASE

para facilitar la utilización y documentación de estos diagramas o modelos. A mediados de los

ochenta, ya existía una gran variedad de estos métodos, lo que suponía que los mismos

conceptos de un diagrama tenían distinta notación según el método del que se tratara,

provocando esto una situación de confusión y un problema de estandarización.

Para mitigar la situación de confusión ante los distintos métodos existentes para el

análisis y diseño de los requisitos surge el Unified Modeling Language o Lenguaje Unificado

Page 16: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

de Modelado (UML), que es el lenguaje de modelado de sistemas de software más conocido y

utilizado en la actualidad, además de estar respaldado por el OMG. Es un lenguaje gráfico para

visualizar, especificar, construir y documentar un sistema de software, desde una perspectiva

orientada a objetos. UML ofrece un estándar para describir un "plano" del sistema (modelo),

incluyendo aspectos conceptuales tales como procesos de negocios y funciones del sistema, y

aspectos concretos como expresiones de lenguajes de programación, esquemas de bases de

datos y componentes de software reutilizables.

UML es el lenguaje en el que está descrito el modelo. Se puede aplicar en una gran

variedad de formas para dar soporte a una metodología de desarrollo de software, tal como el

RUP, pero no especifica en sí mismo qué metodología o proceso usar.

A medida que UML va sacando nuevas versiones, incluye nuevos diagramas para

poder representar el modelo en función de las necesidades de cada uno. No obstante, para

realizar un modelado en el análisis del entorno que sea de utilidad para la posterior

implementación y demás fases del desarrollo, se ha considerado especialmente interesante los

diagramas de clases y la especificación conceptual. Este tipo de diagrama permite visualizar las

relaciones entre las clases que involucran el sistema, y a través de las clases modelar el entorno

en estudio, describiendo la estructura del sistema. De esta manera, una clase será la unidad

básica que encapsule toda la información de un objeto, sus atributos representarán alguna

propiedad de la clase y sus métodos las funciones o transformaciones que se apliquen a todos

los objetos de una clase particular.

Por otro lado, la orientación a objetos, que puede describirse como el conjunto de

disciplinas que desarrollan y modelan software, facilita la construcción de sistemas complejos a

partir de componentes (objetos). Siguiendo este principio, surge la Programación Orientada a

Objetos (POO), que aumenta considerablemente la velocidad de desarrollo de los programas

gracias a la reutilización de los objetos.

Puede encontrarse una estrecha relación entre las clases del modelado conceptual de

UML con los objetos de la POO. En este sentido, sería más sencillo en el momento de

programar si cada escenario está plasmado en su correspondiente diagrama de clases, ya que

será inmediato identificar los objetos necesarios.

Así mismo, el Proceso Unificado Racional o Rational Unified Process (RUP) es un

proceso de desarrollo de software, y junto con el Lenguaje Unificado de Modelado UML,

Page 17: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

constituye la metodología estándar más utilizada para el análisis, implementación y

documentación de sistemas orientados a objetos. RUP no es un sistema con pasos firmemente

establecidos, sino un conjunto de metodologías adaptables al contexto y necesidades de cada

organización.

Hoy por hoy se tiene como objetivo aumentar la productividad y la calidad del

software y para desarrollar productos de calidad se recurre a la ingeniería del software, cuya

evolución histórica ha llevado a la Model Driven Architecture (MDA), propuesta por el

Object Management Group (OMG), que está siendo cada vez mas utilizada en el desarrollo de

software.

Con la MDA, se promueve la idea de modelos, que tanta importancia han adquirido

tras el éxito cosechado por UML, y de esta forma se consigue portabilidad, interoperabilidad y

reusabilidad, produciendo, por tanto, software de calidad. Se conoce que uno de los factores

de éxito más relevantes en el desarrollo de los proyectos software es que éstos sean capaces de

satisfacer las necesidades y expectativas de los usuarios. Por eso es por lo que la recogida,

análisis y definición de las necesidades de los clientes y las características del sistema, realizadas

en las primeras fases del desarrollo, cobren más importancia que el mero hecho de la

implementación.

Debido a la complejidad que supone todo el proceso de desarrollo, y en especial las

fases de análisis y diseño, se considera imprescindible la aplicación de la experiencia para que

el proyecto siga delante de una forma adecuada. Ha sido la experiencia de desarrolladores la

que ha llevado a comprender que hay estructuras dentro del modelado que se repiten, que son

los patrones.

Para facilitar la tarea de modelado del negocio se propone recurrir al uso de estos

patrones, ya que se pueden encontrar habitualmente en cualquier tipo de situación. Una

posible definición de patrón es un modelo que se puede seguir para realizar algo. Los patrones

surgen de la experiencia de los seres humanos al tratar de lograr ciertos objetivos y capturan la

experiencia existente y probada promoviendo y documentando buenas prácticas.

Según el arquitecto Christopher Alexander, “cada patrón describe un problema que

ocurre infinidad de veces en nuestro entorno, así como la solución al mismo, de tal modo que

podemos utilizar esta solución un millón de veces más adelante sin tener que volver a pensarla

otra vez.” El uso de patrones es beneficioso en la mayoría de situaciones que se dan en

Page 18: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

cualquier proyecto medianamente complejo, ya que un sistema bien estructurado está lleno de

patrones.

Aun cuando, en un principio, el uso de determinados patrones de software pueda

parecer una carga de trabajo adicional, la ganancia en mantenibilidad del software merece la

pena. En la mayor parte de los casos, implementar las cosas bien, pensando en adoptar un

patrón adaptable que permita expandir el programa mas adelante facilitará las cosas en el

momento de cambiar o quitar partes del proyecto.

Más concretamente, en este proyecto se plantea el uso de patrones de colaboración.

Estos patrones son la representación de personas, lugares, cosas y eventos; ilustrando de

forma gráfica concisa y no ambigua la interacción entre dos objetos.

Por otro lado, existen diversas herramientas CASE para el modelado basadas en UML

pero se ha echado en falta la posibilidad de añadir la experiencia existente en el desarrollo de

software a este modelado.

1.2 Motivación y justificación

La motivación que lleva a la realización de este proyecto es la falta de consideración

observada de la experiencia relacionada con el modelado conceptual y disponible en

diversos documentos disponibles, así como de un entorno de diseño para ese mismo

modelado conceptual, que permita recoger el conocimiento específico acumulado por

la experiencia, en forma de patrones de colaboración, y la opción de poder disponer de estos

patrones sistemáticamente en nuestros análisis y diseños.

1.3 Objetivos

Los principales objetivos investigados en este proyecto final de carrera son los

siguientes:

Justificación documentada de la importancia del modelado conceptual e identificación

de los mecanismos que permiten llevarlo a cabo.

Page 19: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Estudiar y caracterizar la constante crisis que está sufriendo el desarrollo de software a

causa de los grandes avances que se dan en la tecnología hardware frente a la lenta

evolución del software.

Conocer y profundizar en el Desarrollo de Software Dirigido por Modelos (DSDM) y

más concretamente la propuesta MDA (Model Driven Architecture) de OMG, que

constituyen una aproximación para el desarrollo de sistemas software, basada en la

separación entre la especificación de la funcionalidad esencial del sistema y la

implementación de dicha funcionalidad usando plataformas de implementación

específicas.

Corroborar la necesidad de una metodología en el desarrollo de software que ofrezca

un marco y un vocabulario común para el equipo de trabajo que sirva de guía y ayude a

comprobar la calidad del producto final y al seguimiento de los proyectos.

Complementar UML (Lenguaje de Modelado Unificado), que es el estándar que se

utiliza para el análisis y el diseño y que apoya el uso de los modelos para obtener

software de calidad, con el uso de experiencia documentada y disponible en el ámbito

del modelado conceptual.

Identificar y caracterizar las principales herramientas CASE (Computer Aided Software

Engineering, bajo el prisma de la consideración de la experiencia.

Justificar adecuadamente un factor clave en el desarrollo de software como es la

necesidad de aportar la experiencia que el desarrollador haya adquirido a su proyecto.

Identificar, estudiar y caracterizar los patrones disponibles en el ámbito del modelado

conceptual.

Documentar los patrones encontrados de forma que puedan utilizarse de forma

sistemática desde una herramienta CASE.

Contemplar la posibilidad de documentar los patrones de colaboración utilizando un

lenguaje basado en XML.

Ofrecer un entorno que permita utilizar, gestionar y aprovechar la experiencia

disponible en forma de patrones de colaboración.

Page 20: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

1.4 Estructura del documento

La memoria asociada a este proyecto se compone de los cinco capítulos en los que se

ha dividido el documento.

En el capítulo 1, el cual nos ocupa, se hace una introducción a lo que se verá más

adelante. En primer lugar se hace un preámbulo muy general a lo que es la especificación e

implementación del software, seguido de la motivación que ha llevado a la elaboración del

presente proyecto y los objetivos que se tendrán en cuenta para su desarrollo.

En el capítulo 2 se discute la creciente importancia de la especificación frente a la

implementación. Se hace un repaso histórico de las tendencias que ha seguido el desarrollo de

software, ante la búsqueda de software de calidad, desde las metodologías tradicionales hasta la

programación estructurada, con la creciente tendencia actual de la arquitectura dirigida por

modelos, utilizando para ello UML y programación orientada a objetos. Se presentan los

patrones de colaboración y se describe lo que estos nos pueden aportar en el modelado del

dominio. Se hace un estudio de las herramientas CASE de las que se dispone actualmente y se

subraya la idea de que, aunque ocasionalmente se ha empezado a introducir los patrones de

diseño, en ningún caso se ofrece la posibilidad de introducir la experiencia que los patrones de

colaboración aportan en el uso de estas herramientas, a pesar de las ventajas que esto

supondría en el diseño.

En el capítulo 3 se describe cómo los patrones de colaboración pueden integrarse en el

proceso de desarrollo, mediante la herramienta que se presenta. Se hace un análisis de los

requisitos necesarios para abordar el desarrollo de dicha herramienta, un diseño y una

implementación de ésta, conjuntamente con la descripción del entorno. Además, se describe

cómo se han documentado los patrones de colaboración de Nicola et al. para poder ser

utilizados de forma sistemática por el entorno facilitado.

En el capítulo 4 se hace una presentación dinámica de la herramienta desarrollada,

describiendo su funcionalidad, con la ayuda de algún ejemplo, y las aportaciones que ésta

puede ofrecer a nivel educativo.

En el capítulo 5 se recogen las conclusiones obtenidas tras la elaboración del presente

proyecto, y se proponen posibles trabajos futuros en este sentido. Se resalta, una vez más, la

necesidad de incluir los patrones en el desarrollo del software, ya que eso permite facilitar la

tarea mediante la recogida de la experiencia que se tiene en los distintos contextos que pueden

Page 21: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

presentarse; en este caso, se repasan los beneficios que la inclusión de los patrones de

colaboración en el modelado del dominio nos han proporcionado tras el desarrollo de la

herramienta propuesta.

Page 22: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin
Page 23: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Capítulo 2. La importancia creciente de la especificación frente a la implementación

En este capítulo se estudiará la evolución histórica del desarrollo del software y se

resaltará la importancia que el modelado conceptual tiene en el proceso de desarrollo. Esta

actividad de modelado puede verse favorecida, como todo proceso empírico, por la

experiencia de la que haga gala el analista o diseñador del software. En este sentido, en este

proyecto final de carrera se apuesta por complementar la experiencia del diseñador con

experiencia disponible y documentada en forma de patrones. Concretamente, los patrones de

colaboración (Nicola et al., 2001) se identifican como una herramienta útil y perfectamente

aprovechable de una forma mucho más sistemática.

2.1 Evolución histórica del desarrollo de software

El desarrollo de software ha ido pasando por diversos esquemas de ciclo de vida,

desde los artesanales de sus inicios hasta los altamente estructurados. Por eso los

desarrolladores han tenido que ir adaptándose a estos cambios.

En los primeros desarrollos de software, el ingeniero solamente necesitaba conocer un

modelo de ciclo de vida del software, manejar una tecnología y ser capaz de construir una

aplicación para resolver un problema. Actualmente, el ingeniero del software debe poder

integrarse en grandes equipos de desarrollo, debe tener una visión amplia de las tecnologías

disponibles, debe ser capaz de comunicarse de manera eficaz con los clientes y debe entender

el medio empresarial en el que ocurren los problemas que va a ayudar a resolver.

Con este aumento de la complejidad en el desempeño del desarrollo, han ido

apareciendo diversas propuestas que han tenido mayor o menor éxito, según el modelo

elegido y el área de aplicación: prueba y error, cascada, prototipos evolutivos, espiral, entrega

por etapas... Esta diversidad expresa una respuesta lógica a la complejidad de la actividad de

desarrollo de software; complejidad que, a pesar de contar con un vasto arsenal de

herramientas y conocimientos disponibles, no deja de crecer.

Page 24: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

La evolución de la disciplina de ingeniería de software ha traído consigo propuestas

diferentes para mejorar los resultados del proceso de construcción.

Una posible definición de ingeniería de software es “la disciplina del desarrollo y

mantenimiento de sistemas computacionales que se comportan de manera confiable y eficiente y que su costo de

desarrollo y mantenimiento puede ser pagado”.

Otras definiciones de este concepto que se han hecho a lo largo de los años son las

siguientes (Pressman, R., 2007):

Bauer, 1972: “La Ingeniería del Software trata del establecimiento de los principios y métodos de la

ingeniería a fin de obtener software de modo rentable que sea fiable y trabaje en máquinas reales”.

Bohem, 1976: “Ingeniería del Software es la aplicación práctica del conocimiento científico en el

diseño y construcción de programas de computadora y la documentación asociada requerida para desarrollar,

operar y mantenerlos. Se conoce también como desarrollo de software o producción de software.”

Zelkovitz, 1978: “Ingeniería del Software es el estudio de los principios y metodologías para

desarrollo y mantenimiento de sistemas de software.”

Mills, 1980: “La Ingeniería del Software tiene como uno de sus principales objetivos la producción de

programas que cumplan las especificaciones, y que se demuestren correctos, producidos en el plazo y coste

adecuados.”

Meyer, 1988: “La Ingeniería del Software es la producción de software de calidad.”

Ford, 1990: “Ingeniería de Software es una forma de ingeniería que aplica los principios de la ciencia

de los computadores y matemáticas para conseguir soluciones a los problemas del software de forma efectiva y

económica.”

IEEE, 1993: “Ingeniería de software es la aplicación de un método sistemático, disciplinado y

cuantificable al desarrollo, operación y mantenimiento de software.”

Sommerville, 2001: “Es una disciplina que comprende todos los aspectos de la producción de

software desde las etapas iniciales de la especificación del sistema, hasta el mantenimiento de éste después de que

se utiliza.”

La ingeniería del software se puede ver como la composición de cuatro partes:

Page 25: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Procesos de software y garantía de calidad: Los procesos de software comprenden

el conjunto de actividades, tanto técnicas como administrativas, que son necesarias

para la fabricación de un sistema de software. Estas actividades son el análisis de los

requisitos, la implantación, la administración de configuraciones, las pruebas, la

evolución o el mantenimiento del software etc. Un proceso adecuado ha de estar bien

definido y ha de servir para lo que se especificó. Si el proceso es adecuado, la

probabilidad de producir un producto de buena calidad es más alta.

Arquitecturas de software y elementos estructurados: A partir de la selección de

los elementos que van a definir la estructura de una aplicación, hay que definir el

proceso de construcción, la metodología, la tecnología y las herramientas. En las

décadas de los 60 y 70 era natural estructurar una aplicación en términos de los

servicios funcionales que ésta debía proveer. De hecho, las metodologías como el

análisis y diseño estructurado partían de una descomposición funcional jerárquica que

luego se transformaba en procedimientos dentro de la aplicación. Con el aumento de

la complejidad de las aplicaciones y la necesidad de hacerlas evolucionar, este enfoque

no fue suficiente. En los 80 y 90 se popularizó el desarrollo de software orientado a

objetos que buscaba, entre otros objetivos, permitir la construcción de aplicaciones

más fáciles de mantener. Hoy parecen no ser suficiente los objetos, no porque hayan

dejado de ser buenos, sino porque el problema ha cambiado. Se necesita contar con

arquitecturas flexibles y lo más independientes posibles de las herramientas que se

utilicen.

Tecnologías de información: Aquí se hace referencia tanto a elementos de hardware

que afectan a los sistemas de software como a los lenguajes concretos de modelado y

de programación, y a las plataformas para la construcción de algún tipo de

componente software. Esta es la dimensión de la ingeniería de software que más

rápido cambia. Es la evolución de la tecnología lo que ha hecho que las expectativas

con respecto al software cambien y sean más exigentes. A medida que los requisitos no

funcionales han ido tomando importancia, la integración de la tecnología se debe hacer

desde las primeras etapas de diseño, y obliga al ingeniero de software a ampliar su

dominio de competencias.

Metodologías y técnicas de desarrollo: Dan soporte a las actividades de análisis,

diseño, programación, elaboración de pruebas, administración de riesgos, etc. Debe

contar con descripciones claras sobre la manera de llevar a cabo el trabajo, de evaluar

Page 26: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

el avance, de verificar la calidad del resultado y de validar si se produjo lo que se

esperaba. Recientemente, el tema que ha despertado gran interés es el de los patrones

de diseño, que son soluciones probadas a problemas particulares en contextos

específicos. Si bien no son metodologías completas, son elementos claves que

permiten, por un lado, manejar un vocabulario común entre los diseñadores y, además,

ofrecen elementos objetivos para justificar una decisión.

Figura 2-1. Capas en la Ingeniería del Software

La Figura 2.1 muestra un esquema con las capas que intervienen en la ingeniería del

software, donde cada una de estas capas afecta al resto. De esta manera, los métodos indican

cómo construir el software, las herramientas suministran un soporte automático para los

métodos y los procedimientos son lo que une los métodos y las herramientas. Todo esto sin

olvidar que el principal objetivo en la ingeniería del software es producir software de calidad,

por lo que se aplicará la garantía de calidad del software a todo el proceso de desarrollo.

2.1.1 La crisis del software

Tradicionalmente, la Ingeniería del Software adolece de una enfermedad crónica

conocida como “crisis del software”. Éste término se acuñó en 1968, en la primera conferencia

organizada por la OTAN sobre desarrollo de software; y con él se etiquetaron a los problemas

que surgían en el desarrollo de sistemas de software.

Es el hecho de que el software que se construye no solamente no satisface los

requisitos ni las necesidades pedidos por el cliente, sino que además excede los presupuestos y

los horarios de tiempos.

Actualmente, las aplicaciones típicas son muy grandes y complejas para que un

individuo las entienda y, por ello, lleva gran tiempo implementar software. El término “crisis

Page 27: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

del software” fue usado, desde los primeros días de la ingeniería del software, para referirse a

los rápidos incrementos de la tecnología en la computación y la complejidad de los problemas

a los cuales pudieran enfrentarse.

Uno de los principales problemas en el desarrollo de software de hoy en día es que

muchos proyectos empiezan la programación tan pronto se definen y concentran mucho de su

esfuerzo en la escritura de código. No se debe de olvidar que la programación es solamente

una parte en el desarrollo de software, habiendo otras tareas dentro del proceso de suma

importancia. Últimamente el desarrollo de software se ha ralentizado.

Hay varias razones que pueden ser propuestas como causa de la crisis, las cuales no

son mutuamente excluyentes; de hecho, es posible que la verdadera causa sea una mezcla de

todas ellas. Sin embargo, todas tienen en común que son causadas por el método de valorar

los avances científicos y el mecanismo actual de financiación de la actividad científica. Las

causas de la crisis del software fueron vinculadas a la complejidad en general del proceso de

software y a la relativa inmadurez de la ingeniería de software como una profesión.

Algunos “síntomas” que indican que el software se encuentra en un periodo de crisis

son la baja calidad del software, tiempo y presupuesto excedido, confiabilidad cuestionable y

altos requisitos de personal para desarrollo y mantenimiento.

Algunos de los factores que han hecho pensar que el desarrollo del software está en

crisis, respecto a otras etapas de su corta historia, son el aumento del poder computacional, la

reducción del costo del hardware, la rápida obsolescencia de hardware y software, la creciente

aceptación de la computarización en las empresas, el incremento en el número de usuarios de

los sistemas de software, la existencia de un tipo de usuario no homogéneo en sistemas hechos

a la medida y el diferente personal de desarrollado y mantenimiento.

Factores también importantes son los cambios tecnológicos (Internet, redes, ERP o

Enterprise Resource Planning, CRM o Customer Relationship Management, SCM o Supply Chain

Management), económicos (crisis económicas, globalización, etc.) y sociales (nuevas

necesidades, nuevas costumbres, etc.) que se producen en el entorno.

Debido a la falta de comunicación y de entendimiento, con frecuencia, los distintos

componentes del equipo de desarrollo, tienen distintos puntos de vista sobre el trabajo que

deben desarrollar, y de esta manera, es difícil que lleguen a un acuerdo. Un ejemplo gráfico y

Page 28: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

con un toque de humor de las distintas formas de ver las cosas que tiene cada uno de los

involucrados en el proceso de desarrollo del software se muestra en la Figura 2-2.

Figura 2-2. Los problemas de comunicación y el desarrollo del software

Esta falta de entendimiento entre unos y otros podría solucionarse sustancialmente si

al principio del desarrollo se lleva a cabo una especificación exhaustiva de los requisitos que se

esperan de la herramienta. También es interesante que la especificación se complete con un

modelado donde se plasmen gráficamente estos requisitos, con lo que se añadirá una

semántica más difícil de explicar mediante texto y que permitirá asimilar de un vistazo las

condiciones de interés del proyecto, incluyendo toda la información que ha de manejar el

sistema.

Es mas, si el modelo refleja la forma en que las actividades del proyecto influirán sobre

la condición de interés, entonces la implementación del proyecto conducirá a los resultados

deseados. Por otro lado, cualquier cambio relativo a requisitos u otras fuentes de información

se podrá afrontar de manera más eficaz, haciendo más cómodo el mantenimiento.

Page 29: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Este mal endémico que sufre la industria del software desde sus orígenes no parece

tener una solución definitiva hasta ahora, aunque ha habido muchas iniciativas para atenuar los

efectos de esta crisis. Una de las más importantes es la aplicación de sistemas de

aseguramientos de calidad al desarrollo de software, los que se basan sobre las siguientes ideas:

El software debe ser pensado, diseñado y desarrollo como un producto sujeto a

normas de calidad.

El software es un producto desarrollado por grupos de personas cuya interacción debe

ser gestionada.

El énfasis en el proceso de desarrollo asegura un producto adecuado a los requisitos de

los clientes.

La solución a la crisis del software pasa por un cambio de mentalidad de los

protagonistas de su desarrollo: jefes de proyecto, analistas, programadores, usuarios, etc. Esto

conduce a una idea que cada vez encuentra más fundamentos y adherentes; la crisis del

software puede ser reducida a través de la educación, es decir educando adecuadamente la

próxima generación de profesionales del software, de modo que ellos sean naturales e

inmediatos aplicando conceptos como calidad y desarrollo en equipo.

En lo concerniente al desarrollo de software se debe incentivar la planificación,

realización, medición, seguimiento y mejora continua mediante la incorporación de estándares

y procedimientos que complementen el método de desarrollo utilizado, haciendo énfasis en

los sistemas de gestión de la calidad que pueden ayudar a las organizaciones a aumentar la

satisfacción del cliente.

Los clientes necesitan productos con características que satisfagan sus necesidades y

expectativas. Estas necesidades y expectativas se expresan en la especificación del producto y

son generalmente denominadas como requisitos del cliente. Los requisitos del cliente pueden

estar especificados por el cliente de forma contractual o pueden ser determinados por la

propia organización. En cualquier caso, es finalmente el cliente quien determina la

aceptabilidad del producto. Dado que las necesidades y expectativas de los clientes son

cambiantes y debido a las presiones competitivas y a los avances técnicos, las organizaciones

deben mejorar continuamente.

Page 30: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

La aportación que se hizo ante esta situación fue el planteamiento de aplicar métodos

científicos y rigurosos al proceso de desarrollo de programas, apareciendo en escena la

Ingeniería del Software y la Ingeniería de Requisitos. No han solucionado el problema, pero

algo han aportado.

Hasta ahora la mejor forma que funciona para afrontar de forma seria el desarrollo de

una aplicación es realizar: análisis y requisitos + programación + ciclo de pruebas. Pero esto

tiene dos inconvenientes: el primero es que es muy difícil hacer un buen análisis que sepa

abarcar todas las necesidades del cliente antes de que éste vea el producto final (entre otras

cosas porque el cliente no sabe lo que quiere); el segundo es que nadie hace el esfuerzo de

analizar y especificar requisitos, teniendo dicha parte el menor peso específico dentro de todo

el desarrollo.

Se ha probado que las metodologías mejoran la calidad del software, al ser estas un

proceso estudiado y probado, que indica los pasos a seguir durante el proceso de desarrollo,

por eso es aconsejable su utilización.

Actualmente los nuevos sistemas de información son costosos en tiempos y recursos,

la solución moderna de los actuales sistemas exigen nuevas herramientas y metodologías para

poder resolver, de forma rápida, económica y eficiente los problemas de información

planteados por algunas empresas.

Debemos de reconocer los problemas y causas para llegar a solucionarlos mediante la

combinación de métodos completos para todas las fases del desarrollo del software, con ayuda

de las técnicas que actualmente existen como la re-ingeniería de software, la programación

orientada a objetos y lo que es UML, inclusive el uso de herramientas CASE.

En definitiva, para tratar de paliar los efectos de la crisis, el proceso de desarrollo del

software se vería favorecido por la presencia de tres elementos clave que se conforman en la

siguiente tupla: <notación, proceso, herramientas>. Una notación extendida y aceptada que permita

documentar, visualizar, especificar y discutir a un nivel de abstracción suficiente que posibilite

las contribuciones de los diferentes roles involucrados en el proceso de desarrollo. Un proceso

sistemático, iterativo, incremental, trazable y dirigido por modelos que posibilite abordar el

desarrollo del software con ciertas garantías. Finalmente, un conjunto de herramientas que

soporten tanto las notaciones disponibles como los procesos empleados, siendo especialmente

Page 31: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

importantes la flexibilidad de las mismas para poder utilizar y reutilizar la experiencia reunida

por los desarrolladores fruto de su bagaje como desarrollador.

2.1.2 Ciclo de vida del software

Todo proyecto de ingeniería tiene unos fines ligados a la obtención de un producto,

proceso o servicio que es necesario generar a través de diversas actividades. Algunas de estas

actividades pueden agruparse en fases porque globalmente contribuyen a obtener un producto

intermedio, necesario para continuar hacia el producto final y facilitar la gestión del proyecto.

Al conjunto de las fases empleadas se le denomina “ciclo de vida”.

Sin embargo, la forma de agrupar las actividades, los objetivos de cada fase, los tipos

de productos intermedios que se generan, etc. pueden ser muy diferentes dependiendo del tipo

de producto o proceso a generar y de las tecnologías empleadas.

La complejidad de las relaciones entre las distintas actividades crece exponencialmente

con el tamaño, con lo que rápidamente se haría inabordable si no fuera por la vieja táctica de

“divide y vencerás”. De esta forma la división de los proyectos en fases sucesivas es un primer

paso para la reducción de su complejidad, tratándose de escoger las partes de manera que sus

relaciones entre sí sean lo más simples posibles.

La definición de un ciclo de vida facilita el control sobre los tiempos en que es

necesario aplicar recursos de todo tipo (personal, equipos, suministros, etc.) al proyecto. Si el

proyecto incluye subcontratación de partes a otras organizaciones, el control del trabajo

subcontratado se facilita en la medida en que esas partes encajen bien en la estructura de las

fases. El control de calidad también se ve facilitado si la separación entre fases se hace

corresponder con puntos en los que ésta deba verificarse, mediante comprobaciones sobre los

productos parciales obtenidos.

De la misma forma, la práctica acumulada en el diseño de modelos de ciclo de vida

para situaciones muy diversas permite que nos beneficiemos de la experiencia adquirida

utilizando el enfoque que mejor se adapte a nuestros requisitos.

Un ciclo de vida para un proyecto se compone de fases sucesivas compuestas por

tareas planificables. Según el modelo de ciclo de vida, la sucesión de fases puede ampliarse con

bucles de realimentación, de manera que lo que conceptualmente se considera una misma fase

Page 32: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

se pueda ejecutar más de una vez a lo largo de un proyecto, recibiendo en cada pasada de

ejecución aportaciones de los resultados intermedios que se van produciendo (realimentación).

Figura 2-3. Elementos del ciclo de vida de un producto software

Cada fase viene definida por un conjunto de elementos observables externamente,

como son las actividades con las que se relaciona, los datos de entrada (resultados de la fase

anterior, documentos o productos requeridos para la fase, experiencias de proyectos

anteriores), los datos de salida (resultados a utilizar por la fase posterior, experiencia

acumulada, pruebas o resultados efectuados) y la estructura interna de la fase.

Figura 2-4. Esquema general de operación de una fase

Page 33: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Las principales diferencias entre distintos ciclos de vida radican en el alcance del ciclo

dependiendo de hasta dónde llegue el proyecto correspondiente, las características de las fases

en que dividen el ciclo y en la estructura de la sucesión de las fases que puede ser lineal, con

prototipado, o en espiral.

2.2 El proceso de desarrollo de un sistema software

El proceso de desarrollo del software es la base para que todo proyecto,

independientemente de cual sea su porte, se realice de forma correcta y entendible. Este

proceso contempla el ciclo de vida de desarrollo completo, abarcando desde la entrega de las

especificaciones por parte del cliente, hasta la estabilización y aceptación del producto por el

equipo de desarrollo.

2.2.1 Fundamentos del análisis de requisitos

Antes de involucrarse en el proceso de desarrollo propiamente dicho, se ha de hacer la

definición del proceso, esto es un análisis detallado de los requisitos del sistema para que este

pueda llegar a tener las características deseadas.

El análisis de los requisitos es el conjunto de técnicas y procedimientos que nos

permiten conocer los elementos necesarios para definir un proyecto de software. Es la etapa

más crucial del desarrollo, ya que de esta depende que el resto del proceso sea correcto o no.

La tarea de análisis de los requisitos es un proceso de descubrimiento y refinamiento,

dónde el ámbito del programa, establecido inicialmente durante la ingeniería del sistema, es

refinado en detalle. En esta parte del desarrollo se analizan y asignan a los distintos elementos

del programa las soluciones alternativas.

El IEEE (Instituto de Ingenieros Eléctricos y Electrónicos) divide los requisitos en

funcionales y no funcionales. Siendo los requisitos funcionales la condición o capacidad de un

sistema requerida por el usuario para resolver un problema o alcanzar un objetivo; y los

requisitos no funcionales la condición o capacidad que debe poseer un sistema para satisfacer

un contrato, un estándar, una especificación u otro documento formalmente impuesto.

Page 34: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Para realizar bien el desarrollo de software es esencial realizar una especificación

completa de los requisitos para el software final. Independientemente de lo bien diseñado o

codificado que esté, un programa pobremente especificado decepcionará al usuario y hará

fracasar el desarrollo.

Tanto el que desarrolla el software como el cliente tienen un papel activo en la

especificación de requisitos. El cliente intenta reformular su concepto, algo nebuloso, de la

función y comportamiento de los programas en detalles concretos y el desarrollador actúa

como interrogador, consultor y el que resuelve los problemas.

Esta fase debe incorporar una tarea de especificación conceptual donde a partir de la

descripción de los requisitos de usuario, se intenta obtener un esquema conceptual que

represente una solución al problema. Será una representación gráfica de las entidades y

relaciones que participan en el sistema. Estos diagramas, que inicialmente se hacían

generalmente mediante una notación propia, se realizan, desde los inicios de UML con este

lenguaje, lo que facilita la comunicación al poder entender cualquier persona su significado.

Estos modelos conceptuales son independientes del sistema de gestión de bases de

datos, tienen un mayor nivel de abstracción que el texto, mayor capacidad semántica y están

más enfocados al diseño de alto nivel.

El análisis y especificación de requisitos puede parecer una tarea relativamente sencilla,

pero no lo es tanto. Puesto que el contenido de comunicación es muy alto, abundan los

cambios por mala interpretación o falta de información. El dilema con el que se enfrenta un

ingeniero de software puede ser comprendido repitiendo la sentencia de un cliente anónimo:

“Sé que crees que comprendes lo que piensas que he dicho, pero no estoy seguro de que lo

que creíste oír sea lo que yo quise decir”.

2.2.2 Metodologías de desarrollo del software

El desarrollo de un programa que resuelva un problema dado es una tarea compleja, ya

que es necesario tener en cuenta de manera simultánea muchos elementos. Por lo tanto, es

indispensable usar una metodología de programación. Para ello, antes de escribir código y más

código es necesario haber planificado cada parte del proceso.

Page 35: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Una metodología indica cómo seguir uno o varios ciclos de vida y para ello define las

técnicas, entre las que están los modelos y los procedimientos, a utilizar para cada tarea y las

entradas y salidas que tiene cada tarea.

Una metodología de programación es un conjunto o sistema de métodos, principios y

reglas que permiten enfrentar de manera sistemática el desarrollo de un programa que resuelve

un problema algorítmico. Estas metodologías generalmente se estructuran como una

secuencia de pasos que parten de la definición del problema y culminan con un programa que

lo resuelve.

Figura 2-5. La metodología es lo que posibilita la asociación entre una solución y un problema

Dentro del marco global de un proceso de desarrollo, las metodologías y técnicas dan

soporte a las actividades de análisis, diseño, programación, elaboración de pruebas,

administración de riesgos, etc. Las metodologías y técnicas precisan el cómo hacer dentro de

las actividades concretas de un proceso. Debe contar con descripciones claras sobre la manera

de llevar a cabo el trabajo, de evaluar el avance, de verificar la calidad del resultado y de validar

si se produjo lo que se esperaba.

Los pasos de una metodología, de una manera general, son los siguientes:

El diálogo: Con el cual se busca comprender totalmente el problema a resolver.

La especificación: Con la cual se establece de manera precisa las entradas, salidas y

las condiciones que se deben cumplir.

Diseño: En esta etapa se construye un algoritmo que cumpla con la especificación.

Codificación: Se traduce el algoritmo a un lenguaje de programación.

Pruebas y verificación: Se realizan pruebas del programa implementado para

determinar su validez en la resolución del problema.

Page 36: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Una metodología ofrece un marco y un vocabulario común para el equipo de trabajo,

sirve de guía en la utilización de las distintas técnicas y herramientas, ayuda a comprobar la

calidad del producto final y el seguimiento de los proyectos, incorpora los enfoques globales

que se necesitan para solucionar los problemas de los sistemas de información de una empresa

y resuelve muchos de los problemas y necesidades actuales existentes en el desarrollo de

aplicaciones.

Una metodología debe cumplir las siguientes características:

Completa: debe de tener un entorno de trabajo que aporte soluciones a las

necesidades de un sistema de información durante todas las etapas de su ciclo de vida.

Flexible: debe ser adaptable a las necesidades de cada proyecto y poder ser utilizado

por todas las organizaciones, independientemente de su tamaño, nivel de

automatización y naturaleza del proyecto.

Facilitar la comunicación y documentación del sistema: debe de proporcionar un

lenguaje común, estandarizar el vocabulario y las definiciones utilizadas y utilizar

técnicas de diagramación.

Accesible y clara: debe de ser fácil de aprender y de usar y debe de especificar los

pasos a seguir en el desarrollo.

Adaptable a la evolución: debe facilitar las modificaciones y definir invariantes que

aseguren puntos de referencia durante la evolución del sistema.

Que permita un control de calidad y gestión de proyectos: integrando técnicas

que faciliten la planificación.

En un principio, cuando empezó el desarrollo de software, no se utilizaba ninguna

metodología, ya que los proyectos eran de poca envergadura y era suficiente con un desarrollo

artesanal, pero con el aumento de la complejidad del software se hizo indispensable la

utilización de nuevos métodos que ayudaran y pusieran un poco de orden en el desarrollo.

Las metodologías de desarrollo y mantenimiento de sistemas de información las

podemos clasificar, atendiendo a los diferentes enfoques.

Las metodologías estructuradas surgen a finales de los años 70, fruto de la

ampliación de una serie de criterios de la programación estructurada a otras etapas del ciclo de

Page 37: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

vida. Intentan solucionar problemas técnicos para obtener un sistema mecanizado. Se apoya

generalmente en el ciclo de vida clásico en cascada y se diferencia de esta en el número de

etapas que soporta cada una.

La historia de las metodologías orientadas a objetos va unida a la evolución de los

lenguajes de programación orientada a objeto. A fines de los 80’s comenzaron a consolidarse

algunos métodos Orientados a Objeto.

En 1995 aparece el Método Unificado, que posteriormente se reorienta para dar lugar

al UML, la notación orientada a objetos más popular en la actualidad, de la cuál se hablará en

un próximo apartado. Una de las metodologías orientadas a objetos basadas en UML más

importantes es RUP, de la cuál se hablará también mas adelante.

La Figura 2-6 muestra los principales representantes de las metodologías tradicionales,

además de las dos alternativas posibles, MDD y metodologías ágiles, que a continuación se

comentan.

Figura 2-6. Metodologías de desarrollo

Las metodologías tradicionales se caracterizan por exponer procesos basados en

planificación exhaustiva. Esta planificación se realiza esperando que el resultado de cada

proceso sea determinante y predecible. La experiencia ha mostrado que, como consecuencia

de las características del software, los resultados de los procesos no son siempre predecibles y

sobre todo, es difícil prever desde el comienzo del proyecto cada resultado.

Page 38: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Una posible mejora a las metodologías tradicionales es incluir en los procesos de

desarrollo más actividades, más artefactos y más restricciones, basándose en los puntos débiles

detectados. Sin embargo, el resultado final sería un proceso de desarrollo más complejo que

puede incluso limitar la propia habilidad del equipo para llevar a cabo el proyecto.

La solución a algunos de los problemas presentados por las metodologías tradicionales

se logra con una gran evolución del modelo en espiral. El proceso unificado propone la

elaboración de varios ciclos de desarrollo, donde cada uno finaliza con la entrega al cliente de

un producto terminado.

Otra aproximación es centrarse en otras dimensiones, como por ejemplo el factor

humano o el producto software. Esta es la filosofía de las metodologías ágiles, cuyos

objetivos son: valorar al individuo y las interacciones del equipo de desarrollo sobre el proceso

y las herramientas; desarrollar software que funciona más que conseguir una buena

documentación; valorar la colaboración con el cliente más que la negociación de un contrato;

responder a los cambios más que seguir estrictamente un plan. Este enfoque está mostrando

su efectividad en proyectos con requisitos muy cambiantes y cuando se exige reducir

drásticamente los tiempos de desarrollo pero manteniendo una alta calidad. Las metodologías

ágiles están revolucionando la manera de producir software, y a la vez generando un amplio

debate entre sus seguidores y quienes, por escepticismo o convencimiento, no las ven como

alternativa para las metodologías tradicionales.

En la tabla 2.1 se resumen las diferencias entre las metodologías clásicas y las

metodologías ágiles. La diferencia fundamental radica en que, para los clásicos, el paradigma se

basa en la “predecibilidad”, mientras que en los ágiles, se basa en la “adaptabilidad”. No hay

una regla determinante para la elección del método, ni siquiera del tipo de método.

Metodologías tradicionales Metodologías ágiles

Basadas en normas provenientes de

estándares seguidos por el entorno de

desarrollo

Basadas en heurísticas provenientes de

prácticas de producción de código

Cierta resistencia a los cambios Especialmente preparados para cambios

durante el proyecto

Impuestas externamente Impuestas internamente (por el equipo)

Page 39: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Proceso mucho mas controlado, con

numerosas políticas y normas

Proceso menos controlado, con pocos

principios

Existe un contrato prefijado No existe contrato tradicional o al menos es

bastante flexible

El cliente interactúa con el equipo de

desarrollo mediante reuniones El cliente es parte del equipo de desarrollo

Grupos grandes y posiblemente distribuidos Grupos pequeños (<10 integrantes) y

trabajando en el mismo sitio

Más artefactos Pocos artefactos

Más roles Pocos roles

La arquitectura del software es esencial y se

expresa mediante modelos Menos énfasis en la arquitectura del software

Tabla 2-1. Diferencias entre metodologías tradicionales y ágiles

Resumiendo, mientras que las metodologías tradicionales se centran especialmente en

el control del proceso, mediante una rigurosa definición de roles, actividades, artefactos,

herramientas y notaciones para el modelado y documentación detallada, las metodologías

ágiles dan mayor valor al individuo, a la colaboración con el cliente y al desarrollo incremental

del software con iteraciones muy cortas, con cortos documentos centrados en lo esencial. Y

entre tantas diferencias entre unos tipos de metodologías y otros, se encuentra una necesidad

común: la de analizar los requisitos que tendrá la herramienta.

El primer paso a realizar en el desarrollo, tanto si se sigue una u otra metodología, será,

obviamente, estudiar cuáles son las necesidades que se quieren cubrir con la herramienta a

desarrollar. Una forma interesante de documentar estos requisitos es mediante una

especificación conceptual donde se resaltará la funcionalidad requerida del sistema. Además,

con la elaboración de los diagramas de clases correspondientes se permite visualizar

rápidamente cuáles son los elementos que incluirá la herramienta, y sus relaciones. De esta

forma, pueden modificarse los requisitos del sistema de una forma fácil y rápida, obteniendo

una documentación clara, concisa y fácil de realizar, característica especialmente interesante

dentro de las metodologías ágiles, donde no se quiere “perder el tiempo” con documentación.

Page 40: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

UML, al no ser un método de desarrollo es independiente del ciclo de desarrollo a

seguir, puede encajar en un tradicional ciclo en cascada, en uno evolutivo, en un ciclo en

espiral o incluso en los métodos ágiles de desarrollo.

Cualquier centro de desarrollo puede montar su metodología, aunque esta alternativa

implica disponer del tiempo necesario para el desarrollo de la nueva metodología; por lo tanto,

lo más práctico es seguir los métodos que ya han demostrado su validez y son de aplicación

universal.

Una buena metodología expresa la experiencia de otros para realizar una tarea: ésta es

el fruto de la experiencia. Se requiere tiempo de utilizarla, evaluarla, mejorarla, volverla a

utilizar, adaptarla, etc. El ciclo de aceptación es largo y requiere tiempo. Sin embargo, la

velocidad a la que las tecnologías cambian, no ha permitido que estos ciclos se completen

adecuadamente. Esto explica por qué ha habido tan pocos avances metodológicos en el área

de construcción de software o por qué este eje va más lentamente.

Recientemente, el tema que ha despertado gran interés es el de los patrones de diseño.

Estos son soluciones probadas a problemas particulares en contextos específicos. Si bien no

son metodologías completas, son elementos claves que permiten, por un lado, manejar un

vocabulario común entre los diseñadores y, además, ofrecen elementos objetivos para

justificar una decisión.

2.2.3 Desarrollo dirigido por modelos

El Desarrollo de Software Dirigido por Modelos (DSDM), y en particular la propuesta

MDA (Model Driven Architecture) de OMG, constituyen una aproximación para el desarrollo

de sistemas software basada en la separación entre la especificación de la funcionalidad

esencial del sistema y la implementación de dicha funcionalidad, permitiendo elevar el nivel de

abstracción, y dándole una mayor importancia al modelado conceptual y al papel de los

modelos y las transformaciones entre ellos, en el desarrollo de software. Se trata de un nuevo

paradigma de desarrollo, no centrado en el código sino en los modelos.

Con esta nueva visión se puede obtener código a partir de modelos centrados en el

dominio del problema e independientes de cualquier aspecto relacionado con la plataforma,

mediante transformaciones de modelos. El lenguaje utilizado para la elaboración de estos

Page 41: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

modelos es el Lenguaje Unificado de Modelado, o UML, que será presentado en el próximo

apartado de este capítulo.

El desarrollo de sistemas dirigido por modelos ha demostrado, desde hace tiempo, su

eficacia en el desarrollo de complejos sistemas hardware, y su aplicación crece continuamente

en el desarrollo de sistemas software (o combinaciones hardware-software), a medida que

surgen metodologías y herramientas disponibles para manipular modelos software.

El Desarrollo Dirigido por Modelos (MDD) se ha convertido en un nuevo paradigma

de desarrollo software que promete una mejora de la productividad y de la calidad del software

a través de un proceso guiado por modelos y soportado por potentes herramientas que

generan código a partir de modelos.

2.2.4 El proceso unificado

Para el desarrollo de un sistema es necesario un proceso que proporcione una guía

para ordenar las actividades del equipo, que dirija las tareas de los desarrolladores individuales

y al equipo como un todo, que especifique qué artefactos deben desarrollarse y que ofrezca

criterios para monitorear y medir las actividades y productos de un proyecto. Por lo tanto,

puede decirse que el proceso de desarrollo es un conjunto de actividades necesarias para

transformar los requisitos de un usuario en un sistema de software.

Un proceso de desarrollo software es el Proceso Unificado (PU), que es un marco de

trabajo de proceso genérico que puede especializarse para cada clase de sistemas de software, y

para diferentes áreas de aplicación, tipo de organizaciones, niveles de competencia y tamaños

de proyecto. El PU está basado en componentes, y esto significa que está hecho de

componentes de software interconectados con interfaces. Además, el PU usa el UML, que

como se ha comentado anteriormente, será presentado en el siguiente apartado.

El PU se caracteriza por ser iterativo e incremental, estar centrado en la arquitectura y

guiado por los casos de uso.

Page 42: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

2.2.5 Fases del proceso de desarrollo

El PU se repite sobre una serie de ciclos que hacen la vida de un sistema. Cada ciclo

consiste en: inicio, elaboración, construcción y transición y concluye con una release del

producto, que es un producto listo para entregar.

Fase de inicio

En esta fase, la meta principal es establecer el caso de negocio, es decir, estudiar la

viabilidad del desarrollo del proyecto. Para ello se delimita el alcance del sistema propuesto, se

describe la arquitectura candidata del sistema, se identifican los riesgos críticos (aquellos que

afectan la capacidad de construir el sistema) y se determina si hay manera de mitigarlos y se

demuestra si el sistema es capaz de resolver el problema o soportar el objetivo de negocio

construyendo una prueba de negocio.

Fase de elaboración

El producto principal de esta fase es una arquitectura estable para guiar el sistema por

su vida futura y la planificación de la fase de construcción con fidelidad.

Para conseguirlo, se crea una arquitectura que cubre la funcionalidad y características

importantes del sistema, se identifican los riesgos significativos que pueden afectar a planes,

costos y programas de fases, se especifican niveles para lograr atributos de calidad y tiempos

de respuesta y se captura el 80% de los casos de uso, que son suficientes para planear la

construcción.

Fase de construcción

El objetivo general de esta fase es obtener la capacidad operacional inicial en un

producto listo para prueba beta. Para ello, se extiende la identificación, descripción y

realización de los casos de uso; se termina el análisis, diseño, implementación y prueba del

producto; se mantiene la integridad de la arquitectura y se monitorizan los riesgos críticos y

significativos de las fases anteriores y, en caso de que se presenten, se mitigan.

Fase de transición

Esta fase empieza con la liberación beta del producto. En ella se prepara la instalación;

se advierte al cliente sobre actualizaciones de SO, hardware, protocolos de comunicaciones,

Page 43: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

etc.; se preparan manuales y documentación; se ajusta el software para operar bajo parámetros

actuales del ambiente del usuario; se corrigen defectos después de pruebas beta y se modifica

el software en caso de que se presenten problemas no previstos.

Figura 2-7. Perfil de Proyecto Típico

En la Figura 2-7 se observa la relación que hay entre tiempo y recursos necesarios en

cada una de las fases expuestas.

El producto final consiste de código fuente incluido en componentes que se puede

compilar y ejecutar, más manuales y entregables asociados. Además, tiene que satisfacer las

necesidades no sólo de usuarios, sino de toda la gente que trabajará con el producto.

El producto terminado incluye los requisitos, casos de uso, especificaciones no

funcionales y casos de prueba, la arquitectura y modelos visuales, que estos serán artefactos

modelados con UML. Aun si los componentes ejecutables son los artefactos más importantes,

por si solos no son suficientes porque el ambiente cambia (sistema operativo, sistemas de

bases de datos, avance tecnológico,...).

2.2.6 El proceso de desarrollo definido en Rational (RUP)

En los últimos años se han definido numerosos procesos que se ajustan a los

principios del proceso unificado. El proceso más extendido ha sido el RUP (Rational Unified

Page 44: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Process), que puede ser una buena metodología de desarrollo a tener en cuenta para proyectos

medianos y grandes, además de ser el ejemplo por excelencia de metodología orientada a

objetos.

El RUP es un proceso de desarrollo de software que junto con el UML, constituye la

metodología estándar más utilizada para el análisis, implementación y documentación de

sistemas orientados a objetos. Se caracteriza por la forma disciplinada de asignar tareas y

responsabilidades y pretende implementar el desarrollo iterativo, la administración de

requisitos, el uso de arquitectura basada en componentes, el control de cambios, el modelado

visual del software y la verificación de la calidad del software.

El RUP es un producto de Rational (IBM). Incluye artefactos, que son los productos

tangibles del proceso como por ejemplo, el modelo de casos de uso, el código fuente, etc.; y

roles, que es el papel que desempeña una persona en un determinado momento, una persona

puede desempeñar distintos roles a lo largo del proceso.

RUP está basado en el seguimiento de una serie de normas o “mejores prácticas”

aplicadas a cuatro etapas o ciclos en las diversas iteraciones del desarrollo: Inicio, Elaboración,

Construcción y Transición. Cada ciclo se divide en fases que finalizan con un hito donde se

debe tomar una decisión importante:

Inicio: se hace un plan de fases, se identifican los principales casos de uso y se

identifican los riesgos.

Elaboración: se hace un plan de proyecto, se completan los casos de uso y se

eliminan los riesgos.

Construcción: se concentra en la elaboración de un producto totalmente operativo y

eficiente y el manual de usuario.

Transición: se implementa el producto en el cliente y se entrena a los usuarios. Como

consecuencia de esto suelen surgir nuevos requisitos a ser analizados.

Page 45: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Figura 2-8. Fases e iteraciones en la metodología RUP

2.3 Lenguajes y notaciones de programación y de diseño

Existen muchas notaciones para representar los artefactos del diseño del software.

Algunas se utilizan principalmente para describir la organización estructural de un diseño,

otras para representar comportamiento del software. Ciertas notaciones se utilizan sobre todo

durante el diseño arquitectónico y otros principalmente durante el diseño detallado, aunque

algunas notaciones se pueden utilizar en ambos pasos.

2.3.1 Lenguajes de programación

Un paradigma de programación representa un enfoque particular o filosofía para la

construcción del software. Diferentes paradigmas resultan en diferentes estilos de

programación y en diferentes formas de pensar la solución de problemas. No es mejor uno

que otro sino que cada uno tiene ventajas y desventajas. También hay situaciones donde un

paradigma resulta más apropiado que otro.

Según el paradigma de programación que utilizan, se pueden clasificar los siguientes

lenguajes:

Page 46: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Lenguajes Imperativos: La programación imperativa describe la programación en

términos del estado del programa y una secuencia de sentencias que cambian dicho

estado. Los programas imperativos son un conjunto de instrucciones que le indican al

computador cómo realizar una tarea. El código máquina en general está basado en el

paradigma imperativo.

Lenguaje Estructurado: La programación se divide en bloques (procedimientos y

funciones) que pueden o no comunicarse entre sí. Además, la programación se

controla con secuencia, selección e iteración. Permite reutilizar código programado y

otorga una mejor compresión de la programación. Es simplemente un “bloque”, como

por ejemplo, los archivos batch (.bat).

Lenguaje Lógico: Se basa en la definición de reglas lógicas para luego, a través de un

motor de inferencias lógicas, responder preguntas planteadas al sistema y así resolver

los problemas. Comprende dos paradigmas de programación: la programación

declarativa y la programación funcional. La programación declarativa gira en torno al

concepto de predicado, o relación entre elementos. La programación funcional se

basa en el concepto de función, de corte más matemático.

Lenguaje Declarativo: Se enfoca en describir las propiedades de la solución buscada,

dejando indeterminado el algoritmo usado para encontrar esa solución. Es más

complicado de implementar que el paradigma imperativo, tiene desventajas en la

eficiencia, pero ventajas en la solución de determinados problemas.

Lenguajes Funcionales: Basado en la utilización de funciones matemáticas, para

conseguir lenguajes expresivos y matemáticamente elegantes, en los que no sea

necesario bajar al nivel de la máquina para describir el proceso llevado a cabo por el

programa, y evitando el concepto de estado del cómputo.

Lenguajes Orientados a Objetos: Define los programas en términos de "clases de

objetos". Estos objetos son entidades que combinan estado, comportamiento e

identidad. El estado está compuesto de datos, y el comportamiento por

procedimientos o métodos. La identidad es una propiedad de un objeto que lo

diferencia del resto. La programación orientada a objetos expresa un programa como

un conjunto de estos objetos, que colaboran entre ellos para realizar tareas. Esto

permite hacer los programas y módulos más fáciles de escribir, mantener y reutilizar.

Page 47: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Su principal ventaja es la reutilización de código y su facilidad para pensar soluciones a

determinados problemas.

Aunque hay que tener en cuenta que la programación es solo una pequeña parte de

todo lo que conlleva la ingeniería del software. Debe quedar claro y patente que el paradigma

orientado a objetos ha supuesto un cambio radical y un punto de inflexión en la evolución y

disponibilidad de propuestas de desarrollo del software y gracias a este punto de apoyo otras

propuestas posteriores han sido posibles.

2.3.2 Lenguaje unificado de modelado (UML)

Se necesita de una metodología de trabajo para que todo el mundo, desde un principio,

genere una documentación escasa y útil. También hace falta que, cuando las aplicaciones estén

construidas, se establezcan unos procedimientos sencillos para que, a medida que se van

produciendo mejoras, se vaya generando o completando la documentación deficiente.

Realizar un buen análisis o reingeniería requiere de técnica. A menudo no se tiene un

procedimiento estructurado que haga predecible tal análisis y se tiende a pensar que las

herramientas solucionarán los problemas. Las herramientas son solo el soporte y debemos

basarnos en un hábito en el trabajo. Sin método y disciplina, la cosa no mejorará.

El único modo de resolver el problema es a través de la formación personalizada y la

implantación de buenos hábitos y técnicas sobre: dirección moderna de proyectos

informáticos, estimación rápida de proyectos, gestión eficaz del tiempo, motivación de

equipos, análisis y diseño orientado a objeto, UML y modelado de datos y técnicas avanzadas

de diseño (patrones).

Una vez que ya han sido recopilados, clasificados y alojados en el nivel de jerarquía que

les corresponde, hay que poner por escrito los requisitos del sistema.

El lenguaje de especificación o modelado representa el vehículo indispensable para la

comunicación entre los participantes y para la representación de conceptos a lo largo de todo

el proyecto, utilizando una semántica común.

Por eso, desde mediados de los 70 hasta finales los 80 aparecieron una serie lenguajes

orientados a la modelación de programas orientados a objetos, ya para mediados de los 90

Page 48: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

había mas de 50 lenguajes y metodologías que satisfacían características muy especificas de

modelado, provocando que los usuarios tuviesen problemas para satisfacer sus necesidades

con una u otra metodología.

Se necesitaba, por tanto, un lenguaje no sólo para comunicar las ideas a otros

desarrolladores sino también para servir de apoyo en los procesos de análisis de un problema.

Con este objetivo se creo el Lenguaje Unificado de Modelado (UML: Unified Modeling

Language).

En 1994 el desarrollo de UML fue iniciado por Grady Booch y Jim Rumbaugh de

Rational Software Corporation, con la unificación de las metodologías Booch y OMT (Object

Modeling Technique), en el otoño del 95 Ivar Jacobson se unió junto con su compañía Objetory a

Rational, con la finalidad de unificar esfuerzos, integrando la metodología OOSE (Object-

Oriented Software Engineering).

UML se convirtió en ese estándar tan anhelado para representar y modelar la

información con la que se trabaja en las fases de análisis y, especialmente, de

diseño. Actualmente, UML es el lenguaje de modelado de sistemas de software más conocido

y utilizado en la actualidad; además de ser un estándar, está apoyado en gran manera por el

OMG (Object Management Group), grupo que gestiona estándares relacionados con la tecnología

orientada a objetos, del cual forman parte las empresas más importantes que se dedican al

desarrollo de software.

La última versión aprobada es la UML 2.0. En estos momentos se están desarrollando

actualizaciones a esta versión en la que se incluirán cambios importantes, principalmente,

añadir nuevos diagramas.

Es un lenguaje gráfico para visualizar, especificar, construir y documentar un sistema

de software. UML ofrece un estándar para describir un “plano” del sistema (modelo),

incluyendo aspectos conceptuales tales como procesos de negocios y funciones del sistema, y

aspectos concretos como expresiones de lenguajes de programación, esquemas de bases de

datos y componentes de software reutilizables. UML ha sido diseñado para modelar cualquier

tipo de proyectos, tanto informáticos como de arquitectura, o de cualquier otro ramo.

La aparición de UML supuso el reconocimiento de la actividad del modelado (diseño

basado en modelos) como una actividad clave para producir software de calidad.

Page 49: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Los objetivos que pretende cumplir UML son los siguientes:

UML es un lenguaje de modelado de propósito general que pueden usar todos los

modeladores. No tiene propietario y está basado en el común acuerdo de gran parte de

la comunidad informática.

UML no pretende ser un método de desarrollo completo. No incluye un proceso de

desarrollo paso a paso. UML incluye todos los conceptos que se consideran necesarios

para utilizar un proceso moderno iterativo, basado en construir una sólida arquitectura

para resolver requisitos dirigidos por casos de uso.

Ser tan simple como sea posible pero manteniendo la capacidad de modelar toda la

gama de sistemas que se necesita construir. UML necesita ser lo suficientemente

expresivo para manejar todos los conceptos que se originan en un sistema moderno,

tales como la concurrencia y distribución, así como también los mecanismos de la

ingeniería de software, como son la encapsulación y componentes.

Debe ser un lenguaje universal, como cualquier lenguaje de propósito general.

Imponer un estándar mundial.

A pesar de su status de estándar ampliamente reconocido y utilizado, UML siempre ha

sido muy criticado por su carencia de una semántica precisa, lo que ha dado lugar a que la

interpretación de un modelo UML no pueda ser objetiva. Otro problema que tiene UML es

que no se presta con facilidad al diseño de sistemas distribuidos. En tales sistemas cobran

importancia factores como transmisión, serialización, persistencia, etc. UML no cuenta con

maneras de describir tales factores. No se puede, por ejemplo, usar UML para señalar que un

objeto es persistente o remoto, o que existe en un servidor que corre continuamente y que es

compartido entre varias instancias de ejecución del sistema analizado.

Otra de las críticas que se han comentado de UML es la carencia de patrones

integrados con el lenguaje. Los patrones hacen más fácil y rápido el modelado, pero UML no

dispone de ellos.

Con UML, lo que se pretende es lograr que los lenguajes que se aplican siguiendo los

métodos más utilizados sigan evolucionando en conjunto y no por separado. Y además,

unificar las perspectivas entre diferentes tipos de sistemas (no sólo software, sino también en

Page 50: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

el ámbito de los negocios), al aclarar las fases de desarrollo, los requisitos de análisis, el diseño,

la implementación y los conceptos internos de la OO.

En resumen, UML resuelve de forma bastante satisfactoria un viejo problema del

desarrollo de software como es su modelado gráfico. Además, se ha llegado a una solución

unificada basada en lo mejor que había hasta el momento, lo cual lo hace todavía más

excepcional.

Es importante remarcar que UML es un “lenguaje” para especificar y no un método o

un proceso, se utiliza para definir un sistema de software, para detallar los artefactos en el

sistema y para documentar y construir, ya que es el lenguaje en el que está descrito el modelo.

Se puede aplicar en una gran variedad de formas para soportar una metodología de desarrollo

de software (tal como el Proceso Unificado de Rational) pero no especifica en sí mismo qué

metodología o proceso usar.

2.4 Herramientas para el desarrollo del software

Además de la aproximación metodológica y el lenguaje, uno de los factores

determinantes en el éxito de un proyecto de software, lo constituye la acertada selección de las

herramientas de trabajo que se utilizarán durante su desarrollo. Es por eso que, en la

actualidad, la administración de proyectos atiende cuidadosamente la designación de

herramientas como una tarea de vital importancia.

A medida que los sistemas que se construyen se tornan más y más complejos, las

herramientas de modelado con UML ofrecen muchos beneficios para todos los involucrados

en un proyecto, por ejemplo, administrador del proyecto, analistas, diseñadores, arquitectos,

desarrolladores y otros. Las herramientas CASE de modelado con UML nos permiten aplicar

la metodología de análisis y diseño orientados a objetos y abstraernos del código fuente, en un

nivel donde la arquitectura y el diseño se tornan más obvios y más fáciles de entender y

modificar. Cuanto más grande es un proyecto, es más importante utilizar una herramienta

CASE.

Page 51: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

2.4.1 CASE

Las herramientas CASE surgen a principios de la década de los 80, pero pronto se

extendieron a la mayor parte de las fases y actividades involucradas en el desarrollo de

software.

Las herramientas CASE están tomando cada vez mas relevancia en la planificación y

ejecución de proyectos que involucren sistemas de información, pues suelen inducir a sus

usuarios a la correcta utilización de metodologías que le ayudan a llegar con facilidad a los

productos de software construidos.

Las Herramientas CASE (Computer Aided Software Engineering - Ingeniería del Software

Asistida por Ordenador) son diversas aplicaciones informáticas destinadas a aumentar la

productividad en el desarrollo de software reduciendo el coste de las mismas en términos de

tiempo y de dinero. Estas herramientas nos pueden ayudar en todos los aspectos del ciclo de

vida de desarrollo del software en tareas como el proceso de realizar un diseño del proyecto,

cálculo de costes, implementación de parte del código automáticamente con el diseño dado,

compilación automática, documentación o detección de errores entre otras.

Todas las herramientas CASE prestan soporte a un lenguaje de modelado para

acompañar la metodología y es lógico suponer que un alto porcentaje de ellas soportan UML,

teniendo en cuenta la amplia aceptación de este lenguaje y el valor conceptual y visual que

proporciona y su facilidad para extender el lenguaje para representar elementos particulares a

determinados tipos de aplicaciones.

Evidentemente, debido a la popularidad que han ido adquiriendo UML y MDA en los

últimos años, existe en el mercado una gran variedad de herramientas de modelado de

diagramas UML.

Las herramientas CASE son una combinación de herramientas de software y

metodologías estructuradas de desarrollo que han surgido para dar solución a varios

problemas inherentes al software, pero principalmente nacen para solucionar el problema de la

mejora de la calidad del desarrollo de sistemas de mediano y gran tamaño, y en segundo lugar,

por el aumento de la productividad.

La mejora de la calidad se logra al reducir sustancialmente muchos de los problemas de

análisis y diseño relacionados con los proyectos, como la lógica en el diseño y la coherencia

Page 52: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

entre módulos, entre otros. Simultáneamente, la mejora de la productividad se consigue a

través de la automatización de tareas, como la generación y reutilización de código, que son

puntos importantes a considerar en una herramienta CASE.

Los objetivos que siguen las herramientas CASE son:

Mejorar la productividad en el desarrollo y mantenimiento del software.

Aumentar la calidad del software.

Mejorar el tiempo y coste de desarrollo y mantenimiento de los sistemas informáticos.

Mejorar la planificación de un proyecto

Aumentar la biblioteca de conocimiento informático de una empresa ayudando a la

búsqueda de soluciones para los requisitos.

Automatizar, desarrollo del software, documentación, generación de código, pruebas

de errores y gestión del proyecto.

Ayuda a la reutilización del software, portabilidad y estandarización de la

documentación

Gestión global en todas las fases de desarrollo de software con una misma

herramienta.

Facilitar el uso de las distintas metodologías propias de la ingeniería del software.

En este proyecto se da mucha importancia a la experiencia y, concretamente, a la

disponible para elaborar especificaciones conceptuales, cosa que, como puede apreciarse en la

Tabla 2-2, dónde se ha hecho una comparativa de algunas de las herramientas CASE más

relevantes, atendiendo a las características más destacables a tener en cuenta, no es muy

habitual su consideración.

Se ha observado que en alguna de las herramientas que se utilizan con objetivo más

profesional sí incluye la utilización de patrones. No obstante, solamente se contemplan los

patrones de diseño.

Page 53: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

PROPIEDADES ARGOUML RATIONAL ROSE WITHCLASS TOGETHER POSEIDON

Web argouml.tigris.org www.rational.com www.microgold.com www.borland.com www.gentleware.com

Observaciones generales Navega de acuerdo con

diferentes perspectivas de

modelado y de metodología

de desarrollo

Provee productos de UML

para los lenguajes comunes de

la industria para

especificación, visualización,

construcción y documentación

de los artefactos de los

sistemas software

Utiliza perspectiva objeto

relacional con diferentes

metodologías de desarrollo y

modelado

Robusta y sólida plataforma

de Borland fácilmente

integrable a JBuilder. Usa

refactoring y patrones. Apoya

procesos de testing a través de

un marco apropiado. Es

extensible a necesidades de

estándar de la organización

Herramienta de Gentleware

que genera código en Java

usando plantillas, realiza

ingeniería inversa y

sincronización de código en

Java. Se puede considerar la

versión comercial y mejorada

de ArgoUML. Apoya el

proceso de documentación de

diagramas con UML.doc

Ámbito de utilización Sus características se ajustan a

proyectos académicos y de

investigación

Se enmarca dentro del

desarrollo de modelado para

fines académicos y

comerciales

Sus características se apoyan

en el desarrollo orientado a

objetos para proyectos

académicos, investigativos y

de comercialización

Se ajusta a grandes proyectos

de ingeniería de software en

los que la confiabilidad y

administración de la

información sean relevantes

Sus características se apoyan

en el desarrollo orientado a

objetos para proyectos

académicos, investigativos y

de comercialización

Plataforma Independiente de la

Plataforma. Requiere Máquina

Virtual Java 1.3 o superior

Sistema Operativo Windows Sistema Operativo Windows Funciona sobre una máquina

virtual Java

Independiente de la

Plataforma. Requiere Máquina

Virtual Java 1.3 o superior

Apoyo metodológico No apoya una metodología

específica

UML, Booch y OOSE; todas

ellas apoyadas en RUP.

Soporta MVC.

OMT, UML, Booch, Martin-

Odell, Coad-Yourdon.

Refactoring, testing

Framework, desarrollo de

plantillas y patrones. Apoya el

desarrollo de Web Aplication

Wservice.

No apoya una metodología

específica. A través del

browser sugiere cierta

organización de proyecto.

Métricas No hay métricas Apoya la utilización de

métricas

Apoya la utilización de

métricas

Apoya la utilización de

métricas

No hay métricas

Autogeneración Java, C++, PHP Java, J2EE, ANSI, C++,

Visual C++, VB, CORBA

IDL, MIDL y XML

C++, C#, Java, Delphi, VB,

VB.NET

VB, VB.NET, CORBA IDL,

C++

Java, HTML, C++ y XML.

Plugins para C#, CORBA IDL

Edición de código Java Visual Basic, Java Add-in para otros editores Java Eclipse y JBuilder OCL para JAVA

Tabla 2-2. Comparativa herramientas CASE

Page 54: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Además de las herramientas CASE más comunes, comentadas en la tabla, cabe

comentar la existencia de Hypermodel, una herramienta basada en Eclipse, que sirve para el

diseño dirigido por modelos de esquemas XML y SOA. Es una herramienta de análisis y

diseño que trabaja bien en combinación con otras herramientas UML2, como Rational, y

ofrece modelos UML y diagramas de cualquier esquema XML, permitiendo transiciones

automáticas de uno a otro formato.

2.5 La utilización de la experiencia

En el libro "The Knowledge-Creating Company", de Ikujiro Nonaka y Hirotaka

Takeuchi, se plantea la diferencia entre aprender y generar conocimiento, y revalora la

importancia del conocimiento tácito y su papel en la generación de conocimiento. Sus autores

aseguran que “El aprendizaje más importante proviene de la experiencia directa.”

Anteriormente se ha hablado de la importancia de la experiencia adquirida en otros

proyectos para poder utilizar el enfoque que mejor se adapte a los requisitos, en cuanto al ciclo

de vida del software. Pero para obtener experiencia hay que practicar. Por eso se pretende

poder aprovechar la experiencia obtenida por desarrolladores cultivados para que pueda ser

aplicada por los desarrolladores noveles.

También se comentaba en apartados anteriores que una buena metodología expresa la

experiencia de otros para realizar una tarea. Esta es una parte donde se utiliza el conocimiento

adquirido por gente especializada en el desarrollo del software. Además se hablaba del interés

que están adquiriendo los patrones de diseño como elementos clave dentro de la metodología

utilizada.

La forma en que un programador experto y uno novato se enfrentan a un sistema

complejo es distinta, sobretodo, porque la forma en que un individuo resuelve un problema se

ve claramente influenciada por la experiencia adquirida al trabajar situaciones más o menos

parecidas. Desde el principio quedó patente que sería un gran avance poder “capturar” esa

experiencia, de modo que la forma correcta de resolver un problema dado pudiera ser

transmitida a individuos que todavía no se han topado con el. La idea es que si ya se ha

solucionado un problema dado, esa misma solución podría servir para problemas parecidos.

Page 55: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

2.6 Los patrones

Este planteamiento de formalizar soluciones a distintas situaciones, de modo que

puedan ser entendidas por otros profesionales, es lo que se llama patrones. Por tanto, un

patrón no es más que la descripción detallada de una solución adecuada a un problema

concreto; o, dicho de otra forma, un modelo que podemos seguir para realizar algo. El

objetivo básico que se persigue con la idea de patrón es aprovechar lo que ya ha sido utilizado

con éxito anteriormente, en casos similares al nuestro, y adaptarlo a nuestras condiciones para

obtener la solución más fácilmente.

Los patrones surgen de la experiencia de los seres humanos al tratar de lograr ciertos

objetivos y capturan la experiencia existente y probada para promover buenas prácticas.

Fueron inicialmente concebidos por el arquitecto Christopher Alexander como una manera de

formalizar la solución a problemas comunes a muchos proyectos de arquitectura. Este

arquitecto escribió dos libros revolucionarios que describían patrones en arquitectura de

construcción y planificación urbana (Alexander, 77) y (Alexander, 79).

Según Alexander, “el lenguaje de patrones brinda a todo el que lo utilice el poder de

crear una infinita variedad de construcciones nuevas y únicas, de la misma forma que el

lenguaje común brinda el poder de crear una infinita variedad de oraciones.”

Más tarde, vista la eficacia de los patrones en el campo de la arquitectura, otras

disciplinas los añadieron a su repertorio de herramientas y las ideas presentadas en estos libros

son aplicadas a varios campos además de la arquitectura, incluyendo el software.

Christopher Alexander creía que muchos procesos implicados en el diseño de

estructuras físicas eran variables, pero que existía un invariante común, que definía los

principios generales del diseño y construcción. El descubrimiento de las invariantes aplicables

al diseño de software es hoy el objetivo de los desarrolladores de software, pues proporcionan

un marco común de conocimiento y soluciones.

Se necesita de años de experiencia adquirir el conocimiento necesario para lidiar con

los requisitos cambiantes de los proyectos. Los patrones son la forma de difundir ese

conocimiento, evitando la demora necesaria para que un experto instruya a otros.

Page 56: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

La adaptación de este concepto a la ingeniería del software ha dado lugar a lo que

conocemos como patrones software. Estos patrones capturan soluciones a situaciones de

especial interés, bien por ser muy comunes, bien por ser especialmente complejas.

En 1987, Ward Cunningham y Kent Beck usaron algunas de las ideas de Alexander y

desarrollaron cinco patrones para el diseño de interfaces de usuario, que publicaron en un

artículo llamado “Using Pattern Languages for Object-Oriented Programs”. En 1994 Erich

Gamma, Richard Helm, John Vlissides y Ralph Jonson, conocidos por la Banda de los Cuatro,

o “Gang of Tour” (GoF), publicaron uno de los libros más influyentes de esta década:

“Design Patterns” (Gamma et al., 1995), que popularizó la idea de patrones. La reacción a este

libro fue universalmente positiva y se convirtió en una obra fundamental en la materia.

Muchos arquitectos reconocieron en las soluciones propuestas descripciones a las que ellos

mismos habían llegado independientemente. Se organizaron grupos de estudio sobre patrones

y aparecieron consultoras que proporcionaban aprendizaje sobre el tema.

Los patrones describen un problema que ocurre repetidas veces en algún contexto

determinado del proceso de desarrollo de software, y entregan una buena solución ya probada.

La utilización de patrones de software facilita las cuestiones que anteriormente se comentaban

como causantes de la crisis del software y es un apoyo para crear software de calidad, ya que

ayuda a diseñar software correctamente en menos tiempo, ayuda a construir problemas

reutilizables y extensibles, y facilita la documentación y la comunicación con otros miembros

del equipo de desarrollo.

La llegada de los patrones al mundo de la construcción de sistemas software ha sido

una aportación fundamental, llevando a esta disciplina a abandonar su tradicional status de

artesanía y acercándola al nivel de sistematización y robustez del que gozan otras ingenierías.

Parte del interés en los patrones viene de observar que los proyectos fracasan a pesar

de que se utilizan las últimas tecnologías cuando no hay soluciones comunes. Los patrones

proporcionan una manera de organizar y nombrar esas soluciones comunes para hacer más

fácil su utilización a la gente.

Documentar buenos patrones puede ser una tarea muy difícil. Las características que

ha de tener un buen patrón, según Coplien, son las siguientes:

Page 57: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Resuelve un problema: Los patrones capturan soluciones, no principios o estrategias

abstractas.

Es un concepto probado: Capturan soluciones, no teorías o especulaciones.

La solución no es obvia: Muchas técnicas de resolución de problemas, como los

paradigmas o métodos de diseño de software, intentan derivar soluciones desde

principios básicos. Los mejores patrones generan una solución a un problema

indirectamente, un enfoque necesario para los problemas de diseño más difíciles.

Describe una relación: Los patrones no describen módulos sino estructuras y

mecanismos.

Tiene un componente humano significante: El software sirve a las personas. Los

mejores patrones se aplican a la estética y a las utilidades.

Un lenguaje de patrones contiene un amplio conjunto de patrones, cuyas

combinaciones conforman su gramática.

Un sistema de patrones mantiene unidos a sus patrones. Describe la forma en que se

conectan y cómo se complementan entre ellos. Un sistema de patrones facilita el uso eficaz de

los patrones en el desarrollo de software. Por lo tanto, podemos decir que un sistema de

patrones es una colección de patrones, junto con las guías para su implementación,

combinación y uso práctico en el desarrollo de software.

Los patrones no son siempre la solución adecuada o mejor para un problema. Si bien

añaden flexibilidad, también añaden complejidad. Es por esto que se debe ser cuidadoso al

momento de seleccionar patrones. Siempre hay que recordar que los patrones son un punto de

partida y que no son dogmas incuestionables.

El uso de patrones es beneficioso en la mayoría de situaciones que se dan en cualquier

proyecto medio complejo. Aún cuando, en un principio, el uso de determinados patrones de

software pueda suponer una carga de trabajo adicional, la ganancia que se adquiere al

incorporarlos en mantenimiento del software es favorable.

Page 58: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

2.6.1 Tipos de patrones

La mayoría de referencias a patrones suelen referirse a los patrones de diseño. Sin

embargo hay otros ámbitos de la ingeniería del software donde se puede aplicar el concepto

genérico de patrón:

Patrones de diseño (Gamma et al., 1995): Describen la conducta, estructura, y

colaboración de objetos dentro de un subsistema de la aplicación.

Patrones de arquitectura (Buschmann et al., 1996): Describen la estructura general

de un sistema. Identifica sus módulos, responsabilidades, y la colaboración entre

dichos módulos.

Patrones de análisis (Fowler, 2002): Describen un conjunto de prácticas destinadas a

elaborar el modelo y solución de un problema.

Patrones de procesos o de organización (Coplien & Schmidt, 1995): Describen la

estructura y prácticas de las organizaciones humanas, especialmente las productoras de

software.

Patrones de programación idioms (Coplien, 1991): Un idiom es un patrón que

describe cómo implementar ciertas tareas usando un lenguaje de programación

concreto.

Patrones de colaboración: son el tipo de patrones en el que se centra este proyecto

y, por considerarlos en este caso de mayor importancia, se contemplan más adelante,

en un apartado completo.

Actualmente, hay disponible una amplia literatura sobre patrones. De hecho, las

principales casas de software tienen sus publicaciones sobre patrones que pueden implantarse

directamente sobre sus tecnologías.

Modelar con patrones tiene importantes ventajas, la más obvia es la rapidez. Una vez

que se identifica una relación con el mundo real, ésta puede sustituirse rápidamente por el

modelo de dominio correspondiente a su patrón específico de objetos. De esta manera, los

patrones no solo construyen el modelo de objetos conectando objetos conocidos, también

ayudan a encontrar nuevos objetos necesarios para rellenar un patrón identificado.

Aunque, de la misma forma que utilizar patrones puede suponer un beneficio, se

puede obtener el resultado contrario al utilizarlos inadecuadamente.

Page 59: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

2.6.2 Antipatrones

Los antipatrones son soluciones negativas que presentan más problemas que los que

solucionan. Son una extensión natural a los patrones de diseño. Comprender los antipatrones

provee el conocimiento para intentar evitarlos o recuperarse de ellos. El estudio de los

antipatrones permite conocer los errores más comunes relacionados con la industria del

software. En 1996 Michael Akroyd formaliza el concepto de antipatrón en su presentación

(Akroyd, 1996) centrándose en identificar errores comunes cometidos en proyectos de

software. Aunque la obra de referencia más destacada en este campo es “AntiPatterns:

Refactoring Software, Architectures and Projects in Crisis” (Brown et al., 1998).

Un antipatrón no es una mala práctica, sino la reflexión consciente sobre esa mala

práctica. Su conocimiento es útil porque ayuda a reconocer, corregir, y prevenir un problema.

Hay dos tipos de antipatrones: aquellos que describen una mala solución a un problema y

aquellos que describen como llegar a una solución desde un problema.

Según James Coplien, un antipatrón es “algo que se ve como una buena idea, pero que falla

malamente cuando se la implementa.”

Un buen antipatrón explica por qué la solución original parece atractiva, por qué se

vuelve negativa y cómo recuperarse de los problemas que ésta genera.

2.6.3 Los patrones de colaboración

Para abordar el modelado del dominio, Peter Coad proponía sus patrones

conceptuales, que fueron posteriormente adaptados a UML por Jill Nicola, Mark Mayfield y

Mike Abney en sus patrones de colaboración. Con estos patrones se permite la especificación

y el modelado de objetos en el modelado del dominio.

Los patrones de colaboración son la representación de los componentes o “pattern

players”: personas, lugares, cosas y eventos. Mientras el objeto describe el significado y la

relevancia de los objetos, el patrón de colaboración, con su formato gráfico conciso y no

ambiguo, ilustra la interacción entre dos objetos. Por lo que exponen los gráficos, y revelan los

Page 60: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

objetos, los patrones de colaboración dejan claro los principios de cómo trabajar juntos para

crear el modelo de objetos.

Personas Actor

Role

Lugares Place

Outer Place

Cosas Item

Specific Item

Assembly

Part

Container

Content

Group

Member

Eventos Transaction

Composite Transaction

Line Item

Follow-up Transaction

Tabla 2-3. Elementos de los patrones

Los patrones de colaboración no son patrones de diseño. Los patrones de diseño se

enfocan en la eficiencia, la reusabilidad, y la conectabilidad, y mientras estas son las metas

importantes, se preocupan más de “cómo” efectuar una interacción que de “qué” es lo que

debe relacionar en ella. Los patrones de colaboración describen el “qué” de una interacción,

los objetos involucrados y las reglas que rigen estas interacciones.

Los patrones de colaboración son, por definición, patrones que involucran dos de los

“pattern players” descritos en la Tabla 2-3. Surgen patrones mayores cuando dos

colaboraciones se juntan para compartir un “pattern player”, o cuando las colaboraciones se

combinan compartiendo un objeto que actúa como varios “pattern players”.

En la Figura 2-9 se muestran los patrones de colaboración propuestos por (Nicola et

al., 2001). A continuación se describe cada patrón de colaboración indicando lo que representa

su “pattern player” y cuales son sus responsabilidades. Igual de importante son las reglas que

rigen las interacciones entre dos “pattern players”, las cuáles pueden consultarse en este libro.

Page 61: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Algunos de los patrones de colaboración descritos a continuación son los mismos o se

derivan de los patrones descritos en el libro “Objects Models: Strategies, Patterns, &

Aplications” de Peter Coad, David North y Mark Mayfield (Coad et al., 1997). Aunque Coad

utilizó una nomenclatura propia para definirlos y Nicola los adaptó a UML, pudiendo ser, de

esta forma, comprensibles mas fácilmente para todo el mundo, al describirse en un lenguaje

estándar.

Figura 2-9. Patrones de colaboración (Nicola et al., 2001)

En el Apéndice A se ha incluido la relación de patrones descrita por (Nicolla et al,

2001) con más detalle, y se recomienda, si se desea tener mas información acerca de ellos,

consultar el libro de referencia.

Page 62: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Como ejemplo más completo, se verá un poco más a fondo el patrón Actor-Role, que

es uno de los patrones propuestos.

Un ejemplo de patrón de colaboración que puede considerarse para verse en detalle,

según la descripción que hizo (Nicola et al., 2001), es el patrón Actor-Role.

El patrón actor – role modela las entidades que interactúan en contextos múltiples. Lo

más frecuente es aplicarlo a personas, pero también se puede aplicar a lugares y a cosas. Este

patrón se presenta en la gente, el contexto y los principios de role que sugieren dos objetos,

uno describe la persona u organización (actor), y el segundo describe la persona u organización

dentro de un contexto (role). Para cada contexto, se crea un nuevo role.

El patrón actor – role mostrado en la figura, se usa para modelar personas, lugares o

cosas que participan en uno o mas contextos.

Un actor puede tener múltiples roles, pero solo uno de cada tipo. El actor es responsable

de conocer información (propiedades, servicios y colaboraciones) que son relevantes a través

de todo el contexto.

EJEMPLO- En una aplicación de comercio electrónico se rastrean personas que pueden ser clientes,

empleados o agentes de bolsa.

Un role conoce solo a un actor, y sin este actor, el role no es válido. Los cambios en el

actor (nuevos valores de las características o nuevas colaboraciones) pueden afectar también al

role. Esta dependencia que sigue un actor es porque un role es una descripción individualizada de

un actor, la apariencia de un actor dentro de un contexto. Si se disuelve la colaboración,

entonces el role debe de ser destruido, porque un actor diferente no puede reutilizar un role; por

ejemplo, el papel de un cliente no puede transferirse de una persona a otra. Un role también

conoce el tipo de actors con los que puede colaborar; algunos roles trabajan solamente con los

actors de la organización.

EJEMPLO- En una aplicación de cadenas de suministros, una compañía puede ser a la vez un

proveedor de género y servicios y un distribuidor al que compran los proveedores.

A veces, un role tiene doble función como actor para otro role.

Page 63: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

EJEMPLO- Un equipo de proyecto colabora en línea. Dentro del equipo hay dos papeles

especializados: administradores y presidentes del equipo. Una persona puede ser miembro del equipo. Por otro

lado, al estar estos papeles adicionales por encima de los miembros del equipo, el papel de miembro de equipo se

hace el actor para ellos.

2.6.4 Formatos de los patrones disponibles

No existe un estándar para documentar los patrones. El formato más usado incluye

algunos de estos apartados: nombre, clasificación, resumen, problema, contexto, fuerzas que

intervienen, solución, ejemplo, patrones relacionados, exposición razonada, y usos comunes.

La inclusión o no de todos ellos se rige por el sentido común. El objetivo no es ajustarse a un

formato rígido, sino comunicar información útil.

El primero en identificar el concepto general de patrón y formular una plantilla fue

Christopher Alexander. Su formato propuesto era similar al contenido en la tabla 2-4:

IF you find yourself in CONTEXT

for example EXAMPLES,

with PROBLEM,

entailing FORCES

THEN for some REASONS,

apply DESIGN FORM AND/OR RULE

to construct SOLUTION

leading to NEW CONTEXT and OTHER PATTERNS

Tabla 2-4. Plantilla de un patrón según Christopher Alexander

La mayoría de los patrones se escriben utilizando un formulario regular. Si se

comparan dos conjuntos de patrones, casi nunca dos autores utilizan el mismo formulario. Las

diferentes formas de los patrones tienen cualidades particulares y cualquier autor de patrones

tendrá una forma de selección para trabajar con sus preferencias.

A pesar de estar expresados de distintas formas, la mayoría de patrones tienen

elementos comunes:

Los patrones son soluciones: El propósito de escribir un patrón es describir una

solución útil y recurrente. El éxito estará en que otros puedan duplicar esta solución

cuando sea apropiada. Todo lo demás es secundario, lo que significa que

Page 64: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

independientemente de la forma que se elija para escribir un patrón, la solución es lo

que cuenta.

Un nombre significativo: La elección de nombres es muy difícil. Dado que van a ser

un vocabulario, es importante poner todos los esfuerzos en conseguir buenos

nombres. El nombre debe ser corto y ajustado.

Normalmente, un patrón está compuesto por el enunciado del problema y una o varias

propuestas de solución. Para formalizar estas soluciones, se necesita una notación expresiva y

rica en semántica que permita plasmar eficientemente los atributos de las mismas. Además esta

notación ha de ser fácil de entender e interpretar. La notación más extendida es UML, que

permite capturar con precisión las soluciones a problemas de todo tipo.

Los patrones de (Gamma et al., 1995), que realmente lanzó los patrones en el mundo

del software, tienen una forma muy estructurada, rompiendo el patrón en muchos títulos:

Intención, motivación, aplicación, estructura, participantes, colaboraciones, consecuencias,

implementación, código de ejemplo, usos conocidos, y patrones relacionados

2.7 Análisis y conclusiones

Se decía anteriormente que los patrones de colaboración describen qué es lo que

interacciona, los objetos involucrados y las reglas que rigen estas interacciones. Todos estos

puntos se han de conocer ya en las primeras fases de desarrollo del software, junto con la

recogida de los requisitos y se han de hacer constar en su modelado. Por eso los patrones de

colaboración aparecen en esta primera parte del desarrollo.

Se ha hablado también de la importancia que tiene la experiencia en el proceso de

desarrollo, que va a ser decisiva en el momento de tomar decisiones durante todo el proceso y

en el resultado obtenido.

En cualquier diagrama de clases pueden reconocerse fácilmente alguno de los patrones

de colaboración propuestos, siendo rara la vez que esto no ocurre. Es, por estos motivos, por

los que la utilización de los patrones de colaboración va a aportar unos beneficios en el

modelado del negocio, ya que los patrones serán muy probablemente partes de este modelado,

por lo que se podrían incluir directamente, en lugar de ir añadiendo los objetos uno por uno,

lo que facilitaría la tarea del modelado.

Page 65: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Cabe la posibilidad de utilizar la experiencia recurriendo al concepto de modelo y para

ello podemos documentar habitualmente estos modelos en lenguajes UML e integrarlos en

cualquiera de los procesos de desarrollo.

En función de esa importancia que tiene la experiencia, lo que se pretende en este

PFC, como se indica en la motivación, es desarrollar un entorno en el que se pueda utilizar la

experiencia, y concretamente, la experiencia relacionada con el modelado del dominio. Para

ello se ha localizado la experiencia disponible, que es lo que se ha comentado en este capítulo,

en los patrones de colaboración. Esto se abordará en el tercer capítulo y más tarde, en el

cuarto capítulo, se pondrán algunos casos de ejemplo.

Sería interesante disponer de una notación capaz de especificar la esencia de un patrón

de forma clara, sencilla y precisa, así como de herramientas que faciliten la definición,

aplicación semi o automática y validación de éstos en diferentes contextos. Sin embargo, esta

labor es compleja y no se ha avanzado apenas, ya que no está claro qué se debería especificar y

cómo especificarlo.

Siendo tan útiles los patrones de colaboración, lamentablemente, no se ha encontrado

ninguna herramienta CASE que recoja este tipo de patrones y permita incluirlos en el

modelado del negocio.

Page 66: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin
Page 67: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Capítulo 3. Integración de los patrones de colaboración en el proceso de desarrollo

En este capítulo se analizan los requisitos necesarios que ha de tener la herramienta

propuesta para añadir patrones de colaboración en los diagramas de clases, para facilitar el

modelado del dominio. Para la descripción del trabajo realizado se hace un análisis, un diseño

y una implementación de la herramienta desarrollada y, posteriormente, se describe el entorno

resultante. Asimismo, y habiéndole otorgado una importancia singular a los patrones de

colaboración (Nicola et al., 2001) se comentará cómo se ha hecho la descripción de dichos

patrones para facilitar su utilización y la manera en que se han almacenado.

3.1 Introducción

Se ha comprobado la importancia que tienen las primeras fases en el desarrollo del

software, donde la recolección y modelado de los requisitos puede ser decisivo para que la

posterior implementación sea la esperada. Y teniendo en cuenta que utilizar la experiencia,

recogida por los expertos, puede ser de suma utilidad para este modelado, este proyecto final

de carrera propone el desarrollo de una herramienta que permita la utilización de patrones de

colaboración directamente sobre el modelado.

Esta herramienta está especialmente indicada para facilitar los primeros modelados en

el proceso de desarrollo, tiene propósito didáctico y se considera útil porque con ella, los

estudiantes y futuros desarrolladores pueden tomar un primer contacto con el modelado de

los requisitos, beneficiándose de la utilización de experiencia que no es propia. Labor que, por

un lado facilita este modelado, y por otro lado, hace que el usuario se acostumbre a adaptar

especificaciones ya elaboradas en su trabajo, lo que es sumamente importante para el trabajo

en equipo, pudiendo adaptar posteriormente estas partes a sus necesidades.

Se ha pensado principalmente en los patrones de colaboración (Nicola et al., 2001)

porque son los utilizados en las primeras etapas del desarrollo, donde el aprendiz tiene

probablemente menos habilidad para desenvolverse. Adicionalmente, se le permite añadir

Page 68: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

nuevos patrones, propios o de otras colecciones, para hacerle lo más fácil posible la tarea del

modelado, que tanto cuesta llevar a cabo al principio a un ingeniero del software.

3.2 Documentación y especificación de la aplicación desarrollada

En este apartado se contempla la especificación de la herramienta propuesta para este

proyecto. Para ello se hace un estudio de los requisitos funcionales y no funcionales que la

herramienta ha de cumplir, por medio de diagramas de casos de uso y la correspondiente

especificación de cada uno de ellos, se muestra un modelado conceptual, con las clases que se

utilizan para la implementación y se comentan los paquetes de los que se compone la

aplicación. Por último, se analizan los pasos que se han de dar para llevar a cabo algunas de las

acciones más significativas, a través de los diagramas de secuencia correspondientes.

3.2.1 Objetivos

Se ha pensado desarrollar una herramienta de fácil utilización y muy intuitiva con la

cual los estudiantes de ingeniería del software puedan familiarizarse con el modelado del

dominio. Lo particular de esta aplicación es que permitirá a sus usuarios la inclusión directa de

patrones en su modelo. Para ello, se facilita con la herramienta la colección de patrones de

colaboración de (Nicola et al, 2001), los cuales el usuario podrá modificar en base a sus

necesidades. La elección de este conjunto de patrones viene dada por su especial importancia,

ya que se consideran muy útiles en esta parte del desarrollo y es muy común identificar alguno

de estos patrones en cualquier tipo de modelado. No obstante, el usuario podrá modificar

estos patrones o completar la colección facilitada con patrones propios o de otras colecciones

en base a sus necesidades.

Se ha tenido en cuenta que cuando al usuario, en este caso, al estudiante de

informática, se le presentan los patrones de colaboración y este se habitúa con ellos, será muy

fácil para él identificarlos en cualquier diagrama de clases con el que trabaje, ya que son

patrones muy comunes y fácilmente reconocibles.

Los objetivos que se han tenido presentes en el desarrollo de la herramienta que se

pretende implementar para este proyecto se dividen en dos partes.

Page 69: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Por un lado, esta herramienta trata de ser una primera toma de contacto para el

usuario en cuanto al modelado de clases, por lo que ha de cumplir con la funcionalidad

relacionada al respecto, como es la gestión y edición de diagramas de clases. Habrá que tener

en cuenta que las clases constarán de métodos y atributos, y que habrá relaciones entre ellas.

Dichas relaciones tendrán una clase origen y una clase destino y podrán ser de distintos tipos:

dependencia, generalización, asociación, agregación o composición.

Por otro lado, se pretende que el usuario pueda incluir directamente patrones en su

diagrama. De esta forma, el usuario no tendrá que dibujar cada una de las clases que

componen el patrón, sus características y las relaciones entre ellas, sino que todo esto estará

almacenado en un fichero y se podrá añadir el patrón completo al modelo. Cuando el usuario

pretenda incorporar un patrón, el sistema le permitirá sustituir, si lo desea, las clases del patrón

por las que tenga ya definidas en el diagrama.

En principio, la herramienta dispondrá de la colección de patrones de colaboración de

(Nicola et al, 2001) en su repositorio, pero este podrá ser completado por el usuario con

nuevos patrones. Para ello se podrá dibujar el nuevo patrón con el editor de clases y, una vez

representadas sus clases, relaciones y propiedades, guardarlo en el repositorio como un patrón

más.

En una primera aproximación, la funcionalidad que deberá ofrecer la herramienta será

la señalada en la Figura 3-1.

Figura 3-1. Esquema básico de la funcionalidad de la herramienta

La herramienta, además de lo comentado, también permitirá acciones a las que se les

ha dado menor importancia en este proyecto, para facilitar el uso al diseñador. De esta

manera, podrá guardarse el diagrama de clases diseñado, simplemente como diagrama de

clases, o como un nuevo patrón, en cuyo caso se añadirá al repositorio correspondiente de

patrones disponibles y podrá ser reutilizado posteriormente de manera conjunta a los patrones

Page 70: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

de colaboración que en principio se facilitan, y por los que especialmente se ha creado esta

herramienta.

De igual forma, podrá abrirse un diagrama de clases definido y guardado

anteriormente con formato UsiXML (Limbourg et al., 2004), podrá verse el código XML

asociado al diagrama sobre el que se está trabajando, y también podrá guardarse el diagrama

como gráfico, en formato jpg e imprimirlo.

3.2.2 Requisitos funcionales

En este apartado se pretende recoger, analizar y definir las necesidades de alto nivel y

las características del sistema de gestión de la herramienta. Para ello se representarán los

requisitos como casos de uso, realizando una vista general de la arquitectura del software que

se desarrollará.

Con los casos de uso (Jacobson et al., 1999) se trata de modelar y organizar el

comportamiento del sistema. Por lo tanto, se clasificarán y detallarán los casos de uso

necesarios para llevar a cabo el desarrollo. El objetivo es delimitar el alcance del sistema para

comprender qué es lo que se debe cubrir con el proyecto de desarrollo.

La herramienta asociada a este proyecto final de carrera está diseñada para el modelado

de sistemas, y está especialmente indicada para estudiantes de informática, iniciándose en el

desarrollo y modelado del dominio, por lo que los usuarios que interactúen con ella estarán

acostumbrados a utilizar programas informáticos, pero no de modelado.

El diagrama que representa la funcionalidad de esta herramienta puede observarse en

la Figura 3-2, con los principales casos de uso involucrados, donde se distinguen dos partes,

por un lado lo referente a la gestión de patrones y por otro lado, a la edición de diagramas de

clases.

Page 71: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Figura 3-2. Diagrama de casos de uso de la herramienta

Respecto a la gestión de patrones, habrá un repositorio donde estén almacenados los

patrones de colaboración, en un principio, pero que el usuario podrá completar añadiendo

nuevos patrones a este repositorio, eliminar patrones de los existentes o modificarlos según

sus necesidades.

Para añadir un nuevo patrón, el diseñador ha de elaborar el correspondiente diagrama

de clases y guardarlo en el repositorio, para así poder ser utilizado como patrón, junto con los

ya establecidos patrones de colaboración.

Los patrones se guardarán en un fichero, por lo que para modificar un patrón

determinado, habrá que abrir ese fichero, cambiar lo que sea necesario y volver a guardarlo

con el mismo nombre, para que se vea reformado.

En lo referente a la elaboración de diagramas de clases, al usuario se le permite añadir

nuevas clases y relaciones, pudiendo para ello utilizar los patrones disponibles en el

repositorio. En este caso, se añadirían las nuevas clases que forman el patrón. El usuario

tendrá la opción de elegir si quiere que las clases del patrón coincidan con alguna de las que ya

Page 72: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

tiene en su diagrama, y si es así, se sustituirá y se añadirán únicamente las relaciones necesarias

y las clases que no estén ya representadas.

Además, el usuario podrá eliminar clases y relaciones del diagrama, al igual que

consultarlas y modificarlas para representar su modelo.

Una vista muy básica de las actividades necesarias que se tendrán que llevar a cabo con

la herramienta propuesta para la realización de un diagrama de clases, en general, viene

representada en la Figura 3-3, aunque la aplicación ofrecerá mucha más funcionalidad que para

este diagrama no se ha tenido en cuenta.

Figura 3-3. Diagrama de actividades para la elaboración de un diagrama de clases

A continuación se especifican, mediante tablas y siguiendo la metodología propuesta

por Amador Durán (Durán & Bernárdez, 2002), los distintos casos de uso que va a tener la

herramienta desarrollada en este proyecto para que cumpla con las especificaciones deseadas.

Según los autores, “El objetivo de esta metodología es la definición de las tareas a realizar, los productos a

Page 73: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

obtener y las técnicas a emplear durante la actividad de elicitación de requisitos de la fase de ingeniería de

requisitos del desarrollo de software.”

Caso de Uso “Añadir Clase”

Descripción En este caso de uso, el diseñador dibuja una nueva clase en el diagrama. Esto podrá hacerse de dos formas distintas: directamente, o a través de un patrón. En el caso de que sea el diseñador el que elija la opción de añadir la clase, esta se incluirá en el diagrama con un identificador que la hará única para poder ser reconocida en el diagrama posteriormente y solo se le asociará en principio este dato y un nombre, que será igual que el identificador. La clase también podrá ser añadida a través de un patrón. Es decir, cuando se de el caso de uso “Utilizar Patrón”, directamente se añadirán las clases de las que se componga dicho patrón al diagrama. De esta forma, la clase tendrá asociadas aquellas propiedades que tuviera la misma en el patrón.

Precondiciones

Flujo de eventos Flujo básico

El diseñador selecciona la opción de añadir una nueva clase en el diagrama.

El diseñador especifica el punto, dentro del área de dibujo, donde quiere que aparezca la clase.

La nueva clase aparece en el diagrama, con un nombre por defecto y un identificador único en el diagrama para que pueda ser reconocida de forma unánime.

Inicialmente, la nueva clase no tendrá atributos ni métodos asociados.

Flujo alternativo

El diseñador utiliza un patrón del repositorio.

Las clases que componen el patrón, y que el diseñador no haya seleccionado para que sean sustituidas por alguna de las ya existentes, se añaden automáticamente al diagrama.

Las nuevas clases añadidas tendrán las mismas propiedades, atributos y métodos que tuviera la clase a la que representan en el patrón.

Poscondiciones La nueva clase dibujada queda registrada de forma unívoca mediante un identificador que el usuario no podrá modificar. Opcionalmente, el diseñador podrá cambiar las características de la clase, añadir nuevos atributos o métodos o asociar esta clase a otras mediante relaciones.

Excepciones

Relaciones Actores Diseñador

Inclusiones

Extensiones Utilizar patrón Tabla 3-1. Caso de uso “Añadir Clase”

Page 74: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Caso de Uso “Eliminar Clase”

Descripción En este caso de uso, el diseñador selecciona una clase de las que hay en el diagrama sobre el que está trabajando y le indicará al sistema que la elimine de él, de forma que la clase deja de existir. Por consiguiente, las relaciones en las que la clase eliminada fuera origen o destino también se eliminarán.

Precondiciones La clase tiene que estar en el diagrama para que pueda eliminarse.

Flujo de eventos Flujo básico

El diseñador selecciona una clase de su diagrama.

El diseñador selecciona la opción de eliminar la clase.

El sistema le pregunta si realmente desea eliminar la clase del diagrama.

El diseñador confirma que desea eliminar la clase.

La clase desaparece del diagrama y también cualquier referencia a ella.

Si había relaciones en las que la clase era el origen o el destino, también se eliminarán junto con la clase.

Flujo alternativo

El diseñador se ha equivocado al seleccionar la opción de eliminar la clase.

Cuando el sistema muestra el mensaje para que el usuario confirme si desea eliminar la clase, éste deniega la opción.

El mensaje desaparece y la clase sigue estando como antes.

Poscondiciones La clase ha dejado de existir en el sistema, por lo que no podrán hacerse referencias a ella. Las relaciones en las que la clase estuviera implicada se eliminarán junto a la clase.

Excepciones

Relaciones Actores Diseñador

Inclusiones

Extensiones Eliminar Relación Tabla 3-2. Caso de uso “Eliminar Clase”

Caso de Uso “Consultar Clase”

Descripción En este caso de uso, el diseñador puede visualizar el identificador y nombre de la clase, al igual que los atributos y métodos que tiene asociados. Puesto que la representación gráfica de una clase está representada con un cuadrado con tres secciones, dependiendo de la sección que el usuario seleccione visualizará unos datos u otros. De esta manera, en la parte de arriba aparece el nombre de la clase, y las propiedades de esta son su nombre e identificador. En la parte central aparecen los atributos, y sus propiedades son identificador del atributo, nombre, tipo de dato (void, boolean, date, int, float, double, string), cardinalidad mínima, cardinalidad máxima y nivel de acceso del atributo (friendly, private, protected, public). En la parte de abajo aparecen los métodos, y sus propiedades son identificador, nombre, valor devuelto (void, boolean, date, int, float, double, string), nivel de acceso del método (friendly, private, protected, public) y parámetros que se le pasan.

Page 75: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Los identificadores de las clases, de los atributos y de los métodos son valores que asigna el sistema automáticamente a las clases, atributos o métodos respectivamente en el momento en que estos se añaden al diagrama. Estos valores no podrán modificarse por el usuario.

Precondiciones En la parte de arriba del cuadro que representa una clase está el nombre de la clase, en la parte central están los atributos relacionados con esa clase, y en la parte de abajo están los métodos.

Flujo de eventos Flujo básico

El diseñador selecciona una de las clases del diagrama.

Si el diseñador selecciona la parte de arriba del cuadro que representa la clase, se mostrarán las propiedades de la clase.

Si el diseñador selecciona uno de los atributos, situados en la parte central del cuadro que representa la clase, se mostrarán las propiedades de ese atributo.

Si el diseñador selecciona uno de los métodos, situados en la parte de abajo del cuadro que representa la clase, se mostrarán las propiedades del método.

Flujo alternativo

Si no hay ningún atributo asignado a la clase seleccionada, en el momento en el que el diseñador selecciona esta parte, se crea un nuevo atributo y se visualizarán sus propiedades, que inicialmente estarán todas en blanco, excepto el identificador, que será el que le haya otorgado el sistema y no podrá ser modificado.

Si no hay ningún método asignado a la clase seleccionada, en el momento en el que el diseñador selecciona esta parte, se crea un nuevo método y se visualizarán sus propiedades, que inicialmente estarán todas en blanco, excepto el identificador, que será el que le haya otorgado el sistema y no podrá ser modificado.

Poscondiciones

Excepciones Si no hay ningún atributo / método asignado a la clase seleccionada, en el momento en el que el diseñador selecciona esta parte, se crea un nuevo atributo / método, y se abre la ventana donde aparecen sus propiedades, que inicialmente estarán todas en blanco y el diseñador podrá modificarlas en la ventana que se abre. De la misma manera, al igual que se puede seleccionar uno de los atributos o métodos existentes para ver sus propiedades, también se puede añadir uno nuevo.

Relaciones Actores Diseñador

Inclusiones Es utilizado por “Modificar Clase”

Extensiones Tabla 3-3. Caso de uso “Consultar Clase”

Caso de Uso “Modificar Clase”

Descripción En este caso de uso, el usuario puede modificar el nombre de la clase. También podrá añadir nuevos atributos y métodos, eliminarlos y cambiar sus propiedades.

Precondiciones

Page 76: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

El diseñador ha consultado la clase y tiene visibles las propiedades de la clase o de sus atributos o métodos. Como este caso de uso tiene varias partes, dependiendo de la que se vaya a usar, deberán darse unas precondiciones u otras. Si se desea modificar el nombre de la clase, se deberá tener visible las características de la clase; si se desea cambiar las propiedades de un atributo, serán estas las que deberán estar visibles; si lo que se desea variar son las propiedades de un método, serán las propiedades de este las que deberán estar a la vista. Si se desea añadir o eliminar un atributo o un método, no será necesario utilizar previamente el caso de uso “consultar clase”.

Flujo de eventos Flujo básico

El diseñador selecciona la propiedad que desea modificar de entre los campos existentes para la clase, atributo o método seleccionado.

Para las propiedades de la clase, el diseñador podrá cambiar el nombre a la clase, siendo necesario que éste sea único en el diagrama de clases.

Para las propiedades de los atributos, el diseñador elegirá una de las opciones posibles de entre la lista que se ofrece para los casos de tipo de dato y nivel de acceso del atributo. En el resto de propiedades escribirá su valor en el campo correspondiente

Para las propiedades de los métodos, el diseñador elegirá una de las opciones posibles de entre la lista que se ofrece para los casos de tipo devuelto y nivel de acceso del método. En el resto de propiedades escribirá su valor en el campo correspondiente.

Se guardarán automáticamente los cambios realizados en cualquiera de las propiedades y se visualizarán en la representación gráfica de la clase.

Flujo alternativo

Si el usuario desea añadir un atributo a una clase, seleccionará la parte de los atributos, dentro de la clase. El sistema creará un nuevo atributo para esta clase, al que asignará un identificador único y se mostrarán sus propiedades para que el usuario pueda dar los datos que le interesen.

Si el usuario desea eliminar un atributo de la clase, seleccionará este atributo e indicará la opción de eliminarlo de la clase. El atributo desaparecerá con las características que conlleve.

Si el usuario desea añadir un método a una clase, seleccionará la parte de los métodos, dentro de la clase. El sistema creará un nuevo método para esta clase, al que asignará un identificador único y se mostrarán sus propiedades para que el usuario pueda dar los datos que le interesen.

Si el usuario desea eliminar un método de la clase, seleccionará este método e indicará la opción de eliminarlo de la clase. El método desaparecerá con las características que conlleve.

Page 77: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Poscondiciones En el cuadro que representa la clase aparecen los nombres de la clase, de los atributos y de los métodos, cada uno en su lugar correspondiente. Para cada atributo aparecerá su nivel de acceso, su tipo del atributo y su nombre. Para cada método aparecerá su nivel de acceso, el tipo que devuelve este método, su nombre y los parámetros que recibe entre paréntesis y escritos de la misma manera que lo hizo el usuario. Cada atributo y cada método estarán en una línea distinta dentro de la parte correspondiente en la clase y terminarán con un punto y coma.

Excepciones Los identificadores de clase, de atributo y de método no pueden modificarse, son datos que asigna el sistema automáticamente cuando se crean. A una clase no se le puede asignar un nombre que ya esté siendo utilizado por otra clase en el diagrama. Si se intenta hacer esto, el sistema mostrará un mensaje de error y pedirá que se dé un nuevo nombre válido para la clase.

Relaciones Actores Diseñador

Inclusiones Utiliza “Consultar Clase”

Extensiones Tabla 3-4. Caso de uso “Modificar Clase”

Caso de Uso “Añadir Relación”

Descripción En este caso de uso, el diseñador establece una relación entre dos de las clases existentes en el diagrama. Otra alternativa es que se establezca una relación entre una misma clase, aunque este caso no tendrá mucho sentido dependiendo del tipo de relación, esta opción está incluida entre las posibles y será elección del diseñador utilizarla o no. Las relaciones podrán ser de varios tipos: de dependencia, de generalización, de asociación, de agregación y de composición. Cada tipo de relación se representa de distinta manera, siguiendo el formato establecido en el UML.

Precondiciones Las clases deben estar incluidas en el diagrama para poder añadir la relación entre ellas.

Flujo de eventos Flujo básico

El diseñador selecciona el tipo de relación que quiere añadir al diagrama.

El diseñador selecciona la primera clase, que será el origen de la relación.

El diseñador selecciona la segunda clase, que será el destino de la relación.

La relación entre las dos clases indicadas aparece dibujada en el diagrama.

Flujo alternativo

Si el diseñador necesita una relación dentro de la misma clase, selecciona dos veces la misma clase: como origen y como destino.

Se incluye en el diagrama una relación sobre la misma clase.

Page 78: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Poscondiciones La nueva relación lleva asociado un identificador único dentro del diagrama de clases que el sistema le asignará en el momento de su creación. Además de este, otros campos de las propiedades que tiene la relación las fijará el sistema. Estos campos serán las clase origen y destino y el role de cada una de ellas. Sus valores no podrán ser modificados por el usuario. El diseñador podrá modificar el resto de valores que lleva asociados la relación.

Excepciones Entre dos clases determinadas podrá haber varias relaciones siempre que estas sean de distinto tipo. De esta forma, si ya existe una relación de un tipo concreto, y el usuario pretende establecer otra del mismo tipo, esto no será posible y se mantendrá únicamente la primera.

Relaciones Actores Diseñador

Inclusiones

Extensiones Utilizar Patrón Tabla 3-5. Caso de uso “Añadir Relación”

Caso de Uso “Eliminar Relación”

Descripción En este caso de uso, el diseñador elimina una relación de las existentes en el diagrama de clases.

Precondiciones

Flujo de eventos

Flujo básico

El diseñador selecciona una determinada relación representada en el diagrama de clases.

El diseñador selecciona la opción de eliminar la relación.

El sistema le pregunta si realmente desea eliminar la relación del diagrama.

El diseñador confirma que desea eliminar la relación.

La relación desaparece del diagrama.

Flujo alternativo

El diseñador deniega que desee eliminar la relación.

El mensaje desaparece y la clase sigue estando como antes.

Poscondiciones La relación deja de existir en el diagrama y las clases afectadas pierden la dependencia que las unía.

Excepciones

Relaciones Actores Diseñador

Inclusiones

Extensiones Tabla 3-6. Caso de uso “Eliminar Relación”

Caso de Uso “Consultar Relación”

Descripción En este caso de uso, el diseñador consulta los datos concernientes a la relación marcada. Dependiendo del tipo de relación que sea, las propiedades que se tendrán serán unas u otras. De esta manera, si la relación es de asociación, de agregación o de composición, los

Page 79: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

datos que se podrán consultar asociados a la relación son el identificador y nombre de la relación, los identificadores de las clases origen y destino y los roles que tienen en la relación y la cardinalidad en cada extremo de la relación. Si la relación es de dependencia, se podrán consultar el identificador y el nombre de la relación, los identificadores de las clases origen y destino, el role de cada una de las clases y la cardinalidad en cada extremo de la relación. Si la relación es de generalización, solamente se guardarán los campos de identificador y nombre de la relación, los identificadores de las clases origen y destino y el role que tiene la clase origen respecto a la destino.

Precondiciones La relación que se pretende consultar ha sido establecida con anterioridad en el diagrama.

Flujo de eventos Flujo básico

El diseñador selecciona la relación de la cual desea consultar los datos.

El diseñador selecciona la opción de visualizar las propiedades asociadas a la relación marcada.

El sistema muestra los campos asociados a las propiedades de la relación elegida y sus valores correspondientes.

Flujo alternativo

Poscondiciones

Excepciones

Relaciones Actores Diseñador

Inclusiones

Extensiones Tabla 3-7. Caso de uso “Consultar Relación”

Caso de Uso “Modificar Relación”

Descripción En este caso de uso, el diseñador completa o modifica los datos que lleva asociados una relación previamente establecida en el diagrama de clases. De las propiedades que tenga, habrá algunas que el usuario no pueda modificar y otras que si.

Precondiciones La relación ha sido establecida en el diagrama de clases y están visibles las propiedades de esta.

Flujo de eventos Flujo básico

El diseñador selecciona la propiedad de la relación que desea modificar.

El diseñador podrá otorgar libremente un nombre a la relación.

El diseñador podrá dar un valor entre “0”, “0..1”, “0..n”, “1”, “1..n” o “n” a la cardinalidad de las clases que son afectadas por la relación.

Page 80: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Flujo alternativo

En caso de que la relación sea de generalización, el usuario solo podrá modificar el nombre, ya que esta relación no tendrá definidos los campos de cardinalidad.

Solo en caso de que la relación sea de dependencia, además de los campos comentados, el usuario podrá modificar los campos de instanciación para cada una de las clases “roleAInstantiedCard”, ya que esta propiedad es particular de este tipo de relación.

Poscondiciones Los valores otorgados a cada propiedad modificada se guardan automáticamente. El nombre de la relación aparecerá en el diagrama, sobre la relación y en la parte central. La multiplicidad de cada clase que une la relación se verá a cada lado de la clase que afecta.

Excepciones Los campos de identificador de la relación, las clases origen y destino y el role de cada una de ellas no pueden ser modificados por el usuario ya que los establece el sistema en función de la manera en que el diseñador ha creado la relación en el diagrama.

Relaciones Actores Diseñador

Inclusiones

Extensiones Tabla 3-8. Caso de uso “Modificar Relación”

Caso de Uso “Utilizar Patrón”

Descripción En este caso de uso, el diseñador utiliza uno de los patrones existentes para añadirlo en su diagrama de clases. Para ello buscará el nombre del patrón entre la lista que tendrá de los disponibles en el árbol del repositorio y lo arrastrará hasta el área de dibujo. El sistema le dará opción a sustituir las clases de las que se compone el patrón por las que ya tiene representadas en su diagrama. En este caso, la clase que se sustituye pasará a tener las características y relaciones asociadas que tiene la del patrón. En caso de que no sustituya una clase, se añadirá una nueva al diagrama, con las características que tenga en el patrón. En este caso de uso se añaden al diagrama tanto las clases como las relaciones implicadas en el patrón seleccionado.

Precondiciones

Page 81: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Flujo de eventos Flujo básico

El diseñador selecciona el nombre del patrón que quiere utilizar entre los que hay en el árbol, que serán los que están disponibles en el repositorio de patrones.

El diseñador arrastra el patrón a su diagrama de clases.

Si el diagrama ya tiene alguna clase representada, el sistema mostrará en un mensaje cada una de las clases por las que está compuesto el patrón y permite, para cada una de ellas, asociarla con alguna de las clases que hay en el diagrama de clases en ese momento.

El diseñador selecciona una clase de las ya existentes para ser sustituida por la del patrón.

El diseñador acepta y se cierra la ventana.

El patrón se dibuja en el área del diagrama.

De forma similar a como estaban en el patrón, se añadirán las clases y relaciones entre ellas.

Las clases sustituidas tendrán las relaciones que tenían las originales en el patrón.

Las clases que no han sido sustituidas, además de las relaciones en las que están implicadas, incluirán las mismas propiedades, atributos y métodos que las del patrón.

Flujo alternativo

Si antes de arrastrar el patrón, no había ninguna clase en el diagrama, no se podrá sustituir ninguna clase, por lo que no se mostrará el mensaje intermedio.

Si en lugar de aceptar, se cancela o cierra la ventana intermedia, no se sustituirá ninguna clase del patrón por las existentes, independientemente de lo que el diseñador hubiera seleccionado.

Poscondiciones

Excepciones

Relaciones Actores Diseñador

Inclusiones

Extensiones Tabla 3-9. Caso de uso “Utilizar Patrón”

Caso de Uso “Añadir Patrón”

Descripción En este caso de uso, el usuario añade un nuevo patrón al repositorio para que luego pueda utilizarlo al igual que los patrones de colaboración proporcionados. El patrón añadido puede pertenecer a una colección reconocida o ser propio del diseñador. Para añadir el patrón, el diseñador dibujará el diagrama de clases que lo representa y lo guardará en el directorio donde esté el repositorio de los patrones.

Precondiciones

Page 82: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Flujo de eventos Flujo básico

El diseñador dibuja el diagrama de clases correspondiente al patrón que quiere añadir, utilizando para ello los casos de uso relativos a la elaboración de diagramas de clases.

Una vez completo el diagrama, el diseñador selecciona la opción de guardar el proyecto.

Se abre una ventana donde el usuario ha de seleccionar el directorio donde quiere guardarlo que, en este caso, tendrá que ser donde estén todos los patrones.

El diseñador da un nombre al patrón y lo guarda.

El diseñador cierra la ventana.

Flujo alternativo

Poscondiciones El diagrama guardado en el directorio donde están los patrones podrá ser añadido, como otro patrón más, en el diagrama de clases.

Excepciones

Relaciones Actores Diseñador

Inclusiones

Extensiones Tabla 3-10. Caso de uso “Añadir Patrón”

Caso de Uso “Eliminar Patrón”

Descripción En este caso de uso, el diseñador elimina uno de los patrones existentes del repositorio.

Precondiciones Este caso de uso se lleva a cabo sin necesidad de estar ejecutándose la aplicación, ya que su eliminación se hace desde el directorio donde está ubicado su fichero asociado.

Flujo de eventos Flujo básico

El usuario va al directorio donde están guardados todos los patrones.

El usuario selecciona el fichero correspondiente al patrón que desea eliminar y lo elimina.

Flujo alternativo

Poscondiciones El patrón eliminado ya no saldrá en el árbol de patrones disponibles ni podrá ser utilizado por la aplicación.

Excepciones

Relaciones Actores Diseñador

Inclusiones

Extensiones Tabla 3-11. Caso de uso “Eliminar Patrón”

Caso de Uso “Modificar Patrón”

Descripción En este caso de uso, el diseñador modifica un patrón existente en el repositorio.

Page 83: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Precondiciones El patrón está incluido con anterioridad en el repositorio de los patrones disponibles.

Flujo de eventos Flujo básico

El diagrama de clases utilizado está vacío.

El diseñador realiza el caso de uso “Utilizar Patrón” con el patrón que desea modificar.

El diseñador modifica el diagrama de clases asociado al patrón utilizando para ello los casos de uso necesarios relativos a la elaboración de diagramas de clases.

Una vez completo el diagrama, el diseñador selecciona la opción de guardar el proyecto.

Se abre una ventana donde el usuario ha de seleccionar la carpeta donde quiere guardarlo que, en este caso, tendrá que ser donde estén todos los patrones.

El diseñador selecciona el patrón que abrió anteriormente para modificarlo y lo guarda.

El diseñador cierra la ventana.

Flujo alternativo

Para abrir el diagrama de clases correspondiente al patrón que se quiere modificar, también se puede abrir directamente:

El diseñador selecciona la opción de abrir un diagrama de clases existente.

El diseñador indica el directorio donde está el repositorio de los patrones y el nombre del fichero que tiene el patrón que desea modificar y abre su diagrama de clases asociado.

A continuación, el diseñador puede modificar el diagrama de clases y seguir con el flujo básico de ejecución para terminar de modificar el patrón.

Poscondiciones El patrón con un determinado nombre que estará disponible será el que tenga los últimos cambios, es decir, al guardarlo con el mismo nombre. La versión anterior del patrón se pierde y es sobrescrito por el diagrama modificado.

Excepciones

Relaciones Actores Diseñador

Inclusiones

Extensiones Tabla 3-12. Caso de uso “Modificar Patrón”

Para la especificación de los requisitos que se acaba de realizar se ha tenido en cuenta

únicamente la funcionalidad que se considera más importante de la herramienta y los casos de

uso principales.

Como se ha comentado anteriormente, la herramienta dispondrá de cierta

funcionalidad adicional para facilitar su uso al diseñador, pero que no se ha considerado en

Page 84: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

esta especificación por tratarse de casos de uso que no reflejan la esencia que se quiere resaltar

de esta aplicación, como es lo relacionado con la gestión de los patrones y la elaboración de

diagramas de clases.

3.2.3 Requisitos no funcionales

El sistema desarrollado ha de ser fácil de usar. Está especialmente dedicado a

desarrolladores y estudiantes, con experiencia en informática y que estarán muy

acostumbrados a tratar con distintas aplicaciones software. Sin embargo, al estar la

herramienta enfocada al modelado del dominio, ésta será una tarea en la que los supuestos

estudiantes carecerán de práctica. Por eso se pretende que su diseño no ofrezca ninguna

dificultad para su utilización, ya que con ella se pretende facilitarles las cosas, en lugar de

entorpecerlas con una herramienta que no sepan cómo manejar. Por lo tanto, su interfaz ha de

ser muy intuitiva.

La ventana principal estará claramente dividida en dos partes distintas, cada una con su

funcionalidad. Así, en una parte se ofertarán los patrones de colaboración que pueden

utilizarse, y en la otra habrá un panel para la especificación de diagramas de clases.

En la parte superior de la interfaz se dispondrá de un menú con las acciones que

pueden hacerse. Cada acción tendrá un nombre significativo y llevará asociado un icono cuya

forma es característica respecto a la funcionalidad que ofrece.

Situada en la parte superior del panel de dibujo habrá una barra de herramientas que

actuará sobre el diagrama y que contendrá los botones necesarios para añadir clases y distintos

tipos de relaciones sobre el diagrama, con dibujos en sus iconos similares a los que se obtienen

a través de ellos. Además, cuando se pase el puntero del ratón por cada uno de los botones,

aparecerá un texto con la función que tiene.

También se cuidará y se incluirá el control de errores que puedan producirse durante

su ejecución y se le advertirá al usuario si está haciendo algo no permitido, o si algo no

funciona como debería. Para ello, se considerará la situación de que el programa no pueda

abrir un fichero que el usuario le haya indicado. Este fichero podrá ser el correspondiente a un

diagrama de clases que se quiera abrir directamente o el correspondiente a un patrón que se

Page 85: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

desee incorporar al diagrama. En estos dos casos, el sistema mostrará un mensaje de error

avisando de la excepción producida.

Otra característica que se tendrá en cuenta en la implementación de la herramienta es

que no se permita duplicar los nombres de las clases. Para cumplir con este objetivo se llevará

un control de esta propiedad de las clases a lo largo de todo su uso. Se controlará en el

momento de abrir un nuevo diagrama y cuando se modifique el nombre de alguna de las clases

ya existentes.

En el caso de que se arrastre un patrón y éste incluya una clase cuyo nombre ya esté

siendo utilizado en alguna de las clases que consten en el diagrama, al nombre de la clase que

todavía no ha sido incorporada se le añadirá, directamente, un número que la haga única. De

manera que cuando el patrón se represente en el diagrama ya esté correctamente, haciéndose

de forma transparente al usuario.

Cuando sea el usuario el que intente modificar el nombre a alguna de las clases que ya

existen, y el nuevo nombre coincida con otro ya utilizado, el sistema le avisará a través de un

mensaje indicando la situación y pidiendo al usuario que de otro nombre que sea válido para la

clase, porque el indicado no lo es. En el caso de que el usuario no lo haga, la clase quedará con

el nombre que tenía anteriormente, que será el asignado inicialmente por el sistema, si el

usuario no lo ha modificado anteriormente.

Asimismo, cuando el usuario añada una clase al diagrama, esta clase tendrá

inicialmente el mismo valor para su nombre que para su identificador, por lo que no se

permitirá asignarle un nombre que empiece por “idc” y no se corresponda con su

identificador. Para ello cabe indicar que el identificador asociado a una clase nueva será “idc”

seguido de un número que irá incrementando en función de las clases que existan en el

diagrama.

Para comprobar los nombres no se distinguirá entre mayúsculas y minúsculas y se

eliminarán los espacios antes del primer carácter del nombre y después del último.

Las clases, al igual que los atributos y métodos que estas tengan, llevarán asignados un

identificador, que el sistema les proporcionará desde el momento de su creación hasta que se

eliminen del diagrama. Estos identificadores serán los que se tendrán en cuenta a la hora de

trabajar con estos elementos y no podrán ser modificados en ningún momento.

Page 86: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

El identificador de una clase será una cadena de caracteres que comience por “idc”,

seguido del número de clases que se hayan añadido en el diagrama en el momento de su

creación. En el momento de añadir una nueva clase al diagrama, el nombre tendrá el mismo

valor que su identificador, hasta que el usuario lo modifique.

Así mismo, el identificador de un atributo será una cadena de caracteres que comience

por el identificador de la clase a la que pertenece, seguido de una “a” y el número de atributos

que se le hayan incluido a la clase hasta ese momento. De igual forma será asignado el

identificador de un método, con la excepción de que en lugar de una “a” después del

identificador de la clase, en este caso llevará una “m”, para distinguir entre atributos y

métodos.

Si una clase hubiese sido incluida y posteriormente se hubiera borrado, su identificador

ya no volvería a utilizarse. Lo mismo pasaría con los atributos y los métodos, que los

identificadores no se repetirán en el caso de que se eliminen de la clase.

De forma similar, las relaciones también llevarán asociado un identificador que el

sistema les proporciona de forma automática en el momento de su inclusión en el diagrama.

En este caso será un valor que comenzará por “idr”, seguido del número de relaciones que se

han añadido en el diagrama hasta ese momento. Igual que en los casos anteriores, los

identificadores no se repetirán, ni en el caso de que se elimine la relación del diagrama.

Además del identificador, el sistema dará valores a las clases origen y destino de la relación, en

función de las clases que el usuario haya unido, y a los roles de estas, en función del tipo de

relación del que se trate.

Por otro lado, cuando el usuario seleccione la opción de eliminar una clase o una

relación, el sistema mostrará un mensaje que le preguntará si realmente quiere eliminarla del

diagrama, pudiendo el usuario revocar la selección, sin que realmente llegue a eliminarse, o

seguir adelante y borrarla del diagrama.

Los mensajes que el sistema muestra al usuario con información o avisos estarán

convenientemente cuidados y se mostrarán en el momento justo que el usuario los necesite.

Además, se tratará de que el sistema sea eficiente y haga lo que debe de hacer correctamente.

Page 87: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

3.2.4 Modelado conceptual

En este apartado se hará un análisis del modelado conceptual que se seguirá en el

momento de realizar el diseño de la aplicación.

Una visión básica de conjunto de la arquitectura del sistema es la ofrecida en la Figura

3-4, donde puede observarse que, básicamente, la aplicación tiene tres módulos diferenciados

por su funcionalidad y comunicados entre sí mediante las relaciones que existen ente los

distintos componentes. Por un lado está la gestión de patrones, por otro lado el editor de

clases y, entre estas dos partes está la aplicación en si, que es la que une las dos funcionalidades

incluyendo características propias necesarias para la interacción entre las partes.

Figura 3-4. Diagrama de paquetes

Un diseño más elaborado de este modelado conceptual, que será la base para la

elaboración del sistema, se representa mediante el diagrama de la Figura 3-5, en la cuál se ha

incorporado un nuevo módulo a los ya mencionados, que está relacionado con el editor de

clases de la aplicación, y es el encargado de ofrecer unas características y un código XML para

sus elementos.

Por otro lado, relacionado con la gestión de patrones habrá un repositorio con los

patrones de colaboración, en un principio. Aunque, como se ha comentado en otras

ocasiones, este repositorio puede ser modificado por el usuario, haciéndolo más afín a sus

necesidades.

Page 88: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin
Page 89: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Figura 3-5. Diagrama de clases de la aplicación

Para entender el diagrama de clases de la aplicación, se observará por separado el

conjunto de las clases pertenecientes a cada uno de los distintos paquetes, analizando así en

detalle la funcionalidad que aporta cada paquete y las clases por las que está compuesto cada

uno de ellos.

3.2.4.1 El paquete “APP”

El paquete APP es el que encapsula las clases propias de la aplicación, sobre las que se

apoya el resto. Es la base para las demás clases del sistema.

Estará compuesto por las clases:

JInternalFrame: Es la clase que contiene la interfaz principal de la aplicación. Será el

soporte para la clase MyInternalFrame, que a su vez, contendrá las clases más

significativas de la aplicación. La interfaz principal tendrá un menú desde el que se

Page 90: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

podrán desplegar nuevas clases MyInternalFrame, lo cuál permitirá trabajar sobre más de

un diagrama de clases a la vez.

MyInternalFrame: Esta clase estará compuesta por dos ventanas internas. Una de

ellas, ClassFrame, será la que se utilizará para realizar el diagrama de las clases y la otra,

JTreeFrame, será el árbol relativo a los patrones que hay disponibles para su utilización

en el diagrama.

JTreeFrame: Esta clase es la que corresponde al árbol de los patrones y sobre ella se

sostiene lo relativo a la gestión de patrones.

ClassFrame: Esta clase sirve de base para todo el soporte en lo referente a la edición

de clases en el diagrama.

3.2.4.2 El paquete “Gestor de Patrones”

El paquete Gestor de Patrones es el que contiene las clases necesarias para que los

patrones puedan gestionarse de una forma eficiente y puedan añadirse al diagrama,

comunicándose para ello con el paquete Editor de Clases.

De esta manera, el paquete está compuesto por las clases DraggableTree,

TransferableDataItem y Mensaje. Estas clases recogen los patrones que hay disponibles y le

permiten al usuario utilizarlos en el diagrama de clases. Además, dan la opción de sustituir

clases de los patrones por clases incluidas ya en el diagrama, a través de un menú intermedio.

Así mismo, este paquete está relacionado con el directorio donde están almacenados

los ficheros de los patrones, para poder acceder a ellos, mostrar los nombres y, en el caso de

que el usuario lo seleccione, añadir estos patrones al diagrama de clases que esté editando.

Algunas de las clases contenidas en este paquete son las siguientes:

DraggableTree: Esta clase corresponde a un árbol donde están los patrones

disponibles que el usuario puede utilizar. Se hace un recorrido por el directorio donde

están ubicados los patrones y va rellenando un árbol con los nombres de los ficheros

donde están almacenados los patrones que encuentra. Desde este árbol, el usuario

podrá seleccionar un patrón y, a través de la clase TransferableDataItem, arrastrarlo

hasta el diagrama, incorporándolo así al conjunto de sus clases.

Page 91: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

TransferableDataItem: Es la clase que permite arrastrar un patrón al diagrama de

clases. Para ello se selecciona el nombre del patrón del árbol de patrones y lo que se

arrastra es el fichero al que corresponde ese patrón, de manera que al dibujar el patrón

en el diagrama, accederá al fichero al que se hace referencia, a través del patrón del

árbol, y dibujará lo que se indique en el fichero.

Mensaje: Esta clase relaciona el paquete Gestor de Patrones con el paquete Editor de

Clases. Para ello toma como referencia las clases que hay dentro del fichero que se está

arrastrando a la paleta de dibujo y permite sustituirlas por las clases que ya hay

dibujadas en esta paleta. Si el usuario decide sustituir una de las del patrón por una de

las existentes, en el momento de dibujar el patrón se hará el cambio.

3.2.4.3 El paquete “Editor de Clases”

Este paquete va a tener las clases necesarias para la edición de los diagramas de clases.

Como base habrá una paleta de dibujo, sobre la que se podrán dibujar clases, pudiendo tener

atributos y métodos asociadas. También podrán dibujarse relaciones entre dos clases, que

podrán ser de distintos tipos. Las clases contenidas en este paquete se ocupan de hacer posible

que estas acciones se lleven a cabo de forma correcta.

Las clases más significativas de este paquete son las que se indican a continuación:

Paleta: Es la clase a través de la cuál se relaciona el paquete de edición de clases con el

de la aplicación y con el de la gestión de patrones. A su vez, es la que contendrá las

clases que permiten la edición de los diagramas, siendo el fondo sobre el que sustentan

el resto de clases de este paquete. Esta clase es probablemente la más importante del

paquete, conteniendo un panel donde se dibujarán las clases y relaciones entre ellas, y

una barra de herramientas cuyos botones permiten realizar las acciones necesarias

sobre el diagrama de clases, para hacer más funcional su edición.

Clase: Es la que contiene información sobre cada clase de las que se dibuja en el

diagrama. Con ella se gestionan las características de cada clase, su identificador, su

nombre, sus atributos, sus métodos, las relaciones a las que está unida y las

dimensiones dentro del diagrama, además de la funcionalidad necesaria para

relacionarse con el paquete de las propiedades.

Page 92: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Atributos: Se encarga de la gestión de los atributos dentro de las clases que están

incluidas en el diagrama. Así llevará un control del número de atributos que tiene

asignada una clase, sus nombres y tipo.

Métodos: De forma similar a la anterior, es la encargada de gestionar los atributos que

hay en las clases.

Relación: Controla el dibujado y la información de las relaciones en el diagrama.

Origen y Destino: Hace referencia a las clases que actúan como origen y destino,

respectivamente, dentro de las propiedades de las relaciones.

Generalización, AdHoc y Agregación: Corresponden a las distintas relaciones que

se permiten en el diagrama de clases y cada una de ellas tiene las propiedades que le

afectan asociadas.

3.2.4.4 El paquete “Propiedades de los Elementos”

Este paquete añade algunas características al diagrama de clases. Para ello, tiene dos

clases básicas asociadas:

Propiedades: En esta clase se incluyen características que tendrán las clases y las

relaciones que se incluyan en el diagrama de clases modelado.

ViewCode: Esta clase representará el código UsiXML asociado al diagrama de clases

que haya dibujado en el panel.

3.2.5 Diagramas de secuencia

Para mostrar la forma en la que los objetos interactúan para llevar a cabo cada una de

las actividades, se representarán los diagramas de secuencia correspondientes a cada una de

estas acciones.

Probablemente, la actividad más importante que cabe destacar en esta sección es la

secuencia de acciones que se llevan a cabo para incorporar un patrón al diagrama de clases en

uso.

A la hora de trabajar con patrones, se podrán tener dos situaciones: que las clases que

se quieren insertar del patrón estén en el diagrama o que todavía no hayan sido añadidas. Para

Page 93: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

cada uno de los casos se analizará a continuación las acciones que habrá que realizar para

incorporar el patrón al panel en el que las clases están siendo dibujadas.

En el caso de insertar un patrón sustituyendo sus clases, la situación es que se tienen ya

dibujadas una serie de clases y posibles relaciones en el diagrama. Se selecciona un patrón para

arrastrarlo al panel, pero las clases que se quieren del patrón ya están en el diagrama de clases,

de forma que se quiere sustituir alguna de las clases del patrón por otras de las que ya se han

incluido anteriormente. De esta forma, el diagrama de secuencia correspondiente a este

escenario, sería el representado en la Figura 3-6.

Figura 3-6. Diagrama de secuencia para insertar patrón sustituyendo clases

Page 94: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

En el caso de insertar un patrón sin sustituir sus clases, se arrastra un patrón desde el

árbol hasta el panel de dibujo y se quiere que las clases sean las mismas que tiene el patrón. Es

decir, se pretende dejar las clases que ya hay dibujadas como están y añadir el patrón

seleccionado tal cual.

Para este escenario, las acciones que habría que llevar a cabo son las representadas en

el diagrama de secuencia de la Figura 3-7.

Figura 3-7. Diagrama de secuencia para insertar patrón sin sustituir clases

En este diagrama se ha tenido en cuenta que ya había alguna clase en el panel de dibujo

cuando se ha arrastrado el patrón. De no ser así, no aparecería el mensaje que se muestra al

usuario para que pueda sustituir las clases del patrón por las ya representadas. Las demás

acciones que se llevarían a cabo son las que se representan en este diagrama, con la única

Page 95: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

excepción que se ha comentado. Cuando se reconoce que no hay clases dibujadas en el

diagrama, directamente se dibuja el patrón que el diseñador ha arrastrado hasta el panel.

3.3 Descripción y almacenamiento de los patrones de colaboración en XML

Se ha querido proporcionar un repositorio donde tener almacenados los patrones de

colaboración, en un principio, y, posteriormente, todos los patrones que el usuario añada o

modifique. Este repositorio estará en el directorio patrones que acompaña al ejecutable

facilitado en este proyecto final de carrera.

Los patrones se almacenaran en ficheros, dentro del directorio especificado, utilizando

para su especificación el lenguaje UsiXML.

UsiXML (User Interface eXtensible Markup Language) (http://www.usixml.org) es un

lenguaje de descripción de interfaces de usuario, es declarativo y captura la esencia de lo que es

una interfaz de usuario independiente de las características físicas. Está basado en XML.

Puede describir interfaces para múltiples contextos de uso, con independencia del dispositivo,

de la plataforma y de la modalidad de interacción. Está basado en los principios de modelado

MDA. Además, UsiXML permite la reutilización de las especificaciones de interfaz de usuario

realizadas con anterioridad.

Por otro lado, XML (eXtensible Markup Language) (http://www.w3.org/XML/) es

un metalenguaje extensible de etiquetas desarrollado por el World Wide Web Consortium

(W3C). Es una simplificación y adaptación del SGML y permite definir la gramática de

lenguajes específicos. Por lo tanto, XML es una manera de definir lenguajes para diferentes

necesidades.

XML, además de su aplicación en Internet, se propone como un estándar para el

intercambio de información estructurada entre diferentes plataformas.

XML es una tecnología sencilla que tiene a su alrededor otras que la complementan y

la hacen mucho más grande y con unas posibilidades mucho mayores. Tiene un papel muy

importante en la actualidad ya que permite la compatibilidad entre sistemas para compartir la

información de una manera segura, fiable y fácil.

Page 96: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Por todas estas razones se he elegido este lenguaje para la definición de los patrones.

Para la especificación de los patrones en UsiXML se ha tenido en cuenta la estructura

para el modelado del dominio, donde se representan las clases y relaciones. El diseño que se

ha seguido es el recogido en la Figura 3-8, donde se muestran, además de las clases, los

atributos y los métodos que cada una de ellas tendrá asociados y las relaciones que pueden

incluirse entre ellas.

Se observa que este modelo es similar al utilizado para la representación de diagramas

de clases del proyecto, hecho que es lógico si se tiene en cuenta que los patrones son, en

definitiva, diagramas de clases que podemos diseñar directamente desde esta herramienta.

Figura 3-8. Modelo de dominio de clases

En este modelo se han incluido las propiedades de cada una de las clases. Estas son las

que se mostrarán en el caso que el usuario edite una clase, un atributo, un método, etc.

Además, estas propiedades también se verán reflejadas en el código XML asociado al

diagrama, para poder posteriormente recuperar el diagrama a través de este código.

Page 97: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Como ejemplo, se verá el patrón Actor-Role, descrito en el capítulo anterior. Se

recuerda que la apariencia que tiene este patrón es la reflejada en la Figura 3-9.

Figura 3-9. Patrón Actor-Role

La descripción en UsiXML de este patrón sería la indicada en la Tabla 3-13.

<?xml version="1.0" encoding="UTF-8"?>

<domainModel xmlns:ipo="http://www.usiXML.org"

xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"

xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.usiXML.org

C:\Ejemplo\usiXML-domain.xsd" id="dm0" name="domainmodel"

creationDate="2004-06-04T16:20:40.12+01:00" schemaVersion=""> <version

modifDate="2004-06-04T16:20:40.12+01:00"/> <authorName/> <comment/>

<domainClass id="idc0" name="Actor"> </domainClass>

<domainClass id="idc1" name="Role"> </domainClass>

<association id="idr0"

name=""

sourceId="idc0"

targetId="idc1"

roleAName="has"

roleBName="had"

cardRoleA="1"

cardRoleB="0..n"

/>

</domainModel>

Tabla 3-13. Actor-Role.usi

En la descripción de los patrones no se han añadido atributos ni métodos adicionales a

las clases para que el usuario pueda adaptarlos a sus necesidades, añadiendo él mismo los que

crea más convenientes.

3.4 Descripción del entorno elaborado

En este apartado se analizará el entorno de la aplicación y se distinguirán las opciones

posibles para su ejecución. Para ello se verá detenidamente la funcionalidad que la herramienta

presenta, y los pasos que habrá que seguir hasta llegar al resultado deseado. Para comprender

mejor el procedimiento, se irán añadiendo vistas de la aplicación en los distintos casos y se

explicará cómo llegar a cada situación.

Page 98: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

La interfaz principal de la aplicación está compuesta por:

una barra de título, donde aparece el nombre de la aplicación

una barra de menús, compuesta por File, Edit, Window y Help

una ventana interna, donde aparecen los patrones que hay disponibles para poder

ser reutilizados

otra ventana interna donde puede diseñarse el diagrama de clases.

Tanto la ventana principal como cada una de las dos ventanas internas pueden

minimizarse, maximizarse y cerrarse. Estas opciones vienen señaladas con un dibujo intuitivo

en el botón correspondiente

Más adelante se analizará en detalle cada una de las distintas partes de las que se

compone esta aplicación, explicando cómo funcionan y las posibilidades que ofrecen.

En la Figura 3-10 puede observarse la apariencia que tiene la ventana principal

inicialmente, y en ella se diferencian claramente las partes que la componen, que se

comentaban anteriormente.

Figura 3-10. Interfaz de la aplicación

Page 99: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Cabe destacar de esta interfaz su sencillez. En la parte izquierda se observa el árbol de

los patrones que hay disponibles en el momento. En un principio solamente contendrá los

patrones de colaboración, de la colección de (Nicola et al., 2001), aunque en un futuro esta

lista de patrones puede completarse y hacerse más compleja con los patrones que el diseñador

incluya en el repositorio, en el caso de que lo estime oportuno, y dependiendo de sus

necesidades en el momento de representar los diagramas de clases en el panel.

En la parte derecha se observa el panel de dibujo donde el diseñador creará su

diagrama. En la parte superior dispone de una barra de herramientas a través de la cuál podrá

ir diseñando el diagrama, con la introducción de las clases o relaciones que necesite, sin más

que seleccionar la clase o relación con el ratón, y situar posteriormente el puntero en la zona

del panel donde quiere añadir la figura.

La barra de herramientas del panel consta de unos iconos bastante intuitivos, cuya

funcionalidad se describe brevemente al pasar el ratón por sus iconos. En la tabla 3-14 se

identifican estos iconos y se da una breve explicación de su funcionalidad.

Figura Nombre Descripción

Puntero en modo selección

Selecciona la clase para añadir al diagrama

Selecciona la relación de dependencia

Selecciona la relación de generalización

Selecciona la relación de asociación

Selecciona la relación de agregación

Selecciona la relación de composición

Tabla 3-14. Iconos de la barra de herramientas del panel

Estos iconos se utilizan para el diseño del diagrama. Al posicionar el puntero del ratón

sobre estos iconos, aparece una breve explicación emergente de este botón, que nos indica su

Page 100: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

significado. Además, se indica una combinación de teclas cuyo uso tiene la misma acción que

si se pulsa este botón.

El modelado del diagrama de clases se hace según el UML, especificado en

http://www.uml.org/.

De esta manera, en un diagrama de clases podrá haber clases y relaciones de los

distintos tipos que se han comentado.

Para añadir una clase al diagrama, habrá que seleccionar el botón “class” y a

continuación indicar con el ratón el punto del diagrama sobre el que quiere representarse la

clase.

Inicialmente esta nueva clase tendrá el mismo nombre que el identificador que le

pertenezca. Este identificador será un nombre que comience por “idc”, seguido del número de

clases que se han añadido al diagrama hasta el momento en que se ha puesto esta clase.

La representación de una clase será un recuadro que consta de tres partes: en la parte

superior se verá el nombre de la clase. Además, si una clase determinada estaba en el diagrama

y, al arrastrar un nuevo patrón, se ha sustituido esta clase por una de las del patrón, debajo del

nombre de la clase aparecerá entre los signos “<<” y “>>” el estereotipo, o lo que es lo

mismo, el nombre de la clase del patrón que sustituye.

En la parte central aparecerán los atributos que tiene asociados la clase. Cada atributo

aparecerá en una línea distinta, indicando el modo de acceso, el tipo y el nombre de cada uno y

finalizando con punto y coma.

En la parte inferior de la clase se mostrarán los métodos que tenga asociados la clase,

de modo que se verá el modo de acceso, el tipo que devuelve el método y su nombre, seguido

de los parámetros que haya que pasársele, entre paréntesis, y punto y coma. Igual que en el

caso de los atributos, los métodos se mostrarán cada uno en una línea distinta dentro de la

clase.

Page 101: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Figura 3-11. Partes de una clase

Para modificar el nombre de una clase, se hará clic con botón derecho del ratón sobre

la parte de arriba en la representación de la clase en el diagrama, donde aparece el nombre.

Aparecerá un menú con varias opciones donde habrá que elegir “edit class” para que se abra

una ventana donde se indican las características de la clase, que serán identificador y nombre y

éste último valor podrá modificarse si se desea.

En la Figura 3-12 se observa el menú de las acciones que pueden ejecutarse sobre una

clase y la ventana que aparece cuando la editamos. En esta ventana hay una tabla donde en el

único campo que el usuario podrá escribir para modificarlo será en el nombre de la clase.

Figura 3-12. Características de una clase

El usuario no podrá dar a la clase un nombre que empiece por las letras “idc”, para que

no haya conflictos con los nombres al crear nuevas clases. En el caso de que el usuario intente

dar un nombre así, el sistema mostrará un mensaje indicando que esto no puede hacerse.

Asimismo, el nombre de la clase no se verá modificado a no ser que el usuario le asigne un

nombre válido, y que no esté repetido en el diagrama.

Nombre de clase

<< Estereotipo>>

Atributos de la clase

Métodos de la clase

Page 102: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

En la Figura 3-13, hay una clase en el diagrama a la que se le intenta cambiar el nombre

por “idc1”. En este caso, el sistema muestra el mensaje de error que aparece en la figura y sigue

abierta la ventana de las propiedades de la clase, donde el usuario podrá dar un nombre válido

a la clase. En el caso de que se cierre esta ventana sin que el nombre que se le haya indicado

sea válido, la clase seguirá llamándose “idc0”.

Figura 3-13. Cambio de nombre no permitido para una clase

Por otro lado, si se intenta modificar el nombre de una clase, asignándole otro nombre

que ya está siendo utilizado por alguna clase en el diagrama, el sistema le informará de la

situación mediante un mensaje y no se lo permitirá. Por ejemplo, si hay una clase en el

diagrama con nombre “usuario” y se intenta cambiar el nombre de una segunda clase para

asignarle este mismo nombre, el sistema sacará por pantalla el mensaje mostrado en la Figura

3-14 y dejará abierta la ventana de las propiedades para que lo intente con otro nombre válido.

De no ser así, se mantendrá el nombre que tenía asignado la clase antes de intentar

cambiárselo.

Para comprobar que no haya nombres repetidos, no se tendrá en cuenta si está en

mayúsculas o minúsculas o si hay espacios al principio o al final del nombre.

Page 103: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Figura 3-14. Cambio de nombre duplicado para una clase

Por otro lado, si se selecciona la opción de eliminar la clase, el sistema preguntará al

usuario si realmente quiere seguir adelante con esa opción porque de ser así no solo se

eliminará la clase, sino que también se eliminarán del diagrama las relaciones que tengan a esta

clase como origen o como destino. Además, no habrá forma de recuperarlas una vez

eliminadas, sin otra opción que volver a incorporarlas al diagrama desde el principio.

Figura 3-15. Mensaje de confirmación para eliminar una clase

Page 104: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Para añadir un nuevo atributo a al clase seleccionada, se hará clic con el botón

izquierdo del ratón sobre el dibujo que aparece en la parte central, destinada a los atributos, en

la clase. Se trata del dibujo marcado en la Figura 3.16. De esta manera, se abre una ventana

que permite otorgar de una serie de propiedades al atributo.

Figura 3-16. Propiedades de un atributo

Entre las propiedades del atributo está un identificador, que la aplicación asigna

automáticamente en el momento de añadir un nuevo atributo a la clase, y cuyo valor no puede

modificarse por el usuario. Este valor será un string que empieza por el identificador de la

clase, seguido de una “a” y el número de atributos que se le han añadido a la clase hasta el

momento. Además, cada atributo tendrá:

un nombre, que será una cadena que el usuario podrá darle libremente

el tipo de dato del atributo, para lo que el usuario podrá darle un valor entre void,

boolean, date, int, float, double, string, o cada uno de los nombres que tienen las clases

que existen en el diagrama

cardinalidad mínima del atributo, donde el usuario podrá darle un valor entre 0,

0..1, 0..n, 1, 1..n, n o dejarlo sin especificar

cardinalidad máxima del atributo, donde, al igual que en caso anterior, el usuario

podrá darle cualquiera de esos valores

el modo de acceso del atributo, donde el usuario podrá elegir un valor para cada

atributo entre friendly, private, protected y public

En caso de que se desee modificar alguno de los valores para las propiedades de un

atributo ya definido, habrá dos formas de hacerlo: bien pinchando con el botón izquierdo del

Page 105: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

ratón sobre ese atributo en lugar del dibujo que se ha indicado antes, o bien pinchando con el

botón derecho sobre el atributo, entonces saldrá un menú donde habrá que seleccionar la

opción “edit atributte”. De esta manera, aparecerá nuevamente la ventana que acaba de

describirse, de las propiedades del atributo, con los valores dados hasta el momento, y donde

podrán cambiar las propiedades del atributo seleccionado.

Figura 3-17. Menú de acciones para un atributo

Si lo que se quiere añadir es un nuevo método a una clase, se hará clic con el botón

izquierdo del ratón sobre el dibujo que aparece en la parte inferior, destinada a los métodos,

dentro de la clase a la que se le desee incorporar el nuevo método. De forma semejante al caso

de los atributos, se abre una ventana que permite dar valores a las propiedades del método.

Figura 3-18. Propiedades de un método

La primera propiedad de un método, cuyo valor asigna la aplicación automáticamente

en el momento de añadirlo, es el identificador. Su valor es un string que empieza por el

identificador de la clase, seguido de una “m” y el número de métodos que se han añadido a la

clase anteriormente, y no podrá ser modificado. Conjuntamente, cada método tendrá otras

propiedades que el usuario podrá modificar:

el nombre del método, para el cuál, el usuario podrá asignar cualquier cadena

Page 106: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

el tipo del valor que devuelve el método, donde el usuario podrá seleccionar el tipo

que desee entre void, boolean, date, int, float, double, string, y cada uno de los nombres

que les ha dado a las clases que ha creado en el diagrama

el modo de acceso del método, donde el usuario podrá elegir un valor entre friendly,

private, protected y public

parámetros: este campo lo podrá rellenar el usuario como desee y en la clases se

verá este valor entre paréntesis, al lado del nombre del método

Para modificar los valores de las propiedades de un método, se hará clic con el botón

izquierdo del ratón sobre el método deseado, en lugar del dibujo que se ha comentado, con el

fin de abrir nuevamente la ventana de las propiedades del método con los valores dados hasta

ese momento. Otra forma de acceder a esta ventana es haciendo clic con el botón derecho del

ratón sobre el método deseado, y seleccionando “edit method” del menú que se despliega. Aquí

podrán modificarse estos valores nuevamente.

Figura 3-19. Menú de acciones para un método

La segunda opción de las posibles que aparecen al hacer clic con el botón derecho del

ratón sobre un atributo o sobre un método, es “delete attribute” o “delete method”,

respectivamente. Si el usuario selecciona esta opción, el sistema mostrará un mensaje

informativo, similar al que abrirá cuando se selecciona la opción de eliminar una clase, para

que se confirme si realmente se desea eliminar el atributo o método seleccionado. En este caso

tendrá dos opciones: confirmar o denegar. Si se pulsa “si”, se borrará el atributo o método

seleccionado y si se pulsa “no”, se quedará como estaba.

Las siguientes opciones que aparecen al hacer clic con el botón derecho del ratón

sobre una clase, independientemente de la parte sobre la que se sitúe, afectan a la clase y no

solo a los atributos o los métodos de esta. Estas opciones son para cambiar el color de una

clase, y para moverla al frente o al fondo, si está solapada con otras.

Page 107: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Figura 3-20. Menú de acciones para una clase

Las relaciones entre las clases pueden ser de dependencia, de generalización, de

asociación, de agregación o de composición. Según se trate de un tipo relación u otro, tendrá

un aspecto distinto. En los botones que añaden las relaciones al diagrama aparece esta

apariencia de cada una de las relaciones para que el usuario pueda seleccionarla a la hora de

incorporarla en el panel.

Para añadir una relación al diagrama, primero se seleccionará el botón perteneciente al

tipo de relación que se quiere, en la barra de herramientas situada en la parte superior del panel

de dibujo. A continuación se marcará con el ratón la clase que se quiere como origen de la

relación y después la clase que se quiere que sea el destino. De esta manera, se dibuja la

relación entre estas dos clases.

En el momento en que se crea una relación, el sistema le asocia un identificador que el

usuario no podrá modificar. Este dato será un string que empezará por “idr”, seguido del

número de relaciones que se han añadido al diagrama antes que ella.

Todas las relaciones tienen asociados una serie de datos que son comunes

independientemente del tipo que tengan. Estos datos comunes son, además del identificador,

los siguientes:

nombre de la relación: es un dato de tipo string que podrá proporcionar el usuario.

Su valor aparecerá en el centro de la línea que representa gráficamente la relación

en el diagrama.

identificador de la clase origen de la relación. Su valor lo asigna directamente la

aplicación a la relación cuando esta se crea, tendiendo en cuenta la primera clase

que conecta.

Page 108: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

identificador de la clase destino de la relación. Al igual que en el anterior, será un

valor que proporciona la aplicación que en este caso corresponderá con la segunda

clase que una la relación.

Otra propiedad de las relaciones es el role que desempeñan cada clase dentro de la

relación. En todos los tipos de relación se proporciona un role a la clase origen y otro a la

clase destino, excepto en las relaciones de herencia, que solo se contemplará el role del origen.

Estos roles son valores que proporciona la aplicación a cada relación en el momento de

añadirla, y variarán teniendo en cuenta la naturaleza de cada relación.

En todos los tipos de relaciones, excepto en las de herencia, hay dos valores que el

usuario puede elegir entre una serie de opciones. Estos valores se refieren a la multiplicidad

que tiene la relación y se dará un valor para la cardinalidad que podrá tener el role origen y

otro valor para la cardinalidad que podrá tener el role destino.

Los valores que podrá tomar este campo son: 0, 0..1, 0..n, 1, 1..n y n, además de poder

dejarlo sin especificar. En caso de que el usuario dé uno de estos valores concretos a la

multiplicidad, este se verá representado en la relación, en el lado de la clase que corresponda.

Además, si se trata de una relación de dependencia, se añadirán dos campos que

reflejarán roleAInstanciatedCard.

Para ver y poder modificar los valores que tiene una relación asociados se hará clic con

el botón derecho del ratón sobre la relación, saliendo el menú que se muestra en la Figura 3-

21, y a continuación se seleccionará “edit relationship”.

Figura 3-21. Menú de acciones para una relación

En la Figura 3-22 se observa cada uno de estos campos para las propiedades de los

cinco tipos de relaciones que pueden representarse en un diagrama de clases con esta

aplicación. Los valores que vienen dados son los que asigna la herramienta automáticamente y

que el usuario no puede modificar.

Page 109: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Figura 3-22. Tablas de las propiedades para cada uno de los tipos de relaciones posibles

Las acciones que se podrán ejecutar sobre una relación serán editarla o borrarla. Si se

selecciona la opción de eliminar una relación, el sistema mostrará al usuario un mensaje para

que confirme si realmente desea borrarla del diagrama de forma permanente.

Figura 3-23. Mensaje de confirmación para eliminar una relación

El primer botón que aparece en la barra de herramientas del panel, y el único que

queda por comentar es el de la flecha. Este botón lo que hará es darle al puntero del ratón la

Page 110: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

función de seleccionar. Se marcará cuando se tenga seleccionado el de la clase o el de una

relación y el usuario no quiera incorporar esta al diagrama.

La funcionalidad más importante que se ha incluido en esta herramienta es la de

incorporar patrones, previamente establecidos, en el diagrama de clases que se está realizando,

sin tener que ir incluyendo cada una de sus clases y relaciones uno a uno. Esto facilita la labor

del diseño y la hace más rápida y eficaz.

Para añadir un patrón, se selecciona con el ratón el que le interese al usuario, de entre

los disponibles en el árbol que aparece en la ventana de la izquierda en la interfaz, y se

arrastrará hasta el panel de dibujo donde se está representando el diagrama. Si hasta ese

momento no hay ninguna clase incluida, el patrón se dibuja directamente, con las clases y

relaciones que se incluyen en él.

Si al arrastrar el patrón al panel de dibujo, hay alguna clase ya dibujada, el sistema

muestra al usuario una ventana. En esta aparecen los nombres de las clases que tiene el patrón

en el lado izquierdo, y en el lado derecho un menú despegable por cada una de las clases del

patrón, con los nombres de las clases que ya están dibujadas en el diagrama en ese momento.

El usuario puede asociar una clase de las ya existentes para que ocupe el lugar de la que forma

parte del patrón. Así la del patrón será sustituida por la ya existente y debajo de su nombre se

mostrará entre los signos “<<” y “>>” el nombre de la clase del patrón que representa.

Si, por el contrario, el usuario deja seleccionada la opción “ninguno” del menú, y pulsa

“Ok”, se añadirán nuevas clases para representar el patrón arrastrado. Ocurrirá lo mismo si

después de seleccionar cualquier opción en los menús despegables, el usuario pulsa la opción

“Cancel” o cierra la ventana.

Las relaciones del patrón también serán representadas en el diagrama entre las clases

originales del patrón o entre las que el usuario haya elegido como sustitutas de estas. De esta

forma también se verá representado su nombre y la multiplicidad entre las clases vinculadas.

Una restricción dentro de los diagramas es que no va a poder haber más de una

relación del mismo tipo entre dos clases, de manera que si existe una relación determinada

entre dos clases y se intenta añadir una del mismo tipo con las mismas clases origen y destino,

esta segunda relación no se incorporará al diagrama, permaneciendo en él la primera, aunque

el nombre o la multiplicidad de cada una sean distintas.

Page 111: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

En la Figura 3-24 se muestra el proceso para incorporar un patrón al diagrama. Puede

observarse la apariencia de la aplicación y el mensaje intermedio para que el usuario pueda

sustituir las clases del patrón por las que ya tiene dibujadas.

Para este caso se supone que hay representada una clase “libro”, con sus atributos y

métodos. En el árbol de patrones donde se indican los patrones que hay disponibles en el

repositorio, se buscaría el patrón “Assembly-Part” y se arrastraría desde este árbol hasta el panel

del diagrama de clases.

A continuación se abrirá una ventana dónde indicará que se seleccionen las clases que

se quieren cambiar. Para cada clase que contiene el patrón se podrá asociar una de las clases

que ya están representadas, para ser sustituidas por estas últimas. En este caso, se sustituirá la

clase “Assembly” del patrón por la clase “libro”, que ya está dibujada en el diagrama.

Al acabar la selección de las clases para la sustitución dentro del patrón, se pulsará el

botón Ok y esta ventana se cerrará.

De esta manera, solo se añadiría una nueva clase al diagrama, que sería la clase “Part”,

perteneciente al patrón, y la relación existente entre ambas. Echo esto, solo faltaría añadir los

atributos o métodos que se deseen a la nueva clase.

Como la clase libro es parte del patrón y ha pasado a desempeñar la función de la clase

“Assembly”, esto se indicará mediante el estereotipo, de manera que la clase a la que sustituye

dentro del patrón aparece debajo del nombre de la propia clase, entre los signos “<<” y

“>>”.

Si más tarde, esta clase volviera a sustituir a otra de un patrón que se añada, el

estereotipo se modificará de forma que siempre tendrá la última clase del patrón que haya

sustituido.

Page 112: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Figura 3-24. Utilizar patrón

En el caso de que haya en el panel una clase con el mismo nombre que alguna de las

contenidas en el patrón que se va a utilizar, y esta segunda clase no es sustituida por ninguna

Page 113: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

otra, al representarse en el panel, su nombre se verá modificado de forma que lo haga único en

el diagrama. Para ello se le añadirá un número al valor que ya tiene.

Como ejemplo, puede tenerse en el panel una clase cuyo nombre sea “Actor” y a

continuación, el usuario utiliza el patrón de colaboración “actor-role”, sin sustituir ninguna

clase por otra. El resultado sería el mostrado en la Figura 3-25.

Figura 3-25. Nombres de las clases de los patrones

El color con el que se dibujarán las clases en el diagrama, en un principio, y a no ser

que el usuario indique otra cosa, es blanco, igual que el fondo del panel de dibujo. Pero existe

la posibilidad de modificar este color, de modo que podrían simularse distintos paquetes,

representando las clases que pertenecen a uno u a otro de un color distinto. De igual forma,

podría cambiarse el color a algunas clases que se consideren especiales, dependiendo de las

necesidades o gustos del usuario.

Esta funcionalidad se obtiene mediante la opción “set color”, que está en dos sitios. Por

un lado, si se tiene una clase ya representada en el diagrama, y se desea darle un color distinto,

se seleccionará la clase y se hará clic con el botón derecho del ratón sobre cualquier parte de la

Page 114: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

clase, apareciendo un menú donde estará incluida esta opción. Si se selecciona “set color”, se

abrirá una nueva ventana donde el usuario podrá elegir el color deseado para la clase

seleccionada.

Por otro lado, si en la barra de menús, el usuario selecciona “Edit > Set Color”, saldrá la

misma ventana donde se le permitirá al usuario optar por el color que prefiera. Pero en este

caso, el color afectará a las clases que dibuje a continuación.

Figura 3-26. Cambio de color de una clase

La elección de distintos colores facilita distinguir de un vistazo los diferentes tipos de

clases representadas.

Una vez que se ha realizado el diagrama de clases deseado, éste puede guardarse en dos

formatos distintos: con extensión .usi y con extensión .jpg. Además, también puede

imprimirse.

Si se desea guardar el diagrama en código UsiXML, lo que hará es convertir cada dato

del diagrama en este lenguaje. Para ello se seleccionará de la barra de menú la opción “File >

Save”, con lo cual se abre una ventana donde podrá escogerse el directorio donde guardar el

archivo y el nombre con el que desea guardarse, con extensión .usi.

Page 115: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

También puede guardarse el dibujo del diagrama representado, para ello se

seleccionará “Save Graphics” en lugar de “Save” y se abrirá una ventana semejante a la de antes,

donde se ha de elegir el directorio y nombre con el que se guardará la figura, con formato .jpg.

De esta forma, podrá abrirse posteriormente con cualquier visor de imágenes que permita este

formato.

Las ventanas que se abren para seleccionar el nombre y directorio en ambos casos

quedan representadas en la Figura 3-27 y 3-28 respectivamente.

Figura 3-27. Ventana para guardar el código del diagrama de clases

Page 116: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Figura 3-28. Ventana para guardar la imagen del diagrama de clases

Otras opciones para guardar el diagrama es mediante las combinaciones de teclas

Alt+S, si se desea guardar el código, o Alt+G, si lo que se quiere guardar es la imagen. En

ambos casos se abren las mismas ventanas que se comentaban anteriormente para seleccionar

el directorio y el nombre con el que desea guardarse.

Un diagrama anteriormente guardado con formato UsiXML, puede abrirse desde la

aplicación, de forma que aparecerá en el panel de dibujo como se había guardado,

manteniendo las mismas clases, relaciones y propiedades.

Habrá dos formas para abrir un archivo con extensión .usi: seleccionando del menú la

opción “File > Open”, o pulsando la combinación de teclas Alt+O. Ambas opciones abrirán

una nueva ventana donde el usuario podrá navegar entre las carpetas de su ordenador para

acceder al archivo que desea abrir.

Page 117: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Si el usuario desea abrir un nuevo panel de dibujo vacío, deberá seleccionar del menú

la opción “File” y después “New”, o con la combinación de teclas Alt+N.

Si en el panel actual hay algo dibujado, tanto si se cierra este panel, como si se

selecciona la opción de abrir un archivo existente o un nuevo panel vacío, el sistema

preguntará al usuario si desea guardar el diagrama en el que está y le dará la opción de

seleccionar el directorio y el nombre que desee para ello.

El diagrama dibujado en el panel tiene un código XML asociado, que será similar al

que se guarda con la opción de guardar con extensión .usi y que el usuario puede visualizar en

cualquier momento. Para ello seleccionará del menú la opción “Window > XML”, o pulsará la

combinación de teclas ALT+X. En ambos casos se abrirá una nueva ventana donde aparece el

código XML que corresponde al diagrama representado en el panel del dibujo en ese

momento.

Con el ejemplo del libro mostrado anteriormente, en la Figura 3-24, con la explicación

del proceso a seguir para añadir un patrón al diagrama, se obtendría el código mostrado en la

Figura 3-29.

Figura 3-29. Código UsiXML para un diagrama de clases

Si el usuario cierra la ventana del árbol de los patrones o la del editor de clases, podrá

abrirlas nuevamente simplemente seleccionando del menú “Window > Patterns” o “Window >

Page 118: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Diagram editor” para abrir una u otra. Otra opción es con la combinación de teclas ALT+P o

ALT+D respectivamente. Estas opciones no estarán disponibles si las ventanas ya están

abiertas.

El usuario tendrá distintas formas de organizar estas ventanas, dentro del menú

“Window”, con las opciones “Next”, “Cascade” y “Tile”, o con las combinaciones de teclas

ALT+N, ALT+C y ALT+T respectivamente.

La aplicación también ofrece la posibilidad de imprimir el diagrama que hay

representado en el editor. Para ello, el usuario seleccionará del menú las opciones “File >

Print”, y se abrirá una ventana representada en la Figura 3-30, para seleccionar la impresora y

algunas opciones.

Figura 3-30. Ventana para imprimir un diagrama de clases

El usuario puede examinar la ayuda de la aplicación en la opción “Help” del menú o

con las teclas ALT+H. De este modo se abrirá una nueva ventana donde se podrá acceder a

un manual de esta aplicación.

Page 119: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

El “acerca de” de la aplicación puede consultarse en la opción “Help > About us...” del

menú, o con la combinación de teclas ALT+A. Así se abrirá una ventana con información de

la aplicación como la versión y los autores de esta, como se indica en la Figura 3-31.

Figura 3-31. “About us...” de la aplicación

Para cerrar la aplicación puede pulsarse con el ratón en la cruz de la esquina superior

derecha o mediante la opción “File” y “Quit” del menú, o mediante la combinación de teclas

ALT+Q. De esta forma, la ventana principal de la aplicación se cerrará sin más.

3.5 Análisis y discusión

Siguiendo la trayectoria que ha llevado la Ingeniería del Software desde los tiempos de

su aparición, se observa una tendencia al modelado, y por eso UML y MDD tienen una

importancia tan grande en el desarrollo. Por otro lado, en los últimos tiempos se apuesta cada

vez más por las metodologías ágiles. Por eso se considera interesante que existiera algún tipo

de metodología ágil con modelado.

La herramienta propuesta puede ser una buena elección para realizar ese modelado

debido a su sencillez de uso y eficiencia, al poder incluir directamente patrones en el diagrama,

lo que hace que la tarea del modelado se realice de una manera más rápida al estar el diseñador

familiarizado con el término y los distintos patrones que pueden incluirse.

Page 120: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin
Page 121: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Capítulo 4. Caso de estudio: utilización del entorno facilitado

El tipo de herramienta propuesta en este proyecto final de carrera puede resultar de

gran utilidad en determinadas asignaturas de Ingeniería del Software, en los estudios de

Ingeniería Informática.

Su principal importancia reside en la facilidad con la que puede ser tratado el

modelado del dominio gracias a ella y la fácil inclusión de los patrones en el diagrama. Por eso

se cree que su utilización en la primera toma de contacto con el modelado puede facilitar la

manera de modelar para los estudiantes inexpertos, al poder utilizar la experiencia de otros en

sus propios trabajos.

4.1 Descripción del caso de estudio

Para probar la herramienta, se mostrará su utilización para el modelado de un ejemplo

concreto. Para ello se describirá el problema y a continuación se hará el correspondiente

diagrama de clases con la aplicación desarrollada.

De esta forma, se identificarán y utilizarán los patrones de colaboración que se

encuentren en el modelo y se irán explicando los pasos a llevar a cabo.

En primer lugar, se explicará en lo que consiste el caso de estudio que se ha

considerado.

Se trata de proponer un diagrama de clases para gestionar una empresa de autobuses

como la descrita a continuación. Para ello debe tenerse en cuenta cada una de las

características reseñadas.

Page 122: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Se desea diseñar un modelo de representación de compañías de

autobuses que sea capaz de gestionar las reservas que los clientes de la

compañía deseen realizar sobre los diferentes trayectos que ésta realiza. El

modelo debe cumplir los siguientes requisitos:

Las compañías de autobuses realizan trayectos entre dos ciudades

(origen y destino), con un número, una fecha y una hora de salida y

otra de llegada.

Los trayectos se realizan en autobuses que tienen un modelo, una

matricula y la capacidad máxima que admiten.

Las personas que participan en el modelo tienen todas: nombre, DNI,

dirección, número de teléfono y edad, y serán empleados o pasajeros.

Los empleados tienen un número de seguridad social y se conoce su

antigüedad en la empresa.

Los pasajeros tienen un código de cliente.

Los autobuses sólo realizan un trayecto y un trayecto sólo lo realiza un

autobús.

Para que un pasajero pueda viajar en un autobús debe hacer una

reserva sobre un determinado trayecto. Las reservas tienen un precio y

un número de asiento en el autobús.

Page 123: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

4.2 La especificación gráfica

Para la elaboración del diagrama de clases, lo primero que habrá que hacer es

identificar las entidades existentes en el caso de estudio. Cada entidad se corresponderá con

una nueva clase en el diagrama. Además, habrá que conocer las características que tendrá cada

entidad encontrada, que serán los atributos que habrá de tener la clase. Todos los atributos de

todas las clases serán privados, para que únicamente pueda accederse a ellos a través de los

métodos permitidos.

Por otro lado, será necesaria la posibilidad de realizar una serie de acciones sobre cada

una de estas entidades con el fin de poder controlar la gestión de esta empresa de autobuses.

Estas acciones serán los métodos que llevará asociados cada una de las clases, los cuales habrá

que identificar.

A continuación se muestran las clases que habrá que considerar en el modelo, junto

con sus atributos y los métodos que llevará asociados cada una de ellas.

COMPAÑÍA: Son cada una de las compañías de autobuses que se contemplan.

Para diferenciarlas entre sí tendrán asociado un atributo que es el nombre de la

compañía. Sus métodos son:

- altaEmpleado(string, string, int): void → da de alta a un nuevo empleado

en la base de datos de la compañía. Necesita como parámetros el nombre,

el DNI y el número de la seguridad social del empleado.

- altaPasajero(string, string): void → da de alta en la base de datos un nuevo

pasajero que viaja con la compañía. Necesita conocer el nombre y el DNI

del pasajero.

- altaAutobús(string, string, int): void → da de alta en la base de datos un

nuevo autobús que tendrá la compañía a su servicio. Recibe como

parámetros el modelo y la matrícula del nuevo autobús y el número de

plazas del que dispondrá.

- altaTrayecto(string, string, autobús): void → da de alta un nuevo trayecto

que contemplará la compañía. Necesita saber el lugar de origen y de

destino de dicho trayecto y el autobús que lo cubrirá.

- buscarTrayecto(string, string, date) : trayecto → busca en la base de datos

de la compañía un trayecto que cumpla con los requisitos indicados. Coge

Page 124: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

como parámetros el lugar de origen y de destino y la fecha de salida que ha

de tener el trayecto y devuelve el trayecto encontrado que ofrece la

compañía con estas características.

- addPasajero(pasajero): void → añade un pasajero a los atendidos por la

compañía. Recibe como parámetro dicho pasajero.

- addEmpleado(empleado): void → añade un nuevo empleado contratado

por la compañía. Necesita como parámetro dicho empleado.

- addAutobús(autobús): void → añade, a los que ya tiene la compañía, un

nuevo autobús, el cual necesitará como parámetro.

Para que en el modelo, la clase compañía ofrezca toda esta información descrita,

deberá aparecer como se muestra en la Figura 4-1.

Figura 4-1. Clase compañía

TRAYECTO: Es cada uno de los viajes que ofrecerá la compañía. Cada trayecto

llevará asociado un número, que será el que lo identifique entre el resto de

trayectos existentes. Además, se identificará un origen y un destino, que son las

ciudades entre las que estará el trayecto, y una hora de salida y de llegada. Necesita

los siguientes métodos:

- trayecto(): trayecto → crea un nuevo trayecto.

- solicitarPlaza(): reserva → se solicita una plaza para el trayecto y devuelve

una reserva para este.

- addReserva(reserva): void → añade una reserva a las ya gestionadas.

Necesita como parámetro la reserva de la que se trata.

Page 125: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

De esta forma, la clase trayecto tendrá una apariencia similar a la reflejada en la

Figura 4-2 en el modelo.

Figura 4-2. Clase trayecto

AUTOBÚS: Es cada uno de los autobuses que tiene la compañía y que se dedicará

a cubrir los trayectos ofrecidos por esta. De cada autobús se conocerá el modelo y

matrícula del vehículo y la capacidad máxima de viajeros que admite. Los métodos

de los que dispondrá son los siguientes:

- Autobús(string, string, int): autobús → es un constructor de autobús, al

que se le pasarán como parámetros el modelo, la matrícula y la capacidad y

devolverá el propio autobús.

La representación gráfica de esta clase se muestra en la figura 4-3.

Figura 4-3. Clase autobús

PERSONA: Son las personas que van a formar parte del modelo. Se dividirán en

empleados o pasajeros. Cada persona tendrá un nombre, una dirección, un DNI,

un teléfono y una edad. Necesitará disponer de los métodos siguientes:

- Persona(string, string): persona → es un constructor que toma el nombre y

el DNI y devuelve una persona con esos datos.

Page 126: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

La apariencia que tendrá esta clase en el modelo corresponde a la Figura 4-4.

Figura 4-4. Clase persona

EMPLEADO: Son las personas que trabajan dentro de la compañía. De ellos se

conocerá el número de seguridad social (NSS) y su antigüedad dentro de la

empresa. Los métodos asociados a esta clase son los siguientes:

- empleado(string, string, int): empleado → es un constructor al que se le

indica el nombre, el DNI y el NSS devuelve un empleado con esos datos.

La Figura 4-5 se muestra la representación gráfica que tendrá esta clase en el

modelo.

Figura 4-5. Clase empleado

PASAJERO: Son las personas que viajan con la compañía. Estos quedarán

registrados cuando hagan algún trayecto en alguno de los autobuses de la

compañía. Para ello se conocerá su código de cliente, y los métodos que necesitará

esta clase para la gestión son los siguientes:

- pasajero(string, string): pasajero → es el constructor, al que se le pasa el

nombre y DNI y devuelve un pasajero.

Page 127: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

- hacerReserva(string, string, date): reserva → hace la reserva para un

pasajero. Ha de conocer el origen y el destino del trayecto y la fecha en la

que se realizará y devuelve la reserva realizada.

- cancelarReserva(string, string, date): void → cancela la reserva realizada

previamente por un pasajero. Habrá que indicarle el origen y el destino del

trayecto y la fecha en la que se realizará.

- añadirReserva(reserva): void → se le añade una reserva al pasajero en su

lista de reservas.

Gráficamente, la representación que tendrá esta clase en el diagrama es la de la

Figura 4-6.

Figura 4-6. Clase pasajero

RESERVA: Un pasajero deberá hacer una reserva sobre el trayecto que desee para

que pueda viajar en un autobús de la compañía. De cada reserva se conocerá su

precio y el número de asiento dentro del autobús. Tiene asociados los siguientes

métodos:

- reserva(): reserva → Crea una nueva reserva.

- setTrayecto(trayecto): void → Añade un nuevo trayecto a la base de datos

para la reserva.

- setPasajero(pasajero): void → Añade un nuevo pasajero a la base de datos

para la reserva.

En la Figura 4-7 se muestra la clase gráficamente, como aparecerá en el diagrama.

Page 128: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Figura 4-7. Clase reserva

Entre las entidades encontradas, se distingue dos relaciones de herencia, ya que las

personas que participan en el modelo podrán ser empleados o pasajeros. De esta forma,

pasajero y empleado heredan los atributos de persona. La relación entre estas tres clases será como

la indicada en la Figura 4-8.

Figura 4-8. Relaciones de herencia en el diagrama

Además, entre las clases que se han distinguido pueden apreciarse una serie de

relaciones que se identifican con algunos de los patrones de colaboración que nos ofrece la

herramienta. Por lo que la inclusión de estas clases y relaciones al diagrama puede hacerse de

una forma inmediata, arrastrando el patrón correspondiente e identificando las clases del

patrón con las que ya estén representadas, en el caso de que lo estén, y completando

posteriormente lo que falte.

Se conoce que las compañías realizan trayectos, por lo que habrá una relación entre

estas dos clases. La relación será de asociación y una compañía podrá ofrecer varios trayectos.

Page 129: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Esta relación puede representarse mediante el patrón Item-SpecificItem, y la representación en el

diagrama será similar a la indicada en la Figura 4-9.

Figura 4-9. Patrón “Item-SpecificItem” para la relación entre compañía y trayecto

Por otro lado, cada compañía deberá tener una serie de autobuses para poder

proporcionar sus servicios, por lo que habrá otra relación entre estas dos clases. Tal relación

podrá ser de composición o de agregación, mas se considerará de composición puesto que la

compañía dejaría de tener sentido si no tuviera ningún autobús. Esta relación, así descrita se

asemeja al patrón “Group-Member”, donde el grupo sería la compañía y los miembros de esta

serían los autobuses que posee. De esta forma, esta parte del modelo puede representarse en

el diagrama con la inserción de este patrón, quedando como se indica en la Figura 4-10.

Figura 4-10. Patrón “Group-Member” para la relación entre compañía y autobús

De forma paralela, habrá una relación similar entre compañía y empleado. Una

compañía tendrá contratados una serie de empleados para que realicen el trabajo que da la

empresa. Igual que pasaba en el caso anterior, la compañía dejará de tener sentido si no hay

ningún empleado trabajando para ella. De esta forma, la relación existente entre estas dos

clases será otra vez de composición y volverá a repetirse el patrón que se utilizaba

anteriormente, de “Group-Member”. Igual que antes, la compañía se identificará con el grupo,

siendo esta vez cada uno de los empleados los miembros de este grupo.

Page 130: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

La realización del diagrama de clases para esta parte, utilizando el patrón indicado tiene

como resultado la Figura 4.11.

Figura 4-11. Patrón “Group-Member” para la relación entre compañía y empleado

Otra relación observada en este caso es la existente entre trayecto y reserva. Una

reserva se hará para un solo trayecto pero un trayecto incluirá múltiples reservas. Así puede

identificarse una vez más otro patrón de colaboración, esta vez el “SpecificItem-Transaction”,

siendo la clase del trayecto la correspondiente al SpecificItem y las reservas, cada una de las

transacciones que se hacen sobre el anterior. La representación gráfica que se obtendría en el

diagrama es la reflejada en la Figura 4-12.

Figura 4-12. Patrón “SpecificItem-LineItem” para la relación entre trayecto y reserva.

Por otro lado, un pasajero podrá hacer las reservas que desee en la compañía de

autobuses, pero una reserva solo la podrá hacer un único pasajero, puesto que es para un

número de asiento concreto. La relación entre las clases pasajero y reserva, vista de esta forma,

correspondería con el patrón “Role-Transaction”, donde el pasajero cumple el papel de Role y

la reserva el de Transaction. Esta relación dibujada en el modelo, con la utilización de este

patrón tendría la apariencia que se refleja en la Figura 4-13.

Page 131: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Figura 4-13. Patrón “Role-Transaction” para la relación entre pasajero y reserva.

Cabe comentar que para la utilización de los patrones en los casos anteriores se han

representado en el diagrama, en primer lugar, cada una de las clases que se iban a relacionar,

con sus respectivos atributos y métodos, y después se ha arrastrado el patrón correspondiente,

sustituyendo en él las clases que ya estaban incluidas en el diagrama por las que se

contemplaban en el patrón. De esta manera, no se han añadido nuevas clases con el patrón,

pero sí las relaciones. Por eso, debajo del nombre de las clases que se han sustituido, aparece

su estereotipo, entre los signos << y >>. El nombre que se ve entre estos signos es el de la

clase que está sustituyendo, dentro del patrón. Si una clase sustituye a otra perteneciente a un

patrón en más de una ocasión, el estereotipo que queda visible es el del último patrón que fue

añadido.

Analizando en detalle el caso de estudio que nos ocupa, con sus clases y las conexiones

que las unen, no se han encontrado mas relaciones afines a los patrones de colaboración, no

obstante, existen otros tipos de relaciones entre las clases.

Una de estas relaciones es la existente entre compañía y pasajero. La compañía atenderá a

todos los pasajeros que viajen a través de ella. Esta será una relación de asociación y su

representación se observa en la Figura 4- 14.

Figura 4-14. Relación entre compañía y pasajero

Page 132: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Otra relación en este caso es la existente entre trayecto y pasajero. Habrá varios

pasajeros que hagan un mismo trayecto, y de forma paralela, un pasajero podrá hacer varios

trayectos con la compañía. Una vez más, se trata de una asociación y, por lo tanto, la relación

que habrá que representar es la indicada en la Figura 4-15.

Figura 4-15. Relación entre trayecto y pasajero

Finalmente, la última relación encontrada en el caso en estudio es la que hay entre

autobús y trayecto. Los autobuses sólo realizarán un trayecto y un trayecto solo lo realizará un

autobús. Luego, la relación que une estas clases será de asociación, como la reflejada en la

Figura 4-16.

Figura 4-16. Relación entre autobús y trayecto

Una vez consideradas todas las clases con sus atributos y métodos, y las relaciones que

pueden identificarse entre ellas, habrá que unir cada una de estas partes para obtener el

diagrama de clases completo, que corresponderá con el caso de la empresa de autobuses que

se está analizando.

De esta manera, un posible modelo para el caso de la empresa de autobuses que se está

estudiando, podría ser como el representado en la Figura 4-17.

Page 133: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Figura 4-17. Diagrama de clases del caso de estudio: empresa de autobuses

4.3 La generación de código

Una utilidad complementaria que ofrece la herramienta diseñada en este proyecto final

de carrera es la de generar código java.

Se ha decidido que el código generado sea java por las múltiples características

positivas que este ofrece. La principal es que se trata de un lenguaje portable, independiente de

la plataforma en la que se ejecute.

Además, al tratarse de un lenguaje orientado a objetos, cada objeto puede verse como

un paquete que contiene el “comportamiento” (el código) y el “estado” (datos). Esta

representación hace que la transformación del diagrama de clases a este lenguaje pueda hacerse

de una forma muy simple. Como resultado quedará un código claramente estructurado y muy

fácil de leer.

Page 134: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Por otro lado, java es un lenguaje simple, fácil de aprender. Característica esta muy

importante si se tiene en cuenta que la herramienta va especialmente dirigida a estudiantes de

ingeniería del software.

Para que el usuario pueda generar el código java correspondiente a su diagrama de

clases, lo podrá hacer a través del menú File > JAVA Code Generation o pulsando la

combinación de teclas ALT + J.

Cuando esto suceda, el sistema abrirá una ventana donde el usuario deberá indicarle el

directorio donde quiere que se genere el código. Podrá desplazarse por las carpetas de su

equipo y escribir el nombre para el nuevo directorio.

Obviamente, antes de generar el código, tendrá que estar dibujado el diagrama de

clases en el panel correspondiente, en caso de que no hubiese nada representado, la generación

de código tendrá como resultado un directorio vacío.

Dentro del directorio creado se generará un fichero .java por cada clase que haya en el

diagrama de clases. El nombre del directorio será el mismo que el de la clase que representa y

su contenido dependerá de los atributos, métodos y relaciones que tenga la clase.

Este código generado será un esqueleto que el usuario podrá completar en la medida

de sus necesidades.

Se ha generado el código para el diagrama de clases de la Figura 4-17. Se le ha indicado

al sistema que guarde el código en el directorio /autobuses, dentro de Mis documentos. Y se han

generado los ficheros mostrados en la Figura 4-18, dentro de este directorio.

Page 135: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Figura 4-18. Generación de código Java en el directorio autobuses.

A continuación se mostrará el contenido de cada uno de esos ficheros, en las Figuras

que van desde la 4-19 a la 4-25. El código se ha abierto con la aplicación JBuilder para que se

vea más claramente cada parte del código, al distinguirse con colores.

Figura 4-19. autobús.java

Page 136: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Figura 4-20. compañía.java

Figura 4-21. empleado.java

Page 137: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Figura 4-22. pasajero.java

Figura 4-23. persona.java

Page 138: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Figura 4-24. reserva.java

Figura 4-25. trayecto.java

Page 139: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

El código, en cada uno de los ficheros, puede ser modificado y completado por el

usuario, siendo en cada caso únicamente una base sobre la que programar cada clase a la que

se refiere el fichero.

En la generación de código para una clase determinada se ha obtenido un fichero con

el mismo nombre que la clase, con extensión .java. Cada clase se ha considerado un objeto, de

manera que el fichero tiene la descripción del objeto correspondiente. En primer lugar se

declaran los atributos del objeto, se establece el cuerpo del constructor de ese objeto y se

declaran los métodos que lleva asociados.

Además se tienen en cuenta las relaciones que tiene la clase para generar su código. De

esta manera, si la clase para la que se genera el código es el origen de una asociación, una

agregación o una composición, se creará en ella un objeto del tipo de la clase destino de la

relación.

Si una clase tiene una relación de herencia con otra, en el código de la clase origen se

indicará que extiende de la clase destino.

Puede darse el caso de que en el diagrama de clases una misma clase tenga relaciones

de herencia con más de una clase. En este caso, al generar el código se mostrará un mensaje de

“Warning” al usuario, puesto que Java no permite herencia múltiple. No obstante, en el código

generado se indicará que la clase extiende de todas las que es destino en las relaciones de

herencia, aunque esto daría un error al compilar el código, como ya se le ha indicado al

usuario.

4.4 Las aportaciones educativas del producto software desarrollado

Desde el primer capítulo de este documento se ha querido resaltar la importancia que

supone el hecho de que el alumno adquiera habilidades y destrezas en lo que al desarrollo de

diagramas de clases y modelado conceptual se refiere. Estas mismas actividades se ha

corroborado en el segundo capítulo que son capitales en el desarrollo de software y que

progresivamente han ido adquiriendo cada vez más importancia.

Page 140: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

En este mismo sentido y volviendo a resaltar la importancia de las actividades

mencionadas, en la actualidad, en el contexto educativo y en función de las nuevas

metodologías de enseñanza y aprendizaje, una serie de competencias se están asociando a los

diferentes títulos universitarios ofrecidos por las universidades españolas. Estas competencias

pueden consultarse en los correspondientes Libros Blancos, disponibles en la página web de la

Agencia Nacional de Evaluación de la Calidad y Acreditación (ANECA).

En este proyecto final de carrera se han tenido también en cuenta las competencias

mencionadas. En la Tabla 4-1 se recogen las competencias específicas del Título de Grado de

Ingeniería Informática, para el perfil de desarrollo del software. Entre ellas cabe destacar

algunas especialmente reseñables y relacionadas con el proyecto final de carrera realizado y la

herramienta elaborad y descrita, por ejemplo, y haciendo referencia a la correspondiente

competencia a través de su identificador numérico, 2, 11, 12, 13, 16 y 24.

Competencias específicas recogidas en el Libro Blanco para el perfil de desarrollo del

software

1. Dirigir y coordinar el proyecto de desarrollo y mantenimiento de aplicaciones, supervisando las funciones y recursos de análisis funcional, orgánico y programación, asegurando la adecuada explotación de las aplicaciones.

2. Dominar todas las etapas de la vida de un proyecto (análisis de concepción, análisis técnico, programación, pruebas, documentación y formación de usuarios).

3. Dirigir el equipo de trabajo compuesto por Analistas Funcionales, Analistas de aplicaciones, Programadores.

4. Control y seguimiento de plazos, indicadores económicos y de calidad.

5. Supervisar y coordinar el desarrollo completo de aplicaciones y administrar la introducción de los sistemas de gestión.

6. Controlar las aplicaciones en explotación, minimizando las consecuencias negativas sobre las operaciones en producción y desarrollo de aplicaciones.

7. Analizar y recoger nuevas técnicas y herramientas del mercado estudiando su viabilidad y necesidad.

8. Posibilidad de contratar recursos externos.

9. Control y Gestión del Desarrollo del Proyecto Informático.

10. Redacción, para la Dirección de Informática y para la Dirección del Proyecto de los informes que se precisan para el seguimiento del proyecto.

Page 141: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

11. Interpretar las especificaciones funcionales encaminadas al desarrollo de las aplicaciones informáticas.

12. Realizar el análisis y el diseño detallado de las aplicaciones informáticas.

13. Definir la estructura modular y de datos para llevar a cabo las aplicaciones informáticas que cumplan con las especificaciones funcionales y restricciones del lenguaje de programación.

14. Definición y descripción de procedimientos e interfaz de usuario.

15. Realizar pruebas que verifiquen la validez funcional, la integridad de los datos y el rendimiento de las aplicaciones informáticas.

16. Elaborar y mantener documentación descriptiva de la génesis, producción y operatividad de las aplicaciones informáticas.

17. Diseñar servicios de presentación que faciliten la explotación de las aplicaciones.

18. Estudiar el sistema actual existente y analizar e idear mejores medios para llevar a cabo los mismos objetivos u otros adicionales.

19. Participar en el diseño de nuevos sistemas informáticos como consecuencia de la informatización de áreas de la empresa que utilizan para el desarrollo de sus tareas métodos y procesos manuales.

20. Integrar sistemas informáticos existentes susceptibles de inter-relacionarse.

21. Escuchar y asesorar a los Usuarios en la resolución de los problemas que se les plantean con el uso de los sistemas informáticos.

22. Asesorar a los programadores en los problemas que se les plantean con la programación de los sistemas.

23. Colaborar con los responsables de Estudios y Explotación en la resolución de los fallos que se originen en los Sistemas en Producción.

24. Mantenerse al día en Técnicas, Métodos y Herramientas de Análisis y Diseño.

Tabla 4-1. Competencias específicas del título de grado en Ingeniería Informática perfil Desarrollo del

Software

En definitiva, en este proyecto final de carrera se ha contribuido a la elaboración de

una herramienta que posibilite la utilización de una experiencia útil en la elaboración de

especificaciones conceptuales, como es la disponible a través de los patrones de colaboración,

y, gracias al entorno facilitado, el ingeniero del software en formación puede realizar labores

de análisis y diseño de soluciones software reutilizando dicha experiencia.

Page 142: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

4.5 Análisis y discusión

Con el ejemplo utilizado en este capítulo se ha pretendido demostrar de forma práctica

la potencialidad de la herramienta desarrollada en este proyecto final de carrera y contribuir a

presentar cómo se utiliza. Un estudio más detallado de las facilidades que ofrece podría

realizarse a través de la consideración de su uso en distintas asignaturas disponibles en el actual

plan de estudios de la Escuela Superior de Ingeniería Informática. Estas asignaturas pueden

ser las correspondientes a los primeros cursos de las actuales titulaciones de Ingeniería

Informática, Ingeniería Técnica de Sistemas y de Gestión, concretamente aquellas asignaturas

en las que al alumnado se les presenten conceptos relacionados con programación orientado a

objetos.

Cola-CASE facilita un entorno muy intuitivo y flexible en el que los patrones están

disponibles en una carpeta que acompaña al ejecutable facilitado. El usuario puede definir sus

propios patrones e incluirlos en la carpeta mencionada. También distintos usuarios pueden

compartir sus patrones propios sin más que a través de facilitar la carpeta o ficheros asociados

a los patrones mencionados.

En este último sentido, cola-CASE puede albergar otros tipos de patrones y no se

restringe a utilizar patrones de colaboración. Es posible también incorporar el catálogo de

patrones más conocido y utilizado como es el catálogo de patrones de diseño de (Gamma et

al., 1995).

Page 143: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Capítulo 5. Conclusiones y Trabajo Futuro

Este capítulo tiene como único cometido recoger las conclusiones que pueden

obtenerse tras la realización del presente proyecto final de carrera y proponer unas pautas para

futuras investigaciones que tomen como base este proyecto.

5.1 Conclusiones

Se hace patente la necesidad de una metodología que pueda utilizar todo el equipo de

trabajo y que puedan seguir como guía y ayude a comprobar la calidad del producto final. Esta

idea podría ayudar a paliar la continua crisis que sufre el desarrollo de software.

El desarrollo dirigido por modelos separa la funcionalidad esencial del sistema y la

implementación de dicha funcionalidad, dándole una mayor importancia al modelado

conceptual en el desarrollo de software. Este paradigma promete una mejora de la

productividad y de la calidad del software.

Por lo tanto, el análisis de los requisitos es la etapa más crucial del desarrollo de un

proyecto de software, debiendo especificar estos requisitos de alguna manera. Para ello, la

elaboración de modelos resulta de gran utilidad puesto que de un vistazo más o menos simple

se puede comprender fácilmente la funcionalidad del sistema que se va a desarrollar.

Se han estudiado las principales herramientas CASE y se ha observado que pocas de

ellas consideran la experiencia en sus proyectos, y las que lo hacen únicamente contemplan los

patrones de diseño.

Se ha comprobado la necesidad de aportar experiencia a los proyectos, pudiendo ir

más allá de la propia del desarrollador, utilizando para ello los patrones de colaboración,

disponibles en el ámbito del modelado conceptual. Estos patrones están sobradamente

probados y son una sólida base para la búsqueda de soluciones a problemas comunes en el

desarrollo de aplicaciones.

Page 144: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Con la herramienta Cola-CASE se obtiene una alternativa a las potentes herramientas

CASE disponibles, donde se permite el modelado del dominio de una forma simple e intuitiva,

con la posibilidad de añadir a este los patrones de colaboración que sean necesarios,

disponibles en el repositorio facilitado. Y con la posibilidad de modificar o añadir nuevos

patrones.

El entorno desarrollado permite centrarse en el análisis y el diseño más que en la

implementación. Toma como base la experiencia proporcionada por Nicola, Mayfield, y

Abney en su libro (Nicola et al., 2001), con sus patrones ya definidos y documentados y sirve

de sustento para su utilización en los modelos del negocio.

Además, desde el primer momento se ha tenido en mente que esta herramienta

estuviera destinada para el uso de estudiantes de ingeniería del software, por lo que la sencillez

de esta se ha hecho patente desde el principio. Con lo que conlleva su fácil utilización.

5.2 Trabajo Futuro

Con la herramienta desarrollada, se pretende abrir paso a otras herramientas que

faciliten la utilización de patrones en el modelado, para que el usuario pueda disponer de las

estructuras asociadas con cada patrón sin tener que realizar el diseño desde cero de cada uno

de los patrones.

Esta es una primera versión de la herramienta, por lo que puede mejorarse en algunos

aspectos. Por un lado, podrían hacerse una mejora en cuanto a la usabilidad, haciendo para

ello más flexibles las asociaciones y mejorarse el aspecto de la interfaz y de los diagramas, para

que resultara más atractivo al usuario, al igual que podría incluirse un pequeño gráfico de cada

patrón antes de ser arrastrado, para que el usuario pudiera recordar su apariencia antes de

utilizarlo.

También podría añadírsele funcionalidad, por ejemplo, posibilitando la realización de

otro tipo de diagramas, además de los de clases, y generando código en otro tipo de lenguajes,

además de Java. Por otro lado, podría añadir el uso de otro tipo de patrones, como los de

(Gamma et al., 1995), que se utilizan para un diseño detallado.

Page 145: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Bibliografía

(Nicola et al., 2001) Nicola, J., Mayfield, M., Abney M. Streamlined Object

Modeling. Patterns, Rules, and Implementation. The Coad

Series. Prentice Hall, 2001.

(Coad et al., 1997) Coad, P., North, D., Mayfield, M. Object Models. Strategies,

Patterns & Applications. Yourdon Press Computing Series,

1997.

(Buschmann et al.,

1996)

Buschmann, F., Meunier, R., Rohnert, H., Sommerlad, P., Stal,

M. Pattern-Oriented

Software Architecture: A System of Patterns. John Wiley &

Sons, 1996.

(Gamma et al., 1995) Gamma, E., Helm, R., Johnson, R., Vissides, J. Design Pattern:

Elements of Reusable

Object-Oriented Software. Addison Wesley. 1995.

(Fowler, 2002) Martin Fowler. Patterns of Enterprise Application Architecture.

Addison-Wesley, 2002.

(Alexander, 1977) Alexander, Christopher. A Pattern Language: Towns, Buildings,

Construction. 1977

(Alexander, 1979) Alexander, Christopher. The Timeless Way of Building. 1979

(Coplien, 1991) James O. Coplien. Advanced C++ Programming Styles and

Idioms. Addison Wesley Professional. 1991.

(Coplien & Schmidt,

1995)

James O. Coplien y Douglas C. Schmidt, Pattern Languages of

Program Design (A Generative Development-Process Pattern

Language). Reading, Addison Wesley, 1995.

(Brown et al., 1998) Brown, W. J., Malveau, R. C., Mowbray, T. J. AntiPatterns:

Refactoring Software, Architectures, and Projects in Crisis. John

Wiley & Sons, 1998.

(Akroyd, 1996) Akroyd, M. AntiPatterns: Vaccinations against Object Misuse.

Object World West, 1996.

(Jacobson et al., 2000) Jacobson, I., Booch, G. y Rumbaugh, J. El Proceso Unificado de

Desarrollo de Software. Addison-Wesley, 2000.

(Durán & Bernárdez,

2002)

Durán, A., Bernárdez, B. Metodología para la Elicitación de

Requisitos de Sistemas Software. Sevilla, 2002. (artículo)

(Pressman, R., 2007) Pressman, R. Ingeniería del Software: Un Enfoque Práctico.

McGraw-Hill, 2007.

(UML, 2007) Lenguaje Unificado de Modelado. http://www.omg.org

http://www.uml.org

http://martinfowler.com/

Metodologías Ágiles en el Desarrollo de Software.

http://www.willydev.net/descargas/prev/TodoAgil.Pdf

Programación extrema. http://www.extremeprogramming.org

Page 146: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Programación extrema. http://www.xprogramming.com

HyperModel. http://www.xmlmodeling.com

Christopher Alexander: An Introduction for Object-Oriented

Designers. http://gee.cs.oswego.edu/dl/ca/ca/ca.html

Patrones de Alexander. http://www.patternlanguage.com

Página web de UsiXML: http://www.usixml.org

Página de XML: http://www.w3.org/XML/

Page 147: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Apéndice A

Patrones de Colaboración

Use to model the participation of a person, organization, place, or thing in a context.

• An actor knows about zero to many roles, but typically takes on only one of each

kind.

• A role represents a unique view of its actor within a context. The role depends on

its actor and cannot exist without it.

Use to model a hierarchy of locations where events happen.

• An outer place is the container for zero or more places.

• A place knows at most one outer place. The place’s location depends on the location

of its outer place.

Use to model a thing that exists in several distinct variations.

• An item is the common description for zero to many specific items.

• A specific item knows and depends on one item. The specific item’s property

values distinguish it from other specific items described by the same item.

Use to model an ensemble of things.

• An assembly has one or more parts. Its parts determine its properties, and the

assembly cannot exist without them.

• A part belongs to at most one assembly at a time. The part can exist on its own.

Use to model a receptacle for things.

• A container holds zero or more content objects. Unlike an assembly, it can be

empty.

• A content object can be in at most one container at a time. The content object can

exist on its own.

Use to model a classification of things.

• A group contains zero or more members. Groups are used to classify objects.

• A member, unlike a part or content objects, can belong to more than one group.

Page 148: UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE ... · universidad de castilla-la mancha escuela superior de ingenierÍa informÁtica ingenierÍa en informÁtica proyecto fin

Use to record participants in events.

• A transaction knows one role, the doer of its interaction.

• A role knows about zero or more transactions. The role provides a contextual

description of the person, organization, thing, or place involved in the transaction.

Use to record where an event happens.

• A transaction occurs at one place.

• A place knows about zero to many transactions. The transactions record the history

of interactions at the place.

Use to record an event involving a single thing.

• A transaction knows about one specific item.

• A specific item can be involved in zero to many transactions. The transactions

record the specific item’s history of interactions.

Use to record an event involving more than one thing.

• A composite transaction must contain at least one line item.

• A line item knows only one composite transaction. The line item depends on

the composite transaction and cannot exist without it.

Use to record the particular involvement of a thing in an event involving multiple things.

• A specific item can be involved in zero to many line items.

• A line item knows exactly one specific item. The line item captures details

about the specific item’s interaction with a composite transaction.

Use to record an event that occurs only after a previous event.

• A transaction knows about some number of follow-up transactions.

• A follow-up transaction follows and depends on exactly one previous transaction.