TESIS DE MAESTRÍA EN CIENCIAS - CENIDET · Caracterización de las Fronteras de los Modelos MDA...

187
cenidet Centro Nacional de Investigación y Desarrollo Tecnológico Departamento de Ciencias Computacionales TESIS DE MAESTRÍA EN CIENCIAS Caracterización de las Fronteras de los Modelos MDA Mediante UML presentada por Edna Daniela López López Lic. en Informática por la Universidad Autónoma de Sinaloa Como requisito para la obtención del grado de: Maestría en Ciencias en Ciencias de la Computación Director de tesis: Dr. Moisés González García Co-Director de tesis: Dr. Máximo López Sánchez Cuernavaca, Morelos, México. 10 de Diciembre de 2007

Transcript of TESIS DE MAESTRÍA EN CIENCIAS - CENIDET · Caracterización de las Fronteras de los Modelos MDA...

cenidet

Centro Nacional de Investigación y Desarrollo Tecnológico Departamento de Ciencias Computacionales

TESIS DE MAESTRÍA EN CIENCIAS

Caracterización de las Fronteras de los Modelos MDA Mediante UML

presentada por

Edna Daniela López López Lic. en Informática por la Universidad Autónoma de Sinaloa

Como requisito para la obtención del grado de:

Maestría en Ciencias en Ciencias de la Computación

Director de tesis: Dr. Moisés González García

Co-Director de tesis:

Dr. Máximo López Sánchez Cuernavaca, Morelos, México. 10 de Diciembre de 2007

cenidet

Centro Nacional de Investigación y Desarrollo Tecnológico Departamento de Ciencias Computacionales

TESIS DE MAESTRÍA EN CIENCIAS

Caracterización de las Fronteras de los Modelos MDA Mediante UML

presentada por

Edna Daniela López López Lic. en Informática por la Universidad Autónoma de Sinaloa

Como requisito para la obtención del grado de:

Maestría en Ciencias en Ciencias de la Computación

Director de tesis: Dr. Moisés González García

Co-Director de tesis:

Dr. Máximo López Sánchez

Jurado: Dr. René Santaolaya Salgado – Presidente M.C. Reynaldo Alanis Cantú – Secretario

M.C. Felipe de Jesús Alaníz Quezada – Vocal Dr. Moisés González García – Vocal Suplente

Cuernavaca, Morelos, México. 10 de Diciembre de 2007

i

Dedicatoria

A Dios por todo lo que me da (familia, amigos, amor, bienestar, salud, alegrías, tristezas).

A mis padres: Julián Tomás López Mendivil y Dionicia López Leyva por darme la vida, ser mis amigos, por estar siempre unidos en cualquier circunstancia, por su infinito amor,

esfuerzo y apoyo incondicional.

A mis hermanos Juan Carlos López López y Julián Rafael López López por sus consejos, cariño, apoyo y amistad.

A mi amor Erwin por su apoyo, comprensión, amor y por que siempre esta a mi lado.

A toda mi familia (abuelos, tíos, primos, sobrinos, suegros y mis curruñis) por ser parte de mi vida.

ii

Agradecimientos

A CONACYT por su apoyo económico que ayudó a alcanzar mi meta.

A CENIDET por darme la oportunidad de seguir preparándome en mis estudios.

A mis directores de tesis: Dr. Moisés González García y Dr. Máximo López Sánchez por su

guía, formación y consejos.

A mis revisores Dr. Rene Santaolaya Salgado, M.C. Reynaldo Alanís Cantú y M.C. Felipe de Jesús Alaniz Quezada por sus comentarios y revisiones para que se logrará la presente tesis.

A todos los maestros del área de Ingeniería de Software: Moisés, Máximo, Olivia, Rene y

Hugo por sus consejos.

Al Dr. Andrés Rodríguez, Dulce y Devora del IIE, por su apoyo en la primer etapa de esta investigación.

Al jefe del centro de información Ing. Mario A. Moreno Amado por su colaboración para la

realización de la demostración.

A todos los compañeros de la generación 2005-2007 por su amistad y todas las vivencias compartidas juntos. Por laboratorio, Ingeniería de Software: Cindy, Jazmín, Elvia, Luz, Silvana, Erick y Lalo; Inteligencia Artificial: Erwin, Héctor, Ricardo, Gerardo, Arturo,

Rubén, Chan, Zucy y Perla; Sistemas Distribuidos: Lirio, Adriana, Pedro, Chuy y Daniel.

A mis hermanas Cindy, Elvia y a mis hermanos Erick, Pedro y a la ñoñita por compartir momentos especiales juntos.

A todas las integrantes del equipo de basketball femenil de CENIDET por compartir tantos

partidos juntas y entrenamientos.

A todas las personas que conocí durante mi estancia en CENIDET y en Morelos en general.

iii

Resumen

Este trabajo de investigación propone una solución al problema de la transformación entre modelos en el proceso de desarrollo de software realizado bajo el enfoque MDA1. Esta solución será implementada dentro de un ambiente conocido como AGDE2. MDA dirige el proceso de desarrollo de software a través de las transformaciones entre modelos cada vez más detallados, hasta la entrega de un producto ejecutable. Debido a este hecho, existe la necesidad de identificar la estructura de los modelos implicados y sus características, así como técnicas y métodos que permitan el desarrollo de transformaciones y su mantenimiento.

Cuando se desarrolla un software específico usando el enfoque MDA, es difícil determinar cuando un modelo adquiere nuevas características y se convierte en un nuevo modelo de diverso tipo con diversas características, por ejemplo: un modelo del CIM3 se convierte en un modelo del PIM4, un modelo del PIM se convierte en un modelo del PSM5 o un modelo del PSM se convierte en código, ya que las transformaciones se realizan de manera progresiva. Actualmente, la información relacionada con MDA tiene diversas representaciones, no tiene bien definido cómo se deben de llevar a cabo las transformaciones ni qué información debe contener cada uno de sus modelos. Debido a esta situación, la meta principal de este trabajo es la delimitación de las fronteras de los modelos MDA para utilizarla en el diseño e implementación del ambiente AGDE, para soportar el desarrollo de software dirigido por modelos.

Para cumplir tal meta se realizó una serie de análisis para definir cada uno de los modelos (CIM, PIM, PSM e IM), así como la caracterización de sus fronteras. El resultado de estos análisis se aplicó al desarrollo de software requerido para solucionar el problema clásico de biblioteca, con lo que se demostró que es factible utilizar los resultados de esta investigación para orientar la construcción de los modelos y su colocación dentro de las fronteras caracterizadas, para implementar el producto de software ejecutable.

1 MDA (Model Driven Architecture) 2 AGDE (Architectural and Group Development-Environment) 3 CIM (Computation Independent Model) 4 PIM (Platform Independent Model) 5 PSM (Platform Specific Model)

iv

Abstract

This research work proposes a solution to the transformation problem among models in the software development process performed under the MDA6 approach. This solution will be implemented within an environment known as AGDE7. MDA drives a software development process trough the transformation among models more and more detailed every time, up to delivering an executable product. Due to this fact, there exists a need to identify the structure of the involved models and their characteristics, as well as the techniques that allow the development of transformations and their maintenance.

When a specific software is developed using the MDA approach, it is difficult to determine when a model acquires new characteristics and becomes a new model of different type with different characteristics. For example: a model from CIM8 becomes a model of PIM9, a model from PIM becomes a model of PSM10, or a model from PSM becomes a code, since transformations occur in a progressive way. Currently, the information related with MDA has diverse representations, but it does not define how the transformations should be done, or what information each model must contain. Due to this situation, the main goal for this work is delimitation of frontiers of MDA models, to use them in the design and implementation of AGDE environment, to support model driven software development.

To fulfill the mentioned goal, several analyses were done to define each one of the models (CIM, PIM, PSM and IM), as well as the characterization of their frontiers. The result of this analysis was applied to the software development required to solve the classical library problem, with the that was demonstrated that is feasible to use the results of this research to guide the construction of the models and their placement within the characterized frontiers, in order to implement the executable software product.

6 MDA (Model Driven Architecture) 7 AGDE (Architectural and Group Development-Environment) 8 CIM (Computation Independent Model) 9 PIM (Platform Independent Model) 10 PSM (Platform Specific Model)

v

Índice Glosario de términos y siglas..................................................................................................... xi Capítulo 1 Introducción .............................................................................................................. 1

1.1 Introducción ...................................................................................................................... 1 Capítulo 2 Marco conceptual ...................................................................................................... 4

2.1 Descripción de los conceptos............................................................................................ 4 Capítulo 3 Antecedentes y Descripción de la Investigación....................................................... 8

3.1 Antecedentes ..................................................................................................................... 8 3.1.1 Método de Desarrollo Arquitectónico en Grupo ....................................................... 8 3.1.2 Tesis de Maestría en Ciencias, relacionadas............................................................ 12

3.2 Estado del arte................................................................................................................. 12 3.2.1. Herramientas MDA................................................................................................. 14 3.2.2. Trabajos relacionados ............................................................................................. 16

3.2.2.1 Trabajos relacionados a la especificación de los modelos MDA ..................... 16 3.2.2.2 Trabajos relacionados a las transformaciones entre fronteras de los modelos MDA ............................................................................................................................. 17 3.2.2.3 Trabajos relacionados tanto a la especificación de modelos como a las transformaciones entre fronteras de los modelos MDA ............................................... 18 3.2.2.4 Comparación entre trabajos .............................................................................. 19

3.3 Descripción de la Investigación ...................................................................................... 20 3.3.1 Problema .................................................................................................................. 20 3.3.2 Idea de solución ....................................................................................................... 21 3.3.3 Objetivos .................................................................................................................. 21 3.3.4 Justificación ............................................................................................................. 21 3.3.5 Alcances y Limites................................................................................................... 22

3.3.5.1 Alcances............................................................................................................ 22 3.3.5.2 Limites .............................................................................................................. 22

Capítulo 4 Análisis del problema.............................................................................................. 24

4.1 Contexto del problema.................................................................................................... 25 4.2 Análisis comparativo de AGD con otros enfoques......................................................... 28 4.3 Análisis de UML (Unified Modeling Language) 2.0...................................................... 32

4.3.1 Análisis de los diagramas de UML 2.0 a seleccionar .............................................. 32 4.3.2 Análisis de los diagramas seleccionados con respecto a los diagramas restantes de UML 2.0............................................................................................................................ 35 4.3.3 Análisis de los elementos de cada uno de los diagramas seleccionados.................. 36

4.4 Análisis de lenguajes de transformación......................................................................... 45 Capítulo 5 Solución propuesta .................................................................................................. 50

5.1 XMI para los diagramas seleccionados de UML............................................................ 51 5.1.1 Análisis de etiquetas XMI para los diagramas de UML 2.0 .................................... 51 5.1.2 Desarrollo de la representación interna (en XMI) ................................................... 53

5.2 Definición de los modelos y las fronteras de MDA en el AGDE................................... 72

vi

5.2.1 Definición del modelo CIM..................................................................................... 75 5.2.1.1 Modelo del negocio........................................................................................... 75

5.2.1.1.1 Modelo de dominio .................................................................................... 76 5.2.1.1.2 Modelo funcional ....................................................................................... 76 5.2.1.1.3 Modelo no funcional .................................................................................. 77

5.2.1.2 Vista del nivel CIM a través de los diagramas y sus transformaciones............ 79 5.2.2 Definición de la frontera CIM-PIM ......................................................................... 81 5.2.3 Definición del modelo PIM ..................................................................................... 82

5.2.3.1 Modelo de análisis ............................................................................................ 83 5.2.3.2 Modelo de diseño.............................................................................................. 83 5.2.3.3 Vista del nivel PIM a través de los diagramas y sus transformaciones ............ 84

5.2.4 Definición de la frontera PIM-PSM......................................................................... 85 5.2.5 Definición del modelo PSM..................................................................................... 86

5.2.5.1 Modelo de diseño.............................................................................................. 87 5.2.5.2 Vista del nivel PSM a través de los diagramas y sus transformaciones ........... 87

5.2.6 Definición de la frontera PSM-IM........................................................................... 88 5.2.7 Definición del modelo IM........................................................................................ 89

5.2.7.1 Vista del nivel IM a través del código generado en base a los diagramas del nivel PSM y sus transformaciones................................................................................ 90

5.3 Caracterización de las fronteras ...................................................................................... 91 Capítulo 6 Demostración .......................................................................................................... 98

6.1 Tesis de la demostración................................................................................................. 99 6.2 Fundamentos o argumentos ............................................................................................ 99 6.3 Procedimiento ................................................................................................................. 99

6.3.1 Explicación de la demostración ............................................................................. 100 6.3.1.1 Nivel general................................................................................................... 100 6.3.1.2 Nivel CIM ....................................................................................................... 101 6.3.1.3 Cruce de la frontera CIM-PIM........................................................................ 106 6.3.1.4 Nivel PIM........................................................................................................ 112 6.3.1.5 Cruce de la frontera PIM-PSM ....................................................................... 122 6.3.1.6 Nivel PSM....................................................................................................... 128 6.3.1.7 Cruce de la frontera PSM-IM ......................................................................... 133 6.3.1.8 Nivel IM.......................................................................................................... 138

6.4 Conclusión .................................................................................................................... 142 Capítulo 7 Conclusiones ......................................................................................................... 143

7.1 Conclusiones ................................................................................................................. 143 7.2 Aportaciones ................................................................................................................. 144 7.3 Trabajos futuros ............................................................................................................ 145

Anexo A ............................................................................................................................. 146 Anexo B ............................................................................................................................. 158 Referencias.............................................................................................................................. 167

vii

Índice de ilustraciones Ilustración 3-1. Ubicación de la tesis dentro de AGD .............................................................. 10 Ilustración 3-2. Diagrama Nassi-Shneiderman del AGDE ....................................................... 11 Ilustración 3-3. Incremento de los niveles de abstracción en el que trabaja el desarrollador. El

proceso de MDD automatiza la abstracción/ refinamiento [IBM05]................................ 13 Ilustración 3-4. Representa todo el esquema de MDA con sus modelos y transformaciones .. 21 Ilustración 4-1. Procedimiento general de la metodología de solución .................................... 25 Ilustración 4-2. Contexto de la investigación en el ambiente AGDE ....................................... 26 Ilustración 4-3. Propuesta para el proceso general de MDA en AGDE ................................... 28 Ilustración 4-4. UML dentro del enfoque MDA en el AGDE .................................................. 34 Ilustración 5-1. Arquitectura de cuatro niveles para metadatos de MOF ................................. 53 Ilustración 5-2. Documento XMI para el diagrama de casos de uso ........................................ 56 Ilustración 5-3. DTD para el documento XMI del diagrama de casos de uso .......................... 57 Ilustración 5-4. Prueba de documento bien formado para el documento XMI del diagrama de

casos de uso....................................................................................................................... 58 Ilustración 5-5. Prueba de documento válido para el documento XMI del diagrama de casos de

uso ..................................................................................................................................... 58 Ilustración 5-6. Documento XMI para el diagrama de clases................................................... 59 Ilustración 5-7. DTD para el documento XMI del diagrama de clases .................................... 61 Ilustración 5-8. Prueba de documento bien formado para el documento XMI del diagrama de

clases ................................................................................................................................. 62 Ilustración 5-9. Prueba de documento válido para el documento XMI del diagrama de clases62 Ilustración 5-10. Documento XMI para el diagrama de secuencia........................................... 64 Ilustración 5-11. DTD para el documento XMI del diagrama de secuencia ............................ 66 Ilustración 5-12. Prueba de documento bien formado para el documento XMI del diagrama de

secuencia ........................................................................................................................... 67 Ilustración 5-13. Prueba de documento válido para el documento XMI del diagrama de

secuencia ........................................................................................................................... 67 Ilustración 5-14. Documento XMI para el diagrama de actividad............................................ 69 Ilustración 5-15. DTD para el documento XMI del diagrama de actividad ............................. 70 Ilustración 5-16. Prueba de documento bien formado para el documento XMI del diagrama de

actividad............................................................................................................................ 72 Ilustración 5-17. Prueba de documento válido para el documento XMI del diagrama de

actividad............................................................................................................................ 72 Ilustración 5-18. Representación visual de la definición de los modelos y de las fronteras de

los modelos MDA hasta el modelo de implementación ................................................... 73 Ilustración 5-19. Representación visual de la definición del modelo CIM............................... 75 Ilustración 5-20. Representación visual del nivel CIM en base a diagramas y sus

transformaciones ............................................................................................................... 79 Ilustración 5-21. Frontera CIM-PIM en base a diagramas y sus transformaciones.................. 81 Ilustración 5-22. Representación visual de la definición del modelo PIM............................... 82 Ilustración 5-23. Representación visual del nivel PIM en base a diagramas y sus

transformaciones ............................................................................................................... 85 Ilustración 5-24. Frontera PIM-PSM en base a diagramas y sus transformaciones ................. 86 Ilustración 5-25. Representación visual de la definición del modelo PSM .............................. 86

viii

Ilustración 5-26. Representación visual del nivel PSM en base a diagramas y sus transformaciones ............................................................................................................... 88

Ilustración 5-27. Frontera PSM-IM en base a diagramas y sus transformaciones.................... 89 Ilustración 5-28. Representación visual de la definición del modelo IM ................................. 89 Ilustración 5-29. Representación visual del nivel IM en base el código generado a través de los

diagramas y sus transformaciones .................................................................................... 91 Ilustración 6-1. Nivel general de la demostración .................................................................. 101 Ilustración 6-2. Diagrama de casos de uso del negocio a nivel CIM...................................... 104 Ilustración 6-3. Sub-diagrama de casos de uso de la Ilustración 6-2...................................... 105 Ilustración 6-4. Documento XMI para el diagrama de casos de uso de la Ilustración 6-3 ..... 105 Ilustración 6-5. Diagrama de casos de uso "Administrar préstamo de acervo" a nivel PIM.. 108 Ilustración 6-6. Sub-sub caso de uso de "Registrar préstamo" del diagrama de la Ilustración

6-5 ................................................................................................................................... 108 Ilustración 6-7. Documento XMI para el diagrama de casos de uso de “Administrar préstamo

de acervo” en la parte de “Registrar préstamo” .............................................................. 109 Ilustración 6-8. Diagrama de secuencia para el caso de uso “CU-4.1 Registrar préstamo” a

nivel PIM ........................................................................................................................ 114 Ilustración 6-9. Documento XMI para el diagrama de secuencia de la Ilustración 6-8.......... 116 Ilustración 6-10. Diagrama de actividad “Registrar” a nivel PIM.......................................... 117 Ilustración 6-11. Documento XMI para el diagrama de actividad de la Ilustración 6-10 ...... 118 Ilustración 6-12. Diagrama de actividad “AceptarRegistro” a nivel PIM .............................. 120 Ilustración 6-13. Documento XMI para el diagrama de actividad de la Ilustración 6-12 ...... 121 Ilustración 6-14. Diagrama de actividad “Registrar” a nivel PSM......................................... 124 Ilustración 6-15. Documento XMI para el diagrama de actividad de la Ilustración 6-14 ..... 125 Ilustración 6-16. Diagrama de actividad “AceptarRegistro” a nivel PSM ............................. 126 Ilustración 6-17. Documento XMI para el diagrama de actividad de la Ilustración 6-16 ...... 127 Ilustración 6-18. Diagrama de Clases nivel PSM ................................................................... 130 Ilustración 6-19. Documento XMI para el diagrama de clases de la Ilustración 6-18............ 131 Ilustración 6-20. Código generado para el método jButtonRegistrar_actionPerformed nivel IM

......................................................................................................................................... 134 Ilustración 6-21. Código generado para el método AceptarRegistro nivel IM....................... 136 Ilustración 6-22. Código de la clase “PrestamoAcervo” a nivel IM....................................... 139 Ilustración 6-23. Pantalla de “Administrar prestamos” en la opción “Registrar”................... 141 Ilustración B-1. Estructura taxonómica de UML 2.0.............................................................. 159

ix

Índice de tablas Tabla 3-1. Comparación de herramientas MDA [AHS06, GAR04, COR06] .......................... 15 Tabla 3-2. Comparativa de trabajos relacionados..................................................................... 19 Tabla 4-1. Conjunto de modelos a nivel CIM del PS con respecto a los enfoques comparados

........................................................................................................................................... 29 Tabla 4-2. Conjunto de modelos a nivel PIM del PS con respecto a los enfoques comparados

........................................................................................................................................... 30 Tabla 4-3. Conjunto de modelos a nivel PSM del PS con respecto a los enfoques comparados

........................................................................................................................................... 30 Tabla 4-4. Conjunto de modelos a nivel IM (Modelo de Implementación) del PS con respecto

a los enfoques comparados ............................................................................................... 31 Tabla 4-5. Selección de los diagramas de UML para MDA..................................................... 33 Tabla 4-6. Número de elementos exclusivos y repetidos de los 13 diagramas UML............... 35 Tabla 4-7. Relaciones entre los elementos del diagrama de Casos de uso ............................... 37 Tabla 4-8. Relaciones entre los elementos del diagrama de Clases.......................................... 37 Tabla 4-9. Relaciones entre los elementos del diagrama de Secuencia.................................... 38 Tabla 4-10. Relaciones entre los elementos del diagrama de Actividad .................................. 41 Tabla 4-11. Comparativa de lenguajes de transformación........................................................ 48 Tabla 5-1. Revisión de XMI ..................................................................................................... 52 Tabla 5-2. Estructura general de XMI para los 4 diagramas .................................................... 53 Tabla 5-3. Correspondencia de los elementos del diagrama de casos de uso con su

representación interna en el documento XMI................................................................... 55 Tabla 5-4. Correspondencia de los elementos del diagrama de clases con su representación

interna en el documento XMI ........................................................................................... 59 Tabla 5-5. Correspondencia de los elementos del diagrama de secuencia con su representación

interna en el documento XMI ........................................................................................... 63 Tabla 5-6. Correspondencia de los elementos del diagrama de actividad con su representación

interna en el documento XMI ........................................................................................... 68 Tabla 5-7. Caracterización de las fronteras CIM-PIM, PIM-PSM y PSM-IM a través del

diagrama de casos de uso.................................................................................................. 93 Tabla 5-8. Caracterización de las fronteras CIM-PIM, PIM-PSM y PSM-IM a través del

diagrama de clases ............................................................................................................ 94 Tabla 5-9. Caracterización de las fronteras CIM-PIM, PIM-PSM y PSM-IM a través del

diagrama de secuencia ...................................................................................................... 95 Tabla 5-10. Caracterización de las fronteras CIM-PIM, PIM-PSM y PSM-IM a través del

diagrama de actividad ....................................................................................................... 96 Tabla 6-1. Objetivos internos y externos de la biblioteca....................................................... 102 Tabla 6-2. Trazabilidad para el diagrama de casos de uso de la Ilustración 6-3 a nivel CIM 106 Tabla 6-3. Trazabilidad para el sub-subcaso de uso “Registrar préstamo” a nivel PIM ........ 112 Tabla 6-4. Trazabilidad para el Diagrama de secuencia del caso de uso “CU-4.1 Registrar

préstamo” nivel PIM....................................................................................................... 116 Tabla 6-5. Trazabilidad para el Diagrama de actividad “Registrar” nivel PIM...................... 119 Tabla 6-6. Trazabilidad para el Diagrama de actividad “AceptarRegistro” nivel PIM .......... 122 Tabla 6-7. Trazabilidad para el Diagrama de actividad “Registrar” a nivel PSM.................. 125 Tabla 6-8. Trazabilidad para el Diagrama de actividad “AceptarRegistro” a nivel PSM ...... 127

x

Tabla 6-9. Trazabilidad para el Diagrama de Clases nivel PSM ............................................ 132 Tabla 6-10. Trazabilidad para el método jButtonRegistrar_actionPerformed nivel IM......... 134 Tabla 6-11. Trazabilidad para el método AceptarRegistro nivel IM...................................... 136 Tabla 6-12. Trazabilidad para el código de clases a nivel IM ................................................ 140 Tabla A-1. AGD en el nivel CIM comparado con CMMI...................................................... 150 Tabla A-2. AGD en el nivel PIM comparado con CMMI ..................................................... 150 Tabla A-3. AGD en el nivel PSM comparado con CMMI .................................................... 151 Tabla A-4. AGD en el modelo de implementación (IM) comparado con CMMI .................. 151 Tabla A-5. AGD en el nivel CIM comparado con RUP ........................................................ 153 Tabla A-6. AGD en el nivel PIM comparado con RUP ........................................................ 154 Tabla A-7. AGD en el nivel PSM comparado con RUP........................................................ 154 Tabla A-8. AGD en el modelo de implementación (IM) comparado con RUP .................... 155 Tabla A-9. AGD en el nivel CIM comparado con IDEF....................................................... 156 Tabla A-10. AGD en el nivel PIM comparado con IDEF ..................................................... 156 Tabla A-11. AGD en el nivel PSM comparado con IDEF .................................................... 157 Tabla A-12. AGD en el modelo de implementación (IM) comparado con IDEF ................. 157 Tabla B-1. Breve descripción de diagramas UML 2.0 [AMB04]........................................... 159 Tabla B-2. Elementos del diagrama de Casos de Uso y su relación con otros diagramas..... 160 Tabla B-3. Elementos del diagrama de Actividad y su relación con otros diagramas............ 161 Tabla B-4. Elementos del diagrama de Maquina de Estado y su relación con otros diagramas

......................................................................................................................................... 161 Tabla B-5. Elementos del diagrama de Cronometraje o Tiempos y su relación con otros

diagramas ........................................................................................................................ 162 Tabla B-6. Elementos del diagrama de Secuencia y su relación con otros diagramas ........... 162 Tabla B-7. Elementos del diagrama de Revisión de la Interacción y su relación con otros

diagramas ........................................................................................................................ 163 Tabla B-8. Elementos del diagrama de Comunicación y su relación con otros diagramas .... 164 Tabla B-9. Elementos del diagrama de Paquetes y su relación con otros diagramas ............. 164 Tabla B-10. Elementos del diagrama de Clases y su relación con otros diagramas ............... 164 Tabla B-11. Elementos del diagrama de Objeto y su relación con otros diagramas .............. 165 Tabla B-12. Elementos del diagrama de Estructura Compuesta y su relación con otros

diagramas ........................................................................................................................ 165 Tabla B-13. Elementos del diagrama de Componentes y su relación con otros diagramas ... 165 Tabla B-14. Elementos del diagrama de Despliegue y su relación con otros diagramas ....... 166

xi

Glosario de términos y siglas MDA (Model Driven Architect):

Es un enfoque dirigido por modelos para el desarrollo de software. XMI (XML Metadata Interchange):

El propósito de XMI es facilitar el intercambio de metadatos, en entornos distribuidos heterogéneos, entre diferentes tipos de herramientas de software y en especial entre herramientas de modelado basadas en UML y repositorios de metadatos basados en la propuesta MOF. Estos estándares de facto son: XML, UML, MOF. XMI permite que los metadatos puedan ser intercambiados como flujos o archivos con un formato estándar basado en XML.

MOF (Meta-Object Facility): MOF es una norma aprobada por el OMG para la definición, representación y gestión de metadatos.

XML (eXtensible Markup Language): Es un metalenguaje extensible de etiquetas desarrollado por el World Wide Web Consortium (W3C). El XML no es realmente un lenguaje en particular, sino una manera de definir lenguajes para diferentes necesidades.

UML (Unified Model Lenguaje): Es el lenguaje de modelado de sistemas de software. Es un lenguaje gráfico para visualizar, especificar, construir y documentar un sistema de software.

JMI (Java Metadata Interface): JMI define las interfaces estándares de Java a componentes que modelan y permite así el descubrimiento de la plataforma-independiente y el acceso de meta datos. Es el estándar que define como tener acceso a metamodelos basados en MOF y su metadato usando Java.

WSDL (Web Services Description Language): WSDL describe la interfaz pública a los servicios Web. Está basado en XML y describe la forma de comunicación, es decir, los requisitos del protocolo y los formatos de los mensajes necesarios para interactuar con los servicios listados en su catálogo.

J2EE (Java 2 Enterprise Edition): Una plataforma de programación para desarrollar y ejecutar software de aplicaciones en el lenguaje de programación Java con arquitectura de n niveles distribuida, basándose ampliamente en componentes de software modulares ejecutándose sobre un servidor de aplicaciones. J2EE es también considerada informalmente como un estándar, debido a que los suministradores deben cumplir ciertos requisitos de conformidad para declarar que sus productos son conformes a J2EE.

Struts: Es una herramienta de soporte para el desarrollo de aplicaciones Web bajo el patrón MVC bajo la plataforma J2EE. Los Struts se desarrollaban como parte del proyecto Jakarta de la Apache Software Foundation, pero actualmente es un proyecto independiente conocido como Apache Struts.

Glosario de términos y siglas

xii

MDR (Netbeans Metadata Repository): MDR se está desarrollando como parte del proyecto de NetBeans. NetBeans puede servir como plataforma para básicamente cualquier clase de uso de Java, pero es específicamente muy útil como marco para las herramientas de desarrollo integradas modulares. Es una implementación extendida de MOF, XMI y los estándares de JMI.

ANT: Es un proyecto de código abierto de la Apache Software Foundation. Es una herramienta hecha en Java, tiene la ventaja de no depender de las órdenes del shell (intérprete de comandos) de cada sistema operativo, sino que se basa en archivos de configuración XML (eXtensible Markup Language) y clases Java para la realización de las distintas tareas, siendo idónea como solución multi-plataforma.

Hybernate: Es la colección de las clases y de las interfaces que se pueden utilizar para comunicarse entre los objetos de Java y la base de datos, el código de JDBC se escribe directamente en las clases de Hybernate y se puede utilizar directamente en código propio.

Velocity (Velocity Template Language): Es un motor de plantilla basado en java. Permite a diseñadores de página Web referirse a métodos definidos en código Java. Velocity separa el código Java de las páginas Web, haciendo el sitio Web más conservable utilizando el modelo MVC.

xDocle: Es un motor para la generación de código abierto. Permite la programación orientada al atributo (Attribute-Oriented Programming) para Java, que significa que se puede agregar más significancia al código agregando metadatos (atributos) a fuentes de Java. Esto se hace en las etiquetas especiales de JavaDoc.

Maven: Es una herramienta de administración y comprensión de proyecto de software. De acuerdo con el concepto de un Modelo de Objeto del Proyecto (POM por sus siglas en inglés), Maven puede administrar la estructura de un proyecto, el informe y la documentación desde una parte de la información central.

1

Capítulo 1

Introducción 1.1 Introducción A través de los años el desarrollo de software ha evolucionado, debido a que cada periodo es caracterizado por el tipo de lenguajes de programación (desde el lenguaje de ensamble pasando por los lenguajes orientados a objetos y de cuarta generación, hasta llegar al desarrollo dirigido por modelos) dominante que se construye en base a las ventajas de los lenguajes del periodo previo. Debido a esta evolución se usa actualmente la ingeniería de modelos, que se considera como un nuevo paso en el camino hacia lenguajes de programación más expresivos y hacia una mayor automatización. Como consecuencia de todo esto, en la ingeniería de software se ha apostado por un Desarrollo Dirigido por Modelos (MDD, Model-Driven Development), donde uno de los enfoques que lo aplica es la Arquitectura Dirigida por Modelos (MDA, Model Driven Architecture).

La utilización de MDA toma cada vez más fuerza en el desarrollo de software y esto se ve reflejado tanto en las herramientas (AndroMDA [AND06], OptimalJ [OPT06], ArcStyler [ARC06],…) y trabajos (MIDAS [CAC03-1], AspectMDA [AMA05], AGD [GON04],…) que han ido apareciendo para su aplicación y/o mejoramiento, debido a los beneficios (productividad, portabilidad, interoperatividad, mantenimiento y documentación) que proporciona (§ 3.2.1 y 3.2.2).

Acorde con la necesidad actual de mejorar el enfoque MDA y ayudar a su mejor interpretación, delimitación y definición tanto de sus modelos (CIM, PIM, PSM, IM), como de sus fronteras (CIM-PIM, PIM-PSM, PSM-IM) y transformaciones entre ellos, se realizó el

Capítulo 1 Introducción

2

presente trabajo de investigación con el propósito de especificar la definición de las fronteras de MDA, para utilizar sus resultados en el diseño e implementación del tratamiento del PS (Products Set, productos del trabajo) dentro del método de Desarrollo Arquitectónico en Grupo (AGD, Architectural and Group Development, ver capítulo 3 y 4 § 3.1.1 y 4.1).

Debido a lo anteriormente mencionado, el objetivo principal de esta investigación es determinar las características distintivas de cada una de las fronteras a través de la definición de cada uno de los modelos, de sus transformaciones y características de las mismas (como trazabilidad y consistencia, ver capítulo 3), utilizando para cada uno de los modelos una representación permanente estándar. Se necesita determinar el nivel de detalle máximo en cada uno de los modelos para que todo lo representado en estos modelos también este presente en la implementación y no existan inconsistencias entre ellos, además para que el resultado del sistema generado sea el esperado.

Por lo tanto, la contribución de esta tesis es proponer un esquema general que se pueda

utilizar para determinar los lenguajes a utilizar en el proceso de desarrollo de MDA, además de la definición de cada uno de sus modelos y la diferenciación de sus fronteras, necesario todo esto para obtener la implementación (código).

Posteriormente, a lo antes mencionado, se procedió a demostrarlos a través del problema clásico de biblioteca. Mediante esta demostración se evaluó la tesis de demostración (§ 6.1) que dice “Con la información definida en los modelos y la caracterización de las fronteras, es posible llegar a una implementación funcional, a través de transformaciones pudiendo distinguir cuando un modelo se convierte en otro de un nivel más detallado”. Los resultados de la demostración fueron la secuencia de modelos necesarios para implementar un sistema para una biblioteca y corroborar la factibilidad de usar la definición de los modelos MDA y sus fronteras para soportar el desarrollo.

Con la definición de los modelos, sus fronteras, caracterización y su demostración se aporta un primer acercamiento a la parte de herramientas de transformación de modelo a modelo y de modelo a código para obtener una implementación en el ambiente AGDE (AGD-Enviroment), que utiliza los conceptos de AGD. Además de aportar al refinamiento y validación del PS dentro del AGD para el enfoque MDA.

El contenido de la tesis se estructura de la siguiente manera:

• Capítulo 2 Marco conceptual, en el se muestran las descripciones de los conceptos

relevantes para comprender mejor el presente documento. Este capítulo se divide en las seccione siguiente: 2.1 Descripción de los conceptos.

• Capítulo 3 Antecedentes y Descripción de la investigación, se da una panorámica de los antecedentes del presente trabajo de investigación, de todos los aspectos que tienen que ver con el planteamiento de esta investigación y de los trabajos que se han desarrollado. Este capítulo se divide en las secciones siguientes: 3.1 Antecedentes, 3.2 Estado del arte, 3.3 Descripción de la investigación.

• Capítulo 4 Análisis del problema, en este capítulo se realizaron una serie de análisis con respecto a AGD, UML y lenguajes de transformación para poder posteriormente,

Capítulo 1 Introducción

3

desarrollar una representación interna en XMI de los diagramas seleccionados y definir los modelos de MDA, sus fronteras y caracterización por medio de los resultados de los análisis realizados. Este capítulo se divide en las secciones siguientes: 4.1 Contexto del problema, 4.2 Análisis comparativo de AGD con otros enfoques, 4.3 Análisis de UML 2.0 y 4.4 Análisis de lenguajes de transformación.

• Capítulo 5 Solución propuesta, en este capítulo se presenta el desarrollo de la representación interna en XMI de los diagramas elegidos, la definición de los modelos (CIM, PIM, PSM, IM) y de las fronteras de MDA representadas por medio de un esquema y su correspondiente caracterización de las fronteras (CIM-PIM, PIM-PSM y PSM-IM) que servirán como fundamento para realizar las transformaciones necesarias y obtener una implementación funcional en el ambiente AGDE. Este capítulo se divide en las secciones siguientes: 5.1 XMI para los diagramas seleccionados de UML, 5.2 Definición de los modelos y fronteras de MDA en el AGDE y 5.3 Caracterización de las fronteras.

• Capítulo 6 Demostración, en este capítulo se muestra la descripción tanto del procedimiento que se siguió para comprobar la tesis de demostración, así como los factores en los cuales se basó y que resultados se obtuvieron. Este capítulo se divide en las secciones siguientes: 6.1 Tesis de demostración, 6.2 Fundamentos o argumentos, 6.3 Procedimiento y 6.4 Conclusiones.

• Capítulo 7 Conclusiones, este capítulo refleja si se cumplió parcial o totalmente los objetivos de la presente investigación, así como las aportaciones que se realizaron, además de mencionar los posibles trabajos futuros a desarrollar. Este capítulo se divide en las secciones siguientes: 7.1 Conclusión, 7.2 Aportaciones y 7.3 Trabajos futuros.

• Finalmente en la sección de anexos se muestran algunos análisis a detalle, como es el análisis comparativo de AGD con otros métodos con respecto a la información contenida en el PS (basado en el enfoque MDA) del AGD y el análisis de UML 2.0 considerando los 13 diagramas pero comparando 9 de ellos contra 4 diagramas (casos de uso, clases, secuencia y actividad) elegidos para trabajarlos en esta investigación, además como para obtener el grado en que los 4 diagramas cubren a los 9.

4

Capítulo 2

Marco conceptual Los conceptos relevantes que se mencionan a continuación son importantes para comprender mejor el presente trabajo de investigación y el orden de presentación elegido es para ayudar a entenderlos. 2.1 Descripción de los conceptos La base de la presente investigación esta situada en el enfoque de Arquitectura Dirigida por Modelos (MDA, Model Driven Architecture) [MIL03], que a continuación se explica.

La MDA es un enfoque para el desarrollo de software, definido por la OMG (Object Management Group). La clave de MDA es la importancia de los modelos en el proceso de desarrollo de software. Dentro de MDA el proceso de desarrollo de software se dirige por la actividad del modelado de los sistemas de software.

Por lo tanto, MDA se dirige por modelos debido a que los usa como entradas y salidas en el proceso de conceptualización, diseño, construcción, despliegue, operación, mantenimiento y modificación. Hasta este momento se ha estado hablando de que MDA se basa fundamentalmente en los modelos, pero ¿Qué es un modelo?

Un modelo [STE02] es una representación abstracta de todos o algunos de los aspectos relevantes de un sistema. A menudo se representa gráficamente mediante uno o más diagramas y se escribe en un lenguaje. Un modelo tiene que tener un significado preciso y bien entendido. Por la naturaleza del proceso de desarrollo que va de lo general a lo detallado, un

Capítulo 2 Marco conceptual

5

modelo implica la consideración de diferentes elementos a distintos niveles de abstracción, donde cada uno de los elementos, a su vez, se organiza mediante nuevos modelos.

MDA separa la especificación funcional de la especificación de implementación y provee

un enfoque abierto independiente del proveedor de tecnología, para enfrentar el reto de cambios en el negocio y en la tecnología. MDA está compuesto por tres modelos: Modelo Independiente de Cómputo (CIM, Computation Independent Model), Modelo Independiente de Plataforma (PIM, Platform Independent Model) y Modelo de Plataforma Especifica (PSM, Platform Specific Model), los cuales representan el proceso de desarrollo con MDA y a continuación se describen:

• Primero, los requerimientos para el sistema se presentan en un modelo CIM, que

describe la situación en la que el sistema se usará. • Posteriormente, este modelo se transforma en un modelo PIM que describe el sistema,

pero no muestra los detalles de su uso, en una plataforma tecnológica particular. • Después de obtener el modelo PIM, se realiza otra transformación hacia un modelo

PSM, el cual contiene el detalle necesario para utilizar la plataforma tecnológica en la que el sistema funcionará.

• Por último, teniendo el modelo PSM se realiza una transformación que resulta en la generación de código para lograr una solución o modelo de implementación (IM).

Una vez especificado el sistema a través de los modelos, desde ellos se obtiene el producto

final en base a la realización sucesiva de transformaciones. Donde una transformación [KLE03] es un conjunto de reglas que describen cómo un modelo en un lenguaje origen puede ser convertido en otro modelo de lenguaje objetivo, donde una regla es una descripción de cómo una o más construcciones en el lenguaje origen pueden convertirse en una o más construcciones del lenguaje objetivo.

Existen, en MDA, dos tipos de transformaciones, las cuales son:

• Transformaciones verticales: son realizadas entre modelos de diferente nivel de

abstracción. Por ejemplo, de los modelos CIM a PIM, de PIM a PSM y de PSM a IM. • Transformaciones horizontales: son realizadas entre modelos del mismo nivel de

abstracción. Por ejemplo, de los modelos CIM a CIM, de PIM a PIM, de PSM a PSM.

Ampliando la descripción de cada uno de los modelos que integran a MDA para su mejor comprensión a continuación se detalla cada uno de ellos.

El primer modelo a definir con el que se inicia el proceso de MDA, es el CIM [MIL03].

Éste describe la situación en la cual el sistema se usará y los requerimientos a modelarse. Tal modelo es con frecuencia llamado modelo de dominio o modelo de negocio. Este modelo es independiente de como se implementa el sistema.

Por otra parte, el CIM es un modelo que muestra el ambiente y funcionamiento de un

sistema, de tal manera que ayuda a la exacta representación de lo que se espera que realice el

Capítulo 2 Marco conceptual

6

sistema. Es útil, no sólo para ayudar al entendimiento de un problema sino también como una fuente de vocabulario compartido para el uso en otros modelos.

Del modelo CIM se pasa al modelo PIM [MIL03] que describe el sistema, pero no muestra

los detalles de su uso en una plataforma o tecnología. La estructura de la información en este modelo podría ser bastante diferente de la estructura de la información desde el punto de vista del modelo CIM.

Para la empresa el modelo PIM podría representar información y datos específicos desde

el punto de vista computacional, el cual será satisfactorio para uno o varios estilos arquitectónicos particulares.

Por último, se pasa al modelo PSM [MIL03] que es un modelo de un subsistema que

incluye información sobre la tecnología que se usa en su realización, sobre una plataforma específica y que hace posible contener los elementos específicos a la plataforma.

El modelo PSM será una implementación si provee toda la información necesaria para construir un sistema y ponerlo en operación. Se puede tratar como un PIM que se usa para el refinamiento a un PSM, que directamente puede implementarse (IM).

Cuando se habló de modelos en los puntos anteriores, se mencionó que un modelo siempre

se escribe en un lenguaje. Ese lenguaje debe ser bien definido, debido a que tiene una gran importancia para MDA, pues el modelo debe tener asociada una sintaxis (forma) y semántica (significado) bien establecidas (definidas). Lo que permite la interpretación automática por medio de herramientas de transformación o compiladores de los modelos, fundamentales en MDA.

Uno de los lenguajes bien definido es el Lenguaje de Modelado Unificado (UML, Unified

Modeling Language), el cual se ha adoptado como el principal lenguaje de modelado en MDA, pero esto no implica que no se pueda usar cualquier otro lenguaje bien definido.

Para aplicar UML en MDA un desarrollador debe ser capaz de usar UML para crear un

modelo del sistema. Debería conocer cómo y dónde aplicar UML para desarrollar modelos que sean precisos y consistentes. Por todo esto a continuación se explica el lenguaje UML.

UML [STE02] “es un lenguaje usado para especificar, visualizar y documentar los

diferentes aspectos relativos a un sistema de software en desarrollo, así como para el modelado de negocios y otros sistemas que no son de software”. Puede utilizarse a lo largo del proceso de desarrollo de software, con cualquier metodología y en cualquier plataforma tecnológica de implementación. El UML está conformado por 13 diagramas, los cuales son:

Diagramas estructurales:

• Diagrama de Clases (Class Diagram) • Diagrama de Objetos (Object Diagram) • Diagrama de Componentes (Component Diagram)

Capítulo 2 Marco conceptual

7

• Diagrama de Distribución (Deployment Diagram) • Diagrama de Paquetes (Package Diagram) • Diagrama de Estructura Compuesta (Composite Structure Diagram)

Diagramas dinámicos o de comportamiento:

• Diagrama de Casos de Uso (Use Case Diagram) • Diagrama de Interacción (Interaction Diagram)

o Diagrama de Secuencia (Sequence Diagram) o Diagrama de Comunicación (Communication Diagram) o Diagrama de Revisión de la Interacción (Interaction Overview

Diagram) o Diagrama de Cronometraje o Tiempos (Timing Diagram)

• Diagrama de Actividad (Activity Diagram) • Diagrama de Máquinas de Estado (State Machine Diagram)

Los diagramas UML requieren intercambiarse entre herramientas de diseño y/o

aplicaciones, por lo tanto necesitan tener una representación estándar para tal intercambio, que contenga la información adecuada a los diagramas. Por esta razón se necesita del estándar XML de Intercambio de Metadatos (XMI, XML Metadata Interchange), que a continuación se explica.

XMI [XMI05] es un estándar de la OMG cuyo propósito principal es permitir el intercambio fácil de meta datos entre diferentes tipos de herramientas de software, en especial herramientas de modelado (basadas en UML) y repositorios de metadatos (basados en MOF) dentro de ambientes heterogéneos distribuidos. XMI está integrado por UML, Lenguaje de Marcas Extensible “XML por sus siglas en inglés” y Facilidad para Meta–Objetos “MOF por sus siglas en inglés”.

XMI es un modelo conducido por el marco de integración XML para la definición, el intercambio, la manipulación y la integración de datos y objetos XML. Los estándares basados en XMI están en uso para integrar herramientas, repositorios, aplicaciones y depósitos de datos.

Para terminar este capítulo cabe mencionar que cada uno de estos conceptos interviene en el desarrollo de la presente investigación de la siguiente manera: la parte central del trabajo es el proceso del enfoque MDA, el cual contiene modelos que pueden ser transformados entre sí, conformados por una serie de diagramas de UML cuya representación interna se realiza mediante XMI. Por lo tanto, los conceptos presentados son importantes y se utilizan en el capítulo siguiente para mostrar la situación actual de MDA.

8

Capítulo 3

Antecedentes y Descripción de la Investigación En este capítulo se muestra una panorámica tanto de los trabajos de antecedentes relacionados en el CENIDET (Centro Nacional de Investigación y Desarrollo Tecnológico) que de alguna manera, han influido en la presente tesis, realizados por otros grupos de investigación, así como las herramientas y trabajos relacionados con el enfoque de esta tesis, que parten de los conceptos presentados en el capítulo anterior, que son la base conceptual del presente trabajo. Se describe además de donde parte la investigación, cuál es su área, contexto y ubicación, qué problema o situación se trata de resolver por medio de qué objetivo se establecen los alcances de la investigación y se mencionan los beneficios que se obtendrán atacando este problema. 3.1 Antecedentes 3.1.1 Método de Desarrollo Arquitectónico en Grupo El antecedente principal de esta investigación reside en el método AGD (Architectural and Group Development), producto de la investigación doctoral del profesor Moisés González García, miembro de la línea de investigación en Ingeniería de Software de CENIDET (Centro Nacional de Investigación y Desarrollo Tecnológico).

Capítulo 3 Antecedentes y Descripción de la Investigación

9

El AGD es un método de desarrollo de software que da más importancia a los productos y que subordina al proceso de software en relación a los resultados que se obtienen. En el AGD se asume que se pueden obtener productos de mejor calidad como resultado de: la importancia dada a los productos y su arquitectura; y la sinergia obtenida al integrar los modos de trabajo en grupo [GON04]. El método AGD está compuesto por: 1.- El Conjunto de Productos (PS, Products Set) que se fundamenta en:

• Modelo de referencia11 de Trabajo Cooperativo: Almacenamiento, Lógica y Recursos (CWSLR por sus siglas en inglés), el cual proporciona una estructura para el dominio de los sistemas de información, con la finalidad de soportar el trabajo cooperativo, representando la división de la funcionalidad y el flujo de datos de los elementos que lo constituyen

• Y un estilo arquitectónico basado en MDA con sus modelos CIM, PIM y PSM, que proporciona la estructura estándar que permitirá sustituir procesos mediante transformaciones de un modelo a otro.

El PS tiene una arquitectura de software explícita, donde todos sus elementos se conocen y

se pueden desarrollar en el orden que se requiera y está conformado como un árbol invertido que abarca los productos de cuatro categorías de procesos: Administración de Procesos, Administración de Proyectos, Ingeniería y Soporte. Enfocándose en el conjunto de productos de ingeniería que incluye los modelos necesarios para la concepción del producto de software y su desarrollo hasta alcanzar la operación del producto ejecutable.

El conjunto de productos de ingeniería abarca los modelos de MDA: CIM, PIM y PSM,

además incluye el IM (Modelo de Implementación) y el OM (Modelo de Operación). Los modelos CIM, PIM, PSM, IM y OM son los elementos del primer nivel (más abstracto) denominado PS1Set, de cuatro niveles. El segundo nivel (más especifico) se denomina PS2Set y está constituido por 20 modelos, el tercer nivel denominado PS3Set consta de 152 modelos y el cuarto nivel lo constituyen los productos del trabajo (modelos específicos), presentando una sugerencia del contenido de los modelos MDA: CIM, PIM y PSM. 2.- El Proceso Dirigido por Modelos (MDP, Model Driven Process): está compuesto de cuatro modos de trabajo en grupo:

• Un trabajo en equipo • Y tres modos de trabajo en grupo complementarios (de colaboración, de cooperación y

de control)

El MDP es un proceso generalizado de la iteración de los cuatro modos de trabajo, es sistemático e iterativo y está organizado en sub-procesos de forma que facilite el trabajo en equipo.

Algunos de los conceptos importantes que maneja el AGD son:

11 Modelo de referencia es una estructura que soporte el funcionamiento y el flujo de datos para el tipo de aplicación a desarrollar.

Capítulo 3 Antecedentes y Descripción de la Investigación

10

• El Ciclo de Vida de un Producto: es el período de tiempo que comienza cuando un

producto de software es concebido y se termina cuando el software ya no está disponible para su uso.

• Rol: es el papel que desempeña una persona o un grupo de personas en cualquier actividad del desarrollo del sistema.

• Iteración: el proceso de realizar una secuencia de pasos repetidamente. • Sub-proceso: es parte de un proceso, que sigue un conjunto de actividades o

procedimientos que están enlazadas para realizar una tarea dentro del desarrollo de software.

En la Ilustración 3-1 se muestra la ubicación del presente trabajo de investigación, el cual esta enmarcado con puntos y líneas en el área del PS del AGD.

AGDPS (Conjunto de Productos)

MDP (Proceso Dirigido por Modelos) Modos de trabajo en grupo: en equipo, colaborativo, cooperativo y control

CIM

PIM

Actor1

UseCase1

UseCase2

Actor1

UseCase1

UseCase2

UseCase3«uses»

Actor1

UseCase1

UseCase2

Class1

Class1

Class2

Class3

Class1

Class2

Actor1

UseCase1

UseCase2

Actor1

UseCase1

UseCase2

UseCase3«uses»

Actor1

UseCase1

UseCase2

Actor1

UseCase1

UseCase2

Actor1

UseCase1

UseCase2

UseCase3«uses»

Actor1

UseCase1

UseCase2

Class1

Class1

Class2

Class3

Class1

Class2 Class1

Class1

Class2

Class3

Class1

Class2

PSMClass1

Class1

Class2

Class3

Class1

Class2 Class1

Class1

Class2

Class3

Class1

Class2Class 1

Class1

Class2

Class3

Class1

Class2

Implementación

Problema

Sistema

……

CIM

PIM

Actor1

UseCase1

UseCase2Actor1

UseCase1

UseCase2

Actor1

UseCase1

UseCase2

UseCase3«uses»

Actor1

UseCase1

UseCase2

UseCase3«uses»

Actor1

UseCase1

UseCase2Actor1

UseCase1

UseCase2

Class1Class1

Class1

Class2

Class3

Class1

Class2

Class3

Class1

Class2

Class1

Class2

Actor1

UseCase1

UseCase2Actor1

UseCase1

UseCase2

Actor1

UseCase1

UseCase2

UseCase3«uses»

Actor1

UseCase1

UseCase2

UseCase3«uses»

Actor1

UseCase1

UseCase2Actor1

UseCase1

UseCase2

Actor1

UseCase1

UseCase2Actor1

UseCase1

UseCase2

Actor1

UseCase1

UseCase2

UseCase3«uses»

Actor1

UseCase1

UseCase2

UseCase3«uses»

Actor1

UseCase1

UseCase2Actor1

UseCase1

UseCase2

Class1Class1

Class1

Class2

Class3

Class1

Class2

Class3

Class1

Class2

Class1

Class2 Class1Class1

Class1

Class2

Class3

Class1

Class2

Class3

Class1

Class2

Class1

Class2

PClass1Class1

Class1

Class2

Class3

Class1

Class2

Class3

Class1

Class2

Class1

Class2 Class1Class1

Class1

Class2

Class3

Class1

Class2

Class3

Class1

Class2

Class1

Class2Class 1Class 1

Class1

Class2

Class3

Class1

Class2

Class3

Class1

Class2

Class1

Class2

Implementación

Problema

Sistema

……

AGDPS (Conjunto de Productos)

MDP (Proceso Dirigido por Modelos) Modos de trabajo en grupo: en equipo, colaborativo, cooperativo y control

CIM

PIM

Actor1

UseCase1

UseCase2

Actor1

UseCase1

UseCase2

UseCase3«uses»

Actor1

UseCase1

UseCase2

Class1

Class1

Class2

Class3

Class1

Class2

Actor1

UseCase1

UseCase2

Actor1

UseCase1

UseCase2

UseCase3«uses»

Actor1

UseCase1

UseCase2

Actor1

UseCase1

UseCase2

Actor1

UseCase1

UseCase2

UseCase3«uses»

Actor1

UseCase1

UseCase2

Class1

Class1

Class2

Class3

Class1

Class2 Class1

Class1

Class2

Class3

Class1

Class2

PSMClass1

Class1

Class2

Class3

Class1

Class2 Class1

Class1

Class2

Class3

Class1

Class2Class 1

Class1

Class2

Class3

Class1

Class2

Implementación

Problema

Sistema

……

CIM

PIM

Actor1

UseCase1

UseCase2Actor1

UseCase1

UseCase2

Actor1

UseCase1

UseCase2

UseCase3«uses»

Actor1

UseCase1

UseCase2

UseCase3«uses»

Actor1

UseCase1

UseCase2Actor1

UseCase1

UseCase2

Class1Class1

Class1

Class2

Class3

Class1

Class2

Class3

Class1

Class2

Class1

Class2

Actor1

UseCase1

UseCase2Actor1

UseCase1

UseCase2

Actor1

UseCase1

UseCase2

UseCase3«uses»

Actor1

UseCase1

UseCase2

UseCase3«uses»

Actor1

UseCase1

UseCase2Actor1

UseCase1

UseCase2

Actor1

UseCase1

UseCase2Actor1

UseCase1

UseCase2

Actor1

UseCase1

UseCase2

UseCase3«uses»

Actor1

UseCase1

UseCase2

UseCase3«uses»

Actor1

UseCase1

UseCase2Actor1

UseCase1

UseCase2

Class1Class1

Class1

Class2

Class3

Class1

Class2

Class3

Class1

Class2

Class1

Class2 Class1Class1

Class1

Class2

Class3

Class1

Class2

Class3

Class1

Class2

Class1

Class2

PClass1Class1

Class1

Class2

Class3

Class1

Class2

Class3

Class1

Class2

Class1

Class2 Class1Class1

Class1

Class2

Class3

Class1

Class2

Class3

Class1

Class2

Class1

Class2Class 1Class 1

Class1

Class2

Class3

Class1

Class2

Class3

Class1

Class2

Class1

Class2

Implementación

Problema

Sistema

……

CIM

PIM

Actor1

UseCase1

UseCase2Actor1

UseCase1

UseCase2Actor1

UseCase1

UseCase2

Actor1

UseCase1

UseCase2

UseCase3«uses»

Actor1

UseCase1

UseCase2

UseCase3«uses»

Actor1

UseCase1

UseCase2

UseCase3«uses»

Actor1

UseCase1

UseCase2Actor1

UseCase1

UseCase2Actor1

UseCase1

UseCase2

Class1Class1Class1

Class1

Class2

Class3

Class1

Class2

Class3

Class1

Class2

Class3

Class1

Class2

Class1

Class2

Class1

Class2

Actor1

UseCase1

UseCase2Actor1

UseCase1

UseCase2Actor1

UseCase1

UseCase2

Actor1

UseCase1

UseCase2

UseCase3«uses»

Actor1

UseCase1

UseCase2

UseCase3«uses»

Actor1

UseCase1

UseCase2

UseCase3«uses»

Actor1

UseCase1

UseCase2Actor1

UseCase1

UseCase2Actor1

UseCase1

UseCase2

Actor1

UseCase1

UseCase2Actor1

UseCase1

UseCase2Actor1

UseCase1

UseCase2

Actor1

UseCase1

UseCase2

UseCase3«uses»

Actor1

UseCase1

UseCase2

UseCase3«uses»

Actor1

UseCase1

UseCase2

UseCase3«uses»

Actor1

UseCase1

UseCase2Actor1

UseCase1

UseCase2Actor1

UseCase1

UseCase2

Class1Class1Class1

Class1

Class2

Class3

Class1

Class2

Class3

Class1

Class2

Class3

Class1

Class2

Class1

Class2

Class1

Class2 Class1Class1Class1

Class1

Class2

Class3

Class1

Class2

Class3

Class1

Class2

Class3

Class1

Class2

Class1

Class2

Class1

Class2

PSMClass1Class1Class1

Class1

Class2

Class3

Class1

Class2

Class3

Class1

Class2

Class3

Class1

Class2

Class1

Class2

Class1

Class2 Class1Class1Class1

Class1

Class2

Class3

Class1

Class2

Class3

Class1

Class2

Class3

Class1

Class2

Class1

Class2

Class1

Class2Class 1Class 1Class 1

Class1

Class2

Class3

Class1

Class2

Class3

Class1

Class2

Class3

Class1

Class2

Class1

Class2

Class1

Class2

Implementación

Problema

Sistema

……

CIM

PIM

Actor1

UseCase1

UseCase2Actor1

UseCase1

UseCase2Actor1

UseCase1

UseCase2Actor1

UseCase1

UseCase2

Actor1

UseCase1

UseCase2

UseCase3«uses»

Actor1

UseCase1

UseCase2

UseCase3«uses»

Actor1

UseCase1

UseCase2

UseCase3«uses»

Actor1

UseCase1

UseCase2

UseCase3«uses»

Actor1

UseCase1

UseCase2Actor1

UseCase1

UseCase2Actor1

UseCase1

UseCase2Actor1

UseCase1

UseCase2

Class1Class1Class1Class1

Class1

Class2

Class3

Class1

Class2

Class3

Class1

Class2

Class3

Class1

Class2

Class3

Class1

Class2

Class1

Class2

Class1

Class2

Class1

Class2

Actor1

UseCase1

UseCase2Actor1

UseCase1

UseCase2Actor1

UseCase1

UseCase2Actor1

UseCase1

UseCase2

Actor1

UseCase1

UseCase2

UseCase3«uses»

Actor1

UseCase1

UseCase2

UseCase3«uses»

Actor1

UseCase1

UseCase2

UseCase3«uses»

Actor1

UseCase1

UseCase2

UseCase3«uses»

Actor1

UseCase1

UseCase2Actor1

UseCase1

UseCase2Actor1

UseCase1

UseCase2Actor1

UseCase1

UseCase2

Actor1

UseCase1

UseCase2Actor1

UseCase1

UseCase2Actor1

UseCase1

UseCase2Actor1

UseCase1

UseCase2

Actor1

UseCase1

UseCase2

UseCase3«uses»

Actor1

UseCase1

UseCase2

UseCase3«uses»

Actor1

UseCase1

UseCase2

UseCase3«uses»

Actor1

UseCase1

UseCase2

UseCase3«uses»

Actor1

UseCase1

UseCase2Actor1

UseCase1

UseCase2Actor1

UseCase1

UseCase2Actor1

UseCase1

UseCase2

Class1Class1Class1Class1

Class1

Class2

Class3

Class1

Class2

Class3

Class1

Class2

Class3

Class1

Class2

Class3

Class1

Class2

Class1

Class2

Class1

Class2

Class1

Class2 Class1Class1Class1Class1

Class1

Class2

Class3

Class1

Class2

Class3

Class1

Class2

Class3

Class1

Class2

Class3

Class1

Class2

Class1

Class2

Class1

Class2

Class1

Class2

PClass1Class1Class1Class1

Class1

Class2

Class3

Class1

Class2

Class3

Class1

Class2

Class3

Class1

Class2

Class3

Class1

Class2

Class1

Class2

Class1

Class2

Class1

Class2 Class1Class1Class1Class1

Class1

Class2

Class3

Class1

Class2

Class3

Class1

Class2

Class3

Class1

Class2

Class3

Class1

Class2

Class1

Class2

Class1

Class2

Class1

Class2Class 1Class 1Class 1Class 1

Class1

Class2

Class3

Class1

Class2

Class3

Class1

Class2

Class3

Class1

Class2

Class3

Class1

Class2

Class1

Class2

Class1

Class2

Class1

Class2

Implementación

Problema

Sistema

……

Ilustración 3-1. Ubicación de la tesis dentro de AGD

A partir del método AGD surgió la propuesta de desarrollar un ambiente de herramientas

para el soporte del desarrollo de software dirigido por modelos denominado AGDE (Ambiente AGD).

El AGDE retoma el método AGD para identificar factores que se pueden configurar en el proceso y los elementos presentes en la transformación entre modelos, en la Ilustración 3-2 se muestra la estructura general del AGDE.

Capítulo 3 Antecedentes y Descripción de la Investigación

11

Herramienta de transformación de modelo a código

Editor de código

CodificaciónManual Automática

Herramienta de transformación de modelo a modelo

Modelo PSM suficiente

Validación del modelo

Editor de modelos

Modelo y código sin defectos

Herramienta de transformación decódigo a modelo

Modelado Manual Automático

Compilación y depuración

Integración y complementación del producto de software

Sistema de historial de proyectos de software

IngenieríaDirecta Inversa

Sistema de Soporte para el Proceso de Software en equipo(SiSoProS)

Herramienta de adecuación del desarrollo

Herramienta de transformación de modelo a código

Editor de código

CodificaciónManual Automática

Herramienta de transformación de modelo a modelo

Modelo PSM suficiente

Validación del modelo

Editor de modelos

Modelo y código sin defectos

Herramienta de transformación decódigo a modelo

Modelado Manual Automático

Compilación y depuración

Integración y complementación del producto de software

Sistema de historial de proyectos de software

IngenieríaDirecta Inversa

Sistema de Soporte para el Proceso de Software en equipo(SiSoProS)

Herramienta de adecuación del desarrollo

Ilustración 3-2. Diagrama Nassi-Shneiderman del AGDE

Los componentes del AGDE son los siguientes:

• Herramienta de adecuación del desarrollo. Ayuda en la toma de decisión para elegir el

proceso adecuado para resolver problemas específicos de software, mediante un procedimiento que permita configurar el proceso de software a las circunstancias que influyan en el desarrollo de un proyecto.

• Sistema de Soporte para el Proceso de Software en equipo (SiSoProS). Es una herramienta que permite el registro y monitoreo del proceso, así como el desarrollo de software en equipo para la mejora continua del proceso y del producto.

• Editor de modelos. Se utiliza para crear y/o modificar los modelos (CIM, PIM, PSM) realizados durante el proceso de desarrollo de un software.

• Herramienta de transformación de modelo a modelo. Esta herramienta permite obtener un modelo destino a partir de un modelo origen, el cual es la entrada para la transformación. La transformación se puede dar entre distintos niveles de abstracción (CIM a PIM, PIM a PSM) o igual nivel de abstracción (CIM a CIM, PIM a PIM, PSM a PSM).

• Validación del modelo. Los modelos usados para la generación de otros modelos deben estar extremadamente bien definidos. Por medio de las validaciones se pueden verificar los modelos contra un conjunto de reglas (predefinido o definido por el usuario) para asegurar que se puedan utilizar en una transformación.

• Editor de código. Herramienta diseñada para crear o editar código de un programa. Este componente soporta al humano para generar las líneas de código nuevas y cambiadas, así como para eliminar líneas del código fuente, pertenecientes al modelo IM. Esta

Capítulo 3 Antecedentes y Descripción de la Investigación

12

herramienta considera los aspectos del lenguaje y plataforma, es decir, los aspectos de implementación para obtener el código.

• Herramienta de transformación de modelo a código. Esta herramienta tiene como entrada un modelo PSM y como salida se obtiene el código (IM) que representa a dicho modelo por medio de la transformación de PSM a IM.

• Compilación y depuración. La compilación es el proceso que traduce programas en código fuente a programas en código objeto. La depuración permite detectar errores en el programa y de esta manera proceder a modificar el código.

• Integración y complementación del producto de software. En este componente se procede a unir los elementos de la estructura del sistema.

• Herramienta de transformación de código a modelo. Parte del código (IM) para obtener el modelo PSM equivalente, aplicándole una transformación de IM a PSM.

• Sistema de historial de proyectos de software. Sistema que tiene la finalidad de capturar la información histórica del desarrollo de proyectos de software y almacenarla en una base de datos para su posterior análisis y comparación.

Con el propósito de iniciar el desarrollo del ambiente AGDE, este trabajo de investigación

aporta un primer acercamiento a las bases requeridas en el área de desarrollo dirigido por modelos, esencialmente en las herramientas de transformación y los modelos presentes en el PS del AGD (CIM, PIM, PSM e IM), los cuales se basan en el enfoque MDA. 3.1.2 Tesis de Maestría en Ciencias, relacionadas Dos tesis de maestría realizadas en el área de ingeniería de software de CENIDET relacionadas con esta investigación, son: “Modelado visual orientado a objetos” [PAR00] y “Sistema para el diseño detallado de métodos de clases con UML” [ROM03], que ayudaron a la presente investigación a determinar qué información utilizar dentro de los elementos de los diagramas de actividad y clases de los modelos PIM y PSM para llegar a generar código. La primera tesis genera código en C++ que corresponda tanto al diagrama de clases como al diseño detallado de los métodos de las clases y, la segunda tesis trata sobre el diseño detallado de los métodos de las clases por medio de diagramas de actividad para posteriormente generar el código correspondiente. 3.2 Estado del arte [MDA03, SEL06, LAR06] El uso de modelos en disciplinas tradicionales de la ingeniería tiene una historia amplia y acertada. A través de los años se ha mejorado el uso de modelos para obtener representaciones abstractas que ayuden a comprender un determinado problema. Se fue desarrollando un enfoque de Desarrollo Dirigido por Modelos (MDD, Model-Driven Development), el cual representa un paso adelante de la Ingeniería de Software (IS), en la que la mayoría de las metodologías utilizan modelos como herramienta principal. La mayoría de los términos utilizados en MDD no son nuevos, pero ahora se usan con un enfoque diferente.

En la Ilustración 3-3 se muestra una gráfica del incremento de los niveles de abstracción en el que trabaja el desarrollador partiendo de un nivel bajo (con mucho detalle) hasta un nivel alto (a menor detalle). En el eje vertical se muestran los niveles de abstracción desde el

Capítulo 3 Antecedentes y Descripción de la Investigación

13

lenguaje de ensamble (manejo simbólico de operaciones y operándoos), pasando por el pseudocódigo, después por los lenguajes de tercera generación “3GL” (que agrupa varias instrucciones del lenguaje de ensamble, en una instrucción, ejemplos de 3GL son C, Cobol, Foltran,..) y posteriormente por el modelado visual hasta llegar al Desarrollo Dirigido por Modelos. El eje horizontal representa el tiempo, que en combinación con el nivel de abstracción, muestra cómo han evolucionado estos niveles de abstracción a través del tiempo.

Ilustración 3-3. Incremento de los niveles de abstracción en el que trabaja el desarrollador. El proceso de MDD

automatiza la abstracción/ refinamiento [IBM05]

Existen varios enfoques que aplican el MDD de diferente manera tales como: MDA y

MIC (Model-Integrated Computing) entre otros. El enfoque utilizado en esta investigación es MDA, considerando principalmente sus modelos y fronteras.

MDA es una iniciativa de la Object Management Group (OMG), que representa un nuevo paradigma de desarrollo de software en el que los modelos guían todo el proceso de desarrollo, apegándose al MDD y se basa en estándares de la industria como: UML, XMI, MOF (MetaObject Facility) y CWM (Common Warehouse Metamodel).

La idea clave de MDA es que si el desarrollo está guiado por modelos de software se obtendrán beneficios importantes en aspectos fundamentales como son: la productividad, portabilidad, interoperabilidad y mantenimiento a través de sus modelos (CIM, PIM, PSM).

A medida que ha evolucionado el enfoque MDA, a través de los años han surgido tanto

herramientas como trabajos relacionados que aplican o dan soporte a este enfoque. A continuación se hace una breve descripción de las herramientas y trabajos relacionados de acuerdo a la definición de los modelos MDA y sus transformaciones con el propósito de identificar el avance y áreas de mejora y comparar estos trabajos con respecto a esta tesis.

Capítulo 3 Antecedentes y Descripción de la Investigación

14

3.2.1. Herramientas MDA Debido al auge de MDA se han desarrollado herramientas tanto open source como comerciales que dan soporte parcial o total al enfoque. En [DSDM06] y [OMG06] se muestran dichas herramientas. El soporte para MDA puede darse en diversas formas, como son: en la generación de código a partir de modelos y en las transformaciones de modelo a modelo, donde ambas formas pueden ser implementadas por distintas herramientas: herramientas de transformación de PIM a PSM, PSM a código, PIM a código, ajustables y de definición de transformaciones. Las herramientas analizadas que se destacan debido a su madurez, uso y mayor soporte al enfoque son: ArcStyler, OptimalJ, AndroMDA, Codagen Architect y Together Architect. Los tipos de herramientas presentadas son de transformaciones de modelo a modelo (PIM a PSM) y de modelo a código (PIM a código y PSM a código).

El estudio de estas herramientas permite conocer las características de una herramienta MDA, sus limitaciones actuales y su aplicabilidad, mostrando un panorama de lo que falta mejorar e implementar en ellas respecto a las transformaciones, definiciones de sus modelos, forma de construcción y tecnologías (Ej. UML, XMI, MOF,…) que utilizan.

En la Tabla 3-1 se ilustra la comparativa entre las herramientas donde se presentan las características a evaluar (renglones) y los nombres de las herramientas (columnas). La intersección de un renglón con una columna es representada con el símbolo “√” ó “*”. A continuación se describen los símbolos y renglones de la Tabla 3-1.

Símbolos: • El símbolo “√” significa que es verdadera la condición. • El símbolo “ “ indica que es falsa la condición. • El “*” significa que cumple indirectamente la característica. Es decir, existen

mecanismos que aparentemente lo realizan.

Renglones: • Entrada. Tipo de entrada que admite para desarrollar la aplicación. • Salida. Tipo de lenguaje o plataforma en la cual genera el código. • Estándares. Estándares en que se basa la herramienta. • Soporte de CIM. Creación de modelos independientes de cómputo. • Soporte PIM. Creación de modelos independientes de plataforma. • Soporte PSM. Creación de modelos de plataforma específica. • CIM a PIM. Soporte a transformaciones del modelo independiente de cómputo al

modelo independiente de plataforma. • PIM a PSM. Soporte a transformaciones del modelo independiente de plataforma al

modelo de plataforma específico. • PSM a IM. Soporte a transformaciones del modelo de plataforma específica al modelo

de implementación (Generación de código). • Consistencia. Es importante para mantener la información adicional que se requiere

para transformar un modelo en otro, de manera que pueda reutilizarse cuando se requiera una modificación o actualización del modelo fuente para volver a realizar su transformación al modelo objetivo.

Capítulo 3 Antecedentes y Descripción de la Investigación

15

• Trazabilidad. Implica conocer el elemento origen a partir del cual se ha generado cualquier elemento del modelo destino.

Tabla 3-1. Comparación de herramientas MDA [AHS06, GAR04, COR06]

H

erra

mie

ntas

A

rcSt

yler

[A

RC

06]

O

ptim

alJ

[OPT

06]

A

ndro

MD

A

[AN

D06

, MIC

06]

C

odag

en

Arc

hite

ct

To

geth

er

Arc

hite

ct

Entrada

UML

XMI v1.1 XMI v1.1

XMI v1.1, MDD de Racional,

Visio, together.

XMI

Lenguaje de

salida

Todos

En J2EE Todos

Java,C#,C++,

Visual Basic.

Java,C#,C++,Corba,

Visual Basic

6,Visual Basic .Net

Estándares

XMI, UML, MOF, JMI

XMI, UML, MOF, XML,

WSDL, J2EE

Struts, Netbeans MDR, ant, Hybernate, Velocity, xDoclet y Maven.

Struct

XMI

Soporte CIM * Soporte PIM √ √ √ √ * Soporte PSM * √ √ * √ CIM a PIM * PIM a PSM √ √

PIM a Código √ √ PSM a Código √ √ √

Consistencia √ √ * √ * Trazabilidad √ √ * * *

Los diagramas UML que soportan las herramientas es importante conocerlos, para

determinar los diagramas más utilizados en el desarrollo de aplicaciones a través del enfoque MDA. Los diagramas de UML que soportan las herramientas analizadas son: casos de uso, clases, secuencia, comunicación, actividad, máquina de estado, componente, objeto, tiempo, revisión de la interacción, estructura, así como el diagrama de distribución. La herramienta OptimalJ utiliza todos excepto los diagramas de tiempo, revisión de la interacción y estructura. Arcstyler no utiliza el diagrama de objeto, tiempo, revisión de la interacción y estructura. Together Architect no utiliza los diagramas de máquina de estados, objeto, tiempo, estructura. Codagen Architect y AndroMDA utilizan los diagramas de clases, casos de uso y maquina de estado. Además AndroMDA usa el diagrama de secuencia y Codagen Architect el diagrama de actividad. Los resultados del análisis de la Tabla 3-1, que se resaltan son:

• Los diagramas que utilizan entre el 80% y el 100% de las herramientas son: Casos de

uso, Clases, Secuencia, Actividad y Maquinas de estado, mientras que los diagramas usados por el 60% de las herramientas son: Comunicación, Componente y distribución.

Capítulo 3 Antecedentes y Descripción de la Investigación

16

• La mayoría de las herramientas no implementan en su totalidad la especificación completa de MDA, pueden realizar las transformaciones entre los modelos de PIM a PSM, de PSM a Código, pero no de CIM a PIM o simplemente realizan las transformaciones directas de PIM a código (por ejemplo ArcStyler, Codagen Architect).

• Ninguna de las herramientas tiene soporte a la definición de todos los modelos de MDA, solamente soportan a PIM y PSM, y Together Architect solamente considera al CIM indirectamente.

• El atributo de consistencia, a pesar de ser un punto relevante para el enfoque MDA con respecto a las transformaciones, lo cumplen solamente: ArcStyler, OptimalJ y Codagen Architect, las demás herramientas tienen un soporte ligero a esta característica.

• El atributo de trazabilidad, aunque es relevante para las transformaciones, sólo lo consideran OptimalJ y ArcStyler. Tratarlo es importante para la búsqueda y corrección de errores.

• Debido a que la base del estándar MDA son UML, MOF y XMI, es importante que las herramientas consideren estos estándares para encontrar uniformidad en la interpretación del enfoque MDA. Las herramientas analizadas que consideran estos estándares son ArcStyler y OptimalJ.

3.2.2. Trabajos relacionados Con el objetivo de revisar el avance y áreas de mejora conque se cuenta en la actualidad en los diversos trabajos entorno al enfoque MDA, considerando la delimitación y definición de cada uno de sus niveles (CIM, PIM, PSM), fronteras (CIM-PIM, PIM-PSM y PSM-IM) y transformaciones, es necesario estudiar los trabajos relacionados.

Se buscaron trabajos que cumplieran con algunas o todas las características siguientes: por una parte trabajos que se enfocarán en la especificación de uno o más de los niveles de MDA y/o que se enfocarán en las transformaciones entre dichos niveles. Además se buscaban características como la utilización de UML en éste proceso. Estas características fueron las que influyeron para seleccionar los trabajos relacionados ya que son las más importantes en la presente investigación. Además, en estos trabajos se consideran las características de consistencia y trazabilidad. Todas las características mencionadas se detallan posteriormente (§ 3.2.2.4) y a continuación se describen brevemente los trabajos de acuerdo al enfoque que presentan. 3.2.2.1 Trabajos relacionados a la especificación de los modelos MDA Estos trabajos sólo presentan la especificación de uno o varios de los modelos CIM, PIM y PSM de MDA, es decir, mencionan la información que deberían contener los modelos. A continuación se mencionan los trabajos.

• Primeramente en el trabajo de “PIM Definition and Description” [EXE04] se presenta un enfoque de Ingeniería Dirigida por Modelos (MDE por sus siglas en inglés), que utiliza la visión MDA. El MDE toma en consideración dos aspectos importantes de un sistema: la separación de aspectos funcionales (requerimientos) de los no funcionales (calidad) y los aspectos de plataforma independiente de los de plataforma específica.

Capítulo 3 Antecedentes y Descripción de la Investigación

17

Se definen las partes que conforman a un PIM como: Contexto (el alcance del sistema a ser desarrollado); Requerimientos; Análisis (especifica la vista interna del sistema); y Diseño del componente (solución independiente de plataforma expresada en términos de componentes de software).

• Y en el trabajo de “Una Propuesta de Proceso Explícito de V&V en el Marco de MDA” [LUC05] se presenta un proceso V&V (Validación & Verificación) genérico para ser aplicado en el ámbito de metodologías basadas en MDA o MDD, donde el proceso se usa para detectar errores e inconsistencias en las etapas tempranas del desarrollo, evitando así la propagación de esos errores a las etapas posteriores, ya que un defecto en el PIM se transmite a uno o más defectos en el PSM hasta llegar a defectos en el código. Además el proceso sugerido sirve para identificar funciones importantes que deberían cumplir las herramientas de soporte de MDA respecto a realizar modelos correctos por medio de la verificación y validación. Para pasar al modelado del PSM el proceso de verificación y validación debe realizarse tanto para el análisis de requisitos (no se especifica en que modelo debería estar ubicado) como para el modelado del PIM.

3.2.2.2 Trabajos relacionados a las transformaciones entre fronteras de los modelos MDA A continuación se mencionan los trabajos que sólo presentan transformaciones entre las fronteras de los modelos MDA, es decir, consideran transformaciones entre distintos niveles de abstracción como son: de CIM a PIM, de PIM a PSM y de PSM a IM.

• En el trabajo de “Reflective Model Driven Engineering” [BEZ03] se propone aplicar el enfoque MDA a si mismo, con las nociones de PIT (Transformaciones Independientes de Plataforma) y PST (Transformaciones de Plataforma Especifica) que dan a MDA dos pasos nuevos en el ciclo de vida de transformaciones de modelos, el primero expresa las transformaciones de modelo de una manera independiente del instrumento (herramienta) y el segundo marca está expresión independiente del instrumento real. En éste artículo, las plataformas se entienden como instrumentos que permiten la especificación, diseño y ejecución de transformaciones. Con el objetivo de transformar de PIM a PSM se utilizan PIT y PST. Se basa en el enfoque orientado a objetos y toma a UML como un metamodelo para definir lenguajes de transformación de tipo PIT y PST.

• El trabajo de “AspectMDA: Hacia un desarrollo incremental consistente integrando MDA y Orientado a Aspectos” [AMA05] se basa en la idea de especificar diferentes modelos que corresponden con distintos aspectos del sistema (como seguridad, restricciones de tiempo real), éste integra a MDA, DSOA12 (Desarrollo de Software Orientado a Aspectos) y xlinkit13 de una forma adecuada y beneficiosa para el MDD. Los objetivos de este artículo son: modelar esos aspectos (artefactos o propiedades de un sistema) por cada equipo de trabajo desde el CIM hasta el PSM con el mínimo de comunicación; verificar la consistencia; mejorar la trazabilidad entre los diferentes niveles de abstracción; y controlar el impacto al cambio. De éste modo, los niveles de

12 Modela los componentes y aspectos como dos entidades separadas donde los aspectos se mezclan o componen de forma automática con el comportamiento funcional del sistema. 13 Es una propuesta para administrar la consistencia de documentos XML heterogéneos distribuidos por la red que son centrales para el desarrollo de sistemas de software.

Capítulo 3 Antecedentes y Descripción de la Investigación

18

MDA se especifican en diferentes facetas del sistema que modela los aspectos y los mantienen separados durante todo el marco (MDA).

• Y en el trabajo de “Transformation from CIM to PIM: A Feature-Oriented Component-Based Approach” [ZHA05] se presenta un enfoque de transformaciones de CIM a PIM, considerando al CIM como un modelo de características y al PIM como la arquitectura de software (componentes). Se resuelven parcialmente 2 problemas con respecto a la transformación de CIM a PIM: el seguimiento de CIM a PIM (manera en que los elementos en el CIM pueden ser mapeados a elementos en el modelo PIM) y la construcción de PIM basado en CIM (cómo los elementos en el modelo destino del PIM son formados en la transformación, Ej. se usan responsabilidades como conector entre los requerimientos en el CIM y los elementos de diseño en el PIM).

3.2.2.3 Trabajos relacionados tanto a la especificación de modelos como a las transformaciones entre fronteras de los modelos MDA En éste punto se presentan trabajos que contemplan tanto la especificación de los modelos como las transformaciones entre los modelos, es decir, mencionan como debe ser la información contenida en un determinado modelo y como transformarlo a otro modelo. A continuación se describen brevemente cada uno.

• Tanto en el trabajo de "PIM to PSM mapping techniques" [MASTER-03-1] como en el trabajo de "PSMs Concepts and Techniques” [MASTER-03-2] son proyectos de MASTER (Model-driven Architecture inSTrumentation, Enhancement and Refinement) que es el nombre de un proyecto cuyo objetivo es realizar una revisión de los conceptos de MDA. En [MASTER-03-1] se mencionan las características que debe tener un modelo de PSM para ser construido de acuerdo al perfil de la plataforma, librerías, conjunto de reglas, patrones y metamodelos. El trabajo de [MASTER-03-2] se centra en las transformaciones de PIM a PSM que deben considerar las características de trazabilidad, bidireccionalidad, consistencia y simplicidad (para facilitar las pruebas o verificación en la transformación). Utilizan separación de aspectos para el mapeo de PIM a PSM, refiriéndose a que el PSM aborda tanto cuestiones tecnológicas como de negocios, por lo que se deben separar, para que la parte del negocio no se disperse en la tecnología, sino que el modelo PIM del negocio se enriquezca de la tecnología.

• En el trabajo de “Separación de Aspectos en MDA: Una aproximación basada en múltiples vistas” [AMA04] se propone integrar técnicas de múltiples perspectivas (se basan en percibir un sistema de software desde diferentes ángulos/posiciones, por ejemplo con perspectiva CIM, PIM o PSM) con MDA y separación de aspectos multidimencionales (dimensión de clases y otra de casos de uso) en cada una de dichas perspectivas. La representación de los modelos que utiliza es con los estereotipos de UML para especificar las vistas de CIM, PIM y PSM. Los objetivos que cubre son: lograr una separación de aspectos (lógica del negocio, requerimientos,…) en el nivel CIM (se utilizan casos de uso) y eliminar los Crosscutting Concerns14 que aparecen dentro de cada punto de vista que modela el sistema.

14 Crosscutting Concerns, es un problema que se presenta cuando aparecen aspectos en el sistema que no pueden ser modelados de forma independiente a otros aspectos.

Capítulo 3 Antecedentes y Descripción de la Investigación

19

3.2.2.4 Comparación entre trabajos Con el fin de bosquejar las características que presentan los trabajos mencionados se realiza una comparativa entre ellos, del presente trabajo de investigación para visualizar la diferencia con respecto a los modelos, transformaciones de los modelos de MDA, consistencia y trazabilidad, en la Tabla 3-2, donde las columnas representan las características a evaluar y los renglones los trabajos identificados mediante sus referencias. A continuación se describen las columnas y símbolos de la Tabla 3-2.

Columnas: • Diagramas UML. Se utilizan diagramas UML para el modelado. • Consistencia. Trata el atributo consistencia, que se refiere a mantener la información

adicional que se requiere para transformar un modelo en otro. De manera que pueda reutilizarse, dicha información, cuando se requiera una modificación o actualización del modelo fuente para volver a realizar su transformación al modelo objetivo.

• Trazabilidad. Trata el atributo trazabilidad, que implica conocer el elemento origen a partir del cual se ha generado cualquier elemento del modelo destino.

• Especificación. Se define la información requerida en los modelos de MDA: CIM, PIM y PSM.

• Transformaciones. Se soportan las transformaciones entre diferentes niveles de abstracción como: CIM a PIM, PIM a PSM y de PSM a IM (Modelo de Implementación).

Símbolos:

• El símbolo “√” significa que es verdadera la condición. • El símbolo “ “ indica que es falsa la condición. • El símbolo “G” indica que especifica de manera general, no detallada, lo que contiene

el modelo (ejemplo, PSM). • El símbolo “I” indica que especifica de manera incipiente lo que contiene el modelo

(ejemplo, CIM).

Tabla 3-2. Comparativa de trabajos relacionados

Especificación Transformación

Artículos

Dia

gram

as

UM

L

Con

sist

enci

a

Traz

abili

dad

CIM

PIM

PSM

CIM

-PIM

PIM

-PSM

PSM

-IM

[AMA04] √ √ I √ [BEZ03] √ √ [LUC05] √ √ I [AMA05] √ √ √ √ √ √ [EXE04] √ G [MASTER-03-1] y [MASTER-03-2] √ G √ [ZHA05] √ √ Tesis √ √ √ √ √ √ √ √ √

En la comparativa de la Tabla 3-2 todos los trabajos utilizan el UML para el modelado,

excepto [ZHA05] que utiliza un modelo de características para representar su proceso de transformación. Las dos características deseables como consistencia y trazabilidad solamente

Capítulo 3 Antecedentes y Descripción de la Investigación

20

las considera [AMA05], el cual realiza los 3 tipos de transformaciones, aunque no define ningún modelo. Ninguno de los trabajos abarca la especificación detallada de algún modelo, y ninguno describe los 3 modelos MDA, ni sus 3 principales transformaciones (CIM a PIM, PIM a PSM y PSM a IM). Lo que significa que hace falta detallar la definición y descripción de los modelos y sus transformaciones, para encontrar una manera homogénea de representarlos, entenderlos y utilizarlos.

Existe un trabajo presentado en “A MDA-Based Approach for Web Information System

Development” [CAC03-1] y en “Hacía un proceso metodológico dirigido por modelos para el desarrollo ágil de sistemas de información Web” [CAC03-2] basado en MDA que trata de la definición de sus modelos y de sus transformaciones, el cual es un marco metodológico basado en modelos para el desarrollo de Sistemas de Información Web (SIW) llamado MIDAS. Este marco combina el enfoque MDA con el desarrollo ágil y define que para cada uno de sus modelos (CIM, PIM, PSM) propone utilizar una notación única para modelar el sistema entero, la cual es representada por UML, pero extendido. Comparando MIDAS con la presente tesis coinciden en que ambas consideran tanto la definición y las fronteras entre los modelos y la utilización de UML para representarlos, así como las transformaciones entre los modelos, la diferencia es que MIDAS esta dirigido a SIW, por lo tanto las definiciones para cada uno de los modelos MDA cambia igual que sus transformaciones, ya que representa las diferentes vistas del SIW en los modelos PIM y PSM por medio del hipertexto (Ej. modelo lógico de presentación), contenido (Ej. modelo lógico de datos) y la funcionalidad (Ej. modelo de composición de servicios), y en el nivel CIM utiliza el modelo de negocio y de dominio (Ej. modelado conceptual del contexto).

3.3 Descripción de la Investigación 3.3.1 Problema Cuando se está desarrollando un software mediante el enfoque MDA (que contiene tres tipos heterogéneos de modelos: CIM, PIM y PSM, con diferente nivel de abstracción), es difícil determinar cuándo un tipo de modelo se convierte en otro, por ejemplo: de CIM a PIM, de PIM a PSM o de PSM a IM, ya que las transformaciones se realizan de manera gradual. Es decir, que para alcanzar ya sea un PIM se tendría que llevar acabo varias transformaciones por ejemplo de CIM a CIM, o bien para un PSM se tendrían que realizar varias transformaciones por ejemplo de PIM a PIM, etc., debido a que cada uno de estos modelos (CIM, PIM, PSM e IM) pueden estar constituidos por varios modelos. En la Ilustración 3-4 se bosqueja como se relaciona cada modelo y como se realizan las transformaciones para entender mejor los puntos mencionados.

Capítulo 3 Antecedentes y Descripción de la Investigación

21

… … …

Dominio Plataforma

Problema SistemaEnfoque dirigido por modelo

CIM PIM PSM Implementación

Requerimientos Análisis Diseño Implementación

Rep

rese

ntac

ión

Rep

rese

ntac

ión

CIM1 CIM2 CIMn PIM1 PIM2 PIMn PSM1 PSM2 PSMn

Transformaciones

verticales

Transformaciones

verticalesTransformaciones

verticales

Transfo

rmac

iones

verti

cales Tran

sform

acion

es

verti

cales

Transfo

rmac

iones

verti

cales

Transformaciones horizontales están representadas por la siguiente línea:… … …

Dominio Plataforma

Problema SistemaEnfoque dirigido por modelo

CIM PIM PSM Implementación

Requerimientos Análisis Diseño Implementación

Rep

rese

ntac

ión

Rep

rese

ntac

ión

CIM1 CIM2 CIMn PIM1 PIM2 PIMn PSM1 PSM2 PSMn

Transformaciones

verticales

Transformaciones

verticalesTransformaciones

verticales

Transfo

rmac

iones

verti

cales Tran

sform

acion

es

verti

cales

Transfo

rmac

iones

verti

cales

Transformaciones horizontales están representadas por la siguiente línea:

Dominio Plataforma

Problema SistemaEnfoque dirigido por modelo

CIM PIM PSM Implementación

Requerimientos Análisis Diseño Implementación

Rep

rese

ntac

ión

Rep

rese

ntac

ión

CIM1 CIM2 CIMn PIM1 PIM2 PIMn PSM1 PSM2 PSMn

Transformaciones

verticales

Transformaciones

verticalesTransformaciones

verticales

Transfo

rmac

iones

verti

cales Tran

sform

acion

es

verti

cales

Transfo

rmac

iones

verti

cales

Dominio Plataforma

Problema SistemaEnfoque dirigido por modelo

CIM PIM PSM Implementación

Requerimientos Análisis Diseño Implementación

Rep

rese

ntac

ión

Rep

rese

ntac

ión

CIM1 CIM2 CIMn PIM1 PIM2 PIMn PSM1 PSM2 PSMn

Transformaciones

verticales

Transformaciones

verticalesTransformaciones

verticales

Transfo

rmac

iones

verti

cales Tran

sform

acion

es

verti

cales

Transfo

rmac

iones

verti

cales

Transformaciones horizontales están representadas por la siguiente línea:

Transformaciones horizontales están representadas por la siguiente línea:

Ilustración 3-4. Representa todo el esquema de MDA con sus modelos y transformaciones

Para pasar de un nivel a otro se necesita tanto de lenguajes para describir transformaciones

entre modelos, cómo de una forma de representación permanente de los modelos, que permitan mantener la consistencia, el orden adecuado y el grado de relación establecido entre ellos.

El problema que se abordó fue el siguiente: Debido a que en el conjunto ordenado de modelos (CIM, PIM, PSM) utilizado para desarrollar productos de software, cada elemento tiene un grado de abstracción diferente, es difícil pasar de un tipo de modelo a otro tipo de modelo de manera consistente, conservando los detalles específicos necesarios para realizar una implementación.

3.3.2 Idea de solución Elaborar un esquema con la información establecida para cada uno de los modelos (CIM, PIM, PSM) y la delimitación mediante fronteras bien definidas, para poder especificar transformaciones, auxiliándose de representaciones permanentes de los modelos, de tal manera que se pueda conservar la consistencia y trazabilidad entre ellos. 3.3.3 Objetivos Definir mediante representaciones permanentes estándar, la arquitectura de modelos de productos de software apegados a MDA, de manera que permita determinar las características distintivas de cada una de las fronteras, de manera que se distingan claramente entre ellas. 3.3.4 Justificación Existen diversas herramientas que realizan transformaciones entre modelos. Pero ninguna de ellas toman en cuenta los mismos conceptos o características, además que no consideran todo

Capítulo 3 Antecedentes y Descripción de la Investigación

22

el proceso completo, es decir, sólo se utilizan los modelos PIM y PSM pero no CIM. El esquema que se propone permitirá que se tenga el nivel de detalle suficiente de los elementos pertenecientes a cada uno de los modelos, con esto se podrán establecer detalladamente los límites entre cada una de las fronteras, y tener una base sólida común sin traslapes entre la forma en que se percibe cada una de ellas. Se asegura además que sean seguibles los elementos del modelo objetivo al modelo fuente, cuidando la bidireccionalidad de las transformaciones y manteniendo la consistencia mediante mecanismos que permitan que información agregada al modelo objetivo persista cuando se regenere el modelo objetivo. Que las transformaciones sean seguibles y bidireccionales es necesario para que los elementos en común entre los modelos se identifiquen y no haya contradicciones. En el desarrollo de software dirigido por modelos las transformaciones de modelos están siendo cada vez más consideradas como activos importantes que deben ser manejados con principios sólidos de ingeniería de software: estas transformaciones deben ser analizadas, diseñadas, implementadas, probadas, mantenidas y estar sujetas a la administración de configuración. Debido a éste hecho, la definición detallada de las fronteras, permitirá identificar técnicas y métodos que permitan el desarrollo de transformaciones y su mantenimiento. 3.3.5 Alcances y Limites 3.3.5.1 Alcances Los alcances del presente trabajo de tesis se basan en la definición de los modelos (CIM, PIM, PSM e IM) y la delimitación de sus fronteras de CIM a PIM, de PIM a PSM de MDA, así como de PSM a IM. Donde se consideró a cuatro (casos de uso, clases, secuencia y actividad) diagramas de UML, así como a los diagramas de entidad y línea de producción del AGD (para modelar el negocio), para determinar la aportación que realizan a cada una de las fronteras. Los cuatro diagramas de UML fueron definidos mediante una representación interna realizada en XMI para describir todas las fronteras.

Para demostrar que la información definida en cada frontera (CIM a PIM, PIM a PSM y PSM a IM) fue la necesaria para transformar de una hacia la otra y poder transformar de un modelo a otro (ejemplo de un modelo CIM a uno PIM), se realizó la validación de las fronteras a través del ejemplo de un problema clásico de arquitectura de software.

3.3.5.2 Limites Las limitaciones que tiene el presente trabajo de tesis residen en el ejemplo de la utilización de los modelos y sus fronteras que se realizó manualmente, así como en las transformaciones entre los modelos de un mismo nivel de abstracción y diferente nivel de abstracción, ya que no se efectuaron por medio de un lenguaje de transformación, ni por una herramienta que diera soporte a dichas modelos, fronteras y transformaciones, debido a que lo alcanzado en este trabajo de investigación son las bases para el proceso propuesto para MDA en el ambiente AGDE.

Capítulo 3 Antecedentes y Descripción de la Investigación

23

En las transformaciones fueron contempladas las caracteristicas de consistencia y trazabilidad de manera explícita, las cuales se describieron en forma textual y no se formalizaron como verificarlas y representarlas.

Todo el contenido de este capítulo permitió presentar el problema establecido (§ 3.3.1) para ver su viabilidad de acuerdo a las características que se están considerando en esta investigación, y se concluye que principalmente hace falta:

• Considerar al nivel CIM dado que tanto en las herramientas como en los

trabajos enfocados a MDA se da más importancia a los niveles PIM y PSM. • Tener una interpretación homogénea con respecto a cada uno de los modelos y

la información contenida en cada uno de ellos, así como de sus fronteras, ya que cada quien lo interpreta de acuerdo a su perspectiva.

• Refinar el conjunto de productos del método AGD, para establecer una base de partida del desarrollo del ambiente AGDE.

Todo lo mencionado aquí es antecedente para, en el capítulo siguiente, describir

detalladamente el análisis del problema.

24

Capítulo 4

Análisis del problema

En este capítulo se procede a realizar varios análisis a la información existente acerca del problema planteado con el propósito de identificar elementos a utilizar en la solución propuesta, que se explica en el capítulo 5. Con un enfoque a la definición de los modelos y las fronteras de MDA, se realizó el siguiente procedimiento: • Análisis comparativo de AGD con otros enfoques (CMMI, RUP e IDEF) para refinar los

modelos contenidos en el Conjunto de Productos (PS) del método AGD, • Partiendo del análisis anterior se realizó un análisis de UML 2.0 para seleccionar un

conjunto mínimo de los diagramas que se van a utilizar dentro de los modelos de MDA en el ambiente AGDE,

• Por último, se realizó un análisis de lenguajes de transformación para encontrar el lenguaje que se adecué tanto a los análisis anteriormente mencionados como a las características del proceso propuesto para MDA en el AGDE.

Todos los análisis que se realizaron se complementan en forma progresiva, ya que el

resultado del primero sirve de punto de partida para el segundo y así sucesivamente, como se muestra en la Ilustración 4-1, en la cual se enmarca con líneas punteadas el área que se presentará en este capítulo.

El procedimiento general para el análisis del problema se orientó hacia el objetivo

establecido para esta investigación, la definición de los modelos, de las fronteras y su caracterización.

Capítulo 4 Análisis del problema

25

Cabe mencionar que en este capítulo sólo se presentarán los análisis realizados de AGD, UML y lenguajes de transformación, por lo cual en el capítulo 5 se presentará la solución partiendo del desarrollo de la representación interna (XMI) a utilizar, así como la definición de los modelos y de las fronteras de MDA en el AGDE. Dado que el AGD y su estructura sirvieron de contexto para esta tesis, es por ello que se inicia con el análisis del mismo.

Análisis comparativo de AGD con otros enfoques (§ 4.2)

Análisis de UML 2.0 (§ 4.3)

Análisis de lenguajes de transformación (§ 4.4)

Definición de los modelos y de las fronteras de MDA en el

AGDE (§ 5.2)

XMI para los diagramas seleccionados de UML (§ 5.1)

Caracterización de las fronteras (§ 5.3)

Análisis comparativo de AGD con otros enfoques (§ 4.2)

Análisis de UML 2.0 (§ 4.3)

Análisis de lenguajes de transformación (§ 4.4)

Análisis de lenguajes de transformación (§ 4.4)

Definición de los modelos y de las fronteras de MDA en el

AGDE (§ 5.2)

Definición de los modelos y de las fronteras de MDA en el

AGDE (§ 5.2)

XMI para los diagramas seleccionados de UML (§ 5.1)

XMI para los diagramas seleccionados de UML (§ 5.1)

Caracterización de las fronteras (§ 5.3)

Ilustración 4-1. Procedimiento general de la metodología de solución

4.1 Contexto del problema

Del análisis de la base conceptual del AGD resultó la definición de un ambiente de desarrollo que se denomina AGDE, representado en el diagrama de actividad de la Ilustración 4-2, en la cual se identifican dos áreas bien delimitadas:

1) La que trata con los modelos o productos del trabajo que se obtienen mediante

transformaciones sucesivas (delimitada mediante una frontera de línea punteada) y 2) La que configura, monitorea y controla el proceso (fuera de la frontera de línea

punteada).

Capítulo 4 Análisis del problema

26

act Ambiente AGDE detallado

Ingresar información delproyecto a la herramienta

de adecuación deldesarrollo

Registrar y monitorear elproceso (SiSoProS)

Utilizar herramienta detransformación de modelo a

modeloEditar modelos

Validar modelo resultante

Editar código Utilizar herramienta detransformación de modelo a

código

Compilación y depuración

Ingresar la información delproyecto al sistema dehistorial de proyectos

Utilizar herramienta detransformación de código a

modelo

«datastore»Historial de

proyectos

«datastore»Déposito de modelos v álido

del producto destino

«datastore»Déposito de código

fuente

Se identifica el patrón del proyecto de entrada

«datastore»Déposito de modelos de

producto fuente

«datastore»Déposito de modelos de

producto destino

«datastore»Déposito de

definición de transformaciones

«datastore»Déposito de modelos v alido del producto

destino

«datastore»Déposito de código

fuente

Integrar y completar elproducto de software

[Ingeniería directa]

[Codificación automática]

[Ingenieria inversa]

[Modelo PSM es suficiente]

[Modeladoautomático]

[Presencia dedefectos]

[Codificación manual]

[Modelado manual]

[Modelo PSM insuficiente]

Ilustración 4-2. Contexto de la investigación en el ambiente AGDE

El área delimitada por la línea puntada en la Ilustración 4-2 es donde se aplica el proceso

de modelado a través del enfoque MDA en el ambiente AGDE, donde se tiene un editor de modelos que permite realizar y guardar los modelos CIM, PIM y PSM, así como una herramienta de transformación de modelo a modelo, donde se obtienen cada uno de los modelos a partir de otros por medio de transformaciones.

Cada uno de los modelos realizados (tanto por el editor como por la herramienta de

transformación) debe ser validado contra un conjunto de reglas (predefinidas o definidas por el usuario). Una vez obtenidos los modelos válidos, se procede a verificar que el modelo PSM

Capítulo 4 Análisis del problema

27

sea lo suficiente para poder generar código, ya sea de forma manual o automática, por medio de una herramienta de transformación de modelo a código, para después ser compilado y depurado.

Todo este proceso se puede realizar cuando es ingeniería directa, ya que cuando es

ingeniería inversa se utilizaría una herramienta de transformación de código a modelo, es decir, a partir del código se necesita obtener un modelo que lo represente.

Por lo tanto, en el área de modelado, en el AGD se adopta la estructura de MDA y se

definen los modelos (CIM, PIM, PSM, IM) y fronteras (CIM a PIM, PIM a PSM y PSM a IM). Se utilizan las transformaciones entre el mismo nivel de abstracción (CIM a CIM, PIM a PIM, PSM a PSM) y entre diferente nivel de abstracción (CIM a PIM, PIM a PSM, PSM a IM), donde la mayoría de las transformaciones son de modelo a modelo y de modelo a código.

Todo lo mencionado anteriormente se realiza con el objetivo de desarrollar la propuesta para el proceso general de MDA en el ambiente AGDE, a través de lenguajes como: UML, XMI/XML y el lenguaje de transformación a seleccionar.

La forma en que se relacionan las representaciones de los lenguajes mencionados para

realizar el proceso de MDA en AGDE hasta la implementación en código se muestra en la Ilustración 4-3. Esta idea se mencionó parcialmente en el capítulo 2, mientras se analizaban los conceptos necesarios para entender mejor el presente trabajo de investigación.

En la Ilustración 4-3 se muestra horizontalmente, la relación entre las representaciones de

los modelos, desde la concepción de la aplicación, sin considerar dependencias computacionales (modelo CIM, a la izquierda de la figura), pasando por los modelos independientes de plataforma (modelo PIM) y los modelos de plataforma especifica (modelo PSM), hasta la generación del código (modelo IM, en la parte derecha de la figura).

Recorriendo la ilustración verticalmente, de arriba hacia abajo, UML se usa en los

modelos (CIM, PIM y PSM) de MDA mediante sus diagramas; XMI se utiliza para la representación interna de los diagramas UML y por último un lenguaje de transformación se usa para describir las transformaciones que se realizan mediante el motor de transformación para pasar de un modelo a otro hasta obtener una implementación (código fuente).

UML y XMI se pretenden utilizar tanto para la definición de los modelos como para la

definición de sus transformaciones.

Capítulo 4 Análisis del problema

28

XMLXMI

XMLXMI

XMLXMI

MDAR

epre

sent

ació

n

Rep

rese

ntac

ión

Rep

rese

ntac

ión

CIM(UML)

PIM(UML)

PSM(UML)

Especificación de transformación(Lenguaje de transformación)

Entrada Salid

a

Salid

a

Entrada

IM

XMLXMI

Entrada Salid

a

Rep

rese

ntac

ión

Motor de transformación

Especificación de transformación(Lenguaje de transformación)

Especificación de transformación(Lenguaje de transformación)

XMLXMI

XMLXMI

XMLXMI

MDAR

epre

sent

ació

n

Rep

rese

ntac

ión

Rep

rese

ntac

ión

CIM(UML)

PIM(UML)

PSM(UML)

Especificación de transformación(Lenguaje de transformación)

Entrada Salid

a

Salid

a

Entrada

IM

XMLXMI

Entrada Salid

a

Rep

rese

ntac

ión

Motor de transformación

Especificación de transformación(Lenguaje de transformación)

Especificación de transformación(Lenguaje de transformación)

Ilustración 4-3. Propuesta para el proceso general de MDA en AGDE 4.2 Análisis comparativo de AGD con otros enfoques El objetivo de este análisis es refinar los modelos contenidos en el Conjunto de Productos (PS) del método AGD, con la finalidad de partir de un conjunto de productos del trabajo (modelos), lo más completo posible, asegurando que se consideran los modelos necesarios y más utilizados en el desarrollo de software. Abarcando desde el grado de abstracción requerido para el modelado del negocio y la obtención de modelos intermedios, hasta la forma de obtener el código necesario para producir una aplicación computacional.

Se compara el AGD con respecto a los enfoques de desarrollo CMMI (Capability Maturity Model Integration), RUP (Rational Unified Process) e IDEF (Integrated DEFinition).

Los pasos que se siguieron para cumplir el objetivo antes mencionado fueron:

• Se realizó la comparativa de AGD con CMMI, RUP e IDEF (ver Anexo A) a través de los

distintos modelos de MDA (CIM, PIM, PSM y también IM) en el PS del AGD, para posteriormente,

• Analizar los resultados obtenidos de dichas comparaciones, para obtener qué tan completos están los modelos CIM, PIM, PSM e IM en el PS del AGD.

La descripción de todo este proceso se presenta en el anexo A y en esta sección sólo se

explican los resultados obtenidos del análisis. Por lo cual, en el anexo A se muestran las comparativas del conjunto de productos del trabajo (modelos) definidos en AGD con lo definido en CMMI, RUP e IDEF respectivamente, donde se elaboran unas tablas comparativas de AGD con cada enfoque. Los resultados de este análisis comparativo, sirven como

Capítulo 4 Análisis del problema

29

fundamento de un análisis posterior realizado con el propósito de integrar los diagramas de UML al esquema de modelos y fronteras de MDA (§4.3).

De las comparativas de AGD con otros enfoques se concluye que en el nivel CIM se presenta el negocio, sus restricciones, objetivos y estructura, así como su interacción con el problema.

Del modelado del negocio surgen poco a poco los requerimientos de los actores que

indirecta o directamente tienen que ver con el sistema. Se identifican los datos de entradas y salidas del sistema, que complementados con las opciones para capturarlos o generarlos, sirven para construir un prototipo a nivel abstracto.

Analizando el modelo CIM, además del IDEF fue necesario revisar una Notación de

Modelado de Proceso de Negocios (BPMN, Business Process Modeling Notation), para entender mejor los aspectos del negocio y cómo poder mapearlo hacia el nivel CIM del enfoque MDA.

En el nivel PIM se concluye que contiene el resultado del análisis de los requerimientos para transformarlos a un nivel de detalle menos abstracto y además se obtienen los casos de uso a mayor nivel de detalle, una representación de la interacción entre el usuario y el sistema, el proceso a seguir, así como los requerimientos del software y una especificación de las pruebas a realizar.

En el nivel PSM se muestra (en la mayoría de las comparaciones) el enfoque hacia el diseño detallado y la obtención de la arquitectura y los componentes del sistema.

Por último, a nivel de implementación se ubica el código fuente, la verificación y especificación de pruebas unitarias, de integración y de aceptación.

A continuación de la Tabla 4-1 a la Tabla 4-4, se presentan los resultados obtenidos, del

análisis descrito referente al conjunto de modelos que se ratificó son los más utilizados con respecto al AGD y los enfoques comparados en la parte del PS en el AGD. Las tablas mencionadas representan los modelos utilizados en cada nivel (CIM, PIM, PSM e IM), por cada uno de los enfoques. Mostrando en dichas tablas los productos principales a obtener en el desarrollo de software (Ej. Inicialización) y el contenido de los productos principales (Ej. Entender la estrategia).

El símbolo de “√”, cuando aparece en la intersección del renglón (correspondiente a un

producto del trabajo) con una columna (correspondiente a un enfoque), significa que se utiliza el producto del trabajo en ese enfoque. Por ejemplo, en el caso del producto de Inicialización en su contenido de dependencias con otros proyectos, RUP es el único que utiliza dicho producto del trabajo.

Tabla 4-1. Conjunto de modelos a nivel CIM del PS con respecto a los enfoques comparados

AGD en el nivel CIM CMMI RUP IDEF Identificación del proyecto √ √ √ Inicialización

Dependencias con otros proyectos √

Capítulo 4 Análisis del problema

30

Determinación del equipo del proyecto Entender la estrategia √ Entender el negocio √ √

Problemas/Oportunidades Obtener solicitudes del cliente √ √ √

Comparación cuantitativa de compañía nueva Áreas de Usuarios

Planificación-Visión

Alcance y prioridades √ √ Diagrama de entidades a nivel de usuario √ √

Diagrama de entidades combinado a nivel de usuario √ √ Negocio existente

Diagrama de entidad a nivel de aplicación √ √ Compilación de resultados principales Compilación de entradas principales √

Dependencias de resultados y entradas √ √ Compilación de opciones principales √

Dependencias de opciones Objetivos √ √

Alcance funcional √ √ √ Definición de resultados √ √ Definición de entradas √ √ √ Definición de opciones

Definición del diccionario de datos del sistema √

Identificación de componentes

Elementos de datos en interfase hombre-máquina √ Prototipo del sistema Integración del prototipo del sistema √ √

Tabla 4-2. Conjunto de modelos a nivel PIM del PS con respecto a los enfoques comparados

AGD en el nivel PIM CMMI RUP IDEF Definición de resultados en ingeniería inversa Definición de entradas en ingeniería inversa Ingeniería inversa flujo funcional y persistencia Opciones en ingeniería inversa Diccionario de datos Casos de uso Procesos funcionales Control de retro alimentación Tareas y procedimientos Cooperación Control administrativo Memoria organizacional

Ingeniería inversa

Diagrama de ciclos del sistema Diccionario de datos √ Flujo funcional y persistencia Resultados software Opciones Software Alcance incluyendo software Casos de uso √ √ Procesos funcionales √ Control de retroalimentación Procesos Cooperación Presentación de la interacción hombre-máquina √ √ √ Control administrativo Memoria organizacional

Ingeniería directa

Diagrama de ciclos del sistema Prototipo de software Integración del prototipo del sistema √ √ √

Requerimientos del software √ √ Requerimientos del software Especificación de prueba de aceptación √ √

Tabla 4-3. Conjunto de modelos a nivel PSM del PS con respecto a los enfoques comparados

AGD en el nivel PSM CMMI RUP IDEF Resultado usado por rol

Resultado producido en procesador y dispositivo de salida Restricciones en requerimientos

Entrada capturada en

Capítulo 4 Análisis del problema

31

Opciones funcionales procesadas en Datos almacenados √

Restricciones √ √ √ Soluciones alternativas √ Solución recomendable √

Riesgos/Beneficios √ √ Ciclo de negocio para Arquitectura

Árbol cálida para proyecto Especificación de calidad del componente

Calidad vs. estilos arquitectónicos Estructura de la arquitectura √ √ √

Fólder de arquitectura

Arquitectura del componente

Especificación de la prueba de integración √ √ √ Directores del negocio √ √

Extracción y análisis de estilos arquitectónicos Generación de escenarios √ √

Escenarios vs. Estilos arquitectónicos

Análisis de arquitectura

Reporte de análisis de arquitectura √ √ √

Tabla 4-4. Conjunto de modelos a nivel IM (Modelo de Implementación) del PS con respecto a los enfoques

comparados AGD en el nivel IM CMMI RUP IDEF

Estructura de división del trabajo √ Creación y mantenimiento de unidades

Asignación de unidades √

Diseño detallado

Creación y mantenimiento de carpeta de unidades Servicios a utilizar Diseño detallado: servicios normales

Servicios a usar por funciones Diseño detallado: métricas Programar eventos de monitoreo

Normas para procesos √ Normas computacionales

Procesos Diccionario de datos

Diseño detallado: datos de proceso

Especificación de prueba de aceptación √ √ Codificar unidad

Compilación √ Ligado √ Carga √ √

Codificación

Prueba de unidad √ Integración de código √ √

Estructurar componentes Prueba de integración √ √

Operación inicial

Elaborar documentación de usuario √ √

Al analizar la Tabla 4-1 a la Tabla 4-4 se obtuvieron los siguientes resultados: Primero, al analizar la Tabla 4-1 se tiene que a nivel CIM, el conjunto de productos del

trabajo en relación con los enfoques comparados en su mayoría está completo, debido a que este nivel contiene un total de 26 productos del trabajo, de los cuales en 7 no se encontró relación en forma directa con los enfoques comparados. Además, los 7 productos del trabajo puede que en los enfoques no se mencionen, pero se sobreentiende que deben de estar presentes, por ejemplo, el producto del trabajo “determinación del equipo del proyecto”, es necesario debido a que todo proyecto tiene personal que se va encargar de desarrollarlo.

Segundo, al analizar la Tabla 4-2, se obtuvo como resultado del nivel PIM, lo siguiente: el

total de productos del trabajo que contiene este nivel es de 30, de los cuales solamente 7 productos del trabajo se encontraron relacionados con los enfoques comparados, por lo tanto se podría decir que este nivel no está muy completo, pero 13 de los productos del trabajo que

Capítulo 4 Análisis del problema

32

no tienen relación con los enfoques comparados, deben estar presentes en este nivel, debido a que tratan sobre ingeniería inversa, la cual ninguno de los enfoques comparados la contempla (por lo menos en forma directa). Por lo tanto este nivel se puede decir que en su mayoría está completo.

Tercero, al analizar la Tabla 4-3 referente al nivel PSM, se tiene lo siguiente: de un total de

22 productos del trabajo, sólo 10 tienen relación con los enfoques comparados, por lo que este nivel, se podría decir que un poco menos de la mitad de productos del trabajo está completo (con respecto a los enfoques comparados) pero considerando la estructura del AGD, se tiene que los productos del trabajo que no se encontró una relación directa con los enfoques comparados, también deben de estar presentes en este nivel, por ejemplo, el producto del trabajo de “fólder de arquitectura”.

Por último, al analizar la Tabla 4-4 del nivel IM, se obtuvo que la mayoría de productos

del trabajo de este nivel está completo, debido a que el total de productos del trabajo de este nivel es de 21, dentro de los cuales 11 tienen relación con los enfoques comparados. Los productos del trabajo que no tiene relación también deben estar presentes en este nivel, debido a la estructura del PS del AGD, por ejemplo, creación y mantenimiento de carpetas de unidades. 4.3 Análisis de UML (Unified Modeling Language) 2.0 Con el propósito de seleccionar los diagramas a utilizar en MDA en el ambiente AGDE e identificar la forma en que se relacionan los elementos de cada uno de los diagramas elegidos, se realiza el análisis de UML 2.0, el cual consta de tres subsecciones.

Las primeras dos subsecciones, se refieren al análisis de los diagramas de UML 2.0 a seleccionar (§ 4.3.1) y al análisis de los diagramas seleccionados con respecto a los diagramas restantes de UML 2.0 (§ 4.3.2), donde el propósito de la primera es seleccionar el conjunto mínimo de diagramas UML que se van a utilizar en MDA en el ambiente AGDE y el de la segunda es reafirmar los diagramas seleccionados a través del porcentaje de elementos que cubren estos diagramas con respecto a los diagramas restantes de UML.

Por último, la tercera subsección describe el análisis de los elementos de cada uno de los diagramas seleccionados (§ 4.3.3), con el propósito de identificar la manera en que se relacionan los elementos de cada uno de los diagramas elegidos, para su posterior utilización en la representación interna de dichos diagramas (XMI, § 5.1). A continuación se explica cada una de las subsecciones que conforman el análisis de UML 2.0. 4.3.1 Análisis de los diagramas de UML 2.0 a seleccionar Habiendo identificado el conjunto de modelos manejados por el AGD y los enfoques de mayor utilización, se realizó un análisis de MDA con respecto al UML para ilustrar de qué manera colaboran los diferentes diagramas para obtener la implementación de una aplicación computacional. De está manera se establecieron las bases para seleccionar un conjunto

Capítulo 4 Análisis del problema

33

mínimo de los diagramas de UML que se van a usar dentro del esquema MDA en el ambiente AGDE. Los pasos que se siguieron para cumplir el objetivo mencionado, fueron: • Primero, se analizó la frecuencia de uso de los diagramas UML en el enfoque MDA, (a

través de lo anteriormente analizado en este capítulo y en el capítulo anterior) y en otros trabajos relacionados que siguen un desarrollo dirigido por modelos, para

• Posteriormente, realizar una tabla donde se reporta la frecuencia de uso, y del análisis de dicha tabla extraer un primer grupo de los diagramas a seleccionar.

Para elaborar la Tabla 4-5 y obtener las frecuencias de uso de los diagramas UML

utilizados en MDA como en trabajos que siguen un desarrollo dirigido por modelos, se analizaron las herramientas MDA (§3.2.1), los trabajos relacionados (§3.2.2), el AGD ([GON06]), el RUP ([RUP05]) y otros artículos revisados ([GAR06], [TRO03], [ZUN02], [ULR06]), con el propósito de determinar los diagramas a seleccionar de acuerdo a los diagramas que más se utilizaron en ellos.

A continuación se presenta la Tabla 4-5, donde la primera columna representa el nombre

de cada uno de los 13 diagramas de UML 2.0 y de la segunda columna hasta la sexta columna se muestra el número de frecuencia de uso de cada uno de los diagramas con respecto a los trabajos y herramientas que aplican MDA o un desarrollo dirigido por modelos. Por último, la séptima columna es la del total, donde se contabilizó el número de veces que se utilizan los diagramas a partir de la segunda columna hasta la sexta columna.

Tabla 4-5. Selección de los diagramas de UML para MDA

Diagramas UML Herramientas MDA (§3.2.1)

Trabajos relacionados

(§3.2.2)

AGD [GON06]

RUP [RUP05]

Otros artículos [GAR06], [TRO03], [ZUN02], [ULR06]

Total

Diagrama de clases 4 4 1 1 4 14 Diagrama de objetos 1 1 2 Diagrama de componentes 3 1 4 Diagrama de paquetes 1 1 2 Diagrama de estructura compuesta Diagramas de distribución o despliegue 3 1 1 1 1 7 Diagramas de máquina de estados 3 1 2 6 Diagramas de casos de uso 4 3 1 1 4 13 Diagramas de actividad 4 3 4 11 Diagramas de secuencia 4 1 1 4 10 Diagramas de comunicación 3 1 3 7 Diagramas de cronometraje o tiempos Diagramas de la revisión de la interacción

Como resultado del análisis de la Tabla 4-5 se obtuvo que los diagramas que tienen un

mayor número de repeticiones son: diagramas de clases, de casos de uso, de actividad y de secuencia. Además, cabe mencionar que en [AMB04] se señala que los diagramas que tienen alta prioridad de aprendizaje (indica cuán importante es para un desarrollador de aplicaciones del negocio aprender el diagrama) son: el de clases, secuencia y actividad, coincidiendo con la conclusión de la Tabla 4-5 correspondiente a los diagramas a utilizar. Aunque se menciona en [AMB04] que el diagrama de casos de uso presenta una prioridad media.

A partir de la conclusión de la Tabla 4-5 (los diagramas más utilizados), se tiene un primer

acercamiento al conjunto mínimo de diagramas de UML a manejar en las herramientas del AGDE y así acotar el universo inicial de los modelos y sus transformaciones.

Capítulo 4 Análisis del problema

34

En la Ilustración 4-4, se muestra el conjunto de diagramas, a través de un esquema que muestra la distribución de los diagramas seleccionados de UML en los distintos niveles (CIM, PIM, PSM, IM) del enfoque MDA (en el AGDE) y cómo se relacionan entre sí, donde no se abarca la utilización de los diagramas de entidad y línea de producción del AGD (ver capítulo 5), debido a que estos diagramas ya están ubicados dentro de MDA en el AGD.

Diagrama de casos de uso

Escenarios de los diagramas de casos de uso

Desglose de los diagramas de casos de uso

Especificación adicional

Diagramas de secuencia

Especificación adicional

Especificación adicional

Diagramas de clases

Especificación adicional

Especificación adicional

Diagramas de actividad

Diagramas de clases

Generación de código

Diagramas de actividad

Especificación adicional

Nivel CIM

Nivel PIM

Nivel PSM

Implementación

Ilustración 4-4. UML dentro del enfoque MDA en el AGDE

La Ilustración 4-4 presenta en el nivel CIM la utilización de los diagramas de casos de uso

y sus escenarios, así como el desglose de cada uno de los casos de uso, ya que los casos de uso iniciales son más abstracto y el desglose representa un segundo nivel de abstracción más detallado. En el nivel PIM se muestra la utilización de los diagramas de secuencia y de clases que se obtienen mediante el diagrama de secuencia, el cual se origina a partir de los diagramas de casos de uso del nivel CIM. Los diagramas de actividad se obtienen del diagrama de secuencia y del diagrama de clases, todo a nivel PIM. En el nivel PSM se muestra la utilización otra vez del diagrama de clases y actividad que surgen a través de los diagramas de clases y secuencia del nivel PIM. Por último, el nivel IM (Modelo de Implementación), que contiene el código, se obtiene a partir del diagrama de actividad y clases del nivel PSM. Todos los niveles tienen una especificación adicional para complementar cada uno de los diagramas, para pasar de un nivel a otro.

Capítulo 4 Análisis del problema

35

4.3.2 Análisis de los diagramas seleccionados con respecto a los diagramas restantes de UML 2.0

Una vez obtenido el conjunto mínimo de los diagramas de UML a utilizar, es necesario realizar otro análisis para corroborar que los diagramas seleccionados cubren la mayoría de los elementos definidos en UML, con el objetivo de reafirmar los diagramas seleccionados. Para ello se realizaron los pasos siguientes:

• Se determinó, para cada uno de los elementos de los 13 diagramas, los elementos en

común que tiene un determinado diagrama con respecto a los demás diagramas (por ejemplo, el elemento “Línea de vida” en el diagrama de secuencia también se utiliza en el diagrama de cronometraje o tiempos, ver anexo B) con la finalidad de obtener el número de elementos en común de los 4 diagramas seleccionados (casos de uso, clases, secuencia y actividad) con los 9 diagramas (componente, objeto, paquete, estructura compuesta, despliegue, máquina de estado, comunicación, tiempo y revisión de la interacción) restantes de UML (esto se presenta en el anexo B).

• Como resultado del paso anterior, se obtuvo el número de elementos exclusivos de cada diagrama (los elementos que sólo se presentan en uno de los diagramas y por lo tanto no tienen un uso en común con otros) y el número de elementos repetidos de cada diagrama contando una sola vez el elemento repetido (ver Tabla 4-6). Todos estos pasos se realizaron con el propósito de obtener como resultado el porcentaje

que cubren los diagramas de: casos de uso, clases, secuencia y actividad con respecto a los 9 diagramas restantes de UML 2.0 y con ello corroborar que los diagramas seleccionados usan la mayoría de los elementos definidos en UML.

En el anexo B se muestra el análisis de los 13 diagramas de UML 2.0 con los elementos

correspondientes a cada diagrama, donde se denotan los elementos que son exclusivos al diagrama, así como los elementos que tienen en común con otros diagramas.

La Tabla 4-6 presenta a los 13 diagramas de UML 2.0 en relación al número de elementos

exclusivos (elementos únicos en un diagrama determinado) y al número de elementos repetidos contabilizados una sola vez un elemento repetido, así como el total de elementos exclusivos y el total de elementos repetidos, para con toda esta información calcular el porcentaje de elementos que cubren los diagramas de casos de uso, clases, secuencia y actividad con respecto al total de elementos de los 13 diagramas de UML 2.0 (que representan el 100%, contando elementos repetidos una sola vez y elementos exclusivos).

Tabla 4-6. Número de elementos exclusivos y repetidos de los 13 diagramas UML Diagrama # de elementos

exclusivos # de elementos

repetidos Casos de uso 5 2 Clases 2 9 Secuencia 9 8 Actividad 11 8 Componentes 1 1 Objetos 0 0 Paquete 3 0 Estructura Compuesta 7 1

Capítulo 4 Análisis del problema

36

Despliegue 4 0 Máquina de estados 13 0 Comunicación 0 0 Tiempo 4 0 Revisión de la interacción 1 0

Total 60 29

De la información de la Tabla 4-6, se derivan los siguientes datos necesarios para el

cálculo del porcentaje de elementos a considerar con los 4 diagramas seleccionados: • Primero, para obtener el total de elementos de los 13 diagramas de UML 2.0, se

sumaron el total de elementos exclusivos que es de 60 y el total de elementos repetidos (contando una sola vez el elemento repetido) que es de 29, lo que dio como resultado que el total de elementos de los 13 diagramas es de 89 (correspondiente al 100%).

• Posteriormente, para obtener el total de elementos de los 4 diagramas seleccionado se sumaron los números de los elementos exclusivos que es de 27 y los números de los elementos repetidos que es de 27, de los diagramas de casos de uso, clases, secuencia y actividad, lo que dio como resultado que el total de elementos de los 4 diagramas seleccionados es de 54.

Con todos los datos anteriormente calculados se obtiene que el porcentaje de elementos a

considerar es de 60.67%, proveniente del cálculo (54/89)*100 y el porcentaje de elementos no considerados es de 39.33%, proveniente del cálculo ((89-54)/89)*100.

Hasta el momento, se tiene como conclusión de todo el análisis de UML 2.0 que los

diagramas elegidos son: casos de uso, clases, secuencia y actividad, y el porcentaje total de elementos que cubren dichos diagramas con respecto al total de los elementos de los 13 diagramas del UML 2.0 es de 60.67%.

4.3.3 Análisis de los elementos de cada uno de los diagramas seleccionados Con el propósito de desarrollar una representación interna (en XMI, § 5.1) que contenga la información adecuada a los diagramas elegidos de UML 2.0, para especificar las fronteras entre los modelos, se requiere del análisis de los elementos de cada uno de los diagramas seleccionados, con la finalidad de identificar la manera en que se relaciona cada uno de los elementos de cada diagrama y a través de qué conector. Todo este análisis servirá para estructurar la representación interna (los documentos XMI y DTD’s, § 5.1) de cada uno de los diagramas elegidos.

De la Tabla 4-7 a la Tabla 4-10 se muestran los diagramas de casos de uso, clases, secuencia y actividad con las relaciones entre sus elementos y conectores.

Todas las tablas simplemente reflejan la forma en que se pueden diagramar los elementos

de los 4 diagramas seleccionados, para posteriormente reflejarlos en la estructura de XMI para la representación interna de estos diagramas.

Las tablas están divididas en tres columnas, donde la primera representa el elemento

origen (del cual se parte para conectarlo con otro elemento), la segunda representa el tipo de

Capítulo 4 Análisis del problema

37

conector que se puede utilizar para un par de elementos y por último la tercera columna representa el elemento al cual se quiere llegar (elemento destino).

Por ejemplo, en la Tabla 4-7 de diagrama de casos de uso, el elemento “Actor” (elemento

origen), indica que este elemento se puede relacionar sólo con los elementos “actor”, “caso de uso” o “subject” (elementos destino) y el tipo de conector a utilizar serían los elementos conectores de “uso” o “generalización”, pero cuándo el destino sea el elemento “subject” sólo se utilizará el elemento conector de “uso”.

Esta misma lógica se sigue para los demás elementos y para las demás tablas de los

diagramas clases, secuencia y actividad.

Tabla 4-7. Relaciones entre los elementos del diagrama de Casos de uso Origen Conector Destino

Uso, Generalización Actor

Caso de uso

Actor

Uso Subject

Uso, Generalización

Incluye, Extiende

Caso de uso

Punto de extensión

Caso de uso

Uso Actor

Subject

Subject Uso Actor

Caso de uso

Subject

Punto de extensión Uso, Generalización

Incluye, Extiende

Caso de uso

Subject

Tabla 4-8. Relaciones entre los elementos del diagrama de Clases

Origen Conector Destino

Generalización Clase Clase

Asociación Composición Agregación

Dependencia

Realización

Realización de la interfaz Rastro

Anidar

Clase

Interfaz

Interfaz Generalización Interfaz

Capítulo 4 Análisis del problema

38

Asociación Composición Agregación

Dependencia

Realización

Realización de la interfaz Rastro

Anidar

Clase

Interfaz

En la Tabla 4-9 se muestran los elementos del diagrama de secuencia. Sin embargo los

elementos de “stop”, “coregion”, “restricción de duración” (“duración”, “observación”), “restricciones” y “observaciones de tiempo” no se muestran en la tabla, debido a que éstos se representan a través del elemento de “mensaje” y “línea de vida” (en cualquiera de sus representaciones), excepto el elemento “stop” que sólo se representa en el elemento de “línea de vida” (en cualquiera de sus representaciones).

Tabla 4-9. Relaciones entre los elementos del diagrama de Secuencia

Origen Conector Destino

Línea de vida

Actor

Límite

Control

Entidad

Estado Invariante / Continuaciones

Fragmento combinado

Marco

Gate

Mensaje perdido, mensaje encontrado

Stop

Empleo de interacción

Restricciones de tiempo, Observaciones de tiempo

Actor

Línea de vida

Límite

Control

Entidad

Mensaje

Ordenamiento general

Restricciones de duración, Duración, Observación

Capítulo 4 Análisis del problema

39

Coregion

Actor Actor

Línea de vida Línea de vida

Límite Límite

Control Control

Entidad

Self- Message

Entidad

Empleo de interacción

Gate

Mensaje perdido, mensaje encontrado

Actor

Línea de vida

Límite

Control

Entidad

Fragmento combinado

Fragmento combinado

Marco

Empleo de interacción

Mensaje

Marco

Empleo de interacción

Fragmento combinado

Marco

Mensaje perdido, mensaje encontrado

Actor

Línea de vida

Límite

Control

Entidad

Gate

Mensaje

Gate

Actor

Línea de vida

Límite

Control

Estado Invariante / Continuaciones

Mensaje

Entidad

Mensaje perdido, mensaje encontrado Mensaje Empleo de interacción

Capítulo 4 Análisis del problema

40

Gate

Fragmento combinado

Marco

Actor

Línea de vida

Límite

Control

Entidad

Mensaje perdido, mensaje encontrado

Actor

Línea de vida

Límite

Control

Restricciones de duración, Duración, Observación

Mensaje

Entidad

Actor

Línea de vida

Límite

Control Restricciones de tiempo, Observaciones de tiempo

Mensaje

Entidad

Restricciones de duración, Duración, Observación

Restricciones de tiempo, Observaciones de tiempo

Actor

Línea de vida

Límite

Control

Coregion

Mensaje

Entidad

Capítulo 4 Análisis del problema

41

Tabla 4-10. Relaciones entre los elementos del diagrama de Actividad Origen Conector Destino

Actividad

Nodo de decisión

Nodo Final

Acción

Nodo merge

Flujo final

Nodo de bifurcación

Flujo de control, Flujo de interrupción

Nodo de unión

Almacén de datos

Acción de señal enviada

Acción de evento recibido

Flujo de control, Flujo de

interrupción, Flujo de objeto

Excepción

Actividad

Flujo de control, Flujo de objeto

Nodo de objeto

Actividad

Nodo de decisión

Nodo de bifurcación

Nodo de unión

Nodo merge

Acción de señal enviada

Acción de evento recibido

Flujo de control

Acción

Nodo de objeto Flujo de control, Flujo de objeto

Almacén de datos

Nodo inicial

Flujo de control, Flujo de

interrupción, Flujo de objeto

Excepción

Actividad

Acción

Excepción

Nodo de decisión

Nodo Final

Excepción

Flujo de control, Flujo de objeto Acción de señal

enviada

Capítulo 4 Análisis del problema

42

Acción de evento recibido

Nodo merge

Nodo de bifurcación

Nodo de unión

Almacén de datos

Nodo de objeto

Flujo final

Actividad

Acción

Nodo de decisión

Nodo Final

Nodo merge

Nodo de bifurcación

Nodo de unión

Flujo de control, Flujo de interrupción

Flujo final

Excepción

Acción de señal enviada

Acción de evento recibido

Flujo de control, Flujo de

interrupción, Flujo de objeto

Almacén de datos

Acción

Flujo de control, Flujo de objeto

Nodo de objeto

Actividad

Acción

Excepción

Nodo de decisión

Nodo Final

Nodo de bifurcación

Nodo de unión

Flujo final

Nodo merge

Acción de señal enviada

Acción de evento recibido

Nodo de objeto

Flujo de control, Flujo de objeto

Almacén de

Capítulo 4 Análisis del problema

43

datos

Nodo de objeto

Actividad

Acción

Excepción

Nodo de decisión

Nodo Final

Nodo de bifurcación

Nodo de unión

Flujo final

Acción de señal enviada

Acción de evento recibido

Nodo merge

Almacén de datos

Flujo de control, Flujo

de interrupción, Flujo de objeto

Nodo de objeto

Almacén de datos

Flujo de control, Flujo de objeto

Actividad

Acción Flujo de control, Flujo de interrupción Excepción

Nodo de decisión

Nodo Final

Nodo de bifurcación

Nodo de unión

Nodo merge

Flujo final

Acción de señal enviada

Acción de evento recibido

Almacén de datos

Flujo de control, Flujo de

interrupción, Flujo de objeto

Nodo de objeto

Nodo de decisión

Flujo de control, Flujo de objeto

Actividad

Acción

Excepción

Nodo de decisión

Acción de señal enviada

Acción de evento recibido

Flujo de control, Flujo de

interrupción, Flujo de objeto Nodo Final

Capítulo 4 Análisis del problema

44

Nodo de bifurcación

Nodo de unión

Nodo merge

Flujo final

Acción de señal enviada

Acción de evento recibido

Almacén de datos

Nodo de objeto

Flujo de control, Flujo de objeto

Actividad

Actividad

Nodo inicial

Región

Excepción

Acción

Nodo de decisión

Nodo Final

Acción de señal enviada

Acción de evento recibido

Nodo merge

Nodo de bifurcación

Nodo de unión

Almacén de datos

Nodo de objeto

Partición

Flujo de control,

Flujo de interrupción,

Flujo de objeto

Flujo final

Actividad

Región

Excepción

Acción

Nodo de decisión

Acción de señal enviada

Acción de evento recibido

Región

Flujo de control, Flujo de

interrupción, Flujo de objeto

Nodo merge

Capítulo 4 Análisis del problema

45

Nodo de bifurcación

Nodo de unión

Almacén de datos

Nodo de objeto

Para terminar con la sección 4.3 del análisis de UML 2.0, se tiene que los elementos que

no se consideraron de los 9 diagramas restantes (diagramas no seleccionados, que es de un 39.33%) de UML 2.0, no se ocuparán, en la validación mediante un caso de estudio, debido a que el dominio del problema es el de sistemas de información. Estos sistemas solamente se utilizan para controlar las principales funciones de una empresa o negocio (ejemplos, la contabilidad, la mercadotecnia, ventas, el personal) [LAY04]. Además, otra razón para utilizar sólo los 4 diagramas elegidos, es que de los 9 diagramas no seleccionados los diagramas de tiempo y máquina de estado son más especificos para algún tipo de sistema, como sistemas en tiempo real o sistemas embebidos, por otro lado, los diagramas de revisión de la interacción, objetos, comunicación y estructura compuesta engloban o parten de alguno de los 4 diagramas seleccionados por ejemplo, el diagrama de revisión de interacción es una forma de diagrama de actividad, y por último, los diagramas de paquete, despliegue y componentes agrupan u organizan a otros diagramas, como al diagrama de clases. 4.4 Análisis de lenguajes de transformación Debido a que los elementos esenciales del enfoque MDA son los modelos15 y las transformaciones entre modelos16, se requiere identificar un lenguaje específico, para la definición de dichas transformaciones, debido a que son importantes en MDA para los procesos de transformación que automatizan la transformación de modelos de alto nivel de abstracción en modelos de más bajo nivel de abstracción.

Existen varios lenguajes de transformación de modelo a modelo o de modelo a código, donde cada uno tiene sus propias características y contemplan algunos aspectos que MDA persigue para la realización de las transformaciones. El objetivo de este análisis es encontrar un lenguaje de transformación que se adecue a la idea propuesta para el proceso apegado a MDA en el ambiente AGDE, mostrado al inicio del capítulo, en la Ilustración 4-3.

La información para realizar el análisis se presenta en la Tabla 4-11, la cual muestra la información a comparar de los distintos lenguajes de transformación de modelo a modelo y sus características. El símbolo “√” en la intersección de un renglón con una columna, significa que la condición es verdadera y cuando está en blanco significa que la condición es falsa. A continuación se explica cada una de las columnas de la tabla.

15 Ya que los utiliza para dirigir el proceso de desarrollo de software. 16 Porque a partir del primer modelo se obtiene el segundo por medio de transformaciones y así sucesivamente para obtener los demás modelos hasta la implementación ejecutable.

Capítulo 4 Análisis del problema

46

1er. columna: Lenguaje de transformación. Contiene las siglas de los siguientes lenguajes de transformación: Model Transformation Framework (MTF), Atlas Transformation Languaje (ATL), XSL Transformations (XSLT), The Bidirectional Object oriented Transformation Language (BOTL), The Attributed Graph Grammar System (AGG), A Tool for Multi-Formalism Modelling and Meta-Modelling (AToM3), VIsual Automated model TRAnsformations (VIATRA), Query-View Transformation (QVT), Visual Modeling and Transformation System (VMTS) y Graph Rewriting and Transformation language (GreAT).

2da. Columna: Enfoque de transformación. Se basa en los enfoques de transformación presentados en el trabajo de “Classification of Model Transformation Approaches” [CZA03], en el cual se menciona una clasificación de enfoques de transformación que pueden ser: de modelo a modelo y de modelo a código. En este análisis sólo se considera la categoría de enfoques de transformación de modelo a modelo, debido al objetivo planteado para esta investigación y a que el enfoque MDA se basa principalmente en modelos y las transformaciones entre ellos. A continuación se describen los enfoques que se encuentran dentro de esa categoría:

• Enfoque de manipulación directa. Este enfoque ofrece al usuario el acceso a una

representación interna del modelo y la capacidad de manipular la representación mediante un conjunto de API’s. Normalmente éste es implementado como un marco orientado a objetos, que puede proporcionar alguna infraestructura mínima para organizar la transformación (Ej. la clase abstracta para transformaciones). Por lo que, básicamente todo el trabajo tiene que ser hecho por el usuario, debido a que tienen que aplicar reglas de transformación y planificar en su mayor parte la utilización de un lenguaje de programación (tal como Java) desde el principio. Ejemplos: Jamda, JMI.

• Enfoque relacional. Este enfoque se basa en relaciones matemáticas (como concepto principal), enfoques declarativos y reglas de mapeo. La idea es declarar el tipo de elemento del origen y del elemento objetivo de una relación y especificarlo usando una restricción. En su forma pura, tal especificación no es ejecutable (Ej. reglas de mapeo). Ejemplos: MTF, VIATRA, ATOM, GreAT, UMLX y BOTL.

• Enfoque a base de transformación de grafos. Este enfoque se basa en el trabajo teórico de transformaciones de grafos. En particular en grafos específicamente diseñados para representar modelos como UML. Las transformaciones de grafos consisten en aplicar una regla de transformación a un grafo e iterar este proceso. Cada regla de transformación es aplicada a un grafo (izquierdo) mediante la sustitución de una parte de éste por un grafo (derecho). Este enfoque es poderoso y declarativo, pero también uno de los enfoques más complejos. La complejidad se deriva del no determinismo en la planificación y en la estrategia de aplicación, que requiere la consideración cuidadosa de la terminación del proceso de transformación y del orden de aplicación de las reglas. Ejemplos: AToM3, VMTS.

• Enfoque dirigido por estructura. Su característica principal es que tiene una regla de organización orientada al objetivo. Este enfoque tiene dos fases: la primera crea la estructura jerárquica del modelo objetivo y la segunda establece los atributos y referencias en el objetivo. El marco total determina la planificación y la estrategia de aplicación; los usuarios sólo se preocupan por proveer las reglas de transformación.

Capítulo 4 Análisis del problema

47

Un ejemplo sería el marco de transformación de modelo a modelo proporcionado por OptimalJ. Algunos ejemplos de lenguajes de transformación de este tipo son: Kermeta, IOPT (Interactive Objects and Project Technology).

• Enfoque híbrido. Este enfoque emplea la combinación de diversas técnicas de las categorías anteriores, debido a que está conformado por enfoques declarativos e imperativos. Permite al usuario igualar conceptos diferentes y paradigmas dependiendo de la aplicación. Ejemplos: XDE, ATL.

3er. Columna: Tipo de lenguaje. Estos pueden ser de dos tipos o una combinación de ambos, los cuales son:

• Declarativos [TUC03]. “El usuario tiene que declarar los objetivos del cálculo en

lugar del algoritmo detallado con el que se consiguen dichos objetivos. Los objetivos se expresan como un grupo de reglas y restricciones de cálculo. El orden en que se ejecuten los cálculos no influye en el resultado”.

• Imperativos [TUC03]. “Es el más utilizado y mejor desarrollado. El usuario tiene que detallar la manipulación explicita del estado del sistema de la computadora. Las instrucciones son realizadas de manera secuencial”.

• Declarativo-Imperativo. Son aquellos lenguajes que hacen uso de ambos tipos de lenguajes para obtener el beneficio de ambos y que se les conoce como lenguajes híbridos.

4ta. Columna: Lenguajes propuestos de representación del proceso MDA en el AGDE. Las características adicionales que se consideran de acuerdo a la idea de desarrollo propuesta para el enfoque MDA del AGDE, son las que a continuación se mencionan, con el propósito de ver si los lenguajes de transformación utilizan estos lenguajes para llevar a cabo las transformaciones, debido a que estos lenguajes son relevantes para la presente investigación.

• Soporte de UML. Se realizan transformaciones entre diagramas UML, es decir, a

partir de un diagrama es obtenido otro de igual o diferente nivel de abstracción. Ubicar este lenguaje en nuestra investigación, es necesario debido a que cada modelo de MDA contendrá varios diagramas UML.

• Soporte de XML ó XMI. Las transformaciones son entre documentos XML ó XMI. Ubicar estos lenguajes en la presente investigación, es necesario debido a que se utilizan para guardar la información contenida en los diagramas UML.

5ta. Columna: Características deseables para las transformaciones. Existen características deseables para el proceso de transformación dentro del enfoque MDA que se encuentran en el libro “MDA Explained: The Model Driven Architecture: Practice and Promise” [KLE03] y que para el AGDE se adoptan, debido a que se requiere tener el control y las ventajas de contar con las características que definan la transformación, para que se pueda generar de forma automática. A continuación se describen las características deseables:

• Control y acuerdo de transformaciones. Al realizar transformaciones el

desarrollador debería tener cierto control sobre el proceso de transformación. Esto

Capítulo 4 Análisis del problema

48

puede lograrse de varias formas por ejemplo: control manual, condiciones en las transformaciones, parámetros de transformación.

• Trazabilidad. Implica que pueda conocerse el elemento origen a partir del cual se ha generado cualquier elemento del modelo destino.

• Consistencia. Es importante para mantener la información adicional que se requiere para transformar un modelo en otro, de manera que pueda reutilizarse cuando se requiera una modificación o actualización del modelo fuente para volver a realizar su transformación al modelo objetivo.

• Bidireccionalidad. Implica que las transformaciones puedan operar en ambas direcciones. Estas pueden lograrse de dos formas:

o Ambas transformaciones se ejecuten de acuerdo con una única definición de

transformación. o Una transformación y su inversa se especifican mediante dos definiciones

de transformación diferentes. Entre las características que se desean en el ambiente AGDE primordialmente son la trazabilidad y consistencia, debido a que se necesita la definición de la transformación, es decir, qué elementos del modelo origen implican qué elementos del modelo destino y cuál es la información adicional que se agrega para obtener el modelo destino, que no se contempla en el modelo origen, pero que es derivada del mismo incluyendo más detalle en la información contenida en dicho modelo.

Tabla 4-11. Comparativa de lenguajes de transformación

Lenguajes propuestos de

representación del proceso MDA en el

AGDE

Características deseables para las transformaciones

Lenguaje de transformación

Enfoque de transformación

Tipo de lenguaje

Sopo

rte

para

UM

L

Sopo

rte

para

XM

L

Sopo

rte

para

XM

I

Con

trol

y a

cuer

do d

e tr

ansf

orm

acio

nes

Tra

zabi

lidad

Bid

irec

cion

abili

dad

Con

sist

enci

a

AGG [AGG07] Grafo Declarativo √ √ √ VIATRA2 [VIATRA06, CSE02] Grafo Declarativo √ √ √ √ AToM3 [ATOM07] Grafo Declarativo √ Kermeta [KERMETA07] Dirigido por estructura Imperativo √ √ √ VMTS [VMT07] Grafo Declarativo √ √ √ √ Tefkat [TEFKAT07] Relacional Declarativo √ √ ATL [ATL06] Híbrido Declarativo-Imperativo √ √ UMLX [WIL04] Grafo Declarativo √ √ √ QVT [QVT05] Híbrido Declarativo-Imperativo √ √ √ √ MTF [DEM05] Relacional Declarativo √ √ √ √ XSLT [XSLT07, QUE06] Híbrido Imperativo-Declarativo √ √ √ √ BOTL [BRA03] Grafo Declarativo √ √ √ √ √ GReAT [AGR03] Grafo Declarativo √ √ RubyTL [SAN06-A], [SAN06-B] Híbrido Declarativo-Imperativo √ √ √ √

El criterio o razonamiento utilizado para obtener el lenguaje de transformación que se

usará, de la Tabla 4-11, que más se adecue al proceso propuesto para MDA en el AGDE, se presenta a continuación:

Capítulo 4 Análisis del problema

49

• Se considerará en primer lugar que el lenguaje cumpla por lo menos con tres características deseables para la transformación y específicamente que incluya las características de trazabilidad y consistencia. Por lo tanto los lenguajes que cumplieron este primer criterio fueron: VIATRA2, MTF, BOLT y RubyTL.

• Una vez obtenido este primer grupo de lenguajes seleccionados mediante el criterio anterior, se seleccionan aquellos lenguajes que realicen las transformaciones mediante XMI (debido a que este será el formato tanto de entrada como de salida para el lenguaje de transformación, de acuerdo al proceso propuesto para MDA en el AGDE). Por lo tanto los lenguajes que cumplieron este criterio fueron: VIATRA2 y RubyTL.

• Por último, si existiera empate entre los lenguajes se revisa la característica del tipo de lenguaje, la cual será preferentemente el que sea tanto declarativo como imperativo (para tener los beneficios de ambos tipos). Por lo tanto el lenguaje de transformación seleccionado fue RubyTL.

Dado los criterios mencionados RubyTL es el candidato seleccionado para estudiarse a

fondo, ya que cumple con la mayoría de las características deseadas de un lenguaje de transformación como: consistencia, trazabilidad y control de las transformaciones, además de realizar transformaciones entre XMI y tener la característica de ser un lenguaje extendible, que se puede adaptar a nuestras necesidades de agregar reglas, necesarias para realizar las transformaciones entre los diferentes niveles de abstracción, que representan cada uno de los modelos de MDA.

Los resultados obtenidos de los análisis de AGD, UML y lenguajes de transformación,

explicados en este capítulo tienen un gran impacto en el capítulo siguiente, para especificar la representación interna a utilizar, y el desarrollo de la definición de los modelos y fronteras de MDA en el AGDE. A través de los análisis reportados se obtuvo la información necesaria para cada modelo y sus fronteras a través del conjunto de modelos a utilizar, el conjunto mínimo de diagramas y el lenguaje de transformación para realizar transformaciones entre los distintos modelos de MDA. El lenguaje de transformación se pretende adecuar a los requerimientos del AGDE, aunque esto es un trabajo futuro, de acuerdo a los alcances definidos para esta investigación.

50

Capítulo 5

Solución propuesta

Como resultado de los análisis de AGD con otros enfoques (§ 4.2), de UML 2.0 (§ 4.3) y de lenguajes de transformación (§ 4.4), explicados en el capítulo anterior, se obtiene en este capítulo la definición de la representación interna, la definición de los modelos (CIM, PIM, PSM, IM), así como una representación visual de dicha definición por medio de un esquema y la delimitación de las fronteras de MDA con su correspondiente caracterización (CIM a PIM, PIM a PSM y PSM a IM) que servirán como fundamento para realizar las transformaciones necesarias y obtener una implementación ejecutable mediante el ambiente AGDE. Se utiliza UML (los diagramas de casos de uso, clases, secuencia y actividad) en cada modelo MDA. Y se usa también un subconjunto de XMI para la representación interna de los diagramas. La definición de los modelos se basa mediante el análisis del AGD.

El objetivo que se persigue con todo lo mencionado es delimitar y determinar las características distintivas de cada una de las fronteras, de manera que se distingan claramente entre ellas, para tomarlas como referencia cuando se definan las transformaciones necesarias entre cada modelo ayudando a determinar cuando un tipo de modelo (Ej. CIM) se convierte en otro modelo (Ej. PIM). El procedimiento que se realizó para cumplir tal objetivo fue:

• Desarrollar una representación interna (en XMI) que contenga la información adecuada a los diagramas seleccionados de UML. La representación interna se usará para especificar las fronteras entre los modelos (CIM a PIM, PIM a PSM y PSM a IM), así como para almacenar la información de los modelos (diagramas UML) a utilizar como fuente y destino de las transformaciones.

• Definir cada uno de los modelos (CIM, PIM, PSM e IM) de MDA y sus fronteras, a través de los diagramas seleccionados y de otros del AGD, para obtener la información

Capítulo 5 Solución propuesta

51

que contendrá cada uno de los modelos y cómo ayudará ésta a la transformación de los mismos.

• Obtener la caracterización de las fronteras (CIM a PIM, PIM a PSM y PSM a IM) a través de las características de los distintos diagramas utilizados en cada uno de los modelos, para diferenciar las características distintivas entre cada frontera.

Todo esto con el fin de tener las características de cada modelo para diferenciarlos uno de

otro y así guiarse para transformar un modelo (Ej. PSM) a otro modelo (Ej. IM), es decir, cuando un modelo cruza una frontera, para convertirse en otro modelo de diferente nivel de abstracción (más detallado). 5.1 XMI para los diagramas seleccionados de UML Una vez obtenido el conjunto mínimo de diagramas de UML 2.0 a utilizar dentro de cada uno de los modelos de MDA en el AGDE y la manera en que sus elementos se representarán, cuyo proceso de determinación se presentó en el capítulo 4 (§ 4.3), es necesario tener una representación interna que contenga la información adecuada a dichos diagramas, ya que estos diagramas utilizados en el proceso de desarrollo de software requerirán ser transformados a través de los diferentes modelos (CIM, PIM, PSM) de MDA. Por esta razón, se propone utilizar un subconjunto de XMI (XML Metadata Interchange) para la representación interna, ya que XMI permite el intercambio fácil de información y de meta-datos entre diferentes tipos de herramientas de software, en especial herramientas de modelado basadas en UML, además XMI resulta de integrar UML, XML y MOF.

Se pretende que la representación interna sea una notación común que facilite la integración de herramientas y la definición normalizada de las fronteras (§ 5.2 y 5.3). Los pasos que se realizaron para obtener la estructura de la representación interna son:

• Debido a que existen diferentes alternativas de etiquetas XMI fue necesario realizar un análisis de etiquetas para los diagramas de UML 2.0 (§ 5.1.1), para seleccionar el tipo de etiqueta a utilizar en los documentos XMI, para posteriormente,

• Desarrollar la representación interna de los diagramas de casos de uso, clases, secuencia y actividad, explicada en la subsección 5.1.2.

5.1.1 Análisis de etiquetas XMI para los diagramas de UML 2.0

Antes de empezar a desarrollar la representación interna (en XMI, § 5.1.2), fue necesario realizar un pequeño análisis de las alternativas que existen de etiquetas (etiqueta uml, etiqueta ownedmember) XMI, para utilizarlas en la representación de los diagramas UML elegidos, a través de XMI. Este análisis se muestra en la Tabla 5-1.

De acuerdo a los trabajos y herramientas revisadas que contienen ejemplos de XMI para representar diagramas UML se obtuvo la Tabla 5-1, donde la mayoría de las versiones tanto para UML y XMI están entre la 2.0 y 2.1. En la columna manejo de la etiqueta “ownedMember” solamente “06-10-06-UML 2.1.1 XMI file” y la herramienta de “Altova Umodel” la utilizan. Los demás trabajos o herramientas utilizan ya sea etiquetas “uml” o

Capítulo 5 Solución propuesta

52

“xmi” dependiendo del contexto a representar, pero en su mayoría son etiquetas “uml”. La terminología “NE”, en la columna versión de UML y en la columna de versión de XMI, significa que no especifica la versión de UML o de XMI que utilizan.

Tabla 5-1. Revisión de XMI

Trabajos / herramientas revisadas

Man

ejo

de

owne

dMem

ber

Año

de

publ

icac

ión

Ver

sión

de

UM

L

Ver

sión

de

X

MI

MANTIS: Definición de un Entorno para la Gestión del Mantenimiento de Software [RUI03]

2003 NE NE

MOF 2.0/XMI Mapping Specification, v2.1 [OBJ05] 2005 1.4, 2.0 2.1 Mastering XMI Java Programming with XMI, XML, and UML [GRO02] 2002 NE 2.0 XMI de UML 1.4 [OMG07] 2001 1.4 1.1 06-10-06-UML 2.1.1 XMI file [OMG07] √ 2006 2.1.1 2.1 XMI: XML Metadata Interchange [XMI01] 2001 NE 1.1 Enterprise Architect 6.5 [ENT06] 2006 2.0 2.1 Altova Umodel 2007 [ALT07] √ 2007 2.0 2.1 Visual Paradigm for UML 6.0 [VIS07] 2007 2.0 2.1

Como conclusión de la información presentada en la Tabla 5-1, se tiene como resultado

que la etiqueta que más se presentó tanto en los trabajos como herramientas fue la etiqueta “uml”, por lo tanto la etiqueta a elegir para desarrollar la representación interna será dicha etiqueta.

Otro aspecto que reafirma dicha elección, es que de acuerdo a la arquitectura conceptual

de cuatro niveles de abstracción de MOF mostrada en la Ilustración 5-1, el trabajo de esta tesis está ubicado entre los niveles M2, M1 y M0, donde se representa el nivel M2 como el metamodelo de UML por medio de etiquetas XML/XMI, al nivel M1 como modelos UML por medio de datos XML/XMI o propiedades de las etiquetas XML/XMI y a nivel M0 los datos que se introducen en los modelos UML y se guardan en las etiquetas XML/XMI. Debido a esto se decidió ocupar los documentos XMI para representar los diagramas UML con etiquetas “uml”, ya que se está trabajando sobre la representación en XMI de los diagramas UML y se dan por hecho los niveles de abstracción que dan soporte a los modelos UML, debido a que en el nivel M0 se representan los datos, a nivel M1 se representan los modelos, a nivel M2 se incluye las descripciones que definen la estructura y semántica de los modelos y por último, a nivel M3 se incluye la descripción de la estructura y semántica del nivel M2.

Capítulo 5 Solución propuesta

53

Ilustración 5-1. Arquitectura de cuatro niveles para metadatos de MOF

5.1.2 Desarrollo de la representación interna (en XMI) Una vez explicado el por qué de XMI y el tipo de etiqueta a utilizar (§ 5.1.1), se procede a explicar la representación interna en XMI de los cuatro diagramas seleccionados (§ 4.3), mostrando primeramente la estructura general de XMI para los diagramas, en la Tabla 5-2. Todas las representaciones internas de los diagramas (documentos XMI) tienen la misma estructura general de XMI, pero contienen diferentes elementos y propiedades. Lo único que cambia en cada diagrama son las etiquetas para la definición de los elementos y propiedades contenidos en la etiqueta “xmi:content”, ya que dependiendo del tipo de diagrama serán sus elementos y propiedades (ver Ilustración 5-2, Ilustración 5-6, Ilustración 5-10 y Ilustración 5-14).

Tabla 5-2. Estructura general de XMI para los 4 diagramas <?xml version="1.0"?> Éste es el encabezado donde se indica la versión de XML

usada en el documento. <!DOCTYPE xmi:XMI SYSTEM "DTDCasosUso.dtd">

Indica que el documento esta regido por un DTD para darle validez al documento XMI.

<xmi:XMI xmi:version="2.0" xmlns:uml="http://schema.omg.org/spec/uml/2.0" xmlns:xmi="http://schema.omg.org/spec/XMI">

A partir de este elemento se estructura el resto de elementos. Esta etiqueta contiene la versión de xmi, las referencias a los esquemas uml y xmi.

<XMI.header> Contiene los elementos XML que identifican el modelo. <XMI.model xmi.name="UML" xmi.version="2.0"/> Identifica el modelo del nivel M1, donde los atributos

‘XMI.name’ y ‘XMI.version’ son el nombre y la versión del modelo que es descrito en detalle en el elemento XMI.content.

<XMI.content> Contiene los metadatos, que pueden representar información correspondiente a un modelo (nivel M1) o a un metamodelo (nivel M2). Dentro de esta etiqueta irán los elementos y propiedades correspondientes a cada diagrama.

<uml:Package xmi:id=” “ name=” “>

Indica el tipo de paquete y nombre.

Capítulo 5 Solución propuesta

54

Para saber que los documentos XMI a definir para los diagramas fueran bien formados se tuvo que revisar su estructura sintáctica básica, es decir, que cumplieran con todas las definiciones básicas de formato del documento. Además se verificó su validez mediante un DTD (Document Type Definition) para especificar exactamente la relación a verificar entre los distintos elementos presentes en el documento.

Antes de mostrar cada uno de los documentos XMI para cada diagrama con su respectivo

DTD, se explica la estructura general de los DTD´s a continuación. El DTD está conformado por etiquetas ELEMENT y etiquetas ATTLIST, donde las

etiquetas ELEMENT (elemento) inician los bloques primarios de todo documento, dentro de éste se pueden definir más elementos y las etiquetas ATTLIST (atributos) permiten añadir información adicional a los elementos de un documento. Las palabras claves que puede contener un ATTLIST son:

• Un valor por defecto. Por ejemplo, se tiene en la etiqueta ATTLIST el elemento

“mensaje” y tiene como atributo "prioridad" y este atributo puede tener el valor "normal" o "urgente", siendo "normal" el valor por defecto si no se especifica el valor del atributo.

• #REQUIRED. Significa que no tiene valor por defecto, ya que es obligatorio especificar este atributo.

• #IMPLIED. Significa un atributo opcional.

Los tipos de atributos que estan presentes en el DTD son:

• CDATA.-Los atributos CDATA (Character DATA) son los más sencillos, y pueden contener casi cualquier cosa.

• ID e IDREF.- El tipo ID permite que un tipo determinado tenga un nombre único que podrá ser referenciado por un atributo de otro elemento que sea de tipo IDREF.

• ANY.- Puede tener cualquier contenido. • EMPTY: el elemento no tiene contenido. • El símbolo “+” significa que el elemento aparece una o más veces. • El símbolo “*” significa que el elemento es opcional y puede aparecer cualquier

número de veces. • El símbolo “¿” significa que el elemento es opcional y puede aparecer una sola vez. • El elemento aparece sólo una vez cuando no tiene ninguno de los símbolos

anteriores. Una vez explicado tanto la estructura general del documento XMI como de su

correspondiente DTD, se procede a presentar la representación interna y DTD’s de cada uno de los diagramas seleccionados que se muestran en la Ilustración 5-2, Ilustración 5-3, Ilustración 5-6, Ilustración 5-7, Ilustración 5-10, Ilustración 5-11, Ilustración 5-14 y Ilustración 5-15, donde cada una de las ilustraciones son documentos formateados con dos columnas, donde la segunda columna es continuación de la primera columna.

Capítulo 5 Solución propuesta

55

Todos los documentos XMI de cada diagrama presentados en dichas ilustraciones tienen asociadas pruebas con respecto a si el documento es bien formado y si es válido, las cuales se presentan en la Ilustración 5-4, Ilustración 5-5, Ilustración 5-8, Ilustración 5-9, Ilustración 5-12, Ilustración 5-13, Ilustración 5-16 y Ilustración 5-17. Donde la prueba de documento bien formado, consiste en verificar que el documento este bien estructurado, es decir, que su sintaxis esté bien, y la prueba de documento válido consiste en verificar tanto la sintaxis como la semántica del documento por medio de un DTD, lo cual se realiza mediante los elementos y atributos especificados en el DTD. Ambas pruebas mostradas en cada una de las ilustraciones, se realizaron a través de la herramienta Stylus Studio17 2007 [STY07], la cual contiene opciones para verificarlas.

En la Ilustración 5-2 se presenta el documento XMI para el diagrama de casos de uso, en el

cual se incluye en la etiqueta “xmi:content” las etiquetas correspondientes a los elementos y propiedades de dicho diagrama.

Los elementos a incluir se presentan en la Tabla 5-3, la cual representa la correspondencia

de los elementos del diagrama de casos de uso con respecto a su representación en el documento XMI.

En dicha tabla la primera columna muestra los elementos del diagrama de casos de uso y la

segunda columna muestra la correspondencia de dichos elementos con las etiquetas del documento XMI para diagramas de casos de uso (Ej. el elemento “Actor” corresponde a la etiqueta “uml:Actor” en el documento XMI).

Tabla 5-3. Correspondencia de los elementos del diagrama de casos de uso con su representación interna en el

documento XMI Elementos del diagrama

de casos de uso Correspondencia en el documento XMI

Actor uml:Actor

Caso de uso uml:UseCase

Punto de extensión uml:ExtensionPoint

Subject uml:Subject

Uso

Generalización

Incluye

Extend

Se encuentran en la etiqueta uml:Association en la propiedad type como: Use Generalize Include Extend

<?xml version="1.0"?><!DOCTYPE xmi:XMI SYSTEM "DTDCasosUso.dtd"> <xmi:XMI xmi:version="2.0" xmlns:uml="http://schema.omg.org/spec/uml/2.0" xmlns:xmi="http://schema.omg.org/spec/XMI"> <XMI.header> <XMI.model xmi.name="UML" xmi.version="2.0"/>

ExtensionPoint="" subject=""> <Association xmi:idref=""/> <Association xmi:idref=""/> </uml:ExtensionPoint> <uml:Subject xmi:id="" name=""> <Association xmi:idref=""/> <Association xmi:idref=""/>

17 Es un entorno de desarrollo interactivo (IDE, Interactive Development Environment) para trabajar con XML y las tecnologías relacionadas con XSLT, XQuery, XML Schema, SQL/XML, WSDL, SOAP, y otras.

Capítulo 5 Solución propuesta

56

</XMI.header> <XMI.content> <uml:Package xmi:id="CasosUso" name="CasosUso"> <uml:Actor xmi:id="" name="" subject=""> <Association xmi:idref=""/> </uml:Actor> <uml:UseCase xmi:id="" name="" subject=""> <Association xmi:idref=""/> <Association xmi:idref=""/> </uml:UseCase> <uml:ExtensionPoint xmi:id="" name=""

</uml:Subject> <uml:Association xmi:id="" name="" subject="" type="Include"> <Source xmi:idref=""/> <Target xmi:idref=""/> </uml:Association> <uml:Comment xmi:id="" name="Note" value=""/> </uml:Package> </XMI.content> </xmi:XMI>

Ilustración 5-2. Documento XMI para el diagrama de casos de uso

Para explicar la Ilustración 5-2 en relación con la Tabla 5-3, se presenta el siguiente

ejemplo: El elemento “Actor” de la Tabla 5-3, se representa de la siguiente manera en la Ilustración

5-2, la etiqueta para este elemento es “uml:Actor” que contiene un atributo “xmi:id”, que es el identificador de la etiqueta, así como contiene un atributo “name” que se refiere al nombre del actor y el atributo “subject” que significa que dicha etiqueta está contenida en la etiqueta “uml:subject”.

Por otro lado la etiqueta “uml:Actor”, contiene otra etiqueta denominada “Association”,

la cual tiene asociado un atributo “xmi:idref”, que contiene la referencia hacia la etiqueta “uml:Association”, en donde se encuentra el “xmi:id” de la etiqueta, con la cual se relaciona la etiqueta “uml:Actor”, esto se representa por medio de las etiquetas “Source” (etiqueta origen) y “Target” (etiqueta destino) en sus atributos “xmi:idref” contenidas dentro de la etiqueta “uml:Association”.

Al igual que la etiqueta “uml:Actor” la etiqueta “uml:Association” tienen los atributos de

“xmi:id” y de “name”, pero además esta etiqueta tiene el atributo de “type” que representa a los tipos de conectores (“use”, “generalize”, “extend” y “incluye”) que existen en los diagramas de casos de uso para unir a sus elementos (en este caso a las etiquetas “Source” y “Target”).

Para los demás elementos del diagrama de casos de uso se representan de manera

semejante lo que varía son sus atributos y/o etiquetas que pueden contener. En la Ilustración 5-3 se presenta el DTD para dar validez al documento XMI para el

diagrama de casos de uso. En el DTD están los tipos de elementos y sus atributos, así como las relaciones entre ellos, recordando que dichos elementos y sus relaciones se presentaron en la Tabla 4-7 (§ 4.3.3).

<?xml version="1.0" encoding="UTF-16LE"?> <!ELEMENT XMI.model EMPTY> <!ATTLIST XMI.model xmi.name CDATA #REQUIRED xmi.version CDATA #REQUIRED> <!ELEMENT XMI.header (XMI.model)> <!ELEMENT Association ANY> <!ATTLIST Association xmi:idref CDATA #REQUIRED> <!ELEMENT uml:Actor ((Association)*)>

name CDATA #REQUIRED> <!ELEMENT Source EMPTY> <!ATTLIST Source xmi:idref CDATA #REQUIRED> <!ELEMENT Target EMPTY> <!ATTLIST Target xmi:idref CDATA #REQUIRED> <!ELEMENT uml:Association (Source,Target)> <!ATTLIST uml:Association xmi:id CDATA #REQUIRED name CDATA #REQUIRED subject CDATA #IMPLIED

Capítulo 5 Solución propuesta

57

<!ATTLIST uml:Actor xmi:id CDATA #REQUIRED name CDATA #REQUIRED subject CDATA #IMPLIED> <!ELEMENT uml:UseCase ((Association)*)> <!ATTLIST uml:UseCase xmi:id CDATA #REQUIRED name CDATA #REQUIRED subject CDATA #IMPLIED> <!ELEMENT uml:ExtensionPoint ((Association)*)> <!ATTLIST uml:ExtensionPoint xmi:id CDATA #REQUIRED name CDATA #REQUIRED ExtensionPoint CDATA #REQUIRED subject CDATA #IMPLIED> <!ELEMENT uml:Subject ((Association)*)> <!ATTLIST uml:Subject xmi:id CDATA #REQUIRED

type (Extend|Include|Use|Generalize) #REQUIRED> <!ELEMENT uml:Comment EMPTY> <!ATTLIST uml:Comment xmi:id CDATA #REQUIRED name (Note|Other) #REQUIRED value CDATA #REQUIRED> <!ELEMENT uml:Package ((uml:Actor)+,(uml:UseCase)+,(uml:ExtensionPoint)*,(uml:Subject)*,(uml:Association)*,(uml:Comment)*)> <!ATTLIST uml:Package xmi:id CDATA #REQUIRED name CDATA #REQUIRED> <!ELEMENT XMI.content (uml:Package)> <!ELEMENT xmi:XMI (XMI.header,XMI.content)> <!ATTLIST xmi:XMI xmi:version CDATA #REQUIRED xmlns:uml CDATA #REQUIRED xmlns:xmi CDATA #REQUIRED>

Ilustración 5-3. DTD para el documento XMI del diagrama de casos de uso

Para explicar la relación de la Ilustración 5-3 y la Ilustración 5-2, se presenta a

continuación el siguiente ejemplo: Retomando el ejemplo del elemento “Actor” presentado anteriormente con respecto a la

etiqueta “uml:Actor”, se tiene que el DTD para el documento XMI del diagrama de casos de uso que lo representa es “ELEMENT uml:Actor” que tiene asociado como forma opcional al elemento “Association” que puede aparecer cualquier número de veces en dicha etiqueta y los atributos de la etiqueta “uml:Actor”, se representan por medio de la etiqueta “ATTLIST uml:Actor” que tiene los atributos “xmi:id” y “name”, como atributos requeridos y al atributo “subject”, como atributo opcional.

Para los demás elementos del diagrama de casos de uso se representan de manera

semejante lo que varía son sus atributos y/o etiquetas que pueden contener. A continuación se muestra de forma ilustrativa la correspondencia de la etiqueta

“uml:Actor” con la parte del DTD que le corresponde.

Documento XMI DTD <uml:Actor xmi:id="" name="" subject=""> <Association xmi:idref=""/> </uml:Actor>

<!ELEMENT uml:Actor ((Association)*)> <!ATTLIST uml:Actor xmi:id CDATA #REQUIRED name CDATA #REQUIRED subject CDATA #IMPLIED>

A continuación en la Ilustración 5-4 y la Ilustración 5-5 se muestran las pruebas del

documento bien formado y de documento válido del documento XMI del diagrama de casos de uso presentado en la Ilustración 5-2.

En dichas ilustraciones se muestra que ambas pruebas resultaron correctas, debido a que en

la parte inferior de las ilustraciones se presenta el resultado de aplicar la opción de verificar si el documento esta bien formado aparece “The XMI document CasoUso.xml is well formed” y si es verificar que el documento es válido aparece “The XML document CasoUso.xml is valid”, de lo contrario aparecería error en tal parte del documento o si es de validar el documento aparecería “The XML document CasosUso.xml is NOT valid (1 errors)”.

Capítulo 5 Solución propuesta

58

En la parte superior de las ilustraciones aparece el documento XMI al cual se le aplican

dichas pruebas.

Ilustración 5-4. Prueba de documento bien formado para el documento XMI del diagrama de casos de uso

Ilustración 5-5. Prueba de documento válido para el documento XMI del diagrama de casos de uso

Capítulo 5 Solución propuesta

59

En la Ilustración 5-6 se presenta el documento XMI para el diagrama de clases, en el cual se representan dentro de la etiqueta “xmi:content” las etiquetas correspondientes a los elementos y propiedades de dicho diagrama, que se presentan en la Tabla 5-4, mostrando la correspondencia de los elementos del diagrama de clases con respecto a su representación en el documento XMI.

En dicha tabla la primera columna muestra los elementos del diagrama de clases y la

segunda columna muestra la correspondencia de dichos elementos con las etiquetas del documento XMI para diagramas de clases (Ej. el elemento “Interfaz” corresponde a la etiqueta “uml:Interface” en el documento XMI).

Tabla 5-4. Correspondencia de los elementos del diagrama de clases con su representación interna en el

documento XMI Elementos del diagrama de clases Correspondencia en el documento XMI

Clase uml:Class

Interfaz uml:Interface

Asociación

Generalización

Composición Agregación

Dependencia

Realización

Realización de la interfaz Rastro

Anidar

Se encuentran en la etiqueta uml:Association en la propiedad type como: Associate Generalize Compose Agregate Dependency Realize InterfaceRealization Trace Nesting

<?xml version="1.0"?><!DOCTYPE xmi:XMI SYSTEM "DTDClases.dtd"> <xmi:XMI xmi:version="2.0" xmlns:uml="http://schema.omg.org/spec/uml/2.0" xmlns:xmi="http://schema.omg.org/spec/XMI"> <XMI.header> <XMI.model xmi.name="UML" xmi.version="2.0"/> </XMI.header> <XMI.content> <uml:Package xmi:id="Class" name="Class"> <uml:Class xmi:id="" name="" isAbstract="false" Visibility="Public" isDerived="false" isRoot="false" Template="" Stereotype=""> <uml:Attribute xmi:id="" type="" name="" visibility="Public" Stereotype=""> </uml:Attribute> <uml:Operation xmi:id="" type="" name="" visibility="Protected" Stereotype=""> <uml:Parameter xmi:id="" type="" name=""> </uml:Parameter>

</uml:Operation> <Association xmi:idref="" /> <Association xmi:idref=""/> </uml:Class> <uml:Interface xmi:id="" name="" isAbstract="false" isDerived="false" isRoot="true" Visibility="Private" Stereotype=""> <Association xmi:idref="" /> <Association xmi:idref=""/> </uml:Interface> <uml:Association xmi:id="" name="" Direction="Unspecified" type="Dependency"> <Source xmi:idref=""/> <Target xmi:idref=""/> <Multiplicity lower="" upper=""/> </uml:Association> <uml:Comment xmi:id="" name="Note" value=""/> </uml:Package> </XMI.content> </xmi:XMI>

Ilustración 5-6. Documento XMI para el diagrama de clases

Para explicar la Ilustración 5-6 en relación con la Tabla 5-4, se presenta el siguiente

ejemplo:

Capítulo 5 Solución propuesta

60

El elemento “Interfaz” de la Tabla 5-4, se representa de la siguiente manera en la Ilustración 5-6, la etiqueta para este elemento es “uml:Interface” que contiene un atributo “xmi:id”, que es el identificador de la etiqueta, así como contiene un atributo “name” que se refiere al nombre de la interfaz, además contiene atributos que indican si es abstracta, derivada, si es raíz y el tipo de visibilidad que tiene, además si tiene algún estereotipo.

Por otro lado la etiqueta “uml:Interface”, contiene otra etiqueta denominada

“Association”, la cual tiene asociado un atributo “xmi:idref”, que contiene la referencia hacia la etiqueta “uml:Association”, en donde se encuentra el “xmi:id” de la etiqueta, con la cual se relaciona la etiqueta “uml:Interface”, esto se representa por medio de las etiquetas “Source” (etiqueta origen) y “Target” (etiqueta destino) en sus atributos “xmi:idref” contenidas dentro de la etiqueta “uml:Association”, esta etiqueta también contiene a la etiqueta “Multiplicity”, que representa el tipo de multiplicidad.

Al igual que la etiqueta “uml:Interface” la etiqueta “uml:Association” tienen los atributos

de “xmi:id” y de “name”, pero además esta etiqueta tiene el atributo de “type” que representa a los tipos de conectores (“Associate”, “Generalize”, “Compose”, “Agregate”, “Dependency”, “Realice”, “InterfaceRealization”, “Trace” y “Nesting”) que existen en los diagramas de clases para unir a sus elementos (en este caso a las etiquetas “Source” y “Target”).

Para los demás elementos del diagrama de clases se representan de manera semejante lo

que varía son sus atributos y/o etiquetas que pueden contener.

En la Ilustración 5-7 se presenta el DTD para dar validez al documento XMI para el diagrama de clases. En el DTD están los tipos de elementos y sus atributos, así como las relaciones entre ellos, recordando que dichos elementos y sus relaciones se presentaron en la Tabla 4-8 (§ 4.3.3).

<?xml version="1.0" encoding="UTF-16LE"?> <!ELEMENT XMI.model EMPTY> <!ATTLIST XMI.model xmi.name CDATA #REQUIRED xmi.version CDATA #REQUIRED> <!ELEMENT XMI.header (XMI.model)> <!ELEMENT uml:Attribute ANY> <!ATTLIST uml:Attribute xmi:id CDATA #REQUIRED type CDATA #REQUIRED name CDATA #REQUIRED visibility (packageLocal|Public|Private|Protected) #REQUIRED Stereotype CDATA #IMPLIED> <!ELEMENT uml:Parameter ANY> <!ATTLIST uml:Parameter xmi:id CDATA #REQUIRED type CDATA #REQUIRED name CDATA #REQUIRED> <!ELEMENT uml:Operation ((uml:Parameter)*)> <!ATTLIST uml:Operation xmi:id CDATA #REQUIRED type CDATA #REQUIRED name CDATA #REQUIRED visibility (Public|Private|Protected) #REQUIRED Stereotype CDATA #IMPLIED> <!ELEMENT Association ANY> <!ATTLIST Association

xmi:id CDATA #REQUIRED name CDATA #REQUIRED isAbstract (true|false) #REQUIRED isDerived (true|false) #REQUIRED isRoot (true|false) #REQUIRED Visibility (Public|Private|Protected) #REQUIRED Stereotype CDATA #IMPLIED> <!ELEMENT Source EMPTY> <!ATTLIST Source xmi:idref CDATA #REQUIRED> <!ELEMENT Target EMPTY> <!ATTLIST Target xmi:idref CDATA #REQUIRED> <!ELEMENT Multiplicity EMPTY> <!ATTLIST Multiplicity lower CDATA #REQUIRED upper CDATA #REQUIRED> <!ELEMENT uml:Association (Source,Target,(Multiplicity)*)> <!ATTLIST uml:Association xmi:id CDATA #REQUIRED name CDATA #REQUIRED Direction (Unspecified|Bi-directional|Source-Destination|Destination-Source) #REQUIRED type (Associate|AssociationClass|Generalize|Compose|Agregate|Dependency|Realize|Trace|Nesting|InterfaceRealization|Link) #REQUIRED> <!ELEMENT uml:Comment EMPTY> <!ATTLIST uml:Comment xmi:id CDATA #REQUIRED

Capítulo 5 Solución propuesta

61

xmi:idref CDATA #REQUIRED> <!ELEMENT uml:Class ((uml:Attribute)*,(uml:Operation)*,(Association)*)> <!ATTLIST uml:Class xmi:id CDATA #REQUIRED name CDATA #REQUIRED isAbstract (true|false) #REQUIRED isDerived (true|false) #REQUIRED isRoot (true|false) #REQUIRED Visibility (Public|Private|Protected) #REQUIRED Template CDATA #IMPLIED Stereotype CDATA #IMPLIED> <!ELEMENT uml:Interface ((Association)*)> <!ATTLIST uml:Interface

name (Note|Other) #REQUIRED value CDATA #REQUIRED> <!ELEMENT uml:Package ((uml:Class)+,(uml:Interface)*,(uml:Association)*,(uml:Comment)*)> <!ATTLIST uml:Package xmi:id CDATA #REQUIRED name CDATA #REQUIRED> <!ELEMENT XMI.content (uml:Package)> <!ELEMENT xmi:XMI (XMI.header,XMI.content)> <!ATTLIST xmi:XMI xmi:version CDATA #REQUIRED xmlns:uml CDATA #REQUIRED xmlns:xmi CDATA #REQUIRED>

Ilustración 5-7. DTD para el documento XMI del diagrama de clases

Para explicar la relación de la Ilustración 5-7 y la Ilustración 5-6, se presenta a

continuación el siguiente ejemplo: Retomando el ejemplo del elemento “Interfaz” presentado anteriormente con respecto a la

etiqueta “uml:Interface”, se tiene que el DTD para el documento XMI del diagrama de clases que lo representa es “ELEMENT uml:Interface” que tiene asociado como forma opcional al elemento “Association” que puede aparecer cualquier número de veces en dicha etiqueta y los atributos de la etiqueta “uml:Interface”, se representan por medio de la etiqueta “ATTLIST uml:Interface” que tiene atributos “xmi:id” y “name”, como atributos requeridos y atributos como “isAbtract”, “isDerived”, “isRoot”, “Visibility”, que son también atributos requeridos pero que tienen valores ya establecidos, por último el atributo “Stereotype”, es un atributo opcional.

Para los demás elementos del diagrama de clases se representan de manera semejante lo

que varía son sus atributos y/o etiquetas que pueden contener. A continuación se muestra de forma ilustrativa la correspondencia de la etiqueta “uml:

Interface” con la parte del DTD que le corresponde.

Documento XMI DTD <uml:Interface xmi:id="" name="" isAbstract="false" isDerived="false" isRoot="true" Visibility="Private" Stereotype=""> <Association xmi:idref="" /> </uml:Interface>

<!ELEMENT uml:Interface ((Association)*)> <!ATTLIST uml:Interface xmi:id CDATA #REQUIRED name CDATA #REQUIRED isAbstract (true|false) #REQUIRED isDerived (true|false) #REQUIRED isRoot (true|false) #REQUIRED Visibility (Public|Private|Protected) #REQUIRED Stereotype CDATA #IMPLIED>

A continuación en la Ilustración 5-8 y la Ilustración 5-9 se muestran las pruebas de

documento bien formado y de documento válido del documento XMI del diagrama de clases presentado en la Ilustración 5-6.

En dichas ilustraciones se muestra que ambas pruebas resultaron correctas, debido a que en

la parte inferior de las ilustraciones se presenta el resultado de aplicar la opción de verificar si el documento esta bien formado aparece “The XMI document Clases.xml is well formed” y si es verificar que el documento es válido aparece “The XML document Clases.xml is valid”, de

Capítulo 5 Solución propuesta

62

lo contrario aparecería error en tal parte del documento o si es de validar el documento aparecería “The XML document Clases.xml is NOT valid (1 errors)”.

En la parte superior de las ilustraciones aparece el documento XMI al cual se le aplican

dichas pruebas.

Ilustración 5-8. Prueba de documento bien formado para el documento XMI del diagrama de clases

Ilustración 5-9. Prueba de documento válido para el documento XMI del diagrama de clases

Capítulo 5 Solución propuesta

63

En la Ilustración 5-10 se presenta el documento XMI para el diagrama de secuencia, en el cual se representan dentro de la etiqueta “xmi:content” las etiquetas correspondientes a los elementos y propiedades de dicho diagrama, donde dichos elementos se presentan en la Tabla 5-5, la cual representa la correspondencia de los elementos del diagrama de secuencia con respecto a su representación en el documento XMI.

En dicha tabla la primera columna muestra los elementos del diagrama de secuencia y la

segunda columna muestra la correspondencia de dichos elementos con las etiquetas del documento XMI para diagramas de secuencia (Ej. el elemento “Marco” corresponde a la etiqueta “uml:Frame” en el documento XMI).

Tabla 5-5. Correspondencia de los elementos del diagrama de secuencia con su representación interna en el documento XMI

Elementos del diagrama de secuencia Correspondencia en el documento XMI

Actor

Línea de vida

Límite

Control

Entidad

Se encuentran en la etiqueta uml:Lifeline en la propiedad type como: Actor Lifeline Boundary Control Entity

Coregion

Restricciones de duración, Duración, Observación

Restricciones de tiempo, Observaciones de tiempo

Se encuentran en la etiqueta uml:Lifeline en la parte de etiquetas internas de él se encuentran Coregion DurationConstraint TimeConstraint TimeObservation Por otro lado en la etiqueta uml:Association también se encuentran: DurationObservation DurationConstraint

Fragmento combinado uml:CombinedFragment

Marco

uml:Frame

Gate uml:Gate

Empleo de interacción uml:InteractionUse

Estado Invariante / Continuaciones Se encuentran en la etiqueta uml: InteractionState en la propiedad type como: StateInvariant Continuation

Capítulo 5 Solución propuesta

64

Stop Se encuentra en la etiqueta uml:Lifeline en la propiedad stop

Mensaje

Self- Message

Mensaje perdido, mensaje encontrado Ordenamiento general

Se encuentran en la etiqueta uml:Association en la propiedad type como: Message Self-Message Lost-Message Found-Message GeneralOrdering

<?xml version="1.0"?><!DOCTYPE xmi:XMI SYSTEM "DTDSecuencia.dtd"> <xmi:XMI xmi:version="2.0" xmlns:uml="http://schema.omg.org/spec/uml/2.0" xmlns:xmi="http://schema.omg.org/spec/XMI"> <XMI.header> <XMI.model xmi.name="UML" xmi.version="2.0"/> </XMI.header> <XMI.content> <uml:Package xmi:id="Sequence" name="Sequence"> <uml:Lifeline xmi:id="" name="" stop="" type="Lifeline" covered="" frame=""> <Coregion xmi:id="" name=""> <Association xmi:idref=""/> </Coregion> <DurationConstraint xmi:id=""> <Segment> <Start xmi:idref=""/> <End xmi:idref=""/> </Segment> </DurationConstraint> <TimeConstraint xmi:id="" name="" association=""/> <TimeObservation xmi:id="" name="" association=""/> <Association xmi:idref=""/> </uml:Lifeline> <uml:InteractiveUse xmi:id="" interaction="" name="" association="" frame=""> <Association xmi:idref=""/> </uml:InteractiveUse> <uml:CombinedFragment xmi:id="" interaction="" name="" type="alt" association="" frame="">

<Interaction xmi:id="" name="" association=""/> <InternalStructure xmi:id="" name="" association=""/> <Condition xmi:id="" name="" association=""/> <Association xmi:idref=""/> </uml:CombinedFragment> <uml:Gate xmi:id="" name="" frame=""> <Association xmi:idref=""/> </uml:Gate> <uml:InteractionState xmi:id="" name="" association="" frame=""> <Condition xmi:id="" name="" association=""/> <Type name=""/> </uml:InteractionState> <uml:EndPoint xmi:id="" name="" association="" frame=""> </uml:EndPoint> <uml:Frame xmi:id="" name=""> <Association xmi:idref=""/> </uml:Frame> <uml:Association xmi:id="" frame="" type="Lost-Message"> <Source xmi:idref=""/> <Target xmi:idref=""/> <Message name="" kind="Call"> <Parameter name="" type=""/> </Message> </uml:Association> <uml:Comment xmi:id="" name="Note" value=""/> </uml:Package> </XMI.content> </xmi:XMI>

Ilustración 5-10. Documento XMI para el diagrama de secuencia

Para explicar la Ilustración 5-10 en relación con la Tabla 5-5, se presenta el siguiente

ejemplo: El elemento “Marco” de la Tabla 5-5, se representa de la siguiente manera en la

Ilustración 5-10, la etiqueta para este elemento es “uml:Frame” que contiene un atributo “xmi:id”, que es el identificador de la etiqueta, así como contiene un atributo “name” que se refiere al nombre del marco.

Por otro lado la etiqueta “uml:Frame”, contiene otra etiqueta denominada “Association”,

la cual tiene asociado un atributo “xmi:idref”, que contiene la referencia hacia la etiqueta “uml:Association”, en donde se encuentra el “xmi:id” de la etiqueta, con la cual se relaciona la etiqueta “uml:Frame”, esto se representa por medio de las etiquetas “Source” (etiqueta origen) y “Target” (etiqueta destino) en sus atributos “xmi:idref” contenidas dentro de la etiqueta “uml:Association”.

Capítulo 5 Solución propuesta

65

Al igual que la etiqueta “uml:Frame” la etiqueta “uml:Association” tienen los atributos de “xmi:id” y de “name”, pero además esta etiqueta tiene el atributo de “type” que representa a los tipos de conectores que existen en los diagramas de secuencia para unir a sus elementos (en este caso a las etiquetas “Source” y “Target”). Para los demás elementos del diagrama de secuencia se representan de manera semejante lo que varía son sus atributos y/o etiquetas que pueden contener.

En la Ilustración 5-11 se presenta el DTD para dar validez al documento XMI para el

diagrama de secuencia. En el DTD están los tipos de elementos y sus atributos, así como las relaciones entre ellos, recordando que dichos elementos y sus relaciones se presentaron en la Tabla 4-9 (§ 4.3.3).

<?xml version="1.0" encoding="UTF-16LE"?> <!ELEMENT XMI.model EMPTY> <!ATTLIST XMI.model xmi.name CDATA #REQUIRED xmi.version CDATA #REQUIRED> <!ELEMENT XMI.header (XMI.model)> <!ELEMENT Coregion ((Association)*)> <!ATTLIST Coregion xmi:id CDATA #REQUIRED name CDATA #IMPLIED> <!ELEMENT Start EMPTY> <!ATTLIST Start xmi:idref CDATA #REQUIRED> <!ELEMENT End EMPTY> <!ATTLIST End xmi:idref CDATA #REQUIRED> <!ELEMENT Segment (Start,End)> <!ELEMENT DurationConstraint (Segment)> <!ATTLIST DurationConstraint xmi:id CDATA #REQUIRED> <!ELEMENT TimeConstraint EMPTY> <!ATTLIST TimeConstraint xmi:id CDATA #REQUIRED name CDATA #REQUIRED association CDATA #IMPLIED> <!ELEMENT TimeObservation EMPTY> <!ATTLIST TimeObservation xmi:id CDATA #REQUIRED name CDATA #REQUIRED association CDATA #IMPLIED> <!ELEMENT uml:Lifeline ((Coregion)*,(DurationConstraint)*,(TimeConstraint)*, (TimeObservation)*,(Association)*)> <!ATTLIST uml:Lifeline xmi:id CDATA #REQUIRED name CDATA #REQUIRED type (Actor|Boundary|Control|Entity|Lifeline) #REQUIRED stop CDATA #IMPLIED covered CDATA #IMPLIED frame CDATA #IMPLIED> <!ELEMENT uml:InteractiveUse ((Association)*)> <!ATTLIST uml:InteractiveUse xmi:id CDATA #REQUIRED interaction CDATA #REQUIRED name CDATA #REQUIRED association CDATA #IMPLIED frame CDATA #IMPLIED> <!ELEMENT Interaction EMPTY> <!ATTLIST Interaction xmi:id CDATA #REQUIRED name CDATA #IMPLIED association CDATA #IMPLIED> <!ELEMENT InternalStructure EMPTY> <!ATTLIST InternalStructure xmi:id CDATA #REQUIRED

name CDATA #REQUIRED frame CDATA #IMPLIED> <!ELEMENT Condition ((Association)*)> <!ATTLIST Condition xmi:id CDATA #REQUIRED name CDATA #REQUIRED association CDATA #IMPLIED> <!ELEMENT Type EMPTY> <!ATTLIST Type name (StateInvariant | Continuation) #REQUIRED><!ELEMENT uml:InteractionState (Condition,Type)> <!ATTLIST uml:InteractionState xmi:id CDATA #REQUIRED name CDATA #REQUIRED association CDATA #IMPLIED frame CDATA #IMPLIED> <!ELEMENT uml:EndPoint ANY> <!ATTLIST uml:EndPoint xmi:id CDATA #REQUIRED name CDATA #REQUIRED association CDATA #IMPLIED frame CDATA #IMPLIED> <!ELEMENT Association EMPTY> <!ATTLIST Association xmi:idref CDATA #REQUIRED> <!ELEMENT uml:Frame ((Association)*)> <!ATTLIST uml:Frame xmi:id CDATA #REQUIRED name CDATA #REQUIRED> <!ELEMENT Source EMPTY> <!ATTLIST Source xmi:idref CDATA #REQUIRED> <!ELEMENT Target EMPTY> <!ATTLIST Target xmi:idref CDATA #REQUIRED> <!ELEMENT Parameter EMPTY> <!ATTLIST Parameter name CDATA #REQUIRED type CDATA #REQUIRED> <!ELEMENT Message ((Parameter)*)> <!ATTLIST Message name CDATA #REQUIRED kind (Asynchronous|Call|Signal|Return) #REQUIRED> <!ELEMENT uml:Association (Source,Target,Message)> <!ATTLIST uml:Association xmi:id CDATA #REQUIRED frame CDATA #IMPLIED type (Message|DurationObservation|DurationConstraint|Self-Message|General Ordering|Lost-Message|Found-Message) #REQUIRED association CDATA #IMPLIED> <!ELEMENT uml:Comment EMPTY> <!ATTLIST uml:Comment xmi:id CDATA #REQUIRED name (Note|Other) #REQUIRED value CDATA #REQUIRED>

Capítulo 5 Solución propuesta

66

name CDATA #IMPLIED association CDATA #IMPLIED> <!ELEMENT uml:CombinedFragment ((Interaction)*,(InternalStructure)*,(Condition)+,(Association)*)> <!ATTLIST uml:CombinedFragment xmi:id CDATA #REQUIRED interaction CDATA #IMPLIED name CDATA #REQUIRED type (alt|loop|opt) #REQUIRED association CDATA #IMPLIED frame CDATA #IMPLIED> <!ELEMENT uml:Gate ((Association)*)> <!ATTLIST uml:Gate xmi:id CDATA #REQUIRED

<!ELEMENT uml:Package ((uml:Lifeline)+,(uml:InteractiveUse)*,(uml:CombinedFragment)*, (uml:Gate)*, (uml:InteractionState)*,(uml:EndPoint)*,(uml:Frame)*, (uml:Association)*, (uml:Comment)*)> <!ATTLIST uml:Package xmi:id CDATA #REQUIRED name CDATA #REQUIRED> <!ELEMENT XMI.content (uml:Package)> <!ELEMENT xmi:XMI (XMI.header,XMI.content)> <!ATTLIST xmi:XMI xmi:version CDATA #REQUIRED xmlns:uml CDATA #REQUIRED xmlns:xmi CDATA #REQUIRED>

Ilustración 5-11. DTD para el documento XMI del diagrama de secuencia

Para explicar la relación de la Ilustración 5-11 y la Ilustración 5-10, se presenta a

continuación el siguiente ejemplo: Retomando el ejemplo del elemento “Marco” presentado anteriormente con respecto a la

etiqueta “uml:Frame”, se tiene que el DTD para el documento XMI del diagrama de secuencia que lo representa es “ELEMENT uml:Frame” que tiene asociado como forma opcional al elemento “Association” que puede aparecer cualquier número de veces en dicha etiqueta y los atributos de la etiqueta “uml:Frame”, se representan por medio de la etiqueta “ATTLIST uml:Frame” que tiene atributos “xmi:id” y “name”, como atributos requeridos.

Para los demás elementos del diagrama de secuencia se representan de manera semejante

lo que varía son sus atributos y/o etiquetas que pueden contener. A continuación se muestra de forma ilustrativa la correspondencia de la etiqueta

“uml:Frame” con la parte del DTD que le corresponde.

Documento XMI DTD <uml:Frame xmi:id="" name=""> <Association xmi:idref=""/> </uml:Frame>

<!ELEMENT uml:Frame ((Association)*)> <!ATTLIST uml:Frame xmi:id CDATA #REQUIRED name CDATA #REQUIRED>

A continuación en la Ilustración 5-12 y la Ilustración 5-13 se muestran las pruebas de

documento bien formado y de documento válido del documento XMI del diagrama de secuencia presentado en la Ilustración 5-10.

En dichas ilustraciones se muestra que ambas pruebas resultaron correctas, debido a que en

la parte inferior de las ilustraciones se presenta el resultado de aplicar la opción de verificar si el documento esta bien formado aparece “The XMI document Secuencia.xml is well formed” y si es verificar que el documento es válido aparece “The XML document Secuencia.xml is valid”, de lo contrario aparecería error en tal parte del documento o si es de validar el documento aparecería “The XML document Secuencia.xml is NOT valid (1 errors)”.

En la parte superior de las ilustraciones aparece el documento XMI al cual se le aplican

dichas pruebas.

Capítulo 5 Solución propuesta

67

Ilustración 5-12. Prueba de documento bien formado para el documento XMI del diagrama de secuencia

Ilustración 5-13. Prueba de documento válido para el documento XMI del diagrama de secuencia

En la Ilustración 5-14 se presenta el documento XMI para el diagrama de actividad, en el

cual se representan dentro de la etiqueta “xmi:content” las etiquetas correspondientes a los elementos y propiedades de dicho diagrama, los elementos se presentan en la Tabla 5-6, la cual representa la correspondencia de los elementos del diagrama de actividad con respecto a su representación en el documento XMI.

Capítulo 5 Solución propuesta

68

En dicha tabla la primera columna muestra los elementos del diagrama de actividad y la segunda columna muestra la correspondencia de dichos elementos con las etiquetas del documento XMI para diagramas de actividad (Ej. el elemento “Actividad” corresponde a la etiqueta “uml:Activity” en el documento XMI).

Tabla 5-6. Correspondencia de los elementos del diagrama de actividad con su representación interna en el

documento XMI Elementos del diagrama de

actividad Correspondencia en el documento XMI

Actividad uml:Activity

Acción uml:Action

Partición uml:Partition

Nodo de objeto uml:ObjectNode

Almacén de datos uml:DataStore

Nodo de decisión

Nodo merge

Se encuentra en la etiqueta uml:DecisionNode en la propiedad type como: Decisión Merge

Acción de señal enviada uml:SendSignalAction

Acción de evento recibido uml:ReceiveEventAction

Nodo inicial uml:InitialNode

Nodo Final uml:FinalNode

Flujo final uml:FlowFinal

Región uml:Region

Excepción uml:Exception

Nodo de bifurcación uml:ForkNode

Nodo de unión uml:JoinNode

Flujo de control

Flujo de objeto

Flujo de interrupción

Se encuentran en la etiqueta uml:Association en la propiedad type como: ControlFlow ObjectFlow InterruptFlow

<?xml version="1.0"?><!DOCTYPE xmi:XMI SYSTEM "DTDActividad.dtd"> <xmi:XMI xmi:version="2.0" xmlns:uml="http://schema.omg.org/spec/uml/2.0" xmlns:xmi="http://schema.omg.org/spec/XMI"> <XMI.header> <XMI.model xmi.name="UML" xmi.version="2.0"/> </XMI.header> <XMI.content> <uml:Package xmi:id="Activity" name="Activity"> <uml:InitialNode xmi:id="" name="" partition=""> <Association xmi:idref=""/> </uml:InitialNode> <uml:Activity xmi:id="" name="" partition="" region=""> <Association xmi:idref=""/>

<uml:SendSignalAction xmi:id="" name="" partition="" region=""> <Association xmi:idref=""/> </uml:SendSignalAction> <uml:ReceiveEventAction xmi:id="" name="" partition="" region=""> <Association xmi:idref=""/> </uml:ReceiveEventAction> <uml:ForkNode xmi:id="" partition="" region=""> <Association xmi:idref=""/> </uml:ForkNode> <uml:JoinNode xmi:id="" partition="" region=""> <Association xmi:idref=""/> </uml:JoinNode> <uml:FlowFinal xmi:id="" name="" partition="">

Capítulo 5 Solución propuesta

69

</uml:Activity> <uml:Exception xmi:id="" name="" partition="" region=""> <Association xmi:idref=""/> </uml:Exception> <uml:Action xmi:id="" name="" partition="" region=""> <Association xmi:idref=""/> </uml:Action> <uml:ObjectNode xmi:id="" name="" partition="" region=""> <Association xmi:idref=""/> </uml:ObjectNode> <uml:DataStore xmi:id="" name="" partition="" region=""> <Association xmi:idref=""/> </uml:DataStore> <uml:DecisionNode xmi:id="" name="" type="Decision" partition="" region=""> <Association xmi:idref=""/> </uml:DecisionNode>

<Association xmi:idref=""/> </uml:FlowFinal> <uml:FinalNode xmi:id="" name="" partition=""> <Association xmi:idref=""/> </uml:FinalNode> <uml:Partition xmi:id="" name="" region=""> <Association xmi:idref=""/> </uml:Partition> <uml:Region xmi:id="" name="" partition=""> <Association xmi:idref=""/> </uml:Region> <uml:Association xmi:id="" name="" type="ObjectFlow" partition="" region=""> <Source xmi:idref=""/> <Target xmi:idref=""/> </uml:Association> <uml:Comment xmi:id="" name="Note" value=""/> </uml:Package> </XMI.content> </xmi:XMI>

Ilustración 5-14. Documento XMI para el diagrama de actividad

Para explicar la Ilustración 5-14 en relación con la Tabla 5-6, se presenta el siguiente

ejemplo: El elemento “Actividad” de la Tabla 5-6, se representa de la siguiente manera en la

Ilustración 5-14, la etiqueta para este elemento es “uml:Activity” que contiene un atributo “xmi:id”, que es el identificador de la etiqueta, así como contiene un atributo “name” que se refiere al nombre de la actividad, un atributo “partition” y un atributo “region” que significan que la etiqueta “uml:Activity” se encuentra dentro de alguna de estas etiquetas.

Por otro lado la etiqueta “uml:Activity”, contiene otra etiqueta denominada “Association”,

la cual tiene asociado un atributo “xmi:idref”, que contiene la referencia hacia la etiqueta “uml:Association”, en donde se encuentra el “xmi:id” de la etiqueta, con la cual se relaciona la etiqueta “uml:Activity”, esto se representa por medio de las etiquetas “Source” (etiqueta origen) y “Target” (etiqueta destino) en sus atributos “xmi:idref” contenidas dentro de la etiqueta “uml:Association”.

Al igual que la etiqueta “uml:Activity” la etiqueta “uml:Association” tienen los atributos

de “xmi:id” y de “name”, pero además esta etiqueta tiene el atributo de “type” que representa al tipo de conector que existe en los diagramas de actividad para unir a sus elementos (en este caso a las etiquetas “Source” y “Target”).

Para los demás elementos del diagrama de actividad se representan de manera semejante lo

que varía son sus atributos y/o etiquetas que pueden contener. En la Ilustración 5-15 se presenta el DTD para dar validez al documento XMI para el

diagrama de actividad. En el DTD están los tipos de elementos y sus atributos, así como las relaciones entre ellos, recordando que dichos elementos y sus relaciones se presentaron en la Tabla 4-10 (§ 4.3.3).

Capítulo 5 Solución propuesta

70

<?xml version="1.0" encoding="UTF-16LE"?> <!ELEMENT XMI.model EMPTY> <!ATTLIST XMI.model xmi.name CDATA #REQUIRED xmi.version CDATA #REQUIRED> <!ELEMENT XMI.header (XMI.model)> <!ELEMENT uml:Activity ((Association)*)> <!ATTLIST uml:Activity xmi:id CDATA #REQUIRED name CDATA #REQUIRED partition CDATA #IMPLIED region CDATA #IMPLIED> <!ELEMENT uml:InitialNode ((Association)*)> <!ATTLIST uml:InitialNode xmi:id CDATA #REQUIRED name CDATA #REQUIRED partition CDATA #IMPLIED > <!ELEMENT uml:Exception ((Association)*)> <!ATTLIST uml:Exception xmi:id CDATA #REQUIRED name CDATA #REQUIRED partition CDATA #IMPLIED region CDATA #IMPLIED> <!ELEMENT uml:Action ((Association)*)> <!ATTLIST uml:Action xmi:id CDATA #REQUIRED name CDATA #REQUIRED partition CDATA #IMPLIED region CDATA #IMPLIED> <!ELEMENT uml:ObjectNode ((Association)*)> <!ATTLIST uml:ObjectNode xmi:id CDATA #REQUIRED name CDATA #REQUIRED partition CDATA #IMPLIED region CDATA #IMPLIED> <!ELEMENT uml:DataStore ((Association)*)> <!ATTLIST uml:DataStore xmi:id CDATA #REQUIRED name CDATA #REQUIRED partition CDATA #IMPLIED region CDATA #IMPLIED> <!ELEMENT uml:DecisionNode ((Association)*)> <!ATTLIST uml:DecisionNode xmi:id CDATA #REQUIRED name CDATA #REQUIRED type (Decision|Merge) #REQUIRED partition CDATA #IMPLIED region CDATA #IMPLIED> <!ELEMENT uml:SendSignalAction ((Association)*)> <!ATTLIST uml:SendSignalAction xmi:id CDATA #REQUIRED name CDATA #REQUIRED partition CDATA #IMPLIED region CDATA #IMPLIED> <!ELEMENT uml:ReceiveEventAction ((Association)*)> <!ATTLIST uml:ReceiveEventAction xmi:id CDATA #REQUIRED name CDATA #REQUIRED partition CDATA #IMPLIED region CDATA #IMPLIED> <!ELEMENT uml:ForkNode ((Association)*)> <!ATTLIST uml:ForkNode

xmi:id CDATA #REQUIRED partition CDATA #IMPLIED region CDATA #IMPLIED> <!ELEMENT uml:JoinNode ((Association)*)> <!ATTLIST uml:JoinNode xmi:id CDATA #REQUIRED partition CDATA #IMPLIED region CDATA #IMPLIED> <!ELEMENT uml:FlowFinal ((Association)*)> <!ATTLIST uml:FlowFinal xmi:id CDATA #REQUIRED name CDATA #REQUIRED partition CDATA #IMPLIED> <!ELEMENT uml:FinalNode ((Association)*)> <!ATTLIST uml:FinalNode xmi:id CDATA #REQUIRED name CDATA #REQUIRED partition CDATA #IMPLIED > <!ELEMENT uml:Partition ((Association))*> <!ATTLIST uml:Partition xmi:id CDATA #REQUIRED name CDATA #REQUIRED region CDATA #IMPLIED> <!ELEMENT Association EMPTY> <!ATTLIST Association xmi:idref CDATA #REQUIRED> <!ELEMENT uml:Region ((Association)*)> <!ATTLIST uml:Region xmi:id CDATA #REQUIRED name CDATA #REQUIRED partition CDATA #IMPLIED> <!ELEMENT Source EMPTY> <!ATTLIST Source xmi:idref CDATA #REQUIRED> <!ELEMENT Target EMPTY> <!ATTLIST Target xmi:idref CDATA #REQUIRED> <!ELEMENT uml:Association (Source,Target)> <!ATTLIST uml:Association xmi:id CDATA #REQUIRED name CDATA #REQUIRED type (ControlFlow|ObjectFlow|InterruptFlow) #REQUIRED partition CDATA #IMPLIED region CDATA #IMPLIED> <!ELEMENT uml:Comment EMPTY> <!ATTLIST uml:Comment xmi:id CDATA #REQUIRED name (Note|Other) #REQUIRED value CDATA #REQUIRED> <!ELEMENT uml:Package ((uml:InitialNode)*,(uml:Activity)*,(uml:Exception)*, (uml:Action)*,(uml:ObjectNode)*,(uml:DataStore)*, (uml:DecisionNode)*, (uml:SendSignalAction)*,(uml:ReceiveEventAction)*, (uml:ForkNode)*, (uml:JoinNode)*,(uml:FlowFinal)*,(uml:FinalNode)*, (uml:Partition)*,(uml:Region)*,(uml:Association)*, (uml:Comment)*)> <!ATTLIST uml:Package xmi:id CDATA #REQUIRED name CDATA #REQUIRED> <!ELEMENT XMI.content (uml:Package)> <!ELEMENT xmi:XMI (XMI.header,XMI.content)> <!ATTLIST xmi:XMI xmi:version CDATA #REQUIRED xmlns:uml CDATA #REQUIRED xmlns:xmi CDATA #REQUIRED>

Ilustración 5-15. DTD para el documento XMI del diagrama de actividad

Capítulo 5 Solución propuesta

71

Para explicar la relación de la Ilustración 5-15 y la Ilustración 5-14, se presenta a continuación el siguiente ejemplo:

Retomando el ejemplo del elemento “Actividad” presentado anteriormente con respecto a

la etiqueta “uml:Activity”, se tiene que el DTD para el documento XMI del diagrama de actividad que lo representa es “ELEMENT uml:Activity” que tiene asociado como forma opcional al elemento “Association” que puede aparecer cualquier número de veces en dicha etiqueta y los atributos de la etiqueta “uml:Activity”, se representan por medio de la etiqueta “ATTLIST uml:Activity” que tiene los atributos “xmi:id” y “name”, como atributos requeridos y a los atributos “partition” y “region”, como atributos opcionales.

Para los demás elementos del diagrama de actividad se representan de manera semejante lo

que varía son sus atributos y/o etiquetas que pueden contener. A continuación se muestra de forma ilustrativa la correspondencia de la etiqueta

“uml:Activity” con la parte del DTD que le corresponde.

Documento XMI DTD <uml:Activity xmi:id="" name="" partition="" region=""> <Association xmi:idref=""/> </uml:Activity>

<!ELEMENT uml:Activity ((Association)*)> <!ATTLIST uml:Activity xmi:id CDATA #REQUIRED name CDATA #REQUIRED partition CDATA #IMPLIED region CDATA #IMPLIED>

A continuación en la Ilustración 5-16 y la Ilustración 5-17 se muestran las pruebas de

documento bien formado y de documento válido del documento XMI del diagrama de actividad presentado en la Ilustración 5-14.

En dichas ilustraciones se muestra que ambas pruebas resultaron correctas, debido a que en

la parte inferior de las ilustraciones se presenta el resultado de aplicar la opción de verificar si el documento esta bien formado aparece “The XMI document Actividad.xml is well formed” y si es verificar que el documento es válido aparece “The XML document Actividad.xml is valid”, de lo contrario aparecería error en tal parte del documento ó si es de validar el documento aparecería “The XML document Actividad.xml is NOT valid (1 errors)”.

En la parte superior de las ilustraciones aparece el documento XMI al cual se le aplican

dichas pruebas.

Capítulo 5 Solución propuesta

72

Ilustración 5-16. Prueba de documento bien formado para el documento XMI del diagrama de actividad

Ilustración 5-17. Prueba de documento válido para el documento XMI del diagrama de actividad

5.2 Definición de los modelos y las fronteras de MDA en el AGDE Antes de iniciar con esta sección, se indica que los ejemplos que se incluyen en cada una de las subsecciones de esta sección corresponden a un sistema de biblioteca, el cual se utilizó en la etapa de demostración descrita en el capítulo 6.

Capítulo 5 Solución propuesta

73

Es importante mencionar que para esta sección se consultaron las referencias [BRU02] y [LAR97] para indagar la forma en que se utilizan los diagramas UML para desarrollar una aplicación.

En la Ilustración 5-18 se presenta el esquema (representación visual) de la definición de los modelos (CIM, PIM, PSM e IM) MDA y de sus fronteras (CIM a PIM, PIM a PSM y PSM a IM). La ilustración muestra cada una de las fronteras mediante una flecha de herencia, pues el modelo PIM esta heredando la información definida en el modelo CIM; el modelo PSM esta heredando la información del modelo PIM y del modelo más abstracto CIM y el modelo IM esta heredando la información del modelo PSM y por consecuencia hereda también información del modelo PIM y del modelo CIM.

A medida que se recorre cada una de las fronteras se realiza una especialización en cada

uno de los modelos, ya que van de lo abstracto a lo específico. Debido a la herencia mostrada en la Ilustración 5-18 todos los modelos funcionales y no funcionales definidos en el modelo CIM se heredan y refinan en cada uno de los demás modelos.

Documentación estructurada

Modelo PSM

Modelo de diseño

Modelo PIM

Modelo de análisis

Modelo de diseño

Modelo IM

Modelo de Implementación

Representación permanente

Frontera CIM-PIM

Frontera PIM-PSM

Frontera PSM-IM

Modelo CIM

Modelo del negocio

Modelo funcional

Modelo no funcional

Modelo de dom

inio

Documentación estructurada

Modelo PSM

Modelo de diseño

Modelo PIM

Modelo de análisis

Modelo de diseño

Modelo IM

Modelo de Implementación

Representación permanente

Frontera CIM-PIM

Frontera PIM-PSM

Frontera PSM-IM

Modelo CIM

Modelo del negocio

Modelo funcional

Modelo no funcional

Modelo de dom

inio

Ilustración 5-18. Representación visual de la definición de los modelos y de las fronteras de los modelos MDA

hasta el modelo de implementación

En la parte derecha de la Ilustración 5-18 aparece “Documentación estructurada” que se

refiere a la documentación de cada una de las fronteras de forma organizada para su mejor

Capítulo 5 Solución propuesta

74

entendimiento y presentación, con el propósito de servir de referencia a los diagramas en el nivel (modelo) que les corresponda. Contiene la información permitida de cada uno de los modelos para cada frontera, es decir, el máximo permitido de detalles para que un diagrama pertenezca a un nivel de abstracción o modelo (Ej. CIM) o el nivel de detalle mínimo para que un modelo cruce la frontera y se considere parte del modelo más detallado. Conforme se pasa a modelos menos abstractos, se añaden elementos y/o características de dichos elementos.

Por otro lado, en la parte izquierda de la ilustración aparece “Representación permanente”

(XML/XMI), que es la representación almacenable en dispositivo magnético de los diagramas UML y que se utiliza como fuente de los elementos a transformar de un diagrama y como destino de las transformaciones realizadas para obtener el diagrama objetivo.

Tanto la “Documentación estructurada” como la “Representación permanente” se utilizan

para procesar los modelos y refinar la información contenida en ellos. Es importante definir exactamente qué es una frontera (entre modelos), para esta

investigación. La frontera entre modelos (uno más abstracto que otro) es la especificación detallada de los elementos y características que puede tener una instancia del modelo más abstracto, pues si se agrega alguna característica de un elemento existente en el modelo, o un nuevo elemento, se convertiría en una instancia del modelo más detallado.

Cada frontera especifica los elementos y características necesarios y suficientes para un

modelo antes de cruzar la frontera correspondiente (CIM a PIM, PIM a PSM, PSM a IM), por ejemplo, una clase a nivel CIM tendría las características de nombre de la clase y algunos de sus atributos, con sus respectivos tipos de dato sin especificar sus rangos; y una clase a nivel PIM contendría las características de nombre de la clase, sus atributos y métodos, además de tener especificadas algunas propiedades como su visibilidad, si utiliza plantillas, el rango de sus atributos y/o métodos etc.

La frontera también es la base a partir de la cual, la agregación de mayor detalle

(refinación) a un modelo, lo transforma al siguiente nivel de detalle menos abstracto, por ejemplo, un diagrama de clases a nivel CIM (representa las clases vistas desde la información relevante del negocio y/o dominio) se transforma a un diagrama de clases a nivel PIM (representa las clases vistas desde una aplicación computacional, sin considerar cuestiones de lenguaje, plataforma o ambiente de desarrollo).

En las secciones siguientes se explicará cada una de las definiciones de los modelos, así

como los diagramas que los conformarán y sus transformaciones, las cuales se realizan, con el propósito de indicar que a partir de un determinado diagrama se obtiene otro, ya sea en el mismo nivel o hacia otro nivel. Además se presentarán las definiciones de cada una de las fronteras a través de los diagramas definidos para cada modelo.

Las transformaciones solamente son vistas como trazabilidad y éstas se mencionan,

debido a que se debe mostrar el origen y destino de la información contenida en los diagramas para ir obteniendo cada una de las fronteras hasta alcanzar un sistema ejecutable. Dichas transformaciones se representan en las ilustraciones de los diagramas (§ 5.2.1.2, 5.2.3.3,

Capítulo 5 Solución propuesta

75

5.2.5.2 y 5.2.7.1) y de las fronteras (§ 5.2.2, 5.2.4 y 5.2.6) como una línea con flecha, donde la flecha indica el diagrama destino que se obtiene del diagrama origen.

5.2.1 Definición del modelo CIM Una representación visual de los componentes y sus relaciones, del modelo CIM, se muestra en la Ilustración 5-19, que está constituida por el modelo del negocio en su modelo funcional y no funcional, así como una generación de modelos de dominio que se utilizan como base para los modelos funcional y no funcional.

Todos los modelos dentro del CIM son el punto inicial para la comprensión de lo que el cliente quiere y de cual es su contexto. La información que se tiene en este modelo CIM esta definida en los incisos siguientes.

Modelo CIM

Modelo del negocio

Modelo funcional

Modelo no funcional

Modelo de dom

inio

Modelo CIM

Modelo del negocio

Modelo funcional

Modelo no funcional

Modelo de dom

inio

Ilustración 5-19. Representación visual de la definición del modelo CIM

El modelo del negocio es la parte principal de la definición del modelo CIM y donde se

dan las bases del sistema a desarrollar.

5.2.1.1 Modelo del negocio Este modelo describe las funciones y los procesos que componen el negocio y las relaciones del negocio con procesos externos. Los procesos del negocio describen cómo se realiza el trabajo en la empresa y se caracterizan por ser observables, medibles, mejorables y repetitivos. Este modelo contiene:

• Reglas del negocio • Objetivos y metas del negocio • Definición de la estrategia del negocio • Funciones del negocio • Procesos del negocio (entradas, salidas, roles, actividades, entidades, atributos

relaciones)

Capítulo 5 Solución propuesta

76

Dentro de un negocio existen por ejemplo, dominios como administración, recursos humanos, finanzas, etc.

El modelo de negocio (Ej. CENIDET) contendrá los modelos funcional y no funcional, así como el modelo de dominio (Ej. dominio de administración de tecnología de la información aplicable al centro de cómputo, dominio de una biblioteca aplicable al centro de información, dominio de un departamento académico de postgrado aplicable al depto. de Ciencias Computacionales) que se utiliza como referencia para obtener los modelos funcional y no funcional, así también son referencia para las áreas dentro del negocio. Los modelos funcional (§ 5.2.1.1.2) y no funcional (§ 5.2.1.1.3) hacen referencia a los requerimientos generales del negocio y los requerimientos específicos a cada área, los cuales se encuentran en los modelos de dominio (§ 5.2.1.1.1) del negocio.

5.2.1.1.1 Modelo de dominio El modelo de dominio ayudará a capturar las entidades y acontecimientos asociados con el área (dominio), el cual contendrá los términos básicos (entidades, acciones, actores, etc.) y sus relaciones en correspondencia a su contexto.

Cabe mencionar que al término dominio se le considerará como un área de conocimiento o actividad caracterizada mediante el conjunto de conceptos y terminología entendida por los expertos del área (dominio).

La información del modelo de dominio, se obtendrá en general de los expertos del dominio (mediante una entrevista) o mediante el modelado de los involucrados y sus procesos, para obtener un conjunto de mejores prácticas avaladas por dichos expertos. Esta información contribuirá a una mejor comprensión del problema que se quiere resolver en relación a su contexto. Este modelo contiene:

• Glosario, que define los términos utilizados en el área/dominio del negocio, para comprenderlos mejor y evitar malos entendidos, así como usarlos en un determinado proyecto. Además éste describe a las clases de los objetos y sus atributos relevantes en el espacio del problema.

• Contenido de relaciones entre objetos. • Requerimientos funcionales. • Requerimientos no funcionales. • Mejores prácticas.

5.2.1.1.2 Modelo funcional El modelo funcional se refiere a las operaciones que transforman de entradas a salidas en cada actividad de los procesos involucrados y en última instancia a las salidas de una aplicación computacional hacia su ambiente, ya sea dentro de un dominio o hacia entidades externas al negocio.

Capítulo 5 Solución propuesta

77

El ambiente incluye al usuario y cualquier otra aplicación computacional con la cual interactúe. Es decir, especifica tanto los objetivos internos como externos que se realizan para llevar a cabo una determinada actividad dentro del negocio o en un dominio particular. Por lo tanto en este punto se debe de identificar la siguiente información:

• Identificación del proceso. El conjunto ordenado de resultados, entradas y procedimientos requeridos.

• Identificación de actores y clases potenciales. Un actor puede ser una aplicación computacional y/o un humano. Una clase describe un conjunto de objetos que tienen un rol o roles equivalentes y que representa información relevante que los actores del negocio entienden.

• Identificación de escenarios. Es una representación de lo que los actores hacen y experimentan cuando realizan actividades.

• Identificación de casos de uso. Representa las funciones del negocio o de un dominio en particular, vistas desde la perspectiva de los actores externos, que proporcionan un resultado notable, es decir, de valor para uno o varios actores u otros stakeholders18.

• Identificación de las relaciones entre casos de uso. Se refiere al tipo de relación (include, extend, use,…) y cuáles casos de uso se relacionan.

5.2.1.1.3 Modelo no funcional El modelo no funcional se refiere a los requerimientos que describen características relacionadas a una aplicación computacional (entradas, salidas, procedimientos, actores y recursos) que no tienen que ver con su funcionalidad y algunas características pueden ser visibles para el usuario. Un requerimiento no funcional impone restricciones sobre un requerimiento funcional, pero también describe atributos, restricciones, consideraciones de funcionamiento, diseño, calidad, consideraciones de ambiente, de fracaso y recuperación. Este modelo puede contener [STD98]:

• Interfaces externas.- Debe ser una descripción detallada de todas las entradas y salidas del sistema del software. Las interfaces externas son:

o Interfaces de usuario. o Interfaces de hardware. o Interfaces de software. o Interfaces de comunicación.

• Requisitos de rendimiento.- Debe especificar los requerimientos estáticos y dinámicos que se pusieron en el software o en la interacción humana con el software en conjunto.

o Estáticos.- Número de terminales y número de usuarios simultáneos a ser apoyados, así como cantidad y tipo de información que se manejará.

o Dinámicos.- Número de transacciones, tareas y la cantidad de datos a ser procesado dentro de ciertos periodos de tiempo para las condiciones del trabajo normales y máximas.

• Atributos del software.- Son un conjunto de cuestiones de calidad, las cuales son:

18 Los stakeholder engloba a todas las personas externas e internas que tienen que ver con una aplicación computacional.

Capítulo 5 Solución propuesta

78

o Disponibilidad o Factores de calidad [ISO91]

Funcionalidad ♦ Aplicabilidad ♦ Precisión ♦ Interoperatibilidad ♦ Seguridad ♦ Conformidad de funcionalidad

Fiabilidad ♦ Madurez ♦ Tolerancia a fallos ♦ Recuperabilidad (Los atributos de software que tienen que ver

con la capacidad de reestablecer su nivel de rendimiento y recuperar los datos directamente afectados en caso de un fracaso, durante el tiempo y esfuerzo necesario para ello. Por ejemplo datos, proceso, tecnología.)

Usabilidad ♦ Entendibilidad ♦ Facilidad de aprendizaje ♦ Operabilidad

Eficiencia ♦ Comportamiento en el tiempo ♦ Utilización de recursos

Facilidad de mantenimiento ♦ Analizabilidad (Los atributos de software que tienen que ver con

el esfuerzo necesario para el diagnóstico de las deficiencias o causas de los fracasos, o para la identificación de partes para ser modificadas.)

♦ Cambiabilidad (Los atributos de software que tienen que ver con los esfuerzos necesarios para la modificación, eliminación del defecto o para cambios ambientales.)

♦ Estabilidad ♦ Testeabilidad (Los atributos de software que tienen que ver con

el esfuerzo necesario para validar el software modificado.) Portabilidad

♦ Adaptabilidad ♦ Instabilidad (Los atributos de software que tienen que ver con el

esfuerzo necesario para instalar el software en un ambiente específico.)

♦ Reemplazabilidad ♦ Conformidad de portabilidad

• Restricciones de diseño.- Debe especificar las restricciones del diseño que pueden imponerse por otros estándares, las limitaciones del hardware, etc.

Capítulo 5 Solución propuesta

79

La información de los modelos presentados en el modelo CIM es un primer acercamiento a la definición de los casos de uso y posibles escenarios, así como de las clases participantes. A partir del modelo funcional, durante el desarrollo del modelo PIM, se derivan las clases, asociaciones y atributos, debido a que para llegar a este nivel se tuvo que haber especificado bien los elementos del nivel CIM, para ser transformados a nivel PIM y estando en dicho nivel agregar la información adicional necesaria para obtenerlos. 5.2.1.2 Vista del nivel CIM a través de los diagramas y sus transformaciones Una vez definido el modelo CIM en cuanto a la información que incluye, es necesario mostrar cómo se encuentra conformado por los diagramas seleccionados (casos de uso, clases, secuencia y actividad § 4.3) y otros diagramas utilizados dentro del AGD (de comunicación y de línea de producción) para el nivel CIM. Esto permite determinar la información que contiene dicho nivel, que será transformada a otro nivel (PIM), en su momento.

En la Ilustración 5-20 se muestra el nivel CIM en base a los diagramas que lo conforman: de comunicación, de línea de producción, de clases, de actividad y de casos de uso, los cuales serán transformados entre sí y hacia otros niveles.

Diagrama de comunicación

combinado

Diagramas de comunicación a

nivel usuario

Diagrama de comunicación a nivel aplicación

Definición de los objetivos del

negocio y/o dominio

Diagramas de línea de

producción

Diagramas de actividad

Diagrama de clases del negocio

Diagrama de casos de uso del negocio y

escenarios

Definición de losobjetivos a automatizar

Requerimientos funcionales

Modelo no funcional

Diagrama de comunicación

combinado

Diagramas de comunicación a

nivel usuario

Diagrama de comunicación a nivel aplicación

Definición de los objetivos del

negocio y/o dominio

Diagramas de línea de

producción

Diagramas de actividad

Diagrama de clases del negocio

Diagrama de casos de uso del negocio y

escenarios

Definición de losobjetivos a automatizar

Requerimientos funcionales

Modelo no funcional

Ilustración 5-20. Representación visual del nivel CIM en base a diagramas y sus transformaciones

Por otra parte la ilustración también muestra información necesaria (Ej. requerimientos

funcionales) para realizar la transformación entre los diagramas (Ej. de la definición de los objetivos del negocio y/o dominio se transforma a diagramas de línea de producción).

Como se mencionó en la sección 5.2.1.1 este nivel empieza con el modelo del negocio y

posteriormente con los modelo de las áreas/dominios, que se obtienen en base al análisis de documentos y/o entrevistas.

Capítulo 5 Solución propuesta

80

La conformación de los modelos mencionados, se inician con los diagramas de comunicación a nivel usuario, con el objetivo de identificar y especificar todas las actividades y relaciones que realiza una determinada entidad/actor con respecto al cargo que desempeña. Todos los diagramas de comunicación a nivel usuario están vistos desde la perspectiva de un diagrama de entidades.

Una vez obtenidos los diagramas de comunicación a nivel usuario, estos se fusionan para

obtener el diagrama de comunicación combinado, con la finalidad de evitar inconsistencias y mostrar las interacciones entre todas las entidades involucradas.

Para identificar los objetivos internos y externos (con respecto a todas las entidades

involucradas) se realiza el diagrama de comunicación a nivel aplicación, donde se enmarcan todas las entidades internas y se unen en una sola, como si fuera una aplicación computacional. Cabe mencionar en este punto que los objetivos (para AGD) son la recepción o envío de información, a veces agrupada en documentos o pantallas de captura. El diagrama de comunicación a nivel aplicación surge del diagrama de comunicación combinado.

Del diagrama de comunicación a nivel aplicación se obtienen los objetivos internos y

externos, así como las entidades involucradas en ellos. De los objetivos se procede a obtener los diagramas de línea de producción y la definición de los objetivos que se van a automatizar (para el siguiente nivel PIM enfocarlos a una aplicación computacional).

Con los diagramas de línea de producción, representados mediante diagramas de clases,

donde la clase representa el producto y los métodos el proceso relacionado con el producto, se obtiene de forma general, lo que se necesita para obtener un determinado servicio (que se ofrece a un usuario) y cuáles entidades intervienen en él. Por medio del diagrama de línea de producción se obtiene lo siguiente:

• Diagramas de actividad donde se muestran las actividades y tareas que se realizan

dentro del negocio y/o área/dominio actualmente, por cada diagrama de línea de producción. Por medio del diagrama de actividad se describe el procedimiento que se realiza para obtener los productos del diagrama de línea de producción. Este diagrama estará relacionado con los escenarios tanto del diagrama de casos de uso a nivel CIM, como del nivel PIM.

• Diagramas de casos de uso del negocio, se generan a partir de los diagramas de línea de producción y los escenarios de dicho diagrama se obtienen de los diagramas de actividad correspondientes a la línea de producción. Los diagramas de casos de uso representarán a los servicios que ofrece un determinado negocio y/o área/dominio, a usuarios.

• Diagrama de clases del negocio, donde se representa la información relevante que manejan las personas dentro del negocio y/o dominio vista desde su perspectiva. Para obtener las clases se analizan los productos, principalmente aquellos que no tienen derivados, así como los que sean más abstractos.

• Requerimientos funcionales se obtienen de la definición de los objetivos a automatizar, y se verifican con la línea de producción.

Capítulo 5 Solución propuesta

81

La definición de los objetivos a automatizar (lo que se requiere que realice el sistema a desarrollar) abarca tanto las actividades internas que realiza el personal involucrado en el negocio y/o área/dominio en el que se va a trabajar, así como las actividades externas que se realizan para ofrecer los servicios a los usuarios del negocio y/o dominio.

Por último, en el modelo no funcional es donde se especifican las restricciones a los requerimientos del modelo funcional. Con la obtención de este modelo termina el desarrollo a nivel CIM.

Cabe aclarar que para cada uno de los niveles se puede requerir, dependiendo del tamaño del producto de software a desarrollar más de una iteración ya que se necesitaran ir refinando para poder pasar al siguiente nivel. Para cumplir con el nivel CIM se sugiere la realización de un prototipo, el cual debe ser aceptado por la persona a la cual se le pretende desarrollar una aplicación. 5.2.2 Definición de la frontera CIM-PIM En la Ilustración 5-21 se muestra tanto el nivel CIM como el nivel PIM con sus respectivos modelos y diagramas, donde la especificación de máximo detalle del modelo CIM, y el mínimo del modelo PIM representa la frontera CIM-PIM. Se muestran los diagramas de ambos niveles, así como de las transformaciones que pueden existir entre ambos. Además las transformaciones que se tienen que realizar para obtener el nivel PIM a partir del CIM se ilustran con las líneas: continúa, punteada y discontinua (contiene líneas y puntos) respectivamente. Las líneas continúa y punteada representan que a partir del glosario de términos y del diagrama de clases del negocio a nivel CIM se obtienen el diagrama de clases y el diagrama de la base de datos del nivel PIM. Por último, las líneas discontinuas indican que del diagrama de casos de uso del negocio y de los requerimientos funcionales se obtienen los diagramas de casos de uso a nivel PIM.

PIMModelo de análisis

Diagramas de Casos de UsoDiagramas de secuencia

Modelo de diseñoDiagrama de clases Diagrama de base de datosDiagramas de actividad

CIMModelo del negocio

Modelo del dominio de bibliotecaGlosario de términos

Modelo funcionalDiagramas de comunicación a nivel usuarioDiagrama de comunicación combinadoDiagrama de comunicación a nivel aplicaciónDefinición de objetivos de la bibliotecaLínea de producción Diagramas de actividadDiagrama de casos de uso del negocioDiagrama de clases del negocioDefinición de objetivos de la biblioteca a automatizarRequerimientos funcionales

Modelo no funcional

PIMModelo de análisis

Diagramas de Casos de UsoDiagramas de secuencia

Modelo de diseñoDiagrama de clases Diagrama de base de datosDiagramas de actividad

CIMModelo del negocio

Modelo del dominio de bibliotecaGlosario de términos

Modelo funcionalDiagramas de comunicación a nivel usuarioDiagrama de comunicación combinadoDiagrama de comunicación a nivel aplicaciónDefinición de objetivos de la bibliotecaLínea de producción Diagramas de actividadDiagrama de casos de uso del negocioDiagrama de clases del negocioDefinición de objetivos de la biblioteca a automatizarRequerimientos funcionales

Modelo no funcional

Ilustración 5-21. Frontera CIM-PIM en base a diagramas y sus transformaciones

Después de haber dado la semblanza de la frontera CIM-PIM, es necesario presentar la caracterización de la misma a través de los diagramas seleccionados (§ 4.3), para presentar las características distintivas entre ambos niveles CIM y PIM, para ello en la sección 5.2 se

Capítulo 5 Solución propuesta

82

presenta dicha caracterización mostrando una comparación con todas las fronteras a través de los distintos niveles. 5.2.3 Definición del modelo PIM En la Ilustración 5-22 se muestra la representación visual del modelo PIM con su modelo de análisis (§ 5.2.3.1) y modelo de diseño (§ 5.2.3.2), los cuales son modelos independientes de plataforma que representan información y datos específicos desde el punto de vista computacional, sin mostrar los detalles de su uso en una plataforma o tecnología.

Como se muestra en la Ilustración 5-18, el modelo PIM hereda del modelo CIM todos sus elementos y estructura.

Para obtener el modelo PIM se toma como entrada principal un subconjunto de los

elementos del CIM (Ej. diagrama de casos de uso, requerimientos funcionales) y se añaden detalles para completar el diseño.

Los detalles de diseño se refieren a información del sistema acerca de sus componentes y relaciones entre ellos, que no son especificadas todavía en un lenguaje de implementación o incluyendo características propias de una plataforma. La información que se tiene en el modelo PIM esta definida en los incisos siguientes.

Modelo PIM

Modelo de análisis

Modelo de diseño

Modelo PIM

Modelo de análisis

Modelo de diseño

Ilustración 5-22. Representación visual de la definición del modelo PIM

Mediante los modelos de análisis (Ej. diagrama de casos de uso) y diseño (Ej. diagrama de

clases) del modelo PIM se transforman los modelos presentes en el modelo CIM (Ej. diagrama de casos de uso, diagrama de clases), para extenderlos y modificarlos para estructurar y formalizar la información obtenida en ellos, además de preparar la arquitectura del sistema. El modelo de diseño se crea en base al modelo de análisis (Ej. diagrama de secuencia) como entrada principal, pero se adapta a un refinamiento más especifico para poderlo migrar posteriormente a cualquier entorno de implementación.

Todos los modelos del PIM se obtienen refinando y especializando el modelo funcional y

no funcional del modelo CIM.

Capítulo 5 Solución propuesta

83

5.2.3.1 Modelo de análisis Parte de la información de este modelo se obtiene de un subconjunto de elementos del modelo CIM, agregando la especialización de dichos elementos (Ej. glosario de términos, requerimientos funcionales). Se usan el modelo de análisis y los requerimientos no funcionales, para preparar la arquitectura del sistema que se desarrolla durante el diseño. Este modelo contiene:

• Refinamiento y estructuración de los elementos obtenidos del modelo CIM (Ej. casos de uso, requerimientos funcionales, clases, glosario de términos)

• Flujo de dato. Se refiere a la secuencia en que los datos se transfieren, usan y transforman en el sistema.

• Flujo de control. Es el ordenamiento de las acciones en un sistema. Las acciones a ordenar incluyen la decisión de cuáles operaciones deben ejecutarse y en qué orden. Estas decisiones se basan en eventos externos provocados por un actor o en el paso del tiempo.

5.2.3.2 Modelo de diseño Este modelo se refiere a detalles de diseño independientes de la plataforma (Ej. tipos de datos, métodos). Se especifica información que es necesaria para desarrollar una aplicación computacional pero sin utilizar ningún lenguaje de programación para especificarlo. El modelo está conformado por:

• Arquitectura del sistema. Conjunto de decisiones significativas acerca de la organización de un sistema de software, la selección de los elementos estructurales a partir de los cuales se compone el sistema y las interfaces entre ellos, junto con su comportamiento [JAC00].

• Modelo de clases. En el cual se especifica el nombre de las clases, atributos y métodos asociados a ellas, además de ver el tipo de clases (Ej. si es clase plantilla) y sus tipos de relaciones (Ej. agregación, composición,…).

• Estilo arquitectónico. Modelo de diseño de sistema general que puede usarse como punto inicial para el diseño del sistema. Éste guía la organización de la arquitectura: sus elementos y sus interfaces, sus colaboraciones y su composición.

• Modelo lógico. Procedimientos (algoritmos) detallados sin restricciones de plataforma. Ejemplo: tipos de operadores (no vistos desde el lenguaje como +, -, *, /, ≤, ≥, =, ≠, etc.

• Modelo de especificaciones. Como la especificación de los siguientes aspectos: o Alcance (protegido, privado, publico) o Valores por defecto o Objetos o Variables o Tipo de relaciones entre métodos o Especificación de tipo, firma y visibilidad o Definición de estructuras, matrices, vectores, etc.

Capítulo 5 Solución propuesta

84

Una vez definido el modelo PIM es necesario pasar los elementos a un nivel más especializado y enfocado el sistema en una plataforma y lenguaje específico, se ejecutará. Debido a esto es necesario definir el modelo PSM.

5.2.3.3 Vista del nivel PIM a través de los diagramas y sus transformaciones Después de haber definido la información que contendrá y/o se manejará a nivel PIM, se procede a mostrar los diagramas seleccionados (§ 4.3) a través de los cuales se representará dicha información, la cual será transformada posteriormente hacia el siguiente nivel, más detallado (PSM).

El nivel PIM se conforma a partir de los elementos obtenidos en el CIM, logrando diagramas más refinados de casos de uso, secuencia, clases, base de datos y actividad a nivel general, del que se puedan obtener versiones diferentes del modelo PSM, uno para cada plataforma requerida.

En la Ilustración 5-23 se muestra el nivel PIM en base a los diagramas que lo conforman, tales como: clases, actividad, casos de uso, secuencia y el diagrama para la base de datos, todos los diagramas se transformarán entre un mismo nivel y hacia otro nivel más específico. La ilustración también muestra los diagramas y documentos necesarios del nivel CIM para obtener los diagramas en este nivel PIM, donde los círculos con línea continua representan el nivel PIM y los círculos con líneas discontinuas representan el nivel CIM, que es la entrada para el nivel PIM. A continuación se describe el nivel PIM.

Los diagramas de casos de uso en este nivel representan tanto los objetivos internos y

externos de las actividades o tareas a automatizar. Los diagramas de casos de uso se obtienen de los requerimientos funcionales representados en los diagramas de comunicación y línea de producción y del diagrama de casos de uso a nivel CIM, en el cual se reflejan los servicios que ofrece el negocio y/o área/dominio.

De cada uno de los diagramas de casos de uso a nivel PIM se realizan sus correspondientes

escenarios (tomando información de los diagramas de actividad del nivel CIM). Estos escenarios se diferencian de los del nivel CIM ya que en el nivel PIM se describen en base a las actividades a automatizar, computacionalmente y en el nivel CIM sólo representan el conjunto de actividades que se realizan en el negocio y/o área/dominio actualmente, o la manera en que se pretenden realizar.

Una vez obtenidos los diagramas de casos de uso y escenarios, se procede a obtener el

diagrama de secuencia que contiene los detalles de los algoritmos involucrados en los escenarios de los casos de uso, ya que estos fueron descritos como una secuencia de pasos (en [DIA04] se realiza la construcción del diagrama de secuencia a partir de la especificación textual de los casos de uso). Con el diagrama de secuencia se pueden identificar clases y objetos. El diagrama de secuencia se utilizó como entrada para los siguientes diagramas:

• Diagrama de clases, se obtiene a partir del diagrama de secuencia (del nivel PIM), del diagrama de clases del negocio y del glosario de términos (se utiliza para identificar clases y sus atributos relevantes), estos últimos del nivel CIM. Este diagrama de clases

Capítulo 5 Solución propuesta

85

ya representa cómo está conformado el sistema sin considerar cuestiones de lenguaje, plataforma o ambiente de desarrollo.

• Diagrama de actividad, se obtiene tanto del diagrama de secuencia como del diagrama de clases del nivel PIM. En el diagrama de actividad, se representan las instrucciones para cada uno de los métodos que se utilizarían dentro de la aplicación computacional a desarrollar. En el nivel PIM no se están considerando todavía aspectos del lenguaje de programación.

El diagrama de base de datos se obtiene tomando información del diagrama de clases del negocio y el glosario de términos ambos del nivel CIM, donde los términos del glosario se utilizan dentro del diagrama de base de datos para identificar tablas y sus atributos. En este diagrama se representa el diseño de la base de datos con los elementos y relaciones que se utilizarían vistos desde una perspectiva independiente del lenguaje de base de datos a utilizar. Dos diagramas que no tienen trazabilidad directa, pero que tienen relación (en base a los atributos), son el diagrama de clases y el diagrama de base de datos, debido a que tienen como entrada el glosario de términos y el diagrama de clases del negocio.

Diagramas de secuencia

Diagramas de casos de uso y

escenariosDiagrama de clases

Diagramas de actividad

Diagrama de la base

de datos

Diagrama de clases del

negocio

Diagrama de casos de uso del negocio y

escenarios

Requerimientos funcionales Glosario de

términos

Diagramas de secuencia

Diagramas de casos de uso y

escenariosDiagrama de clases

Diagramas de actividad

Diagrama de la base

de datos

Diagrama de clases del

negocio

Diagrama de casos de uso del negocio y

escenarios

Requerimientos funcionales Glosario de

términos

Ilustración 5-23. Representación visual del nivel PIM en base a diagramas y sus transformaciones

5.2.4 Definición de la frontera PIM-PSM En la Ilustración 5-24 se muestran los niveles PIM y PSM con los diagramas que los representan, donde la frontera PIM-PSM es el nivel de detalle máximo de los modelos PIM y el mínimo para los modelos PSM, se muestran los diagramas que se utilizan para pasar de un nivel a otro.

De los diagramas de clases a nivel PIM se obtienen los diagramas de clases a nivel PSM, lo cual se representa en la ilustración a través de la línea continúa, después del diagrama de base de datos a nivel PIM surge el diagrama de base de datos a nivel PSM representado en la ilustración por la línea punteada y por último, del diagrama de actividad a nivel PIM se origina el diagrama de actividad a nivel PSM representado en la ilustración por la línea discontinua.

Capítulo 5 Solución propuesta

86

PIMModelo de análisis

Diagramas de Casos de UsoDiagramas de secuencia

Modelo de diseñoDiagrama de clases Diagrama de base de datosDiagramas de actividad

PSMModelo de diseño

Diagrama de clases Diagrama de base de datosDiagramas de actividad

PIMModelo de análisis

Diagramas de Casos de UsoDiagramas de secuencia

Modelo de diseñoDiagrama de clases Diagrama de base de datosDiagramas de actividad

PIMModelo de análisis

Diagramas de Casos de UsoDiagramas de secuencia

Modelo de diseñoDiagrama de clases Diagrama de base de datosDiagramas de actividad

PSMModelo de diseño

Diagrama de clases Diagrama de base de datosDiagramas de actividad

PSMModelo de diseño

Diagrama de clases Diagrama de base de datosDiagramas de actividad

Ilustración 5-24. Frontera PIM-PSM en base a diagramas y sus transformaciones

Una vez mostrada la frontera PIM-PSM a través de los diagramas que conforman a cada

uno de los niveles que intervienen en ella, es necesario presentar la caracterización de la misma a través de los diagramas seleccionados (§ 4.3), mediante las características distintivas entre ambos niveles PIM y PSM. En la sección 5.2 se presenta dicha caracterización mostrando una comparación con todas las fronteras a través de los distintos niveles.

5.2.5 Definición del modelo PSM En la Ilustración 5-25 se muestra la definición del modelo PSM con su modelo de diseño que es dependiente de la plataforma y contiene información acerca de la tecnología que se usa sobre una plataforma específica.

El modelo PSM está conformado por los elementos heredados del modelo PIM mapeados a elementos específicos de la plataforma a utilizar.

Un aspecto que se considera en este modelo PSM es el modelo no funcional descrito en el modelo CIM, para lograr apegarse a estas especificaciones utilizando características de la plataforma.

En el modelo PSM se especifica cómo implementar en el modelo de IM. La información

que se tiene en el modelo PSM esta definida en los incisos siguientes.

Modelo PSM

Modelo de diseño

Modelo PSM

Modelo de diseño

Ilustración 5-25. Representación visual de la definición del modelo PSM

El modelo de diseño describe la realización práctica de los requisitos funcionales y no funcionales y su impacto en la aplicación computacional a desarrollar.

Capítulo 5 Solución propuesta

87

5.2.5.1 Modelo de diseño Se toman los aspectos del diseño del modelo PIM, para ser refinados según el lenguaje y herramientas computacionales en las que se implementará. El modelo esta conformado por:

• Modelo de clases. Se tiene las características de una clase ya sea normal o con plantillas (nombre, atributos, métodos).

• Modelo lógico. Como estructuras de repetición (Ej. en C++, for, while, do-while, etc.), estructuras de selección (Ej. en C++, if, select case, etc.) y tipos de operadores.

• Modelo de especificaciones. Como la especificación de los siguientes aspectos: o Alcance (protegido, privado, público). o Valores por defecto. o Objetos. o Variables. o Tipo de relaciones entre métodos. o Especificación de tipo, firma y visibilidad. o Definición de estructuras, matrices, vectores, etc. o Apuntadores. o Llamadas a funciones.

• Arquitectura del sistema. • Flujo de datos. • Flujo de control. • Lenguaje de programación. • Almacenamiento de la información (BD, archivos, etc.).

En el modelo PSM se define el modelo de diseño que sirve de abstracción de la

implementación del sistema, que se utiliza para obtener el modelo IM. 5.2.5.2 Vista del nivel PSM a través de los diagramas y sus transformaciones Posteriormente, a la definición de la información que se maneja a nivel PSM, se procede a mostrar los diagramas seleccionados (§ 4.3) a través de los cuales se representará dicha información, la cual será transformada hacia el nivel IM.

El nivel PSM se conforma de los elementos obtenidos en el PIM, alcanzando diagramas de clases, actividad y de la base de datos, todos descritos por el lenguaje y plataforma a utilizar.

En la Ilustración 5-26 se muestra el nivel PSM en base a los diagramas que lo conforman, tales como: clases, actividad y diagramas para la base de datos, todos los diagramas serán transformados entre un mismo nivel y hacia otros niveles.

La ilustración también muestra los diagramas del nivel PIM necesarios para obtener los

diagramas en este nivel PSM, donde el nivel PSM es representado por los círculos de línea punteada y el nivel PIM por círculos con línea continúa. Se considera los círculos de línea continúa debido a que es la entrada para cada círculo de línea punteada. A continuación se explica el nivel PSM.

Capítulo 5 Solución propuesta

88

La diferencia del nivel PIM y PSM para estos diagramas es que en PSM el tipo de dato ya fue transformado de acuerdo al lenguaje a utilizar y al manejador de base de datos respectivamente.

El diagrama de base de datos a nivel PSM se obtiene del diagrama de base de datos a nivel PIM, siendo más específico, de acuerdo al manejador de base de datos a utilizar.

Posteriormente, el diagrama de clases a nivel PSM se obtiene del diagrama de clases del

nivel PIM, agregando más relaciones y clases debido al ambiente en el que se va a desarrollar. Se agregan clases prefabricadas necesarias para el desarrollo del sistema, de acuerdo al ambiente seleccionado.

Por último, los diagramas de actividad a nivel PSM se obtienen de los diagramas de

actividad a nivel PIM, de igual forma, se consideran los detalles de implementación necesarios en el manejo de instrucciones de acuerdo al lenguaje y ambiente de desarrollo.

Diagrama de clases

Diagramas de actividad

Diagrama de la base

de datosDiagrama de clases

Diagramas de actividad

Diagrama de la base

de datos

Diagrama de clases

Diagramas de actividad

Diagrama de la base

de datosDiagrama de clases

Diagramas de actividad

Diagrama de la base

de datos

Ilustración 5-26. Representación visual del nivel PSM en base a diagramas y sus transformaciones

5.2.6 Definición de la frontera PSM-IM En la Ilustración 5-27 se muestra la frontera PSM-IM en base a los diagramas que se encuentran en los niveles PSM e IM y las transformaciones que se tienen que realizar para obtener del nivel PSM el nivel IM. En esta frontera, del diagrama de clases a nivel PSM se obtiene el código de las clases a nivel IM representado por la línea continúa, del diagrama de base de datos a nivel PSM surge el código de la base de datos representado por la línea punteada y por último, de los diagramas de actividad a nivel PSM se origina el código de los métodos a nivel IM de una determinada clase representado por la línea discontinua.

Capítulo 5 Solución propuesta

89

PSMModelo de diseño

Diagrama de clases Diagrama de base de datosDiagramas de actividad

IMCódigo base de datosCódigo de los métodosCódigo de las clases

PSMModelo de diseño

Diagrama de clases Diagrama de base de datosDiagramas de actividad

PSMModelo de diseño

Diagrama de clases Diagrama de base de datosDiagramas de actividad

IMCódigo base de datosCódigo de los métodosCódigo de las clases

IMCódigo base de datosCódigo de los métodosCódigo de las clases

Ilustración 5-27. Frontera PSM-IM en base a diagramas y sus transformaciones

Después de haber mostrado la frontera PSM-IM en base a los diagramas y

transformaciones entre los niveles involucrados, es necesario presentar la caracterización de la misma a través de los diagramas seleccionados (§ 4.3), para ello en la sección 5.2 se explica dicha caracterización mostrando una comparación con todas las fronteras a través de los distintos niveles.

5.2.7 Definición del modelo IM En la Ilustración 5-28 se muestra la representación visual del modelo IM con su modelo correspondiente a la implementación, el cual representa información acerca de la tecnología que se usa en su realización sobre una plataforma específica.

Este modelo contiene los elementos que son específicos a la plataforma, junto con la codificación de la aplicación computacional, para obtener la aplicación ejecutable de la misma.

El modelo IM hereda del modelo PSM más la información agregada para la

implementación.

Modelo IM

Modelo de Implementación

Modelo IM

Modelo de Implementación

Ilustración 5-28. Representación visual de la definición del modelo IM

El modelo IM representa el código de una aplicación computacional que se genera

mediante la información del modelo PSM y los aspectos del lenguaje de implementación. Para obtener el modelo IM se considerará el modelo no funcional del modelo CIM, para

refinar aspectos inconclusos del modelo PSM, con respecto a los factores de calidad. Se usan herramientas para construir el sistema fuente, objeto y ejecutable, así como de la

utilización de un dbms19 (Ej. Oracle, MySQL, Access, PostgreSQL).

19 Sistema de gestión de base de datos, DBMS por sus siglas en inglés

Capítulo 5 Solución propuesta

90

En la implementación se retoman los resultados del modelo PSM de diseño y se implementa el sistema en términos de componentes (código fuente, código binario, ejecutables,…). La información que se tiene en el modelo IM abarca los elementos siguientes:

• Interfaces de usuario. • Seguridad del sistema (ejemplo, acceso restringido por contraseña, etc.). • Lenguaje de programación. • Sistema operativo. • Marcos de trabajos prefabricados (Ej. Visual C++). • Funciones predefinidas. • Librerías del lenguaje. • Manejo de excepciones. • Palabras reservadas. • Integración de los componentes del sistema. • Manejo de memoria. • Ambiente de desarrollo (Ej. Fases de ejecución como compilación, enlace, carga,

ejecución). • Todo lo definido en el modelo de diseño del modelo PSM pasado a código.

5.2.7.1 Vista del nivel IM a través del código generado en base a los diagramas del nivel PSM y sus transformaciones Una vez definido el nivel IM, se procede a presentar su información y cómo se llegó a ella (por medio de que transformación). Este nivel contiene elementos del nivel PSM, donde se obtiene el código para la parte del sistema correspondiente; se consideran detalles como librerías, aspectos generados por el ambiente (clases, métodos), aspectos de usabilidad (color, estilo de la letra de algún campo a mostrar), etc.

En la Ilustración 5-29 se muestra el nivel IM, donde los círculos de línea continúa representa al nivel IM y los círculos de línea punteada al nivel PSM, que es la entrada para el nivel IM.

El nivel IM incluye el código correspondiente al diagrama de clases a nivel PSM, en el que

se considerarán clases prefabricadas, declaraciones de objetos y métodos que el ambiente provee, además de librerías.

Con respecto al código de la base de datos éste se origina del diagrama de la base de datos a nivel PSM. La trazabilidad entre ambos es casi directa ya que al pasar a código lo que cambiará es la forma en que se declaran las claves primarias o foráneas y el agregado de campos “null” o “not null”, con el propósito de especificar si el atributo es requerido o opcional.

El código de las clases surge del diagrama de clases a nivel PSM y el código de los

métodos es obtenido de los diagramas de actividad a nivel PSM.

Capítulo 5 Solución propuesta

91

Diagrama de clases

Diagramas de actividad

Diagrama de la base

de datos

Código de la base de datos

Código de los métodos

Código de las clases

Diagrama de clases

Diagramas de actividad

Diagrama de la base

de datos

Código de la base de datos

Código de los métodos

Código de las clases

Ilustración 5-29. Representación visual del nivel IM en base el código generado a través de los diagramas y sus

transformaciones

5.3 Caracterización de las fronteras Como se mencionó en las secciones 5.2.2 (frontera CIM-PIM), 5.2.4 (frontera PIM-PSM) y 5.2.6 (frontera PSM-IM) referentes a cada una de las fronteras, en esta sección se mostrará la caracterización de las fronteras a través de los diagramas seleccionados (§ 4.3), mediante las características distintivas entre cada frontera a través de los distintos niveles. Por ello, de la Tabla 5-7 a la Tabla 5-10 se presenta dicha caracterización. Las tablas muestran al diagrama de casos de uso, clases, secuencia y actividad, indicando el nivel de detalle o presencia de elementos, propiedades y atributos de los diagramas en las fronteras. Dichos elementos, propiedades y atributos que se presentan en cada una de las tablas están de acuerdo a los elementos, propiedades y atributos necesarios para describir cada frontera, debido a que representan la delimitación de cada frontera, especificando lo máximo que pueden contener en cada nivel (presente en cada columna de los niveles en cada tabla), es por ello que no se presenta la estructura completa utilizada en la sección 5.1.2.

En las tablas se presentan todos los elementos con los atributos de un identificador, un nombre y una o varias propiedades. En la columna de elementos, propiedades y atributos, las etiquetas que comienzan con “uml”, son elementos y las que comienzan con “*”, son propiedades contenidas dentro de los elementos y las que no comienzan con ninguna de las antes mencionadas, son atributos que tiene un determinado elemento o propiedad.

Los atributos que tengan al final de su nombre un paréntesis, significa que dentro del

paréntesis están los valores que puede tener el atributo, donde el símbolo “|” significa “o”. Por ejemplo el atributo “type” en el elemento “uml:DecisionNode” del diagrama de secuencia, puede tener sólo el valor “Decision” o “Merge”.

Los símbolos utilizados en las intersecciones de renglones y columnas, en las columnas de

niveles, se muestran a continuación con su significado:

Capítulo 5 Solución propuesta

92

• “∆” Indica un número de elementos o propiedades o atributos que puede tener un determinado nivel.

• “√” Indica un número opcional de elementos o propiedades o atributos que pueden estar presente en un determinado nivel.

• “|”, “<”, “>”, “=” Son operadores lógicos que indican comparación de elemento o propiedades o atributos, el primer operando es el modelo de la columna izquierda inmediata y el segundo operando es el modelo de la columna donde está este operador. Por ejemplo, en el elemento “uml:UseCase” del diagrama de casos de uso en el nivel PIM, el símbolo “<”, indica que dicho elemento se va a presentar un menor número de veces en el nivel CIM que en el PIM.

Si dos o más símbolos se juntan en una misma columna, se leerá de la siguiente manera:

por ejemplo, se tiene “<=>” en una determinada columna, esto se leería como, se presenta menor o igual o mayor número de veces en el nivel X que en el Y.

El nivel de anidamiento de las tablas esta dado por como están estructurados

jerárquicamente los elementos, propiedades y atributos, delimitados por los espacios que tienen en la tabla cada uno de ellos. Por último, cuando en la intersección de un renglón con una columna, sea “ ” significa que no se especifica dicho elemento o propiedades o atributos en una determinada frontera o nivel. A continuación se inicia con la explicación y presentación de cada una de las tablas.

De la Tabla 5-7 se puede decir que en el nivel CIM el elemento “uml:UseCase o “uml:Actor” representa la perspectiva de los objetivos externos del dominio, es decir, los servicios que se ofrecen y, en el nivel PIM esos elementos representan, tanto los servicios como la forma en que se llega a ellos, es decir, los objetivos externos e internos al dominio del negocio.

Un ejemplo para explicar la Tabla 5-7, es el siguiente: se tiene el elemento

“uml:Association” que está presente en la frontera CIM-PIM solamente, donde a nivel CIM está presente un determinado número de veces y a nivel PIM con respecto al CIM, puede estar un número igual o menor de veces presente en el nivel CIM que en el nivel PIM, lo que significa que a nivel PIM este elemento puede tener igual número de veces presente que en el CIM o mayor número de veces en el PIM. Con respecto a su atributo “type” en el valor “Extend” solamente va estar en el nivel PIM un determinado número de veces. Tomando el atributo “subject” de dicho elemento, se tiene que a nivel CIM puede o no estar presente dicho atributo al igual que a nivel PIM, donde este atributo se representa un número opcional de veces en el nivel CIM y puede estar presente igual o menor número de veces (opcional) en el nivel CIM que en el PIM, lo que significa que puede ser igual o mayor el número de veces que aparezca dicho atributo en el PIM. La misma lógica presentada para este ejemplo se aplicaría para interpretar la tabla para los demás elementos, propiedades y atributos.

Capítulo 5 Solución propuesta

93

Tabla 5-7. Caracterización de las fronteras CIM-PIM, PIM-PSM y PSM-IM a través del diagrama de casos de uso

Niveles Elementos, propiedades y

atributos CIM PIM PSM IM

uml:UseCase ∆ < ∆ subject ∆ =<∆ uml:Actor ∆ < ∆ subject √ =<√ uml:ExtensionPoint √ ExtensionPoint √ subject √ uml:Subject ∆ <∆ uml:Association ∆ =< ∆ subject √ =<√ type ( Extend | ∆ Include | ∆ Use | ∆ =<∆ Generalize ) ∆ =<√

De la Tabla 5-8 se concluye lo siguiente, en el nivel CIM el elemento “uml:Class”,

representa el nombre de la clase visto desde la perspectiva del experto del dominio y en los demás niveles (PIM, PSM e IM) representa el nombre de la clase enfocado hacia el sistema a desarrollar.

Por todo lo anterior, se dice que, la propiedad “uml:Atribute” (en su atributo “type”)

contenida en el elemento “uml:Class”, tiene ó no tiene cierta característica en cada uno de los niveles, que a continuación se mencionan: en el nivel CIM no se tiene definido el rango a utilizar (debido a que se trabaja a nivel de negocio); en el nivel PIM se tiene una aproximación al rango a utilizar; en el nivel PSM o IM se tiene ya la restricción del rango o el rango deseado dependiendo del lenguaje.

Por último, cabe mencionar que en el nivel CIM las propiedades “uml:Atribute” e

“uml:Operation” se obtendrán sólo los atributos u operaciones necesarias para imponer restricciones que se obtengan a nivel de las actividades que se realizan en el dominio del negocio. Sin embargo en los niveles más detallados, se tendrán más atributos u operaciones que se irán refinando a través de cada nivel.

Para explicar mejor la Tabla 5-8, a continuación se presenta un ejemplo: se tiene al

elemento “uml:Class” que contiene a su vez atributos y propiedades, donde las propiedades son: “uml:Attribute” y “uml:Operation”, la cual contiene la propiedad “uml:Parameter”. El elemento “uml:Class” está especificado (presente) en los cuatro niveles, por lo tanto, en las tres fronteras, donde comparando el nivel CIM y PIM de la tabla en este elemento, se tiene que éste se va a presentar menor o igual o mayor número en el nivel CIM que en el PIM, lo que significa que en el nivel PIM ese elemento puede ser mayor o igual o menor que en el CIM. Pasando al nivel PIM y PSM, se indica que dicho elemento se va a presentar menor o igual número de veces en el PIM que en el PSM, lo que significa que en el nivel PSM se presentará un mayor o igual número de veces que en el nivel PIM. Por último, a nivel PSM e IM, se tiene que dicho elemento se presentará igual o menor número de veces en el nivel PSM que en el IM, lo que significa que en el nivel IM, se presentará igual o mayor número de veces

Capítulo 5 Solución propuesta

94

que en el PSM. La misma lógica presentada para este ejemplo se aplicaría para interpretar la tabla para los demás elementos, propiedades y atributos.

Tabla 5-8. Caracterización de las fronteras CIM-PIM, PIM-PSM y PSM-IM a través del diagrama de clases

Niveles Elementos, propiedades y atributos

CIM PIM PSM IM

uml:Class ∆ <=>∆ <=∆ <=∆ isAbstract(true|false) ∆ <=∆ <=∆ isDerived(true|false) ∆ <=∆ <=√ isRoot (true|false) ∆ <=∆ Visibility (Public|Private|Protected) ∆ =∆ =∆ Template √ =√ =√ Stereotype √ =√ *uml:Attribute √ <∆ <=∆ =∆ type √ <∆ <=∆ =∆ visibility (packageLocal|Public|Private|Protected) ∆ <=∆ =∆ Stereotype √ =√ *uml:Operation ∆ <∆ <=∆ =∆ type ∆ <∆ <=∆ =∆ visibility (packageLocal|Public|Private|Protected) ∆ =∆ =∆ Stereotype √ =√ *uml:Parameter √ <=√ =√ type √ <=√ =√ uml:Interface √ <=√ =√ isAbstract(true|false) √ <=√ =√ isDerived(true|false) √ <=√ √ isRoot (true|false) √ <=√ Visibility (Public|Private|Protected) √ =√ =√ Stereotype √ =√ uml:Association ∆ <=>∆ <=∆ =∆ direction ( Unspecified ∆ Bi-directional √ <√ =√ Source-Destination ∆ <=>∆ <∆ =∆ Destination-Source √ <√ type ( Associate | ∆ <=>∆ =<∆ =∆ AssociationClass | ∆ <=>√ =<√ Generalize | ∆ <=>√ =<∆ =∆ Compose | ∆ =<∆ =∆ Agregate | √ =<√ =√ Dependency | ∆ =<∆ =∆ Realize | √ =<√ Trace | √ =<√ Nesting | √ =<√ InterfaceRealization ) √ =<√ *Multiplicity √ =<√

En la Tabla 5-9 se muestra que en el nivel PIM solamente se presentan los elementos del

diagrama de secuencia, debido a que éstos sólo se utilizarán para representar los detalles de implementación de los escenarios de los casos de uso y con ello también los objetos y clases necesarias para implementar el escenario, debido a que los escenarios fueron descritos como una secuencia de pasos.

En forma general, en la Tabla 5-9 en todos sus elementos, propiedades y atributos del diagrama de secuencia se presentan solamente en el nivel PIM y estos en su mayoría pueden o no pueden estar presentes. Todo esto indica que este diagrama se utiliza sólo para realizar transformaciones en el nivel PIM.

Capítulo 5 Solución propuesta

95

Tabla 5-9. Caracterización de las fronteras CIM-PIM, PIM-PSM y PSM-IM a través del diagrama de secuencia Niveles

Elementos, propiedades y atributos CIM PIM PSM IM

uml:Lifeline ∆ stop √ covered √ frame √ type ( Actor | ∆ Boundary | ∆ Control | √ Entity | ∆ Lifeline ) ∆ *Coregion √ *DurationConstraint √ *TimeConstraint √ *TimeObservation √ uml:CombinedFragment ∆ interaction √ Frame √ type ( alt | ∆ loop | √ opt ) √ *condition ∆ *Interaction √ *InternalStructure √ uml:Gate √ frame √ uml:InteractionState √ frame √ *Condition √ *Type √ name( StateInvariant | √ Continuation ) √ uml:EndPoint √ frame √ uml:Frame √ uml:InteractionUse √ interaction √ frame √ uml:Association ∆ Frame √ type ( Message | ∆ DurationObservation | √ DurationConstraint | √ Self-Message | √ GeneralOrdering | √ Lost-Message | √ Found-Message ) √ *Message ∆ kind( Asynchronous | √ Call | ∆ Signal | ∆ Return ) ∆

De la Tabla 5-10 se concluye que en el nivel CIM se reflejarán las tareas o actividades que

se realizan en la actualidad en el dominio del negocio. En el nivel PIM todo iniciará con los objetivos a automatizar a través del sistema a desarrollar y por último en el nivel PSM se utilizará la especificación del lenguaje, en el cual se va a implementar el sistema, con las opciones o bondades que brinda dicho lenguaje.

Capítulo 5 Solución propuesta

96

El elemento “uml:Activity” y “uml:Action” en el nivel IM, representan las instrucciones descritas en un lenguaje de programación determinado. Y el elemento “uml:DecisionNode” en su atributo “type” en sus valores “Decision” y “Merge” en el nivel IM, representaran a los comandos (como if, else, while) descritos por un lenguaje de programación.

Un ejemplo para explicar la Tabla 5-10, es el siguiente: se tiene el elemento

“uml:FinalNode”, el cual tiene el atributo “partition” que solamente opcionalmente puede estar presente en el nivel CIM. Dicho elemento esta presente en el nivel CIM, PIM y PSM, aunque en el nivel IM pudiera estar presente en el código como “}”. Comparando el nivel CIM y PIM de ese elemento, se tiene que se presenta igual o menor número de veces en el CIM que en el PIM, lo que significa que a nivel PIM éste se presentará igual o mayor número de veces que en el CIM. Por último, comparando el nivel PIM y PSM, se tiene que dicho elemento se presenta igual o menor número de veces en el PIM que en el PSM, lo que significa que a nivel PSM éste se presentará igual o mayor número de veces que en el PIM. La misma lógica presentada para este ejemplo se aplicaría para interpretar la tabla para los demás elementos, propiedades y atributos. Tabla 5-10. Caracterización de las fronteras CIM-PIM, PIM-PSM y PSM-IM a través del diagrama de actividad

Niveles Elementos, propiedades y

atributos CIM PIM PSM IM

uml:Activity ∆ <=>∆ =<∆ =< partition ∆ region √ =<√ uml:InitialNode ∆ =<∆ =<∆ partition ∆ uml:Partition ∆ uml:Region √ =<√ uml:Exception √ =<√ region √ =<√ uml:Action √ <√ =< region √ =<√ uml:DecisionNode ∆ <=>∆ <∆ partition ∆ region √ =<√ type ( Decision | ∆ <=>∆ <∆ =< Merge ) ∆ <=>∆ <∆ uml:FinalNode ∆ =<∆ =<∆ partition √ uml:SendSignalAction √ =<√ region √ =<√ uml:ReceiveEventAction √ =<√ region √ =<√ uml:ForkNode ∆ <=>√ =<√ partition ∆ region √ =<√ uml:JoinNode ∆ <=>√ =<√ partition ∆ region √ =<√ uml:DataStore √ =<√ region √ =<√ uml:ObjectNode √ =<√ region √ =<√ uml:FlowFinal √ =<√ uml:Association ∆ <=>∆ =<∆ partition ∆ region √ =<√

Capítulo 5 Solución propuesta

97

type ( ControlFlow | ∆ =<>∆ =<∆ ObjectFlow | √ =<√ InterruptFlow ) √ =<√

Como resultado de este capítulo se obtuvo una representación visual de la definición de los

modelos (CIM, PIM, PSM e IM), la caracterización y definición de las fronteras (CIM a PIM, PIM a PSM y PSM a IM) que se definieron en base a la especificación de los modelos y su representación interna, donde todo esto fue esencial para cubrir los aspectos de la estructura de MDA en el ambiente AGDE.

Todo lo presentado en este capítulo se utiliza en la demostración, que se presenta en el

siguiente capítulo. Se presentó la información que se requiere cubrir en cada uno de los modelos para obtener cada una de las fronteras y lograr una implementación que contenga todo lo reflejado en los modelos, cuidando de la trazabilidad entre ellos.

98

Capítulo 6

Demostración Una vez mostrada la propuesta de solución en el capítulo 5, con respecto a los análisis pertinentes para obtener la definición de los modelos, fronteras y su caracterización, es necesario demostrar la utilidad del contenido de los tres niveles de modelos y la caracterización de las fronteras, propuestos en esta investigación (§ 5.2 y 5.3). Para ubicar el porqué de la demostración, se realiza una breve descripción a continuación.

El presente trabajo de investigación esta dirigido a un estudio de factibilidad en la descripción de cada una de las fronteras que integran al enfoque MDA. Para este fin se verifica que la información definida en cada modelo es adecuada y las fronteras delimitan un modelo de otro. Que se pasa de un modelo a otro por medio de la definición de las fronteras, hasta alcanzar la implementación.

Esta demostración, se realiza a través del desarrollo de software para resolver el problema

clásico de biblioteca. Con las definiciones mencionadas, se ayuda a delimitar el nivel de detalle requerido en los

modelos y en sus fronteras, comparando la información de cada elemento de los modelos con la definición de cada frontera (CIM a PIM, de PIM a PSM y de PSM a IM).

Capítulo 6 Demostración

99

6.1 Tesis de la demostración20 “Con la información definida en los modelos y la caracterización de las fronteras, es posible llegar a una implementación funcional, a través de transformaciones pudiendo distinguir cuando un modelo se convierte en otro de un nivel más detallado”. Es decir, se quiere demostrar que el apegarse a la definición de las fronteras (contemplando la definición de los modelos), se puede transformar de un modelo a otro y obtener como resultado final un sistema ejecutable. Así el desarrollador esta conciente, al realizar cada diagrama, del modelo en el que se encuentra, gracias a las fronteras definidas. 6.2 Fundamentos o argumentos El enfoque MDA está conformado por 3 modelos (CIM, PIM, PSM) y a través de ellos realiza el desarrollo de software dirigido por modelos. Cada uno de estos modelos tiene diferente nivel de abstracción, que va de lo más general a lo más específico. Estos modelos son transformados hasta obtener el código fuente del sistema de software final. Cuando se trabaja, en cada uno de los modelos, se debe considerar la consistencia y trazabilidad entre ellos.

Este enfoque se apoya en múltiples tecnologías como UML para el modelado de sistemas, MOF que define diversos metamodelos y extiende a UML para que sea aplicado en el modelado de diferentes sistemas de información y además XMI que facilita el intercambio de metadatos en entornos distribuidos heterogéneos entre diferentes tipos de herramientas de software y en especial, entre herramientas de modelado basadas en UML y repositorios de metadatos basados en MOF. 6.3 Procedimiento Para llevar a cabo la demostración se eligió el problema de biblioteca de los casos de prueba presentados en [SHA95], que presenta distintos problemas clásicos de arquitectura de software, pero el problema se basó específicamente en la biblioteca de CENIDET para que fuera un caso real. Este problema fue abordado con el enfoque MDA. Mostrando que los diagramas UML desarrollados cumplen con el contenido del nivel de modelo correspondiente y con cada una de sus fronteras (de CIM a PIM, de PIM a PSM y de PSM a IM), hasta llegar a través de transformaciones a un nivel bajo de abstracción (implementación).

Se consideraron los requerimientos del problema de biblioteca de [WIN88] y [KEM07],

pero el punto de partida para la demostración fueron dichos requerimientos, adecuados a las necesidades y/o requerimientos de la biblioteca de CENIDET.

Como se mencionó al inicio de este capítulo, se demostrará, por medio del problema clásico de biblioteca, que apegarse a la definición de las fronteras es útil para guiar las transformaciones hasta llegar a un sistema ejecutable. Agregando los diagramas (definidos para cada modelo) necesarios para pasar del detalle que delimita los modelos CIM y PIM

20 Es el juicio, pensamiento, idea, opinión o hipótesis cuya veracidad o falsedad trata de explicarse por medio de la demostración.

Capítulo 6 Demostración

100

(frontera CIM-PIM), al detalle que delimita los modelos PIM y PSM (frontera PIM-PSM), hasta llegar a la implementación, que se obtiene transformando el modelo PSM al modelo IM (frontera PSM-IM). En los incisos siguientes se explica una parte de la demostración (referente a registrar un préstamo), ya que la demostración completa se encontrará en el Reporte Técnico RT-DCC-1-2007, cuyo titulo es Desarrollo de la demostración de la tesis: “Caracterización de las fronteras de los modelos MDA mediante UML” [LOP07]. 6.3.1 Explicación de la demostración Cabe reiterar que la demostración completa se documenta en el Reporte Técnico: Desarrollo de la demostración de la tesis: “Caracterización de las fronteras de los modelos MDA mediante UML” (RT-DCC-1-2007) [LOP07] y que en este documento sólo se mostrarán fragmentos de dicha demostración, enfocándose al registro de prestamos en la biblioteca de CENIDET.

Cada uno de los niveles contiene los diagramas correspondientes con su representación interna (XMI) y su tabla de trazabilidad, que indica a partir de que diagrama origen y que elemento se obtuvo un determinado elemento de un diagrama destino. Utilizando la definición de las fronteras como referencia para verificar que cada diagrama pertenece al modelo especificado.

En las representaciones internas que se presentan en las subsecciones siguientes sólo se

muestran fragmentos de cada documento XMI correspondiente a cada diagrama, donde dichas representaciones son documentos formateados con dos columnas, donde la segunda columna es la continuación de la primera. 6.3.1.1 Nivel general En la Ilustración 6-1 se muestra la representación visual en forma general del procedimiento de la demostración y a continuación se hace una descripción del mismo.

Como primer paso se tuvo que realizar una entrevista con el jefe del centro de información del CENIDET donde se obtuvo la información necesaria para dar comienzo al nivel CIM, donde se tocaron los puntos de modelo del negocio (CENIDET), modelo del dominio (biblioteca de CENIDET), modelo funcional y no funcional donde se comenzó con la realización de los diagramas de comunicación a nivel usuarios, a nivel combinado y a nivel aplicación, así como diagramas de casos de uso del negocio, línea de producción, actividad y diagrama de clases del negocio .

Una vez terminado el nivel CIM se paso al nivel PIM que tuvo como entrada el modelo funcional y no funcional del nivel CIM para obtener el modelo de análisis a nivel PIM y que a partir de éste se derivó el modelo de diseño en el mismo nivel. Los diagramas en este nivel PIM fueron diagramas casos de uso, de secuencia, de clases, de base de datos y de actividad, que se enfocaron a la integración de objetivos internos y externos a automatizar por medio del sistema de biblioteca.

Capítulo 6 Demostración

101

En el modelo de diseño no se especificó nada que tenga que ver con un lenguaje de programación, plataforma o ambiente, debido a que se está trabajando en el nivel PIM, el cual es independiente del lenguaje o plataforma.

Para pasar al nivel PSM fue necesario que el nivel PIM estuviese completo (verificado mediante la caracterización de las fronteras), ya que el modelo de diseño de nivel PIM es la entrada para el nivel PSM, el cual contiene diagramas de clases, base de datos relacional y de actividad. Una vez complementada la frontera (PIM-PSM), del nivel PSM se procedió a obtener el nivel IM, en el cual se obtiene el código tomando como entrada el modelo de diseño del nivel PSM.

Estos dos últimos niveles presentan características del lenguaje, plataforma, ambientes de

desarrollo y otros aspectos referentes a la generación de código.

Cabe mencionar que cada una de las definiciones de los niveles para los diagramas trae asociada una tabla de trazabilidad para pasar de un modelo a otro en un mismo nivel (Ej. CIM a CIM) y de un nivel a otro (Ej. cruzando la frontera CIM-PIM), verificando con ello la definición para cada una de las fronteras.

De acuerdo a las características que se requerían (Ej. Soporte a los elementos de UML) se

eligieron los diagramadores siguientes: Altova, Enterprise Architect y together, el que más se utilizó debido a sus ventajas en cuanto a elementos de UML fue Enterprise Architect.

CIM PIM PSM IM

Modelo de análisis Modelo de diseño

Modelo del negocio-Modelo de dominio

Modelo funcional Modelo no funcional

Modelo de diseño

CIM PIM PSM IM

Modelo de análisis Modelo de diseño

Modelo del negocio-Modelo de dominio

Modelo funcional Modelo no funcional

Modelo de diseño

Ilustración 6-1. Nivel general de la demostración

6.3.1.2 Nivel CIM Este nivel inició con los documentos, que el personal tiene que manipular en la biblioteca, para ofrecer un servicio a los usuarios. Como se mencionó en la sección anterior se realizó una entrevista al Jefe del centro de información para obtener datos relacionados con todas las actividades que se desempeñan en la biblioteca. Por ello, se inicia con los diagramas de comunicación a nivel usuario, para los usuarios: Auxiliares de biblioteca, Jefa de organización bibliográfica y Jefe del centro de información.

Capítulo 6 Demostración

102

Posteriormente, los tres diagramas de comunicación a nivel usuario sirvieron de entrada para realizar el diagrama de comunicación combinado, el cual une a los tres diagramas de comunicación a nivel usuario.

A partir del diagrama de comunicación a nivel combinado de todas las entidades

involucradas en la biblioteca (auxiliares, jefa de organización bibliográfica y jefe del centro de información), se logró el diagrama de comunicación a nivel aplicación, obteniendo por medio de éste, los objetivos internos y externos de la biblioteca. Los objetivos para esta tesis están relacionados directamente con la recepción y entrega de documentos/resultados, donde dichos objetivos se obtienen de los diagramas de comunicación relacionados con las actividades que se realizan en una determinada área/dominio. En la Tabla 6-1 se presentan en los objetivos de la biblioteca.

Tabla 6-1. Objetivos internos y externos de la biblioteca Objetivo externo Entidades externas involucradas

A-1 Recepción de solicitud de préstamo bibliotecario de acervo (no único ni 1er ejemplar) A-2 Proporciona servicio bibliotecario A-3 Entrega ficha de prestamos de acervo A-4 Entrega credencial B-1 Entrega ficha de préstamo B-2 Entrega credencial C-1 Recepción de solicitud de préstamo bibliotecario de acervo único o 1er ejemplar C-2 Proporciona servicio bibliotecario C-3 Entrega ficha para préstamo de acervo único o 1er ejemplar para firma C-4 Entrega ficha de acervo único o 1er ejemplar firmada C-5 Entrega credencial D-1 Retorna acervo único o 1er ejemplar D-2 Entrega credencial I-1 Recepción de solicitud del catálogo interbibliotecario I-2 Envía catálogo interbibliotecario I-3 Recepción de solicitud del formato de préstamo interbibliotecario I-4 Proporciona el formato de préstamo interbibliotecario I-5 Envía formato de préstamo interbibliotecario llenado I-6 Recibe formato de préstamo interbibliotecario firmado y sellado J-1 Entrega acuse del formato de préstamo interbibliotecario para archivarlo

Usuarios (alumnos, organización y seguimiento, gestión tecnológica, servicios escolares, desarrollo académico, recursos humanos, recursos financieros, recursos materiales y de servicio, planeación, Depto. Académico, comunicación y eventos)

L-1 Proporciona formato de no adeudo L-2 Envía formato de no adeudo

Usuarios (alumnos)

M-1 Recepción de solicitud de necesidades bibliográficas M-2 Envía necesidades bibliográficas

Usuarios (alumnos, gestión tecnológica, desarrollo académico, planeación, Depto. Académico)

O-1 Envió de tesis para exhibición Depto. Académico R-1 Recepción de solicitud de estadísticas R-2 Envío de estadísticas

Planeación

DD-1 Recepción de solicitud de lista de alumnos inscritos DD-2 Envío de lista de alumnos inscritos

Servicios escolares

Objetivos internos Entidades internas involucradas

Capítulo 6 Demostración

103

E-1 Envía libros comprados o tesis E-2 Recepción de solicitud de revisión de catalogación y clasificación de libros o tesis (fichas de acervo) E-3 Envía la revisión de catalogación y clasificación para ser capturada en el sistema F-1 Envía revisión de usuarios para ser modificados o eliminados G-1 Envía lista de usuarios para dar de alta (realizar sus credenciales) H-1 Envía revisión de acervo para ser modificado o eliminado en el sistema

Jefa de organización bibliográfica, jefe del centro de información

N-1 Envía revistas para ser selladas y registradas en kardex N-2 Envía el kardex para ser capturado

Auxiliares de biblioteca y jefe del centro de información

EE-1 Envía libros, tesis o revistas registradas para ser exhibidos

Jefa de organización bibliográfica, auxiliares de biblioteca

De los objetivos internos y externos de la biblioteca se obtuvo el diagrama de línea de

producción (conformado por 10 diagramas) y la definición de los objetivos a automatizar. Por medio del diagrama de línea de producción de la biblioteca se obtuvo lo siguiente:

• Diagramas de actividad (conformado por 10 diagramas), donde se muestran las

actividades, tareas que se realizan dentro de la biblioteca actualmente por cada diagrama de la línea de producción, es decir, se describió el procedimiento que se realizó para obtener los productos del diagrama de línea de producción.

• Diagrama de casos de uso (conformado por 1 diagrama principal y 8 sub-casos de uso), se generaron a partir de los diagramas de línea de producción y los escenarios (conformado por 8 escenarios) correspondientes a cada caso de uso, se obtuvieron de los diagramas de actividad de la línea de producción.

• Diagrama de clases del negocio (conformado por 12 clases), donde se representó la información relevante que maneja el personal de biblioteca vista desde su perspectiva. Para obtener las clases se analizaron los productos de la línea de producción, de la cual se seleccionaron sólo aquellos productos que eran más abstractos, también se seleccionaron aquellos productos que son relevantes que no tienen productos derivados.

• Requerimientos funcionales se obtuvieron de la definición de los objetivos a automatizar y se verificaron de acuerdo al problema modelo de biblioteca y a los diagramas de línea de producción.

A continuación se muestra el diagrama de casos de uso principal del negocio en la

Ilustración 6-2 y después se muestra el sub-caso de uso “Solicitar préstamo de acervo”, que como ya se dijo en la sección 6.3.1, solamente se muestran fragmentos de “Registrar préstamo”, a través de los distintos niveles y fronteras, posteriormente se presenta en la Ilustración 6-4 el documento XMI (§ 5.1) de dicho diagrama. Por último, en la Tabla 6-2 se presentan los elementos que dieron origen a los elementos de este diagrama, con lo que se muestra una parte del nivel CIM.

En la Ilustración 6-2 se presenta el diagrama de casos de uso general a nivel CIM, donde

se puede observar que está conformado por ocho subcasos de uso provenientes del diagrama de línea de producción. Este diagrama de casos de uso contiene tres actores externos que influyen en dichos casos de uso.

Capítulo 6 Demostración

104

Las relaciones del actor “usuario”, “planeación” y “alumno”, están relacionadas con los

casos uso por medio del conector “use”, y el actor “planeación” y “alumno” están heredando del actor “usuario” el acceso a los demás casos de uso con que el actor “usuario” tiene relación.

El actor “usuario” engloba a los demás tipos de usuarios (organización y seguimiento,

gestión tecnológica, servicios escolares, desarrollo académico, recursos humanos, recursos financieros, recursos materiales y de servicio, Depto. Académico, comunicación y eventos) externos que tienen relación con los casos de uso mostrados en la ilustración.

uc CU-Negocio-CIM

Biblioteca

Usuario

AlumnoPlaneación

CU-8 Solicitar estadísticas

CU-7 Solicitar formato de no

adeudo

CU-1 Solicitar préstamo de

acerv o

CU-2 Retornar acerv o

CU-3 Solicitar necesidades bibliográficas

CU-4 Solicitar préstamo

interbibliotecario

CU-5 Rev isar catálogo

interbibliotecario

CU-6 Obtener credencial

Ilustración 6-2. Diagrama de casos de uso del negocio a nivel CIM

Posterior al diagrama de casos de uso principal del negocio, es necesario presentar la parte

que se va a tratar en este documento, por ello a continuación en la Ilustración 6-3 se presenta el sub-diagrama de caso de uso de “Solicitar préstamo de acervo”, realizado a partir de la Ilustración 6-2, para ir acotando la parte que se presentará en este documento a nivel CIM, que es presentar lo referente a “Registrar préstamo”.

Capítulo 6 Demostración

105

uc CU-Negocio-CIM

Usuario

CU-1 Solicitar préstamo de

acerv o

Ilustración 6-3. Sub-diagrama de casos de uso de la Ilustración 6-2

La representación interna del diagrama antes mostrado, se presenta en la Ilustración 6-4.

En dicha representación se especifican los elementos y propiedades del diagrama, donde se tiene al elemento “Usuario” contenido en la etiqueta “uml:Actor”, cuyo identificador es “A1” y al elemento “CU-1 Solicitar préstamo de acervo” contenido en la etiqueta “uml:UseCase”, cuyo identificador es “CU1”, como ambos elementos están relacionados en cada una de sus etiquetas que los representan, se agrega una sub-etiqueta “Association” que contiene una referencia que es “R1” hacia la etiqueta “uml:Association”, donde se describe la relación entre el actor “usuario” y el caso de uso “CU-1 Solicitar préstamo de acervo”.

La etiqueta “uml:Association” tiene un identificador que es “R1”, un nombre que en este

caso no se especificó y una propiedad “type” que indica el tipo de relación que existe entre los elementos, la cual es de “Use”, además esta etiqueta contiene dos etiquetas que especifican el origen de la relación por medio del identificador del elemento origen que es “A1” y otra etiqueta que especifica el destino de la relación, por medio del identificador del elemento destino que es “CU1”, ambos identificadores corresponden al actor “usuario” y al caso de uso “CU-1 Solicitar préstamo”.

<?xml version="1.0"?><!DOCTYPE xmi:XMI SYSTEM "DTDCasosUso.dtd"> <xmi:XMI xmi:version="2.0" xmlns:uml="http://schema.omg.org/spec/uml/2.0" xmlns:xmi="http://schema.omg.org/spec/XMI"> <XMI.header> <XMI.model xmi.name="UML" xmi.version="2.0"/> </XMI.header> <XMI.content> <uml:Package xmi:id="CasosUso" name="Casos de uso del negocio"> <uml:Actor xmi:id="A1" name="Usuario"> <Association xmi:idref="R1"/>

</uml:Actor> <uml:UseCase xmi:id="CU1" name="CU-1 Solicitar préstamo de acervo" subject="S1"> <Association xmi:idref="R1"/> </uml:UseCase> <uml:Association xmi:id="R1" name="" type="Use"> <Source xmi:idref="A1"/> <Target xmi:idref="CU1"/> </uml:Association> </uml:Package> </XMI.content> </xmi:XMI>

Ilustración 6-4. Documento XMI para el diagrama de casos de uso de la Ilustración 6-3

A continuación se presenta el escenario de la Ilustración 6-3 para “Solicitar préstamo de

acervo”, el cual proviene de los diagramas de actividad de préstamo de acervo de la línea de producción préstamo de acervo.

ID: CU-1 Nombre de

caso de uso:

Solicitar préstamo de acervo

Creador: Edna D. López López Ultima modificación: Edna D. López López Fecha de creación:

05/06/07 Fecha de última modificación:

20/06/07

Actores: Iniciado por el usuario, se comunica con el personal de biblioteca.

Capítulo 6 Demostración

106

Descripción: El objetivo de este caso de uso es obtener en préstamo un acervo bibliográfico. Precondiciones: El usuario solicita el préstamo de acervo con su credencial (si tiene prestamos no es

necesaria) y la (s) ficha(s) llena(s) para el préstamo correspondiente al tipo de acervo. Poscondiciones: El personal de biblioteca le presta el acervo solicitado al usuario y dependiendo del tipo de

acervo le entrega la ficha del acervo. Escenario principal

de éxito: • El usuario solicita el préstamo de acervo al personal de biblioteca. • Si el usuario tiene prestamos entrega solamente la(s) ficha(s) para el préstamo

dependiendo del tipo de acervo. 1. El personal de biblioteca verifica los prestamos del usuario. 2. El número de prestamos es correcto.

• Si no, el usuario entrega credencial y dependiendo del tipo de acervo entrega la(s) ficha(s) para el préstamo.

• Se sella (n) la(s) ficha(s), se entrega la ficha del acervo dependiendo del tipo de acervo.

• El personal de biblioteca le presta el acervo al usuario. Escenario de

fracaso (1): • El usuario solicita el préstamo de acervo al personal de biblioteca. • Si el usuario tiene prestamos entrega solamente la(s) ficha(s) para el préstamo

dependiendo del tipo de acervo. 1. El personal de biblioteca verifica los prestamos del usuario. 2. El número de prestamos es igual o superior al permitido. 3. El personal de biblioteca no le presta el acervo al usuario.

Escenario de fracaso (2):

• El usuario solicita el préstamo de acervo al personal de biblioteca. • Si el usuario tiene prestamos entrega solamente la(s) ficha(s) para el préstamo

dependiendo del tipo de acervo. 1. El personal de biblioteca verifica los prestamos del usuario. 2. El número de prestamos es correcto. 3. El titulo del ejemplar que solicita el usuario ya lo tiene prestado. 4. El personal de biblioteca no le presta el acervo al usuario.

Prioridad: Alta Subcasos de uso:

En la Tabla 6-2 se presenta la trazabilidad para el diagrama de casos de uso de la

Ilustración 6-3, en el cual se presentan los elementos del diagrama de línea de producción para préstamo de acervo a partir de los cuales surgieron los elementos de dicho diagrama de casos de uso.

Tabla 6-2. Trazabilidad para el diagrama de casos de uso de la Ilustración 6-3 a nivel CIM

Objetivos externos de la biblioteca Elementos del subdiagrama de Casos de uso “Solicitar préstamo de acervo” a nivel CIM

10.- Acervo prestado (no único ni 1er ejemplar) 12.- Acervo prestado (único o 1er ejemplar)

CU-1 Solicitar préstamo de acervo

Por último, de la definición de los objetivos a automatizar para la biblioteca se sacaron los

requerimientos funcionales (Ej. Registrar préstamo) y refinando estos últimos se obtuvieron algunos de los requerimientos no funcionales de la biblioteca (Ej. Sólo se puede prestar un máximo de 3 libros a un usuario). 6.3.1.3 Cruce de la frontera CIM-PIM Esta frontera se inició con la transformación de los casos de uso del negocio a nivel CIM (conformado por 1 diagrama principal y 8 sub-casos de uso) a los casos de uso a nivel PIM (conformado por 1 diagrama principal, 8 sub-casos de uso, de los cuales se desglosan 6 de ellos), ya enfocados al sistema de biblioteca a desarrollar. Además que para obtener todos los casos de uso de este nivel también se revisa la lista de requerimientos funcionales obtenida a nivel CIM.

Capítulo 6 Demostración

107

Cabe mencionar que a partir de los diagramas de casos de uso en el nivel PIM la demostración presentada en el Reporte Técnico RT-DCC-1-2007, se enfocó en la parte de “Administrar préstamo de acervo” y que en este capítulo solamente se presentan partes seleccionadas de “Registrar préstamo”, para explicar cada uno de los niveles y fronteras.

Posteriormente, se transformó el diagrama de clases del negocio a nivel CIM (conformado por 12 clases) al diagrama de clases a nivel PIM (conformado por 10 clases), donde influyó también el glosario de términos a nivel CIM. Cabe mencionar que esta desigualdad en el número de clases manejada en cada nivel, es debido a que en el nivel CIM, dicho diagrama representa la información relevante que el personal de biblioteca entiende y que no tiene que ver con el diseño o programación y en el nivel PIM, es como estará con respecto al sistema a desarrollar, es decir, en términos del desarrollador del sistema.

Por último, para obtener el diagrama de base de datos (nivel PIM) se realizó una

transformación del diagrama de clases del negocio (nivel CIM), a dicho diagrama de la base de datos (base de datos relacional elaborada con la herramienta SQL Management Studio 2006 for PostgreSQL), pero también existe otra transformación para completar este diagrama, la cual se obtiene del glosario de términos, que consiste en obtener los términos para el nombre de las tablas relevantes a utilizar, así como los atributos que contendrán, para poder manipular la información de cada tabla a través del sistema de biblioteca.

A continuación se muestra el diagrama principal de casos de uso “Administrar préstamo

de acervo” a nivel PIM en la Ilustración 6-5, después en la Ilustración 6-6 se presenta el sub-sub caso de uso “Registrar préstamo”, posteriormente se muestra en la Ilustración 6-7 el documento XMI (§ 5.1) correspondiente a “Registrar préstamo”, así como, se describe el escenario de dicho sub-sub caso de uso, que como ya se dijo en la sección 6.3.1, solamente se muestran fragmentos de “Registrar préstamo”, a través de los distintos niveles y fronteras. Además, en la Tabla 6-3 se presentan los elementos que dieron origen a los elementos de este diagrama, con lo que se muestra una parte de la frontera CIM-PIM.

En la Ilustración 6-5, se muestra el diagrama de casos de uso “Administrar préstamo de

acervo” a nivel PIM, donde se presentan los subcasos de uso que puede contener como: “Registrar préstamo”, “Eliminar préstamo”, “Modificar préstamo”, “Consultar préstamo” y “Obtener estadísticas de préstamo”, donde todos estos casos de uso los realiza el actor “Jefe del centro de información”, pero también los actores “Jefa de organización bibliográfica” y “Auxiliares de biblioteca” pueden realizar todos los casos de uso, excepto el caso de uso “Obtener estadísticas de préstamo”.

Las relaciones que se presentan de los actores a los casos de uso es de “use” y las

relaciones que tienen los casos de uso “CU-4.1”, “CU-4.2”, “CU-4.3”, “CU-4.4” y “CU-4.5” con respecto al caso de uso “CU-4” es de “extend”, ya que estos representan las opciones que pueden realizar los actores que intervienen en este diagrama, la otra relación que existe entre los casos de uso de este diagrama es “include”, por ejemplo, para registrar un préstamo, se tiene que validar que el usuario este registrado (CU-1.1.1) y que no exceda el número de prestamos permitidos (CU-4.2.1). El diagrama de casos de uso de la Ilustración 6-5 fue obtenido del diagrama general de casos de uso del nivel PIM y los casos de uso “CU-1.1.1

Capítulo 6 Demostración

108

Validar usuario” y “CU-2.1.1 Validar acervo” provienen de los casos de uso “CU-1 Administrar usuario” y “CU-2 Administrar acervo”, todo esto se presentan en [LOP07].

uc CU-Prestamos

CU-4 Administrar préstamo de

acervo

CU-4.1 Registrar préstamo

CU-4.2 Eliminar préstamo

CU-4.3 Modificar préstamo

CU-4.4 Consultar préstamo

Jefa de organización bibliografica

Jefe del centro de información

Auxiliares de biblioteca

CU-1.1.1 Validar usuario

CU-2.1.1 Validar acervo

CU-4.5 Obtener estadística de

prestamos

CU-4.2.1 Validar préstamo de

acervo

Jefa de organización bibliografica

Auxiliares de biblioteca

«extend»

«extend»

«extend»

«extend»

«extend»

«include»

«include»

«include»

«include»

«include»

Ilustración 6-5. Diagrama de casos de uso "Administrar préstamo de acervo" a nivel PIM

Una vez mostrado el diagrama de casos de uso para “Administrar préstamo de acervo”, se

procede a presentar la parte del diagrama de “Registrar préstamo”, la cual se presenta en la Ilustración 6-6. En este sub-subcaso de uso intervienen los actores “Jefe del centro de información”, “Jefa de organización bibliográfica” y “Auxiliares de biblioteca”, correspondientes al personal de la biblioteca de CENIDET, dicho caso de uso tiene incluidos al caso de uso “Validar usuario”, “Validar acervo” y “Validar préstamo”.

uc CU-4.1 Registrar prestamo

CU-4.1 Registrar préstamo

Jefa de organización bibliografica

Auxiliares de biblioteca

CU-1.1.1 Validar usuario

CU-2.1.1 Validar acervo

CU-4.2.1 Validar préstamo de

acerv oJefe del centro de información

«include»

«include»

«include»

Ilustración 6-6. Sub-sub caso de uso de "Registrar préstamo" del diagrama de la Ilustración 6-5

Capítulo 6 Demostración

109

Basado en la Ilustración 6-6, se presenta el documento XMI para “Administrar préstamo de acervo” en el sub-subcaso de uso “Registrar préstamo”, dicho documento se muestra en la Ilustración 6-7.

Para explicar un poco la representación interna, se tiene que cada actor que interviene en el

diagrama, se representó a través de la etiqueta “uml:Actor”, por ejemplo, el actor “Jefa de organización bibliográfica” esta representado en la etiqueta “uml:Actor” con el identificador “A2” y esa etiqueta contiene la etiqueta “Association” que tiene los identificadores “R2”, “R3”, “R16” y “R17”, que representan cada uno una referencia hacia la etiqueta “uml:Association”, donde se especifica el origen y destino de una determinada relación del actor con otro elemento, por ejemplo, con el caso de uso “Registrar préstamo” descrito en la etiqueta “uml:UseCase” con el identificador “CU2”, en la etiqueta “Association” tiene el identificador “R2” , que también tiene el actor “Jefa de organización bibliográfica”, entonces esto indica que ambos elementos están relacionados y esto se especificó en la etiqueta “uml:Association” que tiene el identificador “R2” y la propiedad “type” con “Use” que es el tipo de relación entre los identificadores “A2” y “CU2” que se especifican por medio de las etiquetas “Source” y “Target” respectivamente al origen y destino de la relación.

<?xml version="1.0"?><!DOCTYPE xmi:XMI SYSTEM "DTDCasosUso.dtd"> <xmi:XMI xmi:version="2.0" xmlns:uml="http://schema.omg.org/spec/uml/2.0" xmlns:xmi="http://schema.omg.org/spec/XMI"> <XMI.header> <XMI.model xmi.name="UML" xmi.version="2.0"/> </XMI.header> <XMI.content> <uml:Package xmi:id="CasosUso" name="Administrar préstamo de acervo"> … … … <uml:Actor xmi:id="A2" name="Jefa de organización bibliográfica"> <Association xmi:idref="R2"/> <Association xmi:idref="R3"/> <Association xmi:idref="R16"/> <Association xmi:idref="R17"/> </uml:Actor> … … … <uml:UseCase xmi:id="CU2" name="CU-4.1 Registrar préstamo"> <Association xmi:idref="R2"/> <Association xmi:idref="R11"/> <Association xmi:idref="R12"/> <Association xmi:idref="R13"/>

<Association xmi:idref="R6"/> </uml:UseCase> … … … <uml:UseCase xmi:id="CU7" name="CU-1.1.1 Validar usuario"> <Association xmi:idref="R11"/> </uml:UseCase> … … … <uml:Association xmi:id="R2" name="" type="Use"> <Source xmi:idref="A2"/> <Target xmi:idref="CU2"/> </uml:Association> … … … <uml:Association xmi:id="R11" name="" type="Include"> <Source xmi:idref="CU2"/> <Target xmi:idref="CU7"/> </uml:Association> … … … </uml:Package> </XMI.content> </xmi:XMI>

Ilustración 6-7. Documento XMI para el diagrama de casos de uso de “Administrar préstamo de acervo” en la parte de “Registrar préstamo”

A continuación se muestra el escenario de la Ilustración 6-6 para “Registrar préstamo”, el

cual proviene del diagrama de “Administrar préstamo de acervo” y específicamente este sub-subcaso surge del caso de uso “Solicitar préstamo de acervo” a nivel CIM mostrado en la Ilustración 6-3.

Capítulo 6 Demostración

110

ID: CU-4.1 Nombre de caso

de uso: Registrar préstamo

Creador: Edna D. López López Ultima modificación: Edna D. López López

Fecha de creación:

05/06/07 Fecha de última modificación:

18/06/07

Actores: Jefa de organización bibliográfica, jefe del centro de información o auxiliares de biblioteca.

Descripción: Permite el registro de prestamos de acervo solicitados por un usuario en el Sistema de biblioteca.

Precondiciones: Entrada.- Se introduce el folio del acervo y el número de control del usuario para ser validados. Mecanismo.- Desplegar la ventana “Registrar préstamo” del Sistema de biblioteca.

Poscondiciones: Salida.- Se muestra un mensaje de préstamo registrado. Escenario principal de

éxito: • La jefa de organización bibliográfica, jefe del centro de

información o auxiliares de biblioteca seleccionan “Administrar préstamo de acervo”.

• Se muestra la ventana de “Administrar préstamo de acervo”. • Posteriormente se seleccionará “Registrar préstamo”. • El sistema presentará una interfaz que permitirá registrar el

préstamo. • La jefa de organización bibliográfica, jefe del centro de

información o auxiliares de biblioteca introducirán el folio del acervo y el número de control del usuario los cuales serán validados presionando “Aceptar”.

• Se introducirá la información del préstamo como: fecha de préstamo y fecha de entrega.

• Una vez introducida la información correspondiente se presiona en “Registrar”.

• El sistema presenta un mensaje de préstamo registrado. Escenario de fracaso (1): • La jefa de organización bibliográfica, jefe del centro de

información o auxiliares de biblioteca seleccionan “Administrar préstamo de acervo”.

• Se muestra la ventana de “Administrar préstamo de acervo”. • Posteriormente se seleccionará “Registrar préstamo”. • El sistema presentará una interfaz que permitirá registrar el

préstamo. • La jefa de organización bibliográfica, jefe del centro de

información o auxiliares de biblioteca introducirán el folio del acervo y el número de control del usuario los cuales serán validados presionando “Aceptar”.

• El sistema manda un mensaje de información incompleta. Escenario de fracaso (2): • La jefa de organización bibliográfica, jefe del centro de

información o auxiliares de biblioteca seleccionan “Administrar préstamo de acervo”.

• Se muestra la ventana de “Administrar préstamo de acervo”. • Posteriormente se seleccionará “Registrar préstamo”. • El sistema presentará una interfaz que permitirá registrar el

préstamo. • La jefa de organización bibliográfica, jefe del centro de

información o auxiliares de biblioteca introducirán el folio del acervo y el número de control del usuario los cuales serán

Capítulo 6 Demostración

111

validados presionando “Aceptar”. • El sistema manda un mensaje de que el préstamo ya existe.

Escenario de fracaso (3): • La jefa de organización bibliográfica, jefe del centro de información o auxiliares de biblioteca seleccionan “Administrar préstamo de acervo”.

• Se muestra la ventana de “Administrar préstamo de acervo”. • Posteriormente se seleccionará “Registrar préstamo”. • El sistema presentará una interfaz que permitirá registrar el

préstamo. • La jefa de organización bibliográfica, jefe del centro de

información o auxiliares de biblioteca introducirán el folio del acervo y el número de control del usuario los cuales serán validados presionando “Aceptar”.

• El sistema manda un mensaje de ejemplar repetido. Escenario de fracaso (4): • La jefa de organización bibliográfica, jefe del centro de

información o auxiliares de biblioteca seleccionan “Administrar préstamo de acervo”.

• Se muestra la ventana de “Administrar préstamo de acervo”. • Posteriormente se seleccionará “Registrar préstamo”. • El sistema presentará una interfaz que permitirá registrar el

préstamo. • La jefa de organización bibliográfica, jefe del centro de

información o auxiliares de biblioteca introducirán el folio del acervo y el número de control del usuario los cuales serán validados presionando “Aceptar”.

• El sistema manda un mensaje de que el usuario ya tiene 3 prestamos.

Escenario de fracaso (5): • La jefa de organización bibliográfica, jefe del centro de información o auxiliares de biblioteca seleccionan “Administrar préstamo de acervo”.

• Se muestra la ventana de “Administrar préstamo de acervo”. • Posteriormente se seleccionará “Registrar préstamo”. • El sistema presentará una interfaz que permitirá registrar el

préstamo. • La jefa de organización bibliográfica, jefe del centro de

información o auxiliares de biblioteca introducirán el folio del acervo y el número de control del usuario los cuales serán validados presionando “Aceptar”.

• El sistema manda un mensaje de usuario no encontrado. Escenario de fracaso (6): • La jefa de organización bibliográfica, jefe del centro de

información o auxiliares de biblioteca seleccionan “Administrar préstamo de acervo”.

• Se muestra la ventana de “Administrar préstamo de acervo”. • Posteriormente se seleccionará “Registrar préstamo”. • El sistema presentará una interfaz que permitirá registrar el

préstamo. • La jefa de organización bibliográfica, jefe del centro de

información o auxiliares de biblioteca introducirán el folio del acervo y el número de control del usuario los cuales serán validados presionando “Aceptar”.

• El sistema manda un mensaje de acervo no encontrado. Escenario de fracaso (7): • La jefa de organización bibliográfica, jefe del centro de

información o auxiliares de biblioteca seleccionan “Administrar préstamo de acervo”.

Capítulo 6 Demostración

112

• Se muestra la ventana de “Administrar préstamo de acervo”. • Posteriormente se seleccionará “Registrar préstamo”. • El sistema presentará una interfaz que permitirá registrar el

préstamo. • La jefa de organización bibliográfica, jefe del centro de

información o auxiliares de biblioteca introducirán el folio del acervo y el número de control del usuario los cuales serán validados presionando “Aceptar”.

• El sistema manda un mensaje de acervo no disponible. Escenario de fracaso (8): • La jefa de organización bibliográfica, jefe del centro de

información o auxiliares de biblioteca seleccionan “Administrar préstamo de acervo”.

• Se muestra la ventana de “Administrar préstamo de acervo”. • Posteriormente se seleccionará “Registrar préstamo”. • El sistema presentará una interfaz que permitirá registrar el

préstamo. • La jefa de organización bibliográfica, jefe del centro de

información o auxiliares de biblioteca introducirán el folio del acervo y el número de control del usuario los cuales serán validados presionando “Aceptar”.

• Se introducirá la información del préstamo como: fecha de préstamo y fecha de entrega.

• Una vez introducida la información correspondiente se presiona en “Registrar”.

• El sistema manda un mensaje indicando que fallo la conexión. Prioridad: Alta

Subcasos de uso: CU-1.1.1, CU-2.1.1, CU-4.2.1

En la Tabla 6-3 se presenta la trazabilidad para el sub-subcaso de uso “Registrar préstamo”, en dicha tabla se muestran los elementos del subdiagrama de casos de uso “Solicitar préstamo de acervo” en el nivel CIM, a partir de los cuales surgieron los elementos del sub-subcaso de uso “Registrar préstamo” a nivel PIM.

Tabla 6-3. Trazabilidad para el sub-subcaso de uso “Registrar préstamo” a nivel PIM Elementos del subdiagrama de Casos de uso “Solicitar

préstamo de acervo” a nivel CIM Elementos del sub-subcaso de uso “Registrar

préstamo” a nivel PIM CU-1 Solicitar préstamo de acervo CU-4.1 Registrar préstamo

6.3.1.4 Nivel PIM Este nivel hereda de los elementos obtenidos en el CIM. El inicio de este nivel empezó con el diagrama de casos de uso (conformado por 1 diagrama principal y 8 sub-casos de uso, de los cuales se desglosan 6), que como se mencionó en el inciso anterior, se obtuvo mediante el diagrama de casos de uso del negocio y de los requerimientos funcionales, ambos del nivel CIM.

Una vez obtenido el diagrama de casos de uso a nivel PIM a través del diagrama de casos de uso del negocio y de los requerimientos funcionales ambos a nivel CIM, se procedió a desarrollar uno de sus casos de uso de “Administrar préstamo de acervo” (conformado por 5 subcasos de uso con sus respectivos escenarios) del cual surgieron los diagramas de secuencia (conformado por 5 diagramas).

Capítulo 6 Demostración

113

Después a partir de los diagramas de secuencia se obtuvieron los diagramas de actividad (conformado por 8 diagramas) y el de clases, el cual también es obtenido mediante el diagrama de clases del negocio y del glosario de términos, ambos a nivel CIM (§ 6.3.1.3). Los diagramas de actividad están relacionados con los diagramas de clases de este nivel.

Por último, el diagrama de la base de datos (base de datos relacional elaborada con la herramienta SQL Management Studio 2006 for PostgreSQL) de este nivel como se mencionó en la sección 6.3.1.3, se obtiene al igual que el diagrama de clases del glosario de términos (ya que a través de éste se obtienen los posibles nombres de las tablas y sus atributos) a nivel CIM y del diagrama de clases del negocio (nivel CIM).

En este nivel se mostrará la trazabilidad entre el diagrama de secuencia y el diagrama de

actividad, para posteriormente bosquejar este último diagrama en la frontera PIM-PSM. Para ello primero se presenta el diagrama de secuencia y después el diagrama de actividad, pues se requiere especificar primero los elementos (del diagrama de secuencia a nivel PIM) que dieron origen al diagrama de actividad a nivel PIM, para posteriormente tomarlos como los elementos origen del diagrama de actividad a nivel PSM.

A continuación se muestra el diagrama de secuencia en la Ilustración 6-8 y posteriormente

se presenta en la Ilustración 6-9 el documento XMI (§ 5.1) de dicho diagrama. Por último, en la Tabla 6-4 se presentan los elementos que dieron origen a los elementos de este diagrama, con lo que se muestra una parte del nivel PIM.

La Ilustración 6-8 presenta el diagrama de secuencia para el sub-subcaso de uso

“Registrar préstamo” a nivel PIM. En este diagrama se reflejan los escenarios especificados para “Registrar préstamo” presentado en la sección 6.3.1.3. El diagrama de secuencia contiene las líneas de vida de “Actor” representada por “Personal de biblioteca” (que engloba a los actores Jefe del centro de información, Jefa de organización bibliográfica y Auxiliares de biblioteca), la línea de vida “Límite” que está representada por “MenuPrincipal”, la “Línea de vida” representada por “PrestamoAcervo” y por último, la línea de vida “Entidad” representada por “ManejoBD”, estas últimas tres líneas de vida representan interfaces, clases y captura de información respectivamente en el diagrama.

Por otro lado, a través de las cuatro líneas de vida del diagrama, se muestra el uso de los

distintos tipos de mensajes con lo que se comunican como: mensajes de llamada “Call” (Ej. “clic en aceptar”), mensajes de retorno “Return” (Ej. Mensaje: (“Información incompleta”)) y mensajes planos “Signal” (Ej. crear pantalla).

Capítulo 6 Demostración

114

sd D-Secuencia(CU-4.1 Registrar préstamo)

PrestamoAcervo

Personal de biblioteca Menu principal ManejoBD

alt

[Respuesta=1]

[else]

alt

[Respuesta=0]

[else]

alt

[Respuesta=1]

[else]

alt

[Respuesta=-1]

[else]

alt

[Respuesta<>0]

alt

[fol io="" OR num_control=""]

[else]

alt

[Respuesta<>1]

clic en administrar préstamo de acervocrear pantalla

Selecciona registrar prestamo

Introduce folio y num_control

cl ic en aceptar

Message:("Información incompleta")

Respuesta=ValidarPrestamo(folio,num_control,0)Respuesta

Message:("Préstamo ya registrado")

Respuesta=.ValidarPrestamo(folio,num_control,3)

Respuesta

Message:("Ejemplar repetido")

Respuesta=ValidarUsuario(num_control)

Respuesta

Message:("Usuario no encontrado")

Respuesta=ValidarPrestamo(folio,num_control,1)

Respuesta

Message:("El usuario ya tiene 3 prestamos")

Respuesta=ValidarAcervo(folio)

Respuesta

Message:("Acervo no encontrado")

Message:("Acervo no disponible")

Introduce fecha de préstamo y fecha de entrega

clic en registrarRegistra los datos

Message:("Préstamo registrado")

Ilustración 6-8. Diagrama de secuencia para el caso de uso “CU-4.1 Registrar préstamo” a nivel PIM

La representación interna del diagrama de secuencia, se presenta en la Ilustración 6-9,

donde se muestran los elementos de línea de vida del diagrama de secuencia a través de la etiqueta “uml:Lifelive”, donde en la propiedad “type” se especifica el tipo de línea de vida, en este caso son: actor, límite, línea de vida y entidad. Para explicar la representación interna de este diagrama, se presenta el siguiente ejemplo: se requiere representar el mensaje de “Acervo no disponible” que sale de la línea de vida “PrestamoAcervo”, para llegar a la línea de vida actor “Personal de biblioteca” y este mensaje esta contenido en el elemento fragmento combinado a través de la condición “Respuesta <> 0”. Esto se representa de la siguiente manera en el documento XMI de dicho diagrama. Primeramente, se representa cada una de las líneas de vida que intervienen a través de la etiqueta “uml:Lifelive” con el identificador “LV1” y el tipo de línea de vida es “Actor” para “Personal de biblioteca” y “uml:Lifelive”

Capítulo 6 Demostración

115

con el identificador “LV3” y el tipo de línea es “Lifelive” para “PrestamoAcervo”, dentro de cada una de estas etiquetas se agrega la etiqueta “Association” para guardar la referencia hacia la etiqueta “uml:Association”, donde se describe la relación (mensaje), la cual tiene el identificador “R19”. La etiqueta “uml:Association”, entonces contiene un identificador “R19” y en la propiedad “type” tiene el tipo “Message”, además tiene otra propiedad que es “Association”, la cual contiene “FN5” que es la referencia al fragmento combinado, donde se encuentra la condición que produce el mensaje. Esta etiqueta también tiene a las etiquetas “Source” y “Target” que especifican los identificadores del origen (PrestamoAcervo) y destino (Personal de biblioteca) del mensaje que son “LV3” y “LV1” respectivamente. El fragmento combinado entonces se representa con la etiqueta “uml:CombinedFragment”, cuyo identificador es “FD5” y el tipo de este fragmento combinado es “alt” (que representa una condición “if”) que se especifica a través de la etiqueta “condition”, que tiene el identificador “C1” y la descripción de la condición en la propiedad “name” para “Respuesta <> 0”, donde los símbolos “<” y “>”, se codifican como “&lt;” y “&gt;” (todos los símbolos que aparezcan en un determinado diagrama serán codificados de acuerdo al lenguaje XMI/XML).

La etiqueta “Condition” tiene contenida otra etiqueta “Association”, cuyo identificador de

referencia es “R19” que es la referencia hacia la etiqueta “uml:Association” que tiene el identificador “R19”.

<xmi:XMI xmi:version="2.0" xmlns:uml="http://schema.omg.org/spec/uml/2.0" xmlns:xmi="http://schema.omg.org/spec/XMI"> <XMI.header> <XMI.model xmi.name="UML" xmi.version="2.0"/> </XMI.header> <XMI.content> <uml:Package xmi:id="Sequence" name="Registrar préstamo"> <uml:Lifeline xmi:id="LV1" name="Personal de biblioteca" type="Actor"> <Association xmi:idref="R1"/> <Association xmi:idref="R3"/> <Association xmi:idref="R4"/> <Association xmi:idref="R5"/> <Association xmi:idref="R8"/> <Association xmi:idref="R11"/> <Association xmi:idref="R14"/> <Association xmi:idref="R17"/> <Association xmi:idref="R19"/> <Association xmi:idref="R20"/> <Association xmi:idref="R21"/> <Association xmi:idref="R23"/> <Association xmi:idref="R24"/> <Association xmi:idref="R27"/> </uml:Lifeline> <uml:Lifeline xmi:id="LV2" name="Menu principal" type="Boundary"> <Association xmi:idref="R2"/> </uml:Lifeline> <uml:Lifeline xmi:id="LV3" name="PrestamoAcervo" type="Lifeline"> <Association xmi:idref="R2"/> <Association xmi:idref="R3"/> <Association xmi:idref="R4"/> <Association xmi:idref="R5"/> <Association xmi:idref="R6"/> <Association xmi:idref="R7"/> <Association xmi:idref="R8"/> <Association xmi:idref="R9"/>

<Association xmi:idref="R17"/> <Association xmi:idref="R19"/> <Association xmi:idref="R20"/> <Association xmi:idref="R21"/> <Association xmi:idref="R22"/> <Association xmi:idref="R23"/> <Association xmi:idref="R24"/> <Association xmi:idref="R25"/> <Association xmi:idref="R26"/> <Association xmi:idref="R27"/> </uml:Lifeline> … … … <uml:CombinedFragment xmi:id="FC5" name="" type="alt"> <Condition xmi:id="C1" name="Respuesta&lt;&gt;0"> <Association xmi:idref="R19"/> </Condition> </uml:CombinedFragment> … … … <uml:Association xmi:id="R1" type="Message"> <Source xmi:idref="LV1"/> <Target xmi:idref="LV2"/> <Message name="clic en administrar préstamo de acervo" kind="Signal"/> </uml:Association> … … … <uml:Association xmi:id="R19" type="Message" association="FN5"> <Source xmi:idref="LV3"/> <Target xmi:idref="LV1"/> <Message name="Message:(&quot;Acervo no disponible&quot;)" kind="Return" /> </uml:Association>

Capítulo 6 Demostración

116

<Association xmi:idref="R10"/> <Association xmi:idref="R11"/> <Association xmi:idref="R12"/> <Association xmi:idref="R13"/> <Association xmi:idref="R14"/> <Association xmi:idref="R15"/> <Association xmi:idref="R16"/>

… … … </uml:Package> </XMI.content> </xmi:XMI>

Ilustración 6-9. Documento XMI para el diagrama de secuencia de la Ilustración 6-8

A continuación se presenta en la Tabla 6-4 la trazabilidad para el diagrama de secuencia de

la Ilustración 6-8. Esta tabla muestra los elementos del escenario del caso de uso “Registrar préstamo”, a partir de los cuales se obtienen los elementos del diagrama de secuencia. Tabla 6-4. Trazabilidad para el Diagrama de secuencia del caso de uso “CU-4.1 Registrar préstamo” nivel PIM

Escenarios del Diagrama de Casos de uso CU-4 Administrar préstamo de acervo subcaso CU-4.1 Registrar préstamo a nivel PIM

Elementos del Diagrama de Secuencia para el caso de uso “CU-4.1 Registrar préstamo” a nivel PIM

La jefa de organización bibliográfica, jefe del centro de información o auxiliares de biblioteca seleccionan “Administrar préstamo de acervo”.

clic en administrar préstamo de acervo

Se muestra la ventana de “Administrar préstamo de acervo”.

crear pantalla

Posteriormente se seleccionará “Registrar préstamo”.

El sistema presentará una interfaz que permitirá registrar el préstamo.

Selecciona registrar préstamo

Introduce folio y num_control La jefa de organización bibliográfica, jefe del centro de información o auxiliares de biblioteca introducirán el folio del acervo y el número de control del usuario los cuales serán validados presionando “Aceptar”.

clic en aceptar

folio="" OR num_control="" El sistema manda un mensaje de información incompleta. Message:("Información incompleta") else Respuesta=ValidarPrestamo(folio,num_control,0) Respuesta Respuesta=1

El sistema manda un mensaje de que el préstamo ya existe.

Message:("Préstamo ya registrado") else Respuesta=.ValidarPrestamo(folio,num_control,3) Respuesta Respuesta=1

El sistema manda un mensaje de ejemplar repetido.

Message:("Ejemplar repetido") else Respuesta=ValidarUsuario(num_control) Respuesta Respuesta=0

El sistema manda un mensaje de usuario no encontrado.

Message:("Usuario no encontrado") else Respuesta=ValidarPrestamo(folio,num_control,1) Respuesta Respuesta=1

El sistema manda un mensaje de que el usuario ya tiene 3 préstamos.

Message:("El usuario ya tiene 3 prestamos") else Respuesta=ValidarAcervo(folio) Respuesta Respuesta=-1

El sistema manda un mensaje de acervo no encontrado.

Message:("Acervo no encontrado") else Respuesta<>0

El sistema manda un mensaje de acervo no disponible.

Message:("Acervo no disponible") Se introducirá la información del préstamo como: fecha de préstamo y fecha de entrega.

Introduce fecha de préstamo y fecha de entrega

clic en registrar

Capítulo 6 Demostración

117

clic en registrar Una vez introducida la información correspondiente se presiona en “Registrar”. Registra los datos El sistema presenta un mensaje de préstamo registrado. Message:("Préstamo registrado")

Después de mostrar el diagrama de secuencia, es hora de presentar los diagramas de

actividad que tienen trazabilidad con el diagrama de secuencia. El primer diagrama de actividad a mostrar es el de “Registrar” que se presenta en la

Ilustración 6-10 y posteriormente se presenta en la Ilustración 6-11 el documento XMI (§ 5.1) de dicho diagrama. Por último, en la Tabla 6-5 se presentan los elementos que dieron origen a los elementos de este diagrama, con lo que se muestra una parte del nivel PIM.

A continuación se presenta el diagrama de actividad “Registrar” a nivel PIM en la Ilustración 6-10, donde se describe una de las partes del diagrama de secuencia presentado en la Ilustración 6-8. En este diagrama de actividad, se realizan las actividades en base a las instrucciones para guardar el préstamo de acervo en la tabla “PrestamoAcervo”, además se actualiza la tabla “Acervo”, para ponerlo en estado ocupado en un determinado acervo y por último, se guarda información del préstamo en la tabla de “Estadísticas de préstamo”, de forma general es lo que presenta este diagrama. El elemento “nodo inicial” contiene “PrestamoAcervo::Registrar():default”, que significa que antes de los cuatro puntos se pone el nombre de la clase y después de los cuatro puntos va el nombre del método que se va a desarrollar y por último, después de los dos puntos irá el tipo de retorno del método.

act Registrar

PrestmoAcervo::Registrar():default

ResultSet RespuestaAcerv o String titulo=""

Principal.MBD.Actualizar("Insert into PrestamoAcerv o v alues('" +Folio+ "','" +NumControl+ "','" +FechaPrestamo+ "','"+FechaEntrega+"')")

Principal.MBD.Actualizar("update Acerv o set Estatus=true where Folio='"+Folio+"'")

RespuestaAcerv o=Principal.MBD.EjecutarQuery("select Titulo from Acerv o where Folio= '"+Folio+"'")

titulo=RespuestaAcerv o("Titulo")

Principal.MBD.Actualizar("Insert into EstadisticasPrestamos v alues('" +titulo+ "','" +FechaPrestamo+ "')")

Message:("Préstamo registrado")

[else]

[RespuestaAcervo<>""]

Ilustración 6-10. Diagrama de actividad “Registrar” a nivel PIM

En la Ilustración 6-11 se presenta el documento XMI para el diagrama de actividad

“Registrar” a nivel PIM. Para explicar la representación interna, se muestra un pequeño

Capítulo 6 Demostración

118

ejemplo de dicho diagrama. Por ejemplo, se requiere presentar la relación del elemento de “Decisión” al elemento “Merge”, relacionados a través de la condición “else”, lo cual se realiza de la siguiente manera: primero se utiliza la etiqueta “uml:DecisionNode”, la cual contiene el identificador “DN1” que representa al elemento “Decisión”, dicha etiqueta contiene otras etiquetas como “Association”, donde se especifican los identificadores de referencia hacia la etiqueta “uml:Association”. La etiqueta “uml:DecisionNode” contiene tres etiquetas “Association” que tienen los identificadores “R5”, “R6” y “R8” que son las referencias hacia cada una de las etiquetas “uml:Association”, donde se describe cada una de las relaciones del elemento “Decisión”. El identificador que define la relación del elemento “Decisión” al elemento “Merge” a través de la condición “else” es la etiqueta “uml:Association” con el identificador “R6”, esta etiqueta contiene dos etiquetas que son “Source” que tiene el identificador “DN1” que hace referencia al identificador del elemento “Decisión” y “Target” con el identificador “DN2” que hace referencia al identificador del elemento “Merge”. Las propiedades de la etiqueta “uml:Association” son “type” donde se especifica el tipo de línea con la cual se relacionan los dos elementos que es “ControlFlow” y la propiedad “name”, donde se introduce la condición “else”, referente al nombre del mensaje. Ambos elementos “Decisión” y “Merge” se representan con la etiqueta “uml:DecisionNode” respectivamente y lo que los distingue uno de otro es por la propiedad “type” de dicha etiqueta, donde se especifica si es “Decisión” o “Merge”, además de sus respectivos identificadores.

<?xml version="1.0"?><!DOCTYPE xmi:XMI SYSTEM "DTDActividad.dtd"> <xmi:XMI xmi:version="2.0" xmlns:uml="http://schema.omg.org/spec/uml/2.0" xmlns:xmi="http://schema.omg.org/spec/XMI"> <XMI.header> <XMI.model xmi.name="UML" xmi.version="2.0"/> </XMI.header> <XMI.content> <uml:Package xmi:id="Activity" name="Registrar"> <uml:InitialNode xmi:id="IN1" name="PrestamoAcervo::Registrar():default"> <Association xmi:idref="R1"/> </uml:InitialNode> … … … <uml:Activity xmi:id="AN4" name="RespuestaAcervo=Principal.MBD.EjecutarQuery(&quot;select Titulo from Acervo where Folio= '&quot;+Folio+&quot;'&quot;)"> <Association xmi:idref="R4"/> <Association xmi:idref="R5"/> </uml:Activity> … … … <uml:Activity xmi:id="AN7" name="Message:(&quot;Préstamo registrado&quot;)"> <Association xmi:idref="R10"/> <Association xmi:idref="R11"/> </uml:Activity> <uml:DecisionNode xmi:id="DN1" name="" type="Decision"> <Association xmi:idref="R5"/> <Association xmi:idref="R6"/> <Association xmi:idref="R8"/>

</uml:DecisionNode> <uml:DecisionNode xmi:id="DN1" name="" type="Merge"> <Association xmi:idref="R6"/> <Association xmi:idref="R7"/> <Association xmi:idref="R11"/> </uml:DecisionNode> <uml:FinalNode xmi:id="FN1" name=""> <Association xmi:idref="R6"/> <Association xmi:idref="R7"/> </uml:FinalNode> … … … <uml:Association xmi:id="R6" name="else" type="ControlFlow"> <Source xmi:idref="DN1"/> <Target xmi:idref="DN2"/> </uml:Association> <uml:Association xmi:id="R7" name="" type="ControlFlow"> <Source xmi:idref="DN2"/> <Target xmi:idref="FN1"/> </uml:Association> … … … <uml:Association xmi:id="R11" name="" type="ControlFlow"> <Source xmi:idref="AN7"/> <Target xmi:idref="DN2"/> </uml:Association> </uml:Package> </XMI.content> </xmi:XMI>

Ilustración 6-11. Documento XMI para el diagrama de actividad de la Ilustración 6-10

Capítulo 6 Demostración

119

Una vez presentado el diagrama de actividad “Registrar” y su representación interna, se procede a mostrar la trazabilidad de dicho diagrama en la Tabla 6-5, donde los elementos parten de un fragmento del diagrama de secuencia, ya que de este diagrama, se obtuvieron dos diagramas de actividad, de los cuales aquí se presentan los elementos del diagrama de actividad “Registrar” que surgieron del diagrama de secuencia.

Tabla 6-5. Trazabilidad para el Diagrama de actividad “Registrar” nivel PIM

Elementos del Diagrama de Secuencia para el caso de uso “CU-4.1 Registrar préstamo” a nivel PIM

Elementos del Diagrama de actividad “Registrar” a nivel PIM

Introduce fecha de préstamo y fecha de entrega clic en registrar

PrestamoAcervo::Registrar():default

ResultSet RespuestaAcervo String titulo="" Principal.MBD.Actualizar("Insert into PrestamoAcervo values('" +Folio+ "','" +NumControl+ "','" +FechaPrestamo+ "','" +FechaEntrega+"')") Principal.MBD.Actualizar("update Acervo set Estatus=true where Folio='"+Folio+"'") RespuestaAcervo=Principal.MBD.EjecutarQuery ("select Titulo from Acervo where Folio= '"+Folio+"'") RespuestaAcervo<>”” titulo=RespuestaAcervo("Titulo")

Registra los datos

Principal.MBD.Actualizar("Insert into EstadisticasPrestamos values('" +titulo+ "','" +FechaPrestamo+ "')")

Message:("Préstamo registrado") Message:("Préstamo registrado")

El segundo diagrama de actividad a mostrar es el de “AceptarRegistro” que se presenta en

la Ilustración 6-12 y posteriormente se presenta en la Ilustración 6-13 el documento XMI (§ 5.1) de dicho diagrama.

Por último, en la Tabla 6-6 se presentan los elementos que dieron origen a los elementos

de este diagrama, con lo que se muestra otra parte del nivel PIM.

En la Ilustración 6-12, se presenta el diagrama de actividad “AceptarRegistro” que representa las instrucciones para verificar cada una de las alternativas que pudieran impedir el préstamo de acervo para pasarlo a registrar. El elemento “nodo inicial” contiene “PrestamoAcervo::AceptarRegistro():default”, que significa que antes de los cuatro puntos se pone el nombre de la clase y después de los cuatro puntos va el nombre del método que se va a desarrollar y por último, después de los dos puntos irá el tipo de retorno del método.

Capítulo 6 Demostración

120

act AceptarRegistro

PrestamoAcervo::AceptarRegistro():default

Respuesta=Principal.MBD.ValidarPrestamo(Folio,NumControl,0)

Respuesta=Principal.MBD.ValidarUsuario(NumControl)

Message:("Usuario no encontrado")

Message:("Préstamo ya registrado")

Respuesta=Principal.MBD.ValidarPrestamo(Folio,NumControl,1)

Message:("El usuario ya tiene 3 prestamos")

Respuesta=Principal.MBD.ValidarAcervo(Folio)

Message:("Acervo no encontrado")

Message:("Acerv o no disponible")

Respuesta=Principal.MBD.ValidarPrestamo(jTextFieldFolio,jTextFieldNumControl,3)

Message:("Ejemplar repetido")

Message:("Información incompleta")

[Respuesta==1][else]

[Respuesta==0]

[else]

[Respuesta==1]

[else]

[Respuesta==-1]

[else]

[else]

[Respuesta<>0]

[else]

[Respuesta==1]

[folio="" OR num_control=""]

Ilustración 6-12. Diagrama de actividad “AceptarRegistro” a nivel PIM

A continuación en la Ilustración 6-13, se presenta la representación interna del diagrama

de actividad “AceptarRegistro”. Dicha representación interna se explica a través de unos elementos del diagrama de actividad. Por ejemplo, el elemento “nodo inicial” se relaciona con el elemento “Decisión” al principio del diagrama de actividad. Para plasmar esto en la representación interna, se realizó lo siguiente: se especifica la etiqueta “uml:InitialNode” para representar al elemento “nodo inicial”, donde va a contener el identificador “IN1” y en la propiedad “name” tiene “PrestamoAcervo::AceptarRegistro():default”, posteriormente esta etiqueta contiene a la etiqueta “Association” para guardar la referencia “R1” hacia la etiqueta “uml:Association” que tiene la descripción de la relación de “nodo inicial” con el nodo de “Decisión”.

Después se especifica la etiqueta “uml:DecisionNode” con el identificador “DN1” y el

tipo de nodo de decisión en la propiedad “type” de esta etiqueta es “Decision”, esta etiqueta al igual que la etiqueta “uml:InitialNode” contendrá la etiqueta “Association” con el identificador de referencia “R1” hacia la etiqueta “uml:Association”, donde dicha etiqueta tiene el identificador “R1” y en la propiedad “type” el tipo de línea es “ControlFlow”, esa

Capítulo 6 Demostración

121

etiqueta también contiene dos etiquetas que son “Source” y “Target” que representan el identificador del origen y destino de la relación, que es “IN1” que hace referencia a la etiqueta “uml:InitialNode” y “DN1” que hace referencia a la etiqueta “uml:DecisionNode” respectivamente.

<?xml version="1.0"?><!DOCTYPE xmi:XMI SYSTEM "DTDActividad.dtd"> <xmi:XMI xmi:version="2.0" xmlns:uml="http://schema.omg.org/spec/uml/2.0" xmlns:xmi="http://schema.omg.org/spec/XMI"> <XMI.header> <XMI.model xmi.name="UML" xmi.version="2.0"/> </XMI.header> <XMI.content> <uml:Package xmi:id="Activity" name="AceptarRegistro"> <uml:InitialNode xmi:id="IN1" name="PrestamoAcervo ::AceptarRegistro():default"> <Association xmi:idref="R1"/> </uml:InitialNode> ... ... ... <uml:Activity xmi:id="AN3" name="Respuesta=Principal.MBD.ValidarUsuario(NumControl)"> <Association xmi:idref="R24"/> <Association xmi:idref="R5"/> </uml:Activity> <uml:Activity xmi:id="AN4" name="Message:(&quot; Usuario no encontrado&quot;)"> <Association xmi:idref="R6"/> <Association xmi:idref="R18"/> </uml:Activity> <uml:Activity xmi:id="AN5" name="Respuesta=Principal.MBD.ValidarPrestamo(Folio,NumControl,1)"> <Association xmi:idref="R7"/> <Association xmi:idref="R8"/> </uml:Activity> ... ... ... <uml:DecisionNode xmi:id="DN1" name="" type="Decision"> <Association xmi:idref="R1"/> <Association xmi:idref="R2"/> <Association xmi:idref="R3"/> </uml:DecisionNode> ... ...

... <uml:DecisionNode xmi:id="DN6" name="" type="Merge"> <Association xmi:idref="R17"/> <Association xmi:idref="R18"/> <Association xmi:idref="R19"/> ... ... ... </uml:DecisionNode> ... ... ... <uml:FinalNode xmi:id="FN1" name=""> <Association xmi:idref="R21"/> </uml:FinalNode> ... ... ... <uml:Association xmi:id="R1" name="" type="ControlFlow"> <Source xmi:idref="IN1"/> <Target xmi:idref="DN1"/> </uml:Association> ... ... ... <uml:Association xmi:id="R18" name="" type="ControlFlow"> <Source xmi:idref="AN4"/> <Target xmi:idref="DN6"/> </uml:Association> ... ... ... <uml:Association xmi:id="R21" name="" type="ControlFlow"> <Source xmi:idref="DN6"/> <Target xmi:idref="FN1"/> </uml:Association> ... ... ... </uml:Package> </XMI.content> </xmi:XMI>

Ilustración 6-13. Documento XMI para el diagrama de actividad de la Ilustración 6-12

En la Tabla 6-6, se muestra la trazabilidad para el diagrama de actividad

“AceptarRegistro” de la Ilustración 6-12. En dicha tabla, se presentan los elementos que provienen de los fragmentos restantes del diagrama de secuencia mostrado en la Ilustración 6-8 (la otra parte de este diagrama, se presento en el diagrama de actividad “Registrar”) a partir de los cuales se obtuvieron los elementos del diagrama de actividad “AceptarRegistro”.

Capítulo 6 Demostración

122

Tabla 6-6. Trazabilidad para el Diagrama de actividad “AceptarRegistro” nivel PIM Elementos del Diagrama de Secuencia para el caso de uso “CU-4.1 Registrar préstamo” a nivel PIM

Elementos del Diagrama de actividad “AceptarRegistro” a nivel PIM

clic en administrar préstamo de acervo crear pantalla Selecciona registrar préstamo Introduce folio y num_control clic en aceptar

PrestamoAcervo::AceptarRegistro():default

folio="" OR num_control="" folio="" OR num_control="" Message:("Información incompleta") Message:("Información incompleta") else else

Respuesta=ValidarPrestamo(folio,num_control,0) Respuesta

Respuesta=Principal.MBD.ValidarPrestamo (Folio,NumControl,0)

Respuesta=1 Respuesta==1 Message:("Préstamo ya registrado") Message:("Préstamo ya registrado") else else Respuesta=.ValidarPrestamo(folio,num_control,3) Respuesta

Respuesta=Principal.MBD.ValidarPrestamo (jTextFieldFolio,jTextFieldNumControl,3)

Respuesta=1 Respuesta==1 Message:("Ejemplar repetido") Message:("Ejemplar repetido") else else Respuesta=ValidarUsuario(num_control) Respuesta

Respuesta= Principal.MBD.ValidarUsuario(NumControl)

Respuesta=0 Respuesta==0 Message:("Usuario no encontrado") Message:("Usuario no encontrado") else else Respuesta=ValidarPrestamo(folio,num_control,1) Respuesta

Respuesta= Principal.MBD.ValidarPrestamo (Folio,NumControl,1)

Respuesta=1 Respuesta==1 Message:("El usuario ya tiene 3 prestamos") Message:("El usuario ya tiene 3 prestamos") else else Respuesta=ValidarAcervo(folio) Respuesta

Respuesta= Principal.MBD.ValidarAcervo(Folio)

Respuesta=-1 Respuesta==-1 Message:("Acervo no encontrado") Message:("Acervo no encontrado") else else Respuesta<>0 Respuesta<>0 Message:("Acervo no disponible") Message:("Acervo no disponible")

6.3.1.5 Cruce de la frontera PIM-PSM Esta frontera se inició con la transformación del diagrama de clases a nivel PIM al diagrama de clases del nivel PSM, en la cual las clases que se muestran están enfocadas solamente a mostrar la parte de “Administrar préstamo de acervo” que se desarrolló en la demostración del Reporte Técnico RT-DCC-1-2007.

Después, del diagrama de base de datos del nivel PIM se obtuvo el diagrama de bases de datos del nivel PSM y por último, del diagrama de actividad (conformado por 8 diagramas) del nivel PIM se obtuvo el diagrama de actividad (conformado por 8 diagramas) del nivel PSM.

Es importante mostrar los tipos de datos, operadores y otras definiciones que se

especificaron, para utilizarlas a nivel PIM en los diagramas, para realizar la trazabilidad con el nivel PSM, que a continuación se muestran:

Capítulo 6 Demostración

123

Tipos de datos Nombre Descripción

String Cadena de caracteres (char, string, etc.) Integer Número entero (int, long, etc.) Real Número real (float, double, etc.) Bolean Falso o verdadero Date Tipo fecha Text Tipo texto, se utilizara primordialmente para la descripción de la base de datos.

Operadores aritméticos, de comparación y lógicos Símbolo Descripción

+ Suma - Resta * Multiplicación / División =, == Igual de asignación , igual de comparación <> Diferente <,>,<=,>= Menor que, mayor que, menor o igual que, mayor o igual que AND La expresión será verdadera si y sólo si ambas expresiones son verdades. OR La expresión será verdadera si al menos una expresión es verdadera.

Otros Nombre Descripción

Default Es como tipo void en C++ o java, dependiendo del lenguaje es el default que tendrá a nivel PSM.

else Significa “sino” en un condicional, ya sea diagramas de secuencia o actividad. “” Vació ResultSet Proporciona el acceso a una tabla de datos generados mediante la ejecución de una

sentencia. Message Que significa que se va a mostrar un mensaje en el sistema, por ejemplo, cuando en C++

se pone cout ó en jBuilder se pone JOptionPanel.ShowMessageDialog, etc.

En la Ilustración 6-14 y en la Ilustración 6-16 se presentan los diagramas de actividad a nivel PSM para mostrar como se obtuvieron a partir de los diagramas de actividad del nivel PIM, donde con todo esto se ve reflejado un fragmento de la frontera PIM-PSM.

A continuación se presenta la Ilustración 6-14 del diagrama de actividad “Registrar” a nivel PSM que se obtiene a partir del diagrama de actividad “Registrar” a nivel PIM. El diagrama de actividad a nivel PSM proviene de la clase “PrestamoAcervo” del método “jButtonRegistrar”.

Posteriormente, a dicha ilustración se muestra en la Ilustración 6-15 el documento XMI (§

5.1) de dicho diagrama y por último, en la Tabla 6-7 se presentan los elementos que dieron origen a los elementos de este diagrama, con lo que se muestra una parte de la frontera PIM-PSM.

De la misma forma en que se mostró el diagrama de actividad “Registrar” a nivel PIM

(Ilustración 6-10), se presenta el diagrama de actividad “Registrar” a nivel PSM en la Ilustración 6-14, donde la diferencia entre ambos es que en el nivel PSM, se realizaron las instrucciones en cada uno de los elementos de acuerdo al lenguaje java y a PostgreSQL para la base de datos, además que se agrega un elemento más a este diagrama con respecto al manejo de fechas.

Capítulo 6 Demostración

124

act Registrar

PrestamoAcervo::jButtonRegistrar_actionPerformed(e:ActionEvent):void

Date FechaA = this.jDateChooserFechaEntrega.getDate(); SimpleDateFormat Formato = new SimpleDateFormat("yyyy/MM/dd");

String FechaEntrega = Formato.format(FechaA);

ResultSet RespuestaAcerv o; String titulo="";

Principal.MBD.Actualizar("Insert into PrestamoAcerv o v alues('" +jTextFieldFolio.getText() + "','" +jTextFieldNumControl.getText() + "','" +jTextFieldFechaPrestamo.getText() + "','" +FechaEntrega+ "')");

Principal.MBD.Actualizar("update Acerv o set Estatus=true where Folio='"+jTextFieldFolio.getText()+"'");

RespuestaAcerv o=Principal.MBD.EjecutarQuery("select Titulo from Acerv o where Folio= '"+ jTextFieldFolio.getText()+"'");

titulo=RespuestaAcerv o.getString("Titulo");

Principal.MBD.Actualizar("Insert into EstadisticasPrestamos v alues('" +titulo+ "','" +jTextFieldFechaPrestamo.getText() + "')");

JOptionPane.showMessageDialog(null,"Préstamo registrado", "Sistema Biblioteca",JOptionPane.INFORMATION_MESSAGE);

[else]

[RespuestaAcervo.next()]

Ilustración 6-14. Diagrama de actividad “Registrar” a nivel PSM

En la Ilustración 6-15 se muestra el documento XMI para el diagrama de actividad “Registrar” a nivel PSM, donde se representan los mismos elementos que en el diagrama de actividad “Registrar” a nivel PIM (Ilustración 6-10), pero agregando un elemento más que tiene este diagrama a nivel PSM con respecto al diagrama del nivel PIM, por lo cual la diferencia del diagrama a nivel PIM con el diagrama a nivel PSM es en cuanto a los identificadores de cada elemento y de sus relaciones, ya que se añadió un nuevo elemento, se modifican, así como la información contenida en cada etiqueta, cambia debido a que ahora está enfocada hacia el lenguaje “java” y al manejador de la base de datos en “PostgreSQL”.

<?xml version="1.0"?><!DOCTYPE xmi:XMI SYSTEM "DTDActividad.dtd"> <xmi:XMI xmi:version="2.0" xmlns:uml="http://schema.omg.org/spec/uml/2.0" xmlns:xmi="http://schema.omg.org/spec/XMI"> <XMI.header> <XMI.model xmi.name="UML" xmi.version="2.0"/> </XMI.header> <XMI.content> <uml:Package xmi:id="Activity" name="Registrar"> <uml:InitialNode xmi:id="IN1" name="PrestamoAcervo::jButtonRegistrar_actionPerformed(e:ActionEvent):void"> <Association xmi:idref="R1"/> </uml:InitialNode> … … … <uml:Activity xmi:id="AN5" name="RespuestaAcervo=Principal.MBD.EjecutarQuery(&quot;select Titulo from Acervo where Folio= '&quot;+

<Association xmi:idref="R6"/> <Association xmi:idref="R7"/> <Association xmi:idref="R9"/> </uml:DecisionNode> <uml:DecisionNode xmi:id="DN1" name="" type="Merge"> <Association xmi:idref="R7"/> <Association xmi:idref="R8"/> <Association xmi:idref="R14"/> </uml:DecisionNode> <uml:FinalNode xmi:id="FN1" name=""> <Association xmi:idref="R8"/> </uml:FinalNode> … … ... <uml:Association xmi:id="R7" name="else" type="ControlFlow"> <Source xmi:idref="DN1"/> <Target xmi:idref="DN2"/> </uml:Association> <uml:Association xmi:id="R8" name=""

Capítulo 6 Demostración

125

jTextFieldFolio.getText()+&quot;'&quot;);"> <Association xmi:idref="R5"/> <Association xmi:idref="R6"/> </uml:Activity> … … … <uml:Activity xmi:id="AN10" name="JOptionPane.showMessageDialog(null,&quot;Préstamo registrado&quot;, &quot;Sistema Biblioteca&quot;,JOptionPane.INFORMATION_MESSAGE);"> <Association xmi:idref="R11"/> <Association xmi:idref="R14"/> </uml:Activity> <uml:DecisionNode xmi:id="DN1" name="" type="Decision">

type="ControlFlow"> <Source xmi:idref="DN2"/> <Target xmi:idref="FN1"/> </uml:Association> ... ... ... <uml:Association xmi:id="R14" name="" type="ControlFlow"> <Source xmi:idref="AN10"/> <Target xmi:idref="DN2"/> </uml:Association> </uml:Package> </XMI.content> </xmi:XMI>

Ilustración 6-15. Documento XMI para el diagrama de actividad de la Ilustración 6-14

Una vez obtenido el diagrama de actividad “Registrar” a nivel PSM y su representación

interna (documento XMI), es necesario mostrar los elementos del diagrama de actividad “Registrar” a nivel PIM, de los cuales surgieron los elementos de este diagrama a nivel PSM, por ello en la Tabla 6-7, se presenta dicha trazabilidad.

Tabla 6-7. Trazabilidad para el Diagrama de actividad “Registrar” a nivel PSM Elementos del Diagrama de actividad “Registrar” a nivel PIM

Diagrama de actividad “Registrar” a nivel PSM

PrestmoAcervo::Registrar():default PrestamoAcervo::jButtonRegistrar_ actionPerformed(e:ActionEvent):void

ResultSet RespuestaAcervo String titulo="" ResultSet RespuestaAcervo; String titulo=""; Date FechaA = this.jDateChooserFechaEntrega. getDate(); SimpleDateFormat Formato = new SimpleDateFormat("yyyy/MM/dd"); S String FechaEntrega = Formato.format(FechaA);

Principal.MBD.Actualizar("Insert into PrestamoAcervo values('" +Folio+ "','" +NumControl+ "','" +FechaPrestamo+ "','" +FechaEntrega+"')")

Principal.MBD.Actualizar("Insert into PrestamoAcervo values('"+jTextFieldFolio.getText() + "','" +jTextFieldNumControl.getText() + "','" + jTextFieldFechaPrestamo.getText() + "','" + FechaEntrega+ "')");

Principal.MBD.Actualizar("update Acervo set Estatus=true where Folio='"+Folio+"'")

Principal.MBD.Actualizar("update Acervo set Estatus=true where Folio='"+jTextFieldFolio.getText()+"'");

RespuestaAcervo= Principal.MBD.EjecutarQuery("select Titulo from Acervo where Folio= '"+Folio+"'")

RespuestaAcervo=Principal.MBD.EjecutarQuery(" select Titulo from Acervo where Folio= '"+ jTextFieldFolio.getText()+"'");

RespuestaAcervo<>”” RespuestaAcervo.next() titulo=RespuestaAcervo("Titulo") titulo=RespuestaAcervo.getString("Titulo"); Principal.MBD.Actualizar("Insert into EstadisticasPrestamos values('" +titulo+ "','" +FechaPrestamo+ "')")

Principal.MBD.Actualizar("Insert into EstadisticasPrestamos values('" +titulo+ "','" + jTextFieldFechaPrestamo.getText() + "')");

Message:("Préstamo registrado") JOptionPane.showMessageDialog (null, "Préstamo registrado", "Sistema Biblioteca", JOptionPane.INFORMATION_MESSAGE);

A continuación se presenta la Ilustración 6-16 del diagrama de actividad

“AceptarRegistro” (nivel PSM) que se obtuvo a partir del diagrama de actividad “AceptarRegistro” (nivel PIM). Donde la diferencia entre estos diagramas es el tipo de datos y instrucciones que se manejaron, a nivel PSM son de acuerdo al lenguaje java y al manejador de base de datos de PostGreSQL y a nivel PIM no se enfocaron a ningún lenguaje, ni manejador, ya que es un nivel independiente de plataforma. El diagrama de actividad a nivel PSM proviene de la clase “PrestamoAcervo” del método “jButtonAceptarRegistro”. En este

Capítulo 6 Demostración

126

diagrama a nivel PSM se agregaron dos elementos (con respecto al manejo de fechas) más que no se tenían a nivel PIM. Posteriormente, a dicha ilustración se muestra en la Ilustración 6-17 el documento XMI (§ 5.1) de dicho diagrama y por último, en la Tabla 6-8 se presentan los elementos que dieron origen a los elementos de este diagrama, con lo que se muestra otra parte de la frontera PIM-PSM.

act AceptarRegistro

PrestamoAcervo::jButtonAceptarRegistro(e:ActionEvent):void

JOptionPane.showMessageDialog(null,"Información incompleta", "Sistema

Biblioteca",JOptionPane.INFORMATION_MESSAGE);

Respuesta=Principal.MBD.ValidarPrestamo(jTextFieldFolio.getText(),jTextFieldNumControl.getText(),0);

Respuesta=Principal.MBD.ValidarUsuario(jTextFieldNumControl.getText());

JOptionPane.showMessageDialog(null,"Usuario noencontrado","Sistema

Biblioteca",JOptionPane.INFORMATION_MESSAGE);

JOptionPane.showMessageDialog(null,"Préstamo yaregistrado", "Sistema

Biblioteca",JOptionPane.INFORMATION_MESSAGE);

Respuesta=Principal.MBD.ValidarPrestamo(jTextFieldFolio.getText(),jTextFieldNumControl.getText(),1);

JOptionPane.showMessageDialog(null,"El usuario yatiene 3 prestamos", "Sistema

Biblioteca",JOptionPane.INFORMATION_MESSAGE);

Respuesta=Principal.MBD.ValidarAcerv o(jTextFieldFolio.getText());

JOptionPane.showMessageDialog(null,"Acerv o noencontrado","Sistema

Biblioteca",JOptionPane.INFORMATION_MESSAGE);

Date FechaActual= new Date();

JOptionPane.showMessageDialog(null,"Acervo nodisponible","Sistema

Biblioteca",JOptionPane.INFORMATION_MESSAGE);

SimpleDateFormat FormatoFecha=new SimpleDateFormat("yyyy/MM/dd"); jTextFieldFechaPrestamo.setText(FormatoFecha.format(FechaActual));

Respuesta=Principal.MBD.ValidarPrestamo(jTextFieldFolio.getText(),jTextFieldNumControl.getText(),3);

JOptionPane.showMessageDialog(null,"Ejemplarrepetido", "Sistema

Biblioteca",JOptionPane.INFORMATION_MESSAGE);

[else]

[else]

[Respuesta==1]

[Respuesta==0]

[else]

[Respuesta==1]

[else]

[Respuesta==-1]

[jTextFieldFolio.getText().equals("") II jTextFieldNumControl.getText().equals("")]

[else]

[Respuesta<>0]

[else]

[else]

[Respuesta==1]

Ilustración 6-16. Diagrama de actividad “AceptarRegistro” a nivel PSM

En la Ilustración 6-17, se presenta el documento XMI para el diagrama de actividad “AceptarRegistro” a nivel PSM, donde se representan los mismos elementos que en el diagrama de actividad “AceptarRegistro” a nivel PIM (Ilustración 6-12), pero añadiendo dos elementos más que tiene este diagrama a nivel PSM. Lo único que diferencia a dichos diagramas en el documento XMI es con respecto a los identificadores de cada elemento y de sus relaciones, así como la forma en que se expresa la información contenida en cada elemento, está de acuerdo al lenguaje java y al manejador PostgreSQL (para la base de datos).

Capítulo 6 Demostración

127

<?xml version="1.0"?><!DOCTYPE xmi:XMI SYSTEM "DTDActividad.dtd"> <xmi:XMI xmi:version="2.0" xmlns:uml="http://schema.omg.org/spec/uml/2.0" xmlns:xmi="http://schema.omg.org/spec/XMI"> <XMI.header> <XMI.model xmi.name="UML" xmi.version="2.0"/> </XMI.header> <XMI.content> <uml:Package xmi:id="Activity" name="AceptarRegistro"> <uml:InitialNode xmi:id="IN1" name="PrestamoAcervo::jButtonAceptarRegistro(e:ActionEvent):void"> <Association xmi:idref="R1"/> </uml:InitialNode> … … … <uml:Activity xmi:id="AN4" name="Respuesta=Principal.MBD.ValidarUsuario(jTextFieldNumControl.getText());"> <Association xmi:idref="R29"/> <Association xmi:idref="R7"/> </uml:Activity> <uml:Activity xmi:id="AN5" name="JOptionPane.showMessageDialog(null,&quot;Usuario no encontrado&quot;,&quot;Sistema Biblioteca&quot;,JOptionPane.INFORMATION_MESSAGE);"> <Association xmi:idref="R8"/> <Association xmi:idref="R22"/> </uml:Activity> <uml:Activity xmi:id="AN6" name="Respuesta=Principal.MBD.ValidarPrestamo(jTextFieldFolio.getText(),jTextFieldNumControl.getText(),1);"> <Association xmi:idref="R9"/> <Association xmi:idref="R10"/> </uml:Activity> … … … <uml:DecisionNode xmi:id="DN1" name="" type="Decision"> <Association xmi:idref="R1"/> <Association xmi:idref="R2"/>

<Association xmi:idref="R3"/> </uml:DecisionNode> … … … <uml:DecisionNode xmi:id="DN7" name="" type="Merge"> <Association xmi:idref="R20"/> <Association xmi:idref="R21"/> <Association xmi:idref="R22"/> <Association xmi:idref="R23"/> <Association xmi:idref="R24"/> <Association xmi:idref="R25"/> <Association xmi:idref="R26"/> <Association xmi:idref="R30"/> </uml:DecisionNode> … … … <uml:FinalNode xmi:id="FN1" name=""> <Association xmi:idref="R26"/> </uml:FinalNode> … ... ... <uml:Association xmi:id="R22" name="" type="ControlFlow"> <Source xmi:idref="AN5"/> <Target xmi:idref="DN7"/> </uml:Association> ... ... ... <uml:Association xmi:id="R26" name="" type="ControlFlow"> <Source xmi:idref="DN7"/> <Target xmi:idref="FN1"/> </uml:Association> ... … … </uml:Package> </XMI.content> </xmi:XMI>

Ilustración 6-17. Documento XMI para el diagrama de actividad de la Ilustración 6-16

En la Tabla 6-8, se muestra la trazabilidad para el diagrama de actividad

“AceptarRegistro” a nivel PSM, de acuerdo a los elementos del diagrama de actividad “AceptarRegistro” a nivel PIM, surgen los elementos de este diagrama a nivel PSM.

Tabla 6-8. Trazabilidad para el Diagrama de actividad “AceptarRegistro” a nivel PSM Elementos del Diagrama de actividad “AceptarRegistro” a nivel PIM

Diagrama de actividad “AceptarRegistro” a nivel PSM

PrestamoAcervo::AceptarRegistro():default PrestamoAcervo::jButtonAceptarRegistro (e:ActionEvent):void

folio="" OR num_control="" jTextFieldFolio.getText().equals("") II jTextFieldNumControl.getText().equals("")

Message:("Información incompleta") JOptionPane.showMessageDialog(null," Información incompleta", "Sistema Biblioteca", JOptionPane.INFORMATION_MESSAGE);

else else Respuesta= Principal.MBD.ValidarPrestamo(Folio,NumControl,0)

Respuesta=Principal.MBD.ValidarPrestamo (jTextFieldFolio.getText(), jTextFieldNumControl.getText(),0);

Capítulo 6 Demostración

128

Respuesta==1 Respuesta==1 Message:("Préstamo ya registrado") JOptionPane.showMessageDialog(null,"Préstamo ya

registrado", "Sistema Biblioteca", JOptionPane.INFORMATION_MESSAGE);

else else Respuesta=Principal.MBD.ValidarPrestamo (jTextFieldFolio,jTextFieldNumControl,3)

Respuesta=Principal.MBD.ValidarPrestamo (jTextFieldFolio.getText(), jTextFieldNumControl.getText(),3);

Respuesta==1 Respuesta==1 Message:("Ejemplar repetido") JOptionPane.showMessageDialog(null,"Ejemplar repetido",

"Sistema Biblioteca", JOptionPane.INFORMATION_MESSAGE);

else else Respuesta= Principal.MBD.ValidarUsuario(NumControl) Respuesta=Principal.MBD.ValidarUsuario

(jTextFieldNumControl.getText()); Respuesta==0 Respuesta==0 Message:("Usuario no encontrado") JOptionPane.showMessageDialog(null,"Usuario no

encontrado","Sistema Biblioteca", JOptionPane.INFORMATION_MESSAGE);

else else Respuesta= Principal.MBD.ValidarPrestamo(Folio,NumControl,1)

Respuesta=Principal.MBD.ValidarPrestamo (jTextFieldFolio.getText(), jTextFieldNumControl.getText(),1);

Respuesta==1 Respuesta==1 Message:("El usuario ya tiene 3 prestamos") JOptionPane.showMessageDialog(null,"El usuario ya tiene 3

prestamos", "Sistema Biblioteca" ,JOptionPane.INFORMATION_MESSAGE);

else else Respuesta= Principal.MBD.ValidarAcervo(Folio) Respuesta=Principal.MBD.ValidarAcervo

(jTextFieldFolio.getText()); Respuesta==-1 Respuesta==-1 Message:("Acervo no encontrado") JOptionPane.showMessageDialog(null,"Acervo no

encontrado","Sistema Biblioteca", JOptionPane.INFORMATION_MESSAGE);

else else Respuesta<>0 Respuesta<>0 Message:("Acervo no disponible") JOptionPane.showMessageDialog(null,"Acervo no

disponible","Sistema Biblioteca", JOptionPane.INFORMATION_MESSAGE); else Date FechaActual= new Date();

(Sirve para poner la fecha de préstamo actual, sirviendo para la captura de información)

SimpleDateFormat FormatoFecha=new SimpleDateFormat("yyyy/MM/dd"); jTextFieldFechaPrestamo.setText (FormatoFecha.format(FechaActual));

6.3.1.6 Nivel PSM Este nivel se conformó de los elementos obtenidos en el nivel PIM. El desarrollo de este nivel esta dirigido por el lenguaje de programación de “java”, la base de datos por “PostgreSQL” y el ambiente de desarrollo por “JBuilder”.

Este nivel se inició con el diagrama de base de datos a nivel PSM que se obtuvo del diagrama de base de datos a nivel PIM, donde intervienen cuestiones de tipos más específicos de acuerdo a “PostgreSQL”.

Posteriormente, el diagrama de clases a nivel PSM se obtuvo a partir del diagrama de

clases del nivel PIM, en el cual se agregan más relaciones y clases debido al ambiente en el que se está desarrollando (JBuilder), ya que se agregan clases prefabricadas necesarias para el desarrollo del sistema.

Capítulo 6 Demostración

129

Por último, los diagramas de actividad a nivel PSM se obtuvieron de los diagramas de actividad a nivel PIM, de igual forma, se consideran los detalles de implementación necesarios en el manejo de las instrucciones de acuerdo al lenguaje y ambiente de desarrollo para el sistema de biblioteca.

Para bosquejar una parte de los diagramas utilizados en este nivel, a continuación se

presenta en la Ilustración 6-18 el diagrama de clases que en la clase “PrestamoAcervo” incluye los métodos “jButtonRegistrar” y “jButtonAceptarRegistro” que provienen (son trazables) desde el diagrama de clases a nivel PIM, de los métodos “Registro” y “AceptarRegistro” (desarrollados en los diagramas de actividad mostrados en la sección anterior). Posteriormente, a dicha ilustración, se muestra en la Ilustración 6-19 el documento XMI (§ 5.1) de dicho diagrama y por último, en la Tabla 6-9 se presentan los elementos que dieron origen a los elementos de este diagrama, con lo que se muestra una parte del nivel PSM.

En la Ilustración 6-18, se muestra el diagrama de clases a nivel PSM, con respecto a todas

las clases que intervienen en dicho diagrama para mostrar la parte de “Préstamo de Acervo”, por lo cual no se mencionan las clases usuario, acervo, convenio, necesidades bibliográficas, préstamo interbibliotecario y revista, debido a que esta demostración está enfocada solamente a “Administrar préstamo de acervo” y específicamente en este capítulo a “Registro de préstamo”. En dicha ilustración las clases que tiene el ambiente de “JBuilder” son “JFrame” y “JDialog”. La clase de “SistemaBiblioteca” es la clase que se crea una vez proporcionados los datos para el proyecto en “JBuilder”, esta clase contiene al “main” y es donde se manda llamar a “IniciarSesion”, que es la clase que representa la captura del tipo de usuario que quiere ingresar, la clave y contraseña con las que iniciará el sistema. Las clases “ManejoVentanas” y “ModeloTabla” se utilizan para dar formateo a las ventanas y tablas que se presenten en el sistema de biblioteca. La clase “Principal” se utiliza para presentar todas las opciones a las que puede tener acceso un determinado tipo de usuario y por último la clase “ManejoBD” contiene los métodos necesarios para conectarse o desconectarse de la base de datos, así como para validar, guardar, consultar o modificar información de la base de datos.

Capítulo 6 Demostración

130

Ilustración 6-18. Diagrama de Clases nivel PSM

Capítulo 6 Demostración

131

En la Ilustración 6-19, se representa el documento XMI para el diagrama de clases a nivel PSM, el cual se explica con el siguiente ejemplo. Se quiere especificar la clase “PrestamoAcervo” y la clase “Principal”, así como la relación entre ellas en el documento XMI del diagrama de clases. Primero, es necesario representar cada una de las clases a través de la etiqueta “uml:Class”, donde la primera clase tiene el identificador “C8”, cuya propiedad “name” contiene “PrestamoAcervo” y además en esta etiqueta se especifican otras propiedades como la visibilidad, etc. y otras etiquetas que tiene esta etiqueta son “uml:Attribute” y “uml:Operation”, donde se colocan por cada una de estas etiquetas los atributos y métodos de la clase con sus propiedades respectivamente. La segunda clase tiene el identificador “C5” y en la propiedad “name” tiene el nombre de la clase “Principal”. Ambas clases “PrestamoAcervo” y “Principal” tienen la etiqueta “Association”, donde se tiene el identificador “R10” que es la referencia hacia la etiqueta “uml:Association”, que contiene la descripción de la relación entre estas clases, a través de las etiquetas “Source” y “Target”, que tienen los identificadores “C8” y “C5” respectivamente a las clases mencionadas y por último la propiedad del tipo de relación se especifica en la propiedad “type” como “Dependency” de la etiqueta “uml:Association”.

<?xml version="1.0"?><!DOCTYPE xmi:XMI SYSTEM "DTDClases.dtd"> <xmi:XMI xmi:version="2.0" xmlns:uml="http://schema.omg.org/spec/uml/2.0" xmlns:xmi="http://schema.omg.org/spec/XMI"> <XMI.header> <XMI.model xmi.name="UML" xmi.version="2.0"/> </XMI.header> <XMI.content> <uml:Package xmi:id="Class" name="Class"> … … … <uml:Class xmi:id="C5" name="Principal" isAbstract="false" Visibility="Public" isDerived="false" isRoot="false"> <Association xmi:idref="R5" /> <Association xmi:idref="R6"/> <Association xmi:idref="R7"/> <Association xmi:idref="R8"/> <Association xmi:idref="R10"/> <Association xmi:idref="R11"/> </uml:Class> … … … <uml:Class xmi:id="C8" name="PrestamoAcervo" isAbstract="false" Visibility="Public" isDerived="false" isRoot="false"> <uml:Attribute xmi:id="A1" type="JTextField" name="jTextFieldFolio" visibility="packageLocal"/> … … ... <uml:Attribute xmi:id="A6" type="JTextField" name="jTextFieldFechaEntrega" visibility="packageLocal"/> ... ... ... <uml:Attribute xmi:id="A9" type="JTextField" name="jTextFieldFechaPrestamo" visibility="packageLocal"/>... ...

... <uml:Attribute xmi:id="A54" type="jTextField" name="jTextFieldNumControl" visibility="packageLocal"/> ... ... ... <uml:Operation xmi:id="O7" type="void" name="jButtonAceptarRegistro_actionPerformed" visibility="Public"/> <uml:Operation xmi:id="O8" type="void" name="jButtonRegistrar_actionPerformed" visibility="Public"/> <Association xmi:idref="R4" /> <Association xmi:idref="R9"/> <Association xmi:idref="R10"/> <Association xmi:idref="R11"/> <Association xmi:idref="R12"/> </uml:Class> <uml:Class xmi:id="C9" name="ModeloTabla" isAbstract="false" Visibility="Public" isDerived="false" isRoot="false"> <Association xmi:idref="R12" /> </uml:Class> ... ... ... <uml:Association xmi:id="R10" name="" Direction="Source-Destination" type="Dependency"> <Source xmi:idref="C8"/> <Target xmi:idref="C5"/> </uml:Association> ... ... ... <uml:Association xmi:id="R12" name="MT" Direction="Source-Destination" type="Associate"> <Source xmi:idref="C8"/> <Target xmi:idref="C9"/> </uml:Association> </uml:Package> </XMI.content> </xmi:XMI>

Ilustración 6-19. Documento XMI para el diagrama de clases de la Ilustración 6-18

Capítulo 6 Demostración

132

La Tabla 6-9, muestra la trazabilidad para el diagrama de clases a nivel PSM, que está enfocado hacia el lenguaje java, donde de los elementos del diagrama de clases a nivel PIM se obtienen los elementos de ese diagrama a nivel PSM. Debido a como va estar conformado el sistema de biblioteca, que se empieza a ver en este nivel PSM con el lenguaje java, fueron necesarios todos los atributos mostrados en el diagrama de clases a nivel PSM, debido a que se pensó en una pantalla con diferentes secciones como: “registrar”, “eliminar”, “modificar”, “consultar” y “estadísticas de préstamo”, por ello se repiten los atributos mostrados en el diagrama de clases a nivel PIM en el diagrama de clases a nivel PSM, por cada una de las secciones que se manejó en el sistema en la parte de “Administrar préstamo de acervo”. Los elementos a nivel PSM que no tienen correspondencia con los elementos a nivel PIM en la tabla, son debido a que algunas clases son prefabricadas (“JFrame”, “JDialog”, “SistemaBiblioteca”) por el ambiente que se utiliza y otras clases se requieren para cubrir aspectos de formateo de la información o pantallas (como “ManejoVentanas”, “ModeloTabla”, etc.).

Tabla 6-9. Trazabilidad para el Diagrama de Clases nivel PSM

Elementos del Diagrama de clases a nivel PIM Elementos del Diagrama de Clases nivel PSM PrestamoAcervo FechaPrestamo : date FechaEntrega : date NumControl : string Folio : string

PrestamoAcervo jTextFieldFolio : JTextField jTextFieldFolio1 : JTextField jTextFieldFolio2 : JTextField jDataChooserFechaEntrega2 jDataChooserFechaEntrega jTextFieldFechaEntrega : JTextField jTextFieldFechaPrestamo2 : JTextField jTextFieldFechaPrestamo1 : JTextField jTextFieldFechaPrestamo : JTextField jTextFieldNumControl2 : JTextField jTextFieldNumControl1 : JTextField jLabelTotalPrestamo:jLabel jLabelTipoConsulta:jLabel jLabelFinal:jLabel jLabelInicial:jLabel jLabelFechaFinal:jLabel jLabelFechaInicial:jLabel jLabelFechaPrestamo2:jLabel jLabelFechaPrestamo1:jLabel jLabelFechaPrestamo:jLabel jLabelFechaEntrega2:jLabel jLabelFechaEntrega1:jLabel jLabelFechaEntrega:jLabel jLabelNumControl2:jLabel jLabelNumControl1:jLabel jLabelNumControl:jLabel jLabelFolio2:jLabel jLabelFolio1:jLabel jLabelFolio:jLabel jComponentRegistrar:jComponent jComponentModificar:jComponent jComponentEstadistica:jComponent jComponentEliminar:jComponent jComponentConsultar:jComponent jButtonRegistrar:jButton jButtonModificar:jButton jButtonEstadistica:jButton jButtonEliminar:jButton jButtonConsultar:jButton jButtonAceptarRegistro:jButton jButtonAceptarModificacion:jButton jButtonAceptarEliminacion: jButton

Capítulo 6 Demostración

133

+Estadistica:default +Consultar:default +AceptarModificacion:default +Modificar:default +AceptarEliminacion:default +Eliminar:default +AceptarRegistro:default +Registrar:default

TipoConsulta:String[] Respuesta:int jTextFieldTotalPrestamos : JTextField jTextFieldFinal : JTextField jTextFieldInicial : JTextField jDataChooserFechaFinal: jDataChooser jDataChooserFechaInicial: jDataChooser MT:ModeloTabla jTableConsulta: jTable jTextFieldCapturaInformacion: jTextField jComboBoxTipoConsulta: jComboBox jTextFieldNumControl : JTextField +jButtonEstadistica_actionPerformed:void +jButtonConsultar_actionPerformed:void +jButtonAceptarModificacion_actionPerformed:void +jButtonModificar_actionPerformed:void +jButtonAceptarEliminacion_actionPerformed:void +jButtonEliminar_actionPerformed:void +jButtonAceptarRegistro_actionPerformed:void +jButtonRegistrar_actionPerformed:void

IniciarSesion IniciarSesion ManejoBD ManejoBD ModeloTabla JDialog Principal Principal JFrame ManejoVentanas SistemaBiblioteca

6.3.1.7 Cruce de la frontera PSM-IM Esta frontera se inició con la transformación del diagrama de clases a nivel PSM al código de la clase “PrestamoAcervo” del nivel IM, el cual contiene el código de los atributos y métodos de dicho diagrama y su correspondiente transformación del lenguaje a partes especificas de la implementación en el ambiente de “JBuilder” (Ej. los atributos y métodos que genera al introducir un componente gráfico).

Después del diagrama de base de datos (base de datos relacional) del nivel PSM se obtuvo el código correspondiente a la bases de datos del nivel IM (Ej. al pasar el nombre de una tabla a nivel PSM a nivel IM se le agrega “create table” y enseguida se pone el nombre de la tabla), y por último de los diagramas de actividad (conformado por 8 diagramas) del nivel PSM se obtuvo el código correspondiente a cada uno de ellos del nivel IM (Ej. a nivel IM en el código se agregan las llaves correspondiente al inicio y fin de alguna condición, las instrucciones de este diagrama se pasaron en su totalidad directamente).

En la Ilustración 6-20 y en la Ilustración 6-21 se presentan los códigos a nivel IM correspondientes a los diagramas de actividad presentados en el nivel PSM, donde por cada método de tipo “jButton” el ambiente generó una clase para dar soporte a dicho método.

A continuación se presenta en la Ilustración 6-20 el código a nivel IM del diagrama de actividad “Registrar” (nivel PSM). El código generado a nivel IM proviene de la clase “PrestamoAcervo” del método “jButtonRegistrar_actionPerformed”. Posteriormente, a dicha ilustración en la Tabla 6-10 se presentan los elementos que dieron origen a los elementos del código del método “jButtonRegistrar_actionPerformed”, con lo que se muestra una parte de la frontera PSM-IM.

Capítulo 6 Demostración

134

public void jButtonRegistrar_actionPerformed(ActionEvent e) { ResultSet RespuestaAcervo; String titulo=""; Date FechaA = this.jDateChooserFechaEntrega.getDate(); SimpleDateFormat Formato = new SimpleDateFormat("yyyy/MM/dd"); String FechaEntrega = Formato.format(FechaA); try{ Principal.MBD.Actualizar("Insert into PrestamoAcervo values('" +jTextFieldFolio.getText() + "','" +jTextFieldNumControl.getText() + "','" +jTextFieldFechaPrestamo.getText() + "','" +FechaEntrega+ "')"); Principal.MBD.Actualizar("update Acervo set Estatus=true where Folio='"+jTextFieldFolio.getText()+"'"); RespuestaAcervo=Principal.MBD.EjecutarQuery("select Titulo from Acervo where Folio= '"+ jTextFieldFolio.getText()+"'"); if(RespuestaAcervo.next()) titulo=RespuestaAcervo.getString("Titulo"); Principal.MBD.Actualizar("Insert into EstadisticasPrestamos values('" +titulo+ "','" +jTextFieldFechaPrestamo.getText() + "')"); jLabelFolio.setEnabled(true); jLabelNumControl.setEnabled(true); jTextFieldFolio.setEnabled(true); jTextFieldFolio.setText(""); jTextFieldNumControl.setEnabled(true); jTextFieldNumControl.setText(""); jButtonAceptarRegistro.setEnabled(true); jLabelFechaPrestamo.setEnabled(false); jLabelFechaEntrega.setEnabled(false); jDateChooserFechaEntrega.getComponent(0).setEnabled(false); jTextFieldFechaPrestamo.setEnabled(false); jTextFieldFechaPrestamo.setText(""); jButtonRegistrar.setEnabled(false); JOptionPane.showMessageDialog(null,"Préstamo registrado", "Sistema Biblioteca",JOptionPane.INFORMATION_MESSAGE); } catch(Exception Excepcion){ JOptionPane.showMessageDialog(null,Excepcion.getMessage()+"Fallo el Registro", "Sistema Biblioteca",JOptionPane.ERROR_MESSAGE); } }

Ilustración 6-20. Código generado para el método jButtonRegistrar_actionPerformed nivel IM

En la Tabla 6-10, se muestra la trazabilidad para el código del método “Registrar” a nivel IM, el cual proviene de los elementos del diagrama de actividad “Registrar” a nivel PSM. En esta tabla el código “try” y “catch” no tienen correspondencia con ningún elemento a nivel PSM, debido a que estos provienen del escenario del caso de uso “CU-4.1 Registrar préstamo” a nivel PIM, en la parte de “error en la conexión” y esto se represento por medio del código “try” y “catch”. Por otra parte, el otro renglón que no tiene correspondencia con el nivel PSM, es debido a que ese conjunto de instrucciones representan aspectos de usabilidad, como el habilitar y deshabilitar ciertos datos, campos o botones en la pantalla.

Tabla 6-10. Trazabilidad para el método jButtonRegistrar_actionPerformed nivel IM

Diagrama de actividad “Registrar” a nivel PSM Código generado para el método Registro a nivel IM PrestamoAcervo::jButtonRegistrar_ actionPerformed(e:ActionEvent):void

public void jButtonRegistrar_actionPerformed (ActionEvent e) {

ResultSet RespuestaAcervo; String titulo=""; ResultSet RespuestaAcervo; String titulo="";

Date FechaA = this.jDateChooserFechaEntrega. getDate(); SimpleDateFormat Formato = new SimpleDateFormat("yyyy/MM/dd"); S String FechaEntrega = Formato.format(FechaA);

Date FechaA = this.jDateChooserFechaEntrega.getDate(); SimpleDateFormat Formato = new SimpleDateFormat("yyyy/MM/dd"); String FechaEntrega= Formato.format(FechaA);

try{ Principal.MBD.Actualizar("Insert into PrestamoAcervo values('"+jTextFieldFolio.getText() + "','" +jTextFieldNumControl.getText() + "','" + jTextFieldFechaPrestamo.getText() + "','" + FechaEntrega+ "')");

Principal.MBD.Actualizar("Insert into PrestamoAcervo values('" +jTextFieldFolio.getText() + "','" +jTextFieldNumControl.getText() + "','" +jTextFieldFechaPrestamo.getText() + "','" +FechaEntrega+ "')");

Principal.MBD.Actualizar("update Acervo set Estatus=true where Folio='"+jTextFieldFolio.getText()+"'");

Principal.MBD.Actualizar("update Acervo set Estatus=true where Folio='"+jTextFieldFolio.getText()+"'");

RespuestaAcervo=Principal.MBD.EjecutarQuery(" select Titulo from Acervo where Folio= '"+ jTextFieldFolio.getText()+"'");

RespuestaAcervo=Principal.MBD.EjecutarQuery ("select Titulo from Acervo where Folio= '"+ jTextFieldFolio.getText()+"'");

RespuestaAcervo.next() if(RespuestaAcervo.next())

Capítulo 6 Demostración

135

titulo=RespuestaAcervo.getString("Titulo"); titulo=RespuestaAcervo.getString("Titulo"); Principal.MBD.Actualizar("Insert into EstadisticasPrestamos values('" +titulo+ "','" + jTextFieldFechaPrestamo.getText() + "')");

Principal.MBD.Actualizar("Insert into EstadisticasPrestamos values('" +titulo+ "','" +jTextFieldFechaPrestamo.getText() + "')");

jLabelFolio.setEnabled(true); jLabelNumControl.setEnabled(true); jTextFieldFolio.setEnabled(true); jTextFieldFolio.setText(""); jTextFieldNumControl.setEnabled(true); jTextFieldNumControl.setText(""); jButtonAceptarRegistro.setEnabled(true); jLabelFechaPrestamo.setEnabled(false); jLabelFechaEntrega.setEnabled(false); jDateChooserFechaEntrega.getComponent(0). setEnabled(false); jTextFieldFechaPrestamo.setEnabled(false); jTextFieldFechaPrestamo.setText(""); jButtonRegistrar.setEnabled(false);

JOptionPane.showMessageDialog (null, "Préstamo registrado", "Sistema Biblioteca", JOptionPane.INFORMATION_MESSAGE);

JOptionPane.showMessageDialog(null,"Préstamo registrado", "Sistema Biblioteca", JOptionPane.INFORMATION_MESSAGE);}

catch(Exception Excepcion){ JOptionPane.showMessageDialog (null,Excepcion.getMessage()+"Fallo el Registro", "Sistema Biblioteca", JOptionPane.ERROR_MESSAGE);}

}

A continuación se presenta en la Ilustración 6-21 el código a nivel IM del diagrama de actividad “AceptarRegistro” (nivel PSM). El código generado a nivel IM proviene de la clase “PrestamoAcervo” del método “jButtonAceptarRegistro_actionPerformed”. Posteriormente, a dicha ilustración en la Tabla 6-11 se presentan los elementos que dieron origen a los elementos de este diagrama, con lo que se muestra otra parte de la frontera PSM-IM.

public void jButtonAceptarRegistro_actionPerformed(ActionEvent e) { if(jTextFieldFolio.getText().equals("") || jTextFieldNumControl.getText().equals("") ){ JOptionPane.showMessageDialog(null,"Información incompleta", "Sistema Biblioteca",JOptionPane.INFORMATION_MESSAGE); } else{ try{ Respuesta=Principal.MBD.ValidarPrestamo(jTextFieldFolio.getText(),jTextFieldNumControl.getText(),0); if (Respuesta==1){ JOptionPane.showMessageDialog(null,"Préstamo ya registrado", "Sistema Biblioteca",JOptionPane.INFORMATION_MESSAGE); jTextFieldFolio.setText(""); jTextFieldNumControl.setText(""); } else{ Respuesta=Principal.MBD.ValidarPrestamo(jTextFieldFolio.getText(),jTextFieldNumControl.getText(),3); if (Respuesta==1) { JOptionPane.showMessageDialog(null,"Ejemplar repetido", "Sistema Biblioteca",JOptionPane.INFORMATION_MESSAGE); jTextFieldFolio.setText(""); jTextFieldNumControl.setText(""); } else { Respuesta = Principal.MBD.ValidarUsuario(jTextFieldNumControl. getText()); if (Respuesta == 0) { JOptionPane.showMessageDialog(null, "Usuario no encontrado","Sistema Biblioteca",JOptionPane.INFORMATION_MESSAGE); jTextFieldNumControl.setText(""); } else { Respuesta = Principal.MBD.ValidarPrestamo(jTextFieldFolio. getText(), jTextFieldNumControl.getText(), 1); if (Respuesta == 1) { JOptionPane.showMessageDialog(null, "El usuario ya tiene 3 prestamos", "Sistema Biblioteca", JOptionPane.INFORMATION_MESSAGE); jTextFieldFolio.setText(""); jTextFieldNumControl.setText(""); } else {

Capítulo 6 Demostración

136

Respuesta = Principal.MBD.ValidarAcervo(jTextFieldFolio. getText()); if (Respuesta == -1) { JOptionPane.showMessageDialog(null, "Acervo no encontrado", "Sistema Biblioteca", JOptionPane.INFORMATION_MESSAGE); jTextFieldFolio.setText(""); } else { if (Respuesta != 0) { JOptionPane.showMessageDialog(null, "Acervo no disponible", "Sistema Biblioteca", JOptionPane.INFORMATION_MESSAGE); jTextFieldFolio.setText(""); jTextFieldNumControl.setText(""); } else { jLabelFolio.setEnabled(false); jLabelNumControl.setEnabled(false); jTextFieldFolio.setEnabled(false); jTextFieldNumControl.setEnabled(false); jButtonAceptarRegistro.setEnabled(false); Date FechaActual = new Date(); SimpleDateFormat FormatoFecha = new SimpleDateFormat("yyyy/MM/dd"); jTextFieldFechaPrestamo.setText(FormatoFecha. format(FechaActual)); jDateChooserFechaEntrega.getComponent(0). setEnabled(true); jButtonRegistrar.setEnabled(true); } } } } } } } catch(Exception Excepcion){ JOptionPane.showMessageDialog(null,Excepcion.getMessage()+"Acción no completada", "Sistema Biblioteca",JOptionPane.ERROR_MESSAGE); } } }

Ilustración 6-21. Código generado para el método AceptarRegistro nivel IM

En la Tabla 6-11, se presenta la trazabilidad para el código del método “AceptarRegistro” a nivel IM. De acuerdo a los elementos del diagrama de actividad “AceptarRegistro” a nivel PSM, se obtienen los elementos del código generado a nivel IM. Al igual que en la Tabla 6-10, en esta tabla se presenta el código “try” y “catch” provenientes del escenario del caso de uso “CU-4.1 Registrar préstamo” para cachar el error en la conexión de la base de datos, así como se presentan aspectos de usabilidad en los demás renglones de la tabla que no tienen correspondencia con el diagrama a nivel PSM.

Tabla 6-11. Trazabilidad para el método AceptarRegistro nivel IM Diagrama de actividad “AceptarRegistro” a nivel PSM Código generado para el método AceptarRegistro a

nivel IM PrestamoAcervo::jButtonAceptarRegistro (e:ActionEvent):void

public void jButtonAceptarRegistro_ actionPerformed(ActionEvent e) {

jTextFieldFolio.getText().equals("") II jTextFieldNumControl.getText().equals("")

if(jTextFieldFolio.getText().equals("") || jTextFieldNumControl.getText().equals("") ){

JOptionPane.showMessageDialog(null," Información incompleta", "Sistema Biblioteca", JOptionPane.INFORMATION_MESSAGE);

JOptionPane.showMessageDialog(null, "Información incompleta", "Sistema Biblioteca", JOptionPane.INFORMATION_MESSAGE); }

Else else{

try{ Respuesta=Principal.MBD.ValidarPrestamo Respuesta=Principal.MBD.ValidarPrestamo

Capítulo 6 Demostración

137

(jTextFieldFolio.getText(), jTextFieldNumControl.getText(),0);

(jTextFieldFolio.getText(), jTextFieldNumControl.getText(),0);

Respuesta==1 if (Respuesta==1){ JOptionPane.showMessageDialog(null,"Préstamo ya registrado", "Sistema Biblioteca", JOptionPane.INFORMATION_MESSAGE);

JOptionPane.showMessageDialog(null,"Préstamo ya registrado", "Sistema Biblioteca" ,JOptionPane.INFORMATION_MESSAGE);

TextFieldFolio.setText(""); jTextFieldNumControl.setText("");}

else else{ Respuesta=Principal.MBD.ValidarPrestamo (jTextFieldFolio.getText(), jTextFieldNumControl.getText(),3);

Respuesta=Principal.MBD.ValidarPrestamo (jTextFieldFolio.getText(), jTextFieldNumControl.getText(),3);

Respuesta==1 if (Respuesta==1) { JOptionPane.showMessageDialog(null,"Ejemplar repetido", "Sistema Biblioteca", JOptionPane.INFORMATION_MESSAGE);

JOptionPane.showMessageDialog(null,"Ejemplar repetido", "Sistema Biblioteca", JOptionPane.INFORMATION_MESSAGE);

jTextFieldFolio.setText(""); jTextFieldNumControl.setText("");}

else else { Respuesta=Principal.MBD.ValidarUsuario (jTextFieldNumControl.getText());

Respuesta = Principal.MBD.ValidarUsuario (jTextFieldNumControl.getText());

Respuesta==0 if (Respuesta == 0) { JOptionPane.showMessageDialog(null,"Usuario no encontrado","Sistema Biblioteca", JOptionPane.INFORMATION_MESSAGE);

JOptionPane.showMessageDialog(null, "Usuario no encontrado","Sistema Biblioteca", JOptionPane.INFORMATION_MESSAGE);

jTextFieldNumControl.setText("");} else else { Respuesta=Principal.MBD.ValidarPrestamo (jTextFieldFolio.getText(), jTextFieldNumControl.getText(),1);

Respuesta = Principal.MBD.ValidarPrestamo (jTextFieldFolio.getText(), jTextFieldNumControl.getText(), 1);

Respuesta==1 if (Respuesta == 1) { JOptionPane.showMessageDialog(null,"El usuario ya tiene 3 prestamos", "Sistema Biblioteca" ,JOptionPane.INFORMATION_MESSAGE);

JOptionPane.showMessageDialog(null, "El usuario ya tiene 3 prestamos", "Sistema Biblioteca", JOptionPane.INFORMATION_MESSAGE);

jTextFieldFolio.setText(""); jTextFieldNumControl.setText("");}

else else { Respuesta=Principal.MBD.ValidarAcervo (jTextFieldFolio.getText());

Respuesta = Principal.MBD.ValidarAcervo (jTextFieldFolio.getText());

Respuesta==-1 if (Respuesta == -1) { JOptionPane.showMessageDialog(null,"Acervo no encontrado","Sistema Biblioteca", JOptionPane.INFORMATION_MESSAGE);

JOptionPane.showMessageDialog(null, "Acervo no encontrado", "Sistema Biblioteca", JOptionPane.INFORMATION_MESSAGE);

jTextFieldFolio.setText(""); } else else { Respuesta<>0 if (Respuesta != 0) { JOptionPane.showMessageDialog(null,"Acervo no disponible","Sistema Biblioteca", JOptionPane.INFORMATION_MESSAGE);

JOptionPane.showMessageDialog(null, "Acervo no disponible", "Sistema Biblioteca", JOptionPane.INFORMATION_MESSAGE);

jTextFieldFolio.setText(""); jTextFieldNumControl.setText("");}

else else { jLabelFolio.setEnabled(false);

jLabelNumControl.setEnabled(false); jTextFieldFolio.setEnabled(false); jTextFieldNumControl.setEnabled(false); jButtonAceptarRegistro.setEnabled(false); jDateChooserFechaEntrega.getComponent(0). setEnabled(true); jButtonRegistrar.setEnabled(true);

Date FechaActual= new Date(); Date FechaActual = new Date(); SimpleDateFormat FormatoFecha=new SimpleDateFormat("yyyy/MM/dd"); jTextFieldFechaPrestamo.setText (FormatoFecha.format(FechaActual));

SimpleDateFormat FormatoFecha = new SimpleDateFormat("yyyy/MM/dd"); jTextFieldFechaPrestamo.setText(FormatoFecha. format(FechaActual));

}

Capítulo 6 Demostración

138

} } } } } } catch(Exception Excepcion){

JOptionPane.showMessageDialog (null,Excepcion.getMessage()+"Acción no completada", "Sistema Biblioteca", JOptionPane.ERROR_MESSAGE);}

} }

6.3.1.8 Nivel IM Este nivel se inició con el código para la base de datos, el cual surge del diagrama de la base de datos (base de datos relacional) a nivel PSM. Posteriormente, el código de la clase “PrestamoAcervo” del nivel IM se obtiene desde el diagrama de clases del nivel PSM. Por último, el código que se genera para los métodos a nivel IM, es a partir de los diagramas de actividad de “Registrar” y “AceptarRegistro” del nivel PSM. El código de los métodos se mostró en la sección anterior.

Para bosquejar una parte de los diagramas utilizados en este nivel, a continuación se presenta en la Ilustración 6-22 el código de la clase “PrestamoAcervo” de este nivel, del cual surgen los códigos correspondientes a los métodos “jButtonRegistrar_actionPerformed” y “jButtonAceptarRegistro_actionPerformed”. Posteriormente, a dicha ilustración, en la Tabla 6-12 se presentan los elementos que dieron origen a los elementos del código de la clase “PrestamoAcervo”, con lo que se muestra una parte del nivel IM.

public class PrestamoAcervo extends JDialog { private int Respuesta; XYLayout xYLayout1 = new XYLayout(); JTabbedPane jTabbedPane1 = new JTabbedPane(); JComponent jComponentRegistrar = makeTextPanel(); JComponent jComponentModificar = makeTextPanel(); JComponent jComponentConsultar = makeTextPanel(); JComponent jComponentEliminar = makeTextPanel(); JComponent jComponentEstadistica = makeTextPanel(); XYLayout xYLayout2 = new XYLayout(); XYLayout xYLayout4 = new XYLayout(); XYLayout xYLayout5 = new XYLayout(); XYLayout xYLayout6 = new XYLayout(); XYLayout xYLayout7 = new XYLayout(); XYLayout xYLayout3 = new XYLayout(); JPanel jPanel1 = new JPanel(); JTextField jTextFieldFechaEntrega1 = new JTextField(); JTextField jTextFieldFechaPrestamo1 = new JTextField(); JLabel jLabelFechaPrestamo1 = new JLabel(); JLabel jLabelFechaEntrega1 = new JLabel(); JButton jButtonEliminar = new JButton(); JTextField jTextFieldFolio1 = new JTextField(); JButton jButtonAceptarEliminacion = new JButton(); JLabel jLabelFolio1 = new JLabel(); JLabel jLabelNumControl1 = new JLabel(); JTextField jTextFieldNumControl1 = new JTextField(); XYLayout xYLayout8 = new XYLayout(); Border border1 = BorderFactory.createEtchedBorder(Color.white, Color.blue); JPanel jPanel2 = new JPanel(); JLabel jLabelFechaPrestamo2 = new JLabel(); JLabel jLabelFechaEntrega2 = new JLabel(); JTextField jTextFieldFechaPrestamo2 = new JTextField(); JButton jButtonModificar = new JButton(); JDateChooser jDateChooserFechaEntrega2 = new JDateChooser(); JTextField jTextFieldNumControl2 = new JTextField(); JButton jButtonAceptarModificacion = new JButton(); JLabel jLabelFolio2 = new JLabel();

Capítulo 6 Demostración

139

JLabel jLabelNumControl2 = new JLabel(); JTextField jTextFieldFolio2 = new JTextField(); XYLayout xYLayout9 = new XYLayout(); Border border2 = BorderFactory.createEtchedBorder(Color.white, Color.blue); JLabel jLabelTipoConsulta = new JLabel(); JTextField jTextFieldCapturaInformacion = new JTextField(); JButton jButtonConsultar = new JButton(); JScrollPane jScrollPane1 = new JScrollPane(); private String [] TipoConsulta={ "# Control", "Titulo" }; ModeloTabla MT=new ModeloTabla(); JTable jTable1 = new JTable(MT); JComboBox jComboBoxTipoConsulta = new JComboBox(TipoConsulta); JPanel jPanel3 = new JPanel(); JTextField jTextFieldFInicial = new JTextField(); JTextField jTextFieldFFinal = new JTextField(); JLabel jLabelTotalPrestamos = new JLabel(); JTextField jTextFieldTotalPrestamos = new JTextField(); JLabel jLabelFFinal = new JLabel(); JLabel jLabelFInicial = new JLabel(); JButton jButtonEstadistica = new JButton(); JDateChooser jDateChooserFechaInicial = new JDateChooser(); JLabel jLabelFechaInicial = new JLabel(); JDateChooser jDateChooserFechaFinal = new JDateChooser(); JLabel jLabelFechaFinal = new JLabel(); XYLayout xYLayout10 = new XYLayout(); Border border3 = BorderFactory.createEtchedBorder(Color.white, Color.blue); JPanel jPanel4 = new JPanel(); JLabel jLabelFechaPrestamo = new JLabel(); JLabel jLabelFechaEntrega = new JLabel(); JTextField jTextFieldFechaPrestamo = new JTextField(); JButton jButtonRegistrar = new JButton(); JDateChooser jDateChooserFechaEntrega = new JDateChooser(); JTextField jTextFieldFolio = new JTextField(); JButton jButtonAceptarRegistro = new JButton(); JLabel jLabelFolio = new JLabel(); JLabel jLabelNumControl = new JLabel(); JTextField jTextFieldNumControl = new JTextField(); XYLayout xYLayout11 = new XYLayout(); Border border4 = BorderFactory.createEtchedBorder(Color.white, Color.blue); Border border5 = BorderFactory.createEtchedBorder(Color.white, Color.blue); public PrestamoAcervo (Frame owner, String title, boolean modal); public PrestamoAcervo(); protected JComponent makeTextPanel(); private void jbInit(); public void jButtonAceptarRegistro_actionPerformed(ActionEvent e); public void jButtonRegistrar_actionPerformed(ActionEvent e); public void jButtonAceptarEliminacion_actionPerformed(ActionEvent e); public void jButtonEliminar_actionPerformed(ActionEvent e); public void jButtonAceptarModificacion_actionPerformed(ActionEvent e); public void jButtonModificar_actionPerformed(ActionEvent e); public void jButtonConsultar_actionPerformed(ActionEvent e); public void jComboBoxTipoConsulta_actionPerformed(ActionEvent e); public void jButtonEstadistica_actionPerformed(ActionEvent e); }

Ilustración 6-22. Código de la clase “PrestamoAcervo” a nivel IM

En la Tabla 6-12, se presenta la trazabilidad para el código de las clases específicamente para el código de la clase “PrestamoAcervo” a nivel IM, el cual surge de los elementos del diagrama de clases a nivel PSM. Las partes de la columna del código a nivel IM que no tengan correspondencia con el diagrama clases a nivel PSM, significa que son atributos generados por default al agregar un componente gráfico o métodos que se requieren para aplicar los aspectos de usabilidad (Ej. métodos para activar o desactivar un determinado elemento en la pantalla).

Capítulo 6 Demostración

140

Tabla 6-12. Trazabilidad para el código de clases a nivel IM Diagrama de Clases nivel PSM Código de clases a nivel IM

PrestamoAcervo jTextFieldFolio : JTextField jTextFieldFolio1 : JTextField jTextFieldFolio2 : JTextField jDataChooserFechaEntrega2 jDataChooserFechaEntrega jTextFieldFechaEntrega : JTextField jTextFieldFechaPrestamo2 : JTextField jTextFieldFechaPrestamo1 : JTextField jTextFieldFechaPrestamo : JTextField jTextFieldNumControl2 : JTextField jTextFieldNumControl1 : JTextField jLabelTotalPrestamo:jLabel jLabelTipoConsulta:jLabel jLabelFinal:jLabel jLabelInicial:jLabel jLabelFechaFinal:jLabel jLabelFechaInicial:jLabel jLabelFechaPrestamo2:jLabel jLabelFechaPrestamo1:jLabel jLabelFechaPrestamo:jLabel jLabelFechaEntrega2:jLabel jLabelFechaEntrega1:jLabel jLabelFechaEntrega:jLabel jLabelNumControl2:jLabel jLabelNumControl1:jLabel jLabelNumControl:jLabel jLabelFolio2:jLabel jLabelFolio1:jLabel jLabelFolio:jLabel jComponentRegistrar:jComponent jComponentModificar:jComponent jComponentEstadistica:jComponent jComponentEliminar:jComponent jComponentConsultar:jComponent jButtonRegistrar:jButton jButtonModificar:jButton jButtonEstadistica:jButton jButtonEliminar:jButton jButtonConsultar:jButton jButtonAceptarRegistro:jButton jButtonAceptarModificacion:jButton jButtonAceptarEliminacion: jButton TipoConsulta:String[] Respuesta:int jTextFieldTotalPrestamos : JTextField jTextFieldFinal : JTextField jTextFieldInicial : JTextField jDataChooserFechaFinal: jDataChooser jDataChooserFechaInicial: jDataChooser MT:ModeloTabla jTableConsulta: jTable jTextFieldCapturaInformacion: jTextField jComboBoxTipoConsulta: jComboBox jTextFieldNumControl : JTextField

PrestamoAcervo jTextFieldFolio : JTextField jTextFieldFolio1 : JTextField jTextFieldFolio2 : JTextField jDataChooserFechaEntrega2 jDataChooserFechaEntrega jTextFieldFechaEntrega : JTextField jTextFieldFechaPrestamo2 : JTextField jTextFieldFechaPrestamo1 : JTextField jTextFieldFechaPrestamo : JTextField jTextFieldNumControl2 : JTextField jTextFieldNumControl1 : JTextField jLabelTotalPrestamo:jLabel jLabelTipoConsulta:jLabel jLabelFinal:jLabel jLabelInicial:jLabel jLabelFechaFinal:jLabel jLabelFechaInicial:jLabel jLabelFechaPrestamo2:jLabel jLabelFechaPrestamo1:jLabel jLabelFechaPrestamo:jLabel jLabelFechaEntrega2:jLabel jLabelFechaEntrega1:jLabel jLabelFechaEntrega:jLabel jLabelNumControl2:jLabel jLabelNumControl1:jLabel jLabelNumControl:jLabel jLabelFolio2:jLabel jLabelFolio1:jLabel jLabelFolio:jLabel jComponentRegistrar:jComponent jComponentModificar:jComponent jComponentEstadistica:jComponent jComponentEliminar:jComponent jComponentConsultar:jComponent jButtonRegistrar:jButton jButtonModificar:jButton jButtonEstadistica:jButton jButtonEliminar:jButton jButtonConsultar:jButton jButtonAceptarRegistro:jButton jButtonAceptarModificacion:jButton jButtonAceptarEliminacion: jButton TipoConsulta:String[] Respuesta:int jTextFieldTotalPrestamos : JTextField jTextFieldFinal : JTextField jTextFieldInicial : JTextField jDataChooserFechaFinal: jDataChooser jDataChooserFechaInicial: jDataChooser MT:ModeloTabla jTableConsulta: jTable jTextFieldCapturaInformacion: jTextField jComboBoxTipoConsulta: jComboBox jTextFieldNumControl : JTextField border1:Border border2:Border border3:Border border4:Border border5:Border jPanel1:JPanel jPanel2:JPanel jPanel3:JPanel jPanel4:JPanel jScrollPane1:JScrollPane

Capítulo 6 Demostración

141

+jButtonEstadistica_actionPerformed:void +jButtonConsultar_actionPerformed:void +jButtonAceptarModificacion_actionPerformed:void +jButtonModificar_actionPerformed:void +jButtonAceptarEliminacion_actionPerformed:void +jButtonEliminar_actionPerformed:void +jButtonAceptarRegistro_actionPerformed:void +jButtonRegistrar_ actionPerformed:void

jTabbedPane1:JTabbedPane jTable1:JTable XYLayout1:XYLayout XYLayout2:XYLayout XYLayout3:XYLayout XYLayout4:XYLayout XYLayout5:XYLayout XYLayout6:XYLayout XYLayout7:XYLayout XYLayout8:XYLayout XYLayout9:XYLayout XYLayout10:XYLayout XYLayout11:XYLayout public void jButtonEstadistica_actionPerformed(ActionEvent e); public void jButtonConsultar_actionPerformed(ActionEvent e); public void jButtonAceptarModificacion_actionPerformed (ActionEvent e); public void jButtonModificar_actionPerformed (ActionEvent e); public void jButtonAceptarEliminacion_actionPerformed (ActionEvent e); public void jButtonEliminar_actionPerformed (ActionEvent e); public void jButtonAceptarRegistro_actionPerformed (ActionEvent e); public void jButtonRegistrar_actionPerformed (ActionEvent e); public void jComboBoxTipoConsulta_actionPerformed(ActionEvent e); public PrestamoAcervo (Frame owner, String title, boolean modal); public PrestamoAcervo(); protected JComponent makeTextPanel(); private void jbInit();

IniciarSesion IniciarSesion ManejoBD ManejoBD ModeloTabla ModeloTabla JDialog JDialog Principal Principal JFrame JFrame ManejoVentanas ManejoVentanas SistemaBiblioteca SistemaBiblioteca

Por último en la Ilustración 6-23, se muestra la pantalla asociada al código de los métodos

(§ 6.3.1.7) “jButtonAceptarRegistro_actionPerformed” y “jButtonRegistrar_ actionPerformed ” a nivel IM.

Ilustración 6-23. Pantalla de “Administrar prestamos” en la opción “Registrar”

Capítulo 6 Demostración

142

6.4 Conclusión En el nivel CIM los modelos (diagramas) representan las actividades o tareas que se realizan en el dominio del negocio, que soportan aspectos de los objetivos internos y externos.

En el nivel PIM se mostró algunos tipos de datos, operadores y otras definiciones (§ 6.3.1.5) para especificar el nivel PIM en los diagramas y con ello poder realizar la trazabilidad a nivel PSM. Pero dichas especificaciones se necesitan refinar para representar la información contenida en los elementos de los diagramas del nivel PIM y con esto controlar las transformaciones en la frontera PIM-PSM, ya que el nivel PSM, se expresa apegándose a la sintaxis y semántica de un lenguaje de programación.

La mayor parte del nivel PSM es construido en base al nivel PIM, durante el proceso de

transformación. Sin embargo, son necesarios los expertos de la plataforma para conducir el proceso de transformación, aplicar el modelo específico y refinar los modelos generados.

En cualquiera de los diagramas, a través de los distintos modelos, la utilización de los

elementos que conforman a cada diagrama dependerá de la experiencia en el manejo de dichos elementos, ya que los actores que modelen los diferentes modelos lo tratarán de expresar de acuerdo a los conocimientos que tengan de cada uno de los diagramas, por lo cual teniendo estructuras bien definidas de los elementos para representar una determinada acción, se podría contribuir a que no existan diferencias en la forma de expresar dichos elementos de los diagramas, ya que estos serán transformados en forma automática y lo único que tendrían que realizar los actores en dado caso sería refinar el modelo transformado.

En el Reporte técnico RT-DCC-1-2007 [LOP07] se muestran las tablas que documentan el origen y destino de cada diagrama del procedimiento completo de la demostración. Se demuestra la trazabilidad que existe entre diagramas en un mismo nivel y diagramas en diferente nivel, debido a que se presentan los elementos que dieron origen a los elementos destino.

Con respecto a la consistencia, cuando se está definiendo la trazabilidad se está originando

información adicional que no se encontraba en el elemento origen, pero en el elemento destino está presente.

Por medio del desarrollo de la demostración del problema clásico de biblioteca se verificó

la tesis de demostración, ya que el apegarse a la definición de las fronteras mientras se realizaban las transformaciones manualmente, permitió llegar hasta el sistema ejecutable, por medio de las transformaciones entre diagramas del mismo nivel (CIM a CIM, PIM a PIM, PSM a PSM) y entre diagramas de diferentes niveles (CIM a PIM, PIM a PSM, PSM a IM).

143

Capítulo 7

Conclusiones Una vez expuesta la propuesta de solución (capítulo 4 y 5) y su demostración (capítulo 6), en este capítulo se muestran las conclusiones obtenidas del análisis e interpretación de los resultados de esta investigación, así como las aportaciones que se realizaron y la descripción de trabajos futuros que darán refinamiento y continuidad al presente trabajo de investigación en el campo de desarrollo dirigido por modelos en el ambiente AGDE. 7.1 Conclusiones El resultado principal de esta tesis es la definición de los modelos (CIM, PIM, PSM e IM) y la caracterización de las fronteras por medio de los elementos de los diagramas UML seleccionados (casos de uso, clases, secuencia y actividad). Se obtienen así las características distintivas de cada una de las fronteras, de manera que se distingan claramente entre ellas, para facilitar las transformaciones necesarias entre cada modelo (CIM a PIM, PIM a PSM y PSM a IM), en el proceso de obtención de una implementación funcional. Conociendo en forma precisa cuándo un tipo de modelo (Ej. PIM) se convierte en otro tipo de modelo (Ej. PSM).

Debido a que el objetivo de esta investigación es determinar las características distintivas de cada una de las fronteras entre los modelos MDA, de manera que se diferencien claramente, se demostró que mediante la definición de los modelos y la caracterización de las fronteras propuestas, se pudo desarrollar a través de una secuencia de transformaciones, el problema modelo de biblioteca, específicamente para la biblioteca de CENIDET.

En la demostración se desarrolló el problema de biblioteca realizando cada uno de los modelos, uno a partir de otro, hasta obtener la implementación. Verificando que lo mostrado

Capítulo 7 Conclusiones

144

en los modelos está también presente en el código y que apegándose a la definición de las fronteras, se pudo transformar de un modelo a otro y obtener un sistema ejecutable, como resultado final. Por consiguiente, la caracterización de las fronteras fue suficiente para lograr una implementación funcional a través de los diagramas de casos de uso, clases, secuencia y actividad.

A medida que se profundice más en las transformaciones se logrará una especificación

más detallada de la caracterización de las fronteras, en esta investigación no se analizaron a fondo las transformaciones.

La representación interna sólo se elaboró para los diagramas de casos de uso, clases,

secuencia y actividad, por lo tanto para los diagramas de línea de producción y entidad utilizados por el AGD no se elaboró su representación interna, debido a que la representación interna se basó únicamente en los elementos de los diagramas de UML seleccionados.

Se aportaron las bases para el proceso propuesto para MDA en el ambiente AGDE, a través de la definición de los modelos, de sus fronteras y su caracterización, así como ejemplificar las posibles transformaciones entre diagramas en un mismo modelo (CIM, PIM, PSM e IM) y entre diagramas en diferentes modelos (cruzando fronteras), considerando la trazabilidad (§ 3.2.1, § 3.2.2.4 y § 4.4) y la consistencia (§ 3.2.1, § 3.2.2.4 y § 4.4) entre ellos.

7.2 Aportaciones Durante el desarrollo de la presente investigación se identificaron algunas aportaciones de los resultados obtenidos que a continuación se mencionan.

• Se refinó y confirmo el conjunto de modelos contenidos en el Conjunto de Productos (PS) del AGD, mediante una comparación con los modelos utilizados en otros enfoques de desarrollo, para partir de un conjunto de modelos lo más completo posible (§ 4.2).

• Se obtuvo un conjunto reducido de diagramas (casos de uso, clases, secuencia y actividad) UML que permiten desarrollar un producto de software con un 60.67% de los elementos del conjunto completo de los diagramas de UML (§ 4.3), para utilizarse inicialmente en el proceso de MDA en el AGDE.

• Se efectuó la representación interna en XMI, con sus correspondientes DTD’s del conjunto reducido de los diagramas de UML, para guardar la información de dichos diagramas y utilizarla para transformarlos a través de los diferentes modelos (§ 5.1).

• Se elaboró un esquema general para representar el proceso de MDA, de forma abstracta de acuerdo a los lenguajes propuestos, bosquejando la forma en que se llega a una implementación funcional (capítulo 4).

• Se produjo la definición de los modelos (CIM, PIM, PSM e IM) y de sus fronteras (CIM-PIM, PIM-PSM, PSM-IM) mediante su caracterización, para delimitar y determinar las características distintivas entre cada modelo (frontera) y dirigir las transformaciones entre ellos, hasta alcanzar un sistema ejecutable (capítulo 5).

• Las aportaciones anteriores son la base del ambiente AGDE en la parte del proceso MDA, específicamente para las herramientas de transformación (modelo a modelo y

Capítulo 7 Conclusiones

145

modelo a código), para soportar el desarrollo de software dirigido por modelos (§ 3.1 y capítulo 4).

7.3 Trabajos futuros Los trabajos futuros para continuar mejorando y refinando el campo de desarrollo dirigido por modelos a través del ambiente AGDE, son los siguientes:

• Refinar el trabajo realizado detallando más cada nivel (CIM, PIM, PSM e IM), las fronteras y su caracterización, considerando a detalle las transformaciones.

• Identificar las transformaciones necesarias de modelo a modelo y de modelo a código, así como de código a modelo, utilizando un lenguaje de transformación (§ 4.4), así como una representación formal para verificar y validar la consistencia y trazabilidad en las transformaciones.

• Diseñar e implementar una familia de herramientas del AGDE que den soporte a todo el proceso que se llevó a cabo en la demostración de esta investigación, que soporte la diagramación y configuración de cada uno de los modelos, sus transformaciones en cada nivel y frontera, utilizando y refinando la representación interna propuesta.

146

Anexo A A-1 Comparando AGD con otros enfoques Con el propósito de presentar de forma detallada la comparativa de AGD con CMMI, RUP e IDEF, cuyo resultado se muestra en el capítulo 4 en la sección 4.1, se desarrollo este anexo, el cual contiene una breve descripción de cada uno de los enfoques, así como las tablas correspondientes a cada comparativa.

Primeramente, se comenzará esta comparativa mostrando a grandes rasgos el método AGD y posteriormente se describirá cada una de las comparaciones de AGD con otros enfoques, dentro de los cuales se explicará brevemente cada enfoque a comparar. Con la finalidad de analizar como está conformado el AGD con respecto a otros enfoques, es necesario hacer este análisis y así ubicar las características de cada uno de ellos en la comparativa del PS del AGD en el enfoque MDA. Las comparaciones de AGD con los enfoques son de acuerdo al conjunto de productos de la categoría de Ingeniería en el primer nivel, que representa a un tipo de modelo/nivel (CIM, PIM, PSM, IM, OM) del PS1Set (Conjunto de productos). Las tablas comparativas de AGD con otros enfoques están divididas en tres columnas, donde las primeras dos representan al AGD con respecto a los productos principales a obtener en el desarrollo (establecidos en el PS2Set) y la segunda corresponde al contenido de los productos principales (definida en el PS3Set) y por último, la tercera columna son los productos del trabajo del enfoque con que se este comparando (CMMI, RUP ó IDEF). Cabe mencionar que en las tablas comparativas de AGD con cada enfoque sólo se presentan los productos del trabajo con los que tienen relación.

Anexo A

147

A-1.1 AGD El método AGD se desarrolló como resultado principal de la investigación doctoral del profesor Moisés Gonzáles García, miembro de la línea de investigación en ingeniería de software del CENIDET.

Mediante AGD se enfocan los modelos como metas a obtener mediante un proceso sistemático, que permite a desarrolladores de software diseñar y obtener productos de software de buena calidad, mediante un proceso eficiente. Las prácticas principales del enfoque son: desarrollo de software mediante iteraciones, administrar los requerimientos, usar un estilo arquitectónico dirigido por modelos, construir siguiendo un modelo de referencia, especificar y verificar la calidad del software, controlar los cambios aplicados al software y usar la sinergia de cuatro modos de trabajo en grupo. El objetivo de AGD es dirigir un proceso para la ingeniería de un producto de software, es decir, un método centrado en el producto, el cual es descrito por un conjunto de reglas para mantener: su estructura y las relaciones entre sus partes (arquitectura). Esta descripción constituye la arquitectura de software mediante la cual se establece una referencia para organizar el proceso de desarrollo. Este método está formado por:

a) el Conjunto de Productos (PS), el cual está basado en el enfoque MDA, donde desde un

modelo se puede obtener el siguiente modelo a partir de la información y características de dicho modelo y así sucesivamente hasta llegar a obtener una implementación funcional.

b) el Proceso Dirigido por Modelos (MDP) otorga mayor importancia al análisis del

producto deseado y su descomposición en subproductos. Mediante el MDP se elabora cualquier producto o subconjunto de productos usando en forma sistemática los subprocesos del modo en equipo, asignando roles orientados a administrar el trabajo en equipo. El camino que tomará este análisis será por el conjunto de productos del trabajo ya que en éste se enfoca la presente investigación. El PS a grandes rasgos se desarrolla de la siguiente forma:

• Se captura la información del proyecto y las dependencias con otros proyectos

mediante unas formas Web. • Se llena otra forma Web con los datos de los integrantes, donde se lleva el control por

cada participante del proyecto a través de cuadernos del ingeniero. • En una forma Web se presenta la misión, visión y objetivos de la organización, además

se realiza la estructura de la organización, los programas y los portafolios del proyecto donde se lleva el control del desarrollo del proyecto.

• Se extraen los requerimientos del cliente, los usuarios que intervienen, con lo cual se van realizando diagramas de colaboración para posteriormente pasar a los casos de uso, donde se ve el alcance de los usuarios, los actores y sus respectivas descripciones o especificaciones de los casos de uso.

• Con respecto al negocio existente se ven los aspectos funcionales del mismo, se realiza una serie de diagramas de entidad a nivel de usuario, aplicación o un combinado de entidades de usuario con el propósito de sacar sólo las partes funcionales y de ahí obtener el diagrama de entidad a nivel de aplicación.

Anexo A

148

• De todo lo anterior se logra identificar los componentes, dependencias, relaciones, alcances, la definición de resultados, para poder llegar a un prototipo del sistema, el cual se va refinando a medida que se avanza en nivel de detalle tomando la información obtenida durante el desarrollo del proyecto.

• Se obtiene el plan de pruebas, restricciones a los requerimientos, la arquitectura, el diseño detallado hasta llegar a la codificación, entrega del producto y su evaluación.

Cabe destacar que los puntos mencionados anteriormente no tienen en si un orden, los PS

pueden ser realizados en el orden deseado con respecto a las expectativas o necesidades que se tengan.

A-1.2 Comparación de AGD y CMMI (Capability Maturity Model Integration) [CMMI02] Breve descripción de CMMI CMMI es un modelo para la mejora o evaluación de los procesos de desarrollo y mantenimiento de sistemas y productos de software. Desarrollado por el Instituto de Ingeniería de Software de la Universidad Carnegie Mellon.

Este modelo puede ser usado para dirigir la mejora del proceso a través de un proyecto, una división o una organización entera. Además ayuda a integrar funciones tradicionalmente separadas de la organización, poner objetivos de mejora de proceso y prioridades, proporcionar la dirección para procesos de calidad y proporcionar un punto de referencia para la valoración de procesos actuales.

CMMI está conformado por 4 categorías de áreas de proceso, de las cuales este análisis se

centra en la categoría de área de proceso de ingeniería. A continuación se enlistan las categorías del CMMI.

• Soporte • Gestión de proyectos • Gestión de procesos • Ingeniería

Las áreas de proceso dentro de la categoría de ingeniería cubren el desarrollo y el

mantenimiento de las actividades que son compartidas a través de las disciplinas de ingeniería (por ejemplo, ingeniería de sistemas e ingeniería de software). Las áreas de proceso en la categoría de ingeniería son:

1. Gestión de requerimientos 2. Desarrollo de requerimientos 3. Solución técnica 4. Integración del producto 5. Verificación 6. Validación

Anexo A

149

Comparativa Al comparar AGD con CMMI en la categoría de ingeniería con respecto a las áreas de procesos y a sus metas, prácticas especificas y productos del trabajo, fue necesario ver la comparación desde diferentes niveles de abstracción, debido tanto a la diferencia en los productos del trabajo como en las clasificaciones por lo que se decidió realizar este análisis comparativo tomando en cuenta los fines para alcanzar los objetivos correspondientes a los modelos y productos del trabajo de AGD. Los términos de codificación para las tablas en la parte de CMMI se manejan de la siguiente manera:

I= Categoría de Ingeniería C= Área de proceso de la categoría de Ingeniería con su respectivo número M= Meta ubicada dentro del área de proceso de la categoría de Ingeniería con su

respectivo número SP= Prácticas especificas con su respectivo número derivado de la meta

Un ejemplo para ilustrar dicha codificación es el siguiente: La codificación I-C1-M1-SP1-

1 se entendería así:

I se refiere a que es la categoría de Ingeniería C1 se refiere al área de proceso de gestión de requerimientos M1 se refiere a la meta 1 de esta área de proceso C1 SP1 es una práctica específica de M1 1 es el número del producto del trabajo correspondiente a SP1 A continuación se muestran en la siguiente tabla todas las codificaciones utilizadas en la

comparación de AGD con CMMI, donde en la primera columna se coloca la meta a la cual se hace referencia en la codificación para posteriormente mostrar el correspondiente producto del trabajo ó las prácticas específicas a dicha meta. Esta tabla específica tanto las metas y productos del trabajo de CMMI.

Metas Descripción (producto del trabajo) Codificación

Resultados de las revisiones de los requerimientos

I-C1-M1-SP1-1 Mantener los requerimientos

Listado de requerimientos I-C1-M1-SP1-2 Declaración de necesidades I-C2-M1-SP1-1 Declaración de necesidades I-C2-M1-SP2-1 Casos de prueba y resultados esperados I-C2-M1-SP3-3

Recoger y traducir las necesidades a requerimientos del cliente.

Desarrollar los conceptos operacionales y escenarios

I-C2-M1-SP5

Reducir los costos del producto y los riesgos I-C2-M2-SP3 Arquitectura funcional I-C2-M2-SP2-1

Refinar el problema Refinar el problema

Actualizar la arquitectura funcional I-C2-M2-SP3-6 Limitaciones tecnológicas I-C3-M1-SP4-7 Evolución de los requerimientos de los drivers y la tecnología

I-C3-M1-SP4-10 Seleccionar un diseño

Conceptos detallados operacionales y escenarios

I-C3-M1-SP1-6

Resultados de la simulación I-C3-M2-SP11-2 Resultados del prototipo I-C3-M2-SP11-3 Casos de uso I-C3-M2-SP4-4 Diseño de documentos de la interfaz I-C3-M2-SP7-2 Conceptos operacionales y escenarios I-C3-M2-SP4-1

Establecer y mantener el diseño del producto

Hojas de asignación de requerimientos I-C3-M2-SP6-1

Anexo A

150

Construir y entregar el producto Implementación de los componentes I-C3-M3-SP1-1 Establecer y mantener las interfaces Tabla de relaciones entre los diferentes

elementos del producto I-C4-M2-SP1-2

Soporte a la documentación para la integración del ambiente

I-C4-M3-SP1-1 Ensamble, pruebas y integración de los elementos del producto

Realizar las pruebas de aceptación I-C4-M3-SP6 Secuencia de integración y una exposición razonable para seleccionar o rechazar cada escenario unido

I-C4-M1-SP1-1

Integración del producto preliminar y del plan de prueba

I-C4-M1-SP1-3

Desarrollar una estrategia de integración

Procedimientos de la integración I-C4-M1-SP1-6 Ensamble, pruebas y integración de los elementos del producto

Informes de resumen de integración I-C4-M3-SP5-4

Simuladores (para el ambiente, interfaces hombre maquina, etc.)

I-C6-M1-SP2-3

Prototipos o maquetas I-C6-M1-SP2-1

Planear y preparar la validación del producto del trabajo

Aceptación de los procedimientos de prueba I-C6-M1-SP4-2

En la Tabla A-1 se muestra la comparativa del método AGD a nivel CIM con CMMI, en el

cual se obtienen las restricciones y los requerimientos, la identificación del proyecto, casos de uso con respecto a los alcance y prioridades en el punto de CIM del AGD, además de las entradas y salidas del sistema, las relaciones entre los diferentes elementos del producto. Cabe mencionar que una práctica específica de CMMI en I-C2-M1-SP5-4, es utilizada para la parte de prototipos pero no se mencionó en la tabla por que no contiene un producto del trabajo.

Tabla A-1. AGD en el nivel CIM comparado con CMMI

AGD en el nivel CIM CMMI Inicialización Identificación del proyecto I-C2-M1-SP1-1

I-C1-M1-SP1-1 I-C1-M1-SP1-2

Planificación-Visión

Obtener solicitudes del cliente

I-C2-M1-SP2-1 Negocio existente

Definición de resultados Definición de entradas

I-C2-M1-SP3-3

I-C3-M2-SP11-2 Alcance funcional I-C3-M2-SP11-3 I-C3-M2-SP11-2 Elementos de datos en interfase

hombre-máquina I-C3-M2-SP11-3

Identificación de componentes (nivel 1)

Dependencias de resultados y entradas I-C4-M2-SP1-2 Prototipo del sistema

En la Tabla A-2 se muestra la comparativa del método AGD en el nivel PIM con CMMI,

donde se presentan los casos de uso en ingeniería directa, diseño de la interfaz a un nivel alto de abstracción, la interacción entre el usuario y el sistema, un prototipo del software a desarrollar, la aceptación de los casos de prueba y su especificación, así como los requerimientos del software.

Tabla A-2. AGD en el nivel PIM comparado con CMMI AGD en el nivel PIM CMMI

Ingeniería inversa Casos de uso I-C3-M2-SP4-4

I-C3-M2-SP7-2

Ingeniería directa Presentación de la interacción hombre-máquina I-C6-M1-SP2-3

I-C3-M2-SP11-2 I-C3-M2-SP11-3

Prototipo de software Integración del prototipo del sistema

I-C6-M1-SP2-1 I-C6-M1-SP4-1

Anexo A

151

Especificación de prueba de aceptación

I-C6-M1-SP4-2

I-C3-M1-SP4-7

Requerimientos del software

Requerimientos del software I-C3-M1-SP4-10

En la Tabla A-3 se muestra la comparativa del método AGD a nivel PSM con CMMI,

donde se obtienen las restricciones en requerimientos, riesgos, diseño de restricciones, así como la estructura de la arquitectura, implementación y especificación de los componentes, los conceptos detallados operacionales y escenarios, con los cuales se forma la arquitectura del sistema con sus restricciones de acuerdo a los requerimientos.

Tabla A-3. AGD en el nivel PSM comparado con CMMI AGD en el nivel PSM CMMI

Riesgos/Beneficios I-C2-M2-SP3 Restricciones en requerimientos Restricciones I-C3-M2-SP6-1

Estructura de la arquitectura I-C2-M2-SP2-1 Arquitectura del componente Especificación de la prueba de integración I-C4-M3-SP1-1

I-C2-M2-SP2-1 Reporte de análisis de arquitectura I-C2-M2-SP3-6 I-C3-M1-SP1-6 I-C3-M2-SP4-1

Análisis de arquitectura

Generación de escenarios

I-C2-M1-SP5

En la Tabla A-4 se ilustra la comparativa del método AGD en el nivel IM con CMMI a nivel de implementación, el cual muestra la integración del producto, su instalación, mantenimiento y documentación, las pruebas de aceptación, además de la secuencia y procedimientos para la integración.

Tabla A-4. AGD en el modelo de implementación (IM) comparado con CMMI

AGD en el nivel IM CMMI Diseño detallado

Diseño detallado: servicios normales Diseño detallado: métricas

Diseño detallado: datos de proceso Especificación de prueba de aceptación I-C4-M3-SP6 Codificación Carga I-C3-M3-SP1-1

Elaborar documentación de usuario I-C3-M3-SP2-1 I-C4-M1-SP1-1 Integración de código I-C4-M1-SP1-3 I-C4-M1-SP1-3 I-C4-M1-SP1-6

Operación inicial

Prueba de integración

I-C4-M3-SP5-4

A-1.3 Comparación de AGD y RUP (Rational Unified Process) [RUP05] Breve descripción de RUP RUP proporciona las mejores prácticas y la dirección para el desarrollo de software acertado, además tiene tres características esenciales:

• Dirigido por casos de uso: En RUP los Casos de Uso no son sólo una herramienta para especificar los requisitos del sistema. También guían su diseño, implementación y prueba.

Anexo A

152

• Centrado en la arquitectura: En el caso de RUP además de utilizar los Casos de Uso para guiar el proceso se presta especial atención al establecimiento temprano de una buena arquitectura que no se vea fuertemente impactada ante cambios posteriores durante la construcción y el mantenimiento. Cada producto tiene tanto una función como una forma. La función corresponde a la funcionalidad reflejada en los Casos de Uso y la forma la proporciona la arquitectura.

• Proceso iterativo e incremental: Consta de una secuencia de iteraciones. Cada iteración aborda una parte de la funcionalidad total, pasando por todos los flujos de trabajo relevantes y refinando la arquitectura. Cada iteración se analiza cuando termina.

Este enfoque está conformado por una colección de dominios que son agrupaciones de

productos del trabajo, los cuales están divididos en subdominios. Los dominios de RUP son:

• Modelado del negocio • Requerimientos • Análisis y diseño • Implementación • Pruebas • Despliegue • Configuración y administración del cambio • Administración del proyectos • Ambiente

Comparativa Tanto AGD como RUP están enfocados al desarrollo de software y por lo tanto al realizar la comparativa entre ambos, RUP fue comparado a partir de los dominios, subdominios y productos del trabajo correspondientes para la comparación. Debido a la diferencia tanto de nombres del producto del trabajo y para realizar este análisis comparativo se tuvo que pasar a un nivel abstracto donde en ocasiones se realizó una mezcla de dominio, subdomino y productos del trabajo para ver la posible correspondencia con el AGD, por lo tanto quedo ese nivel de abstracción que se muestra en las tablas. Los términos de codificación para las tablas en la parte de RUP se manejan de la siguiente manera:

R= Indica que se refiere a RUP D= Se refiere al dominio con su respectivo número SD= Indica el subdominio de un dominio con su respectivo número

Un ejemplo para ilustrar dicha codificación es el siguiente: La codificación R-D1-SD1.1 se

entendería así: R identifica que es RUP D1 se refiere al dominio dentro de RUP SD1.1 es un subdominio de D1con su respectivo número, donde después del punto va el

número referente al producto del trabajo.

Anexo A

153

A continuación se muestra en la siguiente tabla, todas las codificaciones utilizadas en la comparación de AGD y RUP, donde en la primera columna se presenta el dominio al cuál esta haciendo referencia la codificación dentro de RUP y la segunda representa el producto del trabajo ó subdominio de dicho dominio. Esta tabla específica los dominios y productos del trabajo dentro de RUP.

Dominio Descripción (producto del trabajo) Codificación

Modelo de análisis del negocio R-D1-SD1.1 Reglas del negocio R-D1-SD1.8 Metas del negocio R-D1-SD1.7 Modelo de diseño del negocio R-D1-SD1.5 Documento de la arquitectura del negocio R-D1-SD1.3 Visión del negocio R-D1-SD1.10 Prueba de concepto arquitectónico del negocio

R-D1-SD1.2

Modelado del negocio

Especificación suplementaria del negocio R-D1-SD1.11 Peticiones de los Stakeholder R-D2-SD2.6 Glosario R-D2-SD2.1 Modelo de casos de usos R-D2-SD2.9 Storyboard R-D2-SD2.7 Requerimientos de software R-D2-SD2.4 Especificación de los requerimientos del software

R-D2-SD2.5

Atributos de los requerimientos R-D2-SD2.2

Requerimientos

Visión R-D2-SD2.10 Modelo de análisis R-D3-SD3.1 Mapa de navegación R-D3-SD3.7 Prototipo de la interfaz de usuario R-D3-SD3.11 Prueba de concepto arquitectónico R-D3-SD3.2 Arquitectura de referencia R-D3-SD3.8

Análisis y diseño

Documento de la arquitectura de software R-D3-SD3.10 Modelo de implementación R-D4-SD4.3 Construcción R-D4-SD4.1 Pruebas de desarrollo R-D4-SD4.2

Implementación

Plan de construcción de la integración R-D4-SD4.4 Especificación de la prueba de la interfaz R-D5-SD5.8 Plan de la prueba R-D5-SD5.10 Conjunto de pruebas R-D5-SD5-14

Pruebas

Resumen de la evaluación de la prueba R-D5-SD5.6 Despliegue Material de soporte de usuario R-D6-SD6.3

Administración del proyecto Lista de riesgos R-D8-SD8.8

En la Tabla A-5 se muestra la comparativa del método AGD a nivel CIM con RUP, donde

encontramos la captura de las peticiones realizadas en el proyecto, es decir se identifica el proyecto y sus requerimientos, se tiene el modelo del negocio, las reglas, las metas, el modelo de casos de uso, aspectos relevantes del negocio, un glosario de términos, análisis de los casos de uso, mapas de navegación para la interfaz a nivel abstracto, además de un prototipo de la interfaz de usuario. Todo esto sirve para definir la identificación del proyecto, las personas involucradas, los objetivos que se persiguen, la obtención de los requerimientos y una posible solución a nivel de requerimientos.

Tabla A-5. AGD en el nivel CIM comparado con RUP AGD en el nivel CIM RUP

Inicialización Identificación del proyecto Dependencias con otros proyectos

R-D2-SD2.6

Entender la estrategia Entender el negocio

R-D1-SD1.1

Planificación-Visión Alcance y prioridades R-D1-SD1.8

Anexo A

154

R-D1-SD1.7

Obtener solicitudes del cliente R-D2-SD2.6

Diagrama de entidades a nivel de usuario Diagrama de entidades combinado a nivel

de usuario

R-D1-SD1.1 R-D1-SD1.5

Negocio existente

Diagrama de entidad a nivel de aplicación R-D1-SD1.5 Definición de resultados Definición de entradas

R-D1-SD1.1

R-D1-SD1.3 Objetivos R-D1-SD1.10

Definición del diccionario de datos del sistema

R-D2-SD2.1

Dependencias de resultados y entradas Compilación de opciones principales

R-D3-SD3.1

R-D3-SD3.7

Identificación de componentes

Alcance funcional R-D3-SD3.1 R-D1-SD1.2

Prototipado Integración del prototipo del sistema

R-D3-SD3.11

En la Tabla A-6 se muestra la comparativa del método AGD en el nivel PIM con RUP,

donde al igual que en el nivel CIM se mantiene un glosario de términos, se tienen modelos de casos de uso en ingeniería directa, además de un prototipo del sistema a un nivel de detalle y los requerimientos o especificación del software.

Tabla A-6. AGD en el nivel PIM comparado con RUP

AGD en el nivel PIM RUP Ingeniería inversa

Diccionario de datos R-D2-SD2.1 Casos de uso R-D2-SD2.9

Ingeniería directa

Presentación de interacción hombre-máquina R-D2-SD2.7 Prototipado del software Integración del prototipo del sistema R-D3-SD3.11

R-D2-SD2.4 Requerimientos del software R-D2-SD2.5 R-D5-SD5.8

Requerimientos del software

Especificación de prueba de aceptación R-D5-SD5.10

En la Tabla A-7 se muestra la comparativa del método AGD en el nivel PSM con RUP,

contiene un repositorio de los requerimientos, una solución conceptual, restricciones y riesgos del proyecto. Se tiene por otro lado la arquitectura del sistema y su desarrollo. Los directores del negocio que están inmersos en el problema, así como la descripción de escenarios específicos entre los usuarios y el sistema.

Tabla A-7. AGD en el nivel PSM comparado con RUP AGD en el nivel PSM RUP

Datos almacenados R-D2-SD2.2 R-D2-SD2.10 Restricciones R-D1-SD1.11 R-D3-SD3.2 R-D1-SD1.2

Soluciones alternativas Solución recomendable

R-D2-SD2.10

Restricciones en requerimientos

Riesgos/Beneficios R-D8-SD8.8 R-D3-SD3.8 Estructura de la arquitectura

R-D3-SD3.10 Arquitectura del

componente Especificación de prueba de integración R-D5-SD5-14

Directores del negocio R-D1-SD1.1 Generación de escenarios R-D2-SD2.7

Análisis de arquitectura Reporte de análisis de arquitectura R-D3-SD3.10

Anexo A

155

En la Tabla A-8 se muestra el nivel de implementación, en el cual la codificación va en la

construcción del código, compilación y ligado, las pruebas de unidad, pruebas de integración, el resultado de la evaluación de las pruebas, así como documentación para el usuario. La integración de código esta en el PS2Set de Operación inicial.

Tabla A-8. AGD en el modelo de implementación (IM) comparado con RUP AGD en el nivel IM RUP

Estructura de división del trabajo Diseño detallado Asignación de unidades

R-D4-SD4.3

Diseño detallado: servicios normales Diseño detallado: métricas

R-D5-SD5.6 Diseño detallado: datos de proceso Especificación de pruebas de aceptación R-D5-SD5.10

Compilación Ligado Carga

R-D4-SD4.1 Codificación

Prueba de unidad R-D4-SD4.2 R-D4-SD4.1 Integración de código R-D4-SD4.4

Elaborar documentación de usuario R-D6-SD6.3

Operación inicial Prueba de integración R-D4-SD4.2

A-1.4 Comparación AGD e IDEF (Integrated DEFinition) [IDEF06] Breve descripción de IDEF Los métodos de IDEF proveen a los individuos y equipos un enfoque disciplinado y confiable a la solución de problemas en apoyo a los esfuerzos tales como: la ingeniería de la empresa, reingeniería, el desarrollo de sistemas de información en gran escala y la integración de la empresa. El IDEF es una técnica de modelado estándar creada por la Fuerza Aérea Norteamericana y utilizada para:

– Crear diagramas y documentos. – Describir operaciones de una empresa

Todos los métodos de IDEF se muestran en la tabla siguiente, categorizados de acuerdo a

su evolución en generaciones. Donde los métodos más usados son del IDEF0 hasta el IDEF4. Además del IDEF0 al IDEF5 son equivalentes a diferentes diagramas UML (como: actividad, clases, objetos, colaboración y estados) y el metamodelo UML (IDEF5).

Métodos de Primera Generación (ICAM21-1981)

Modelado Funcional (IDEF0) (Lo que se hace en la empresa)

Modelado de Información (IDEF1) Modelado de Simulación (IDEF2)

Métodos de Segunda Generación (ICAM-1985) Modelado de Datos(IDEF1X (IDEF1 Extended))

Métodos de Tercera Generación (IICE22-1992…) Captura de Descripción de Procesos (IDEF3) (Define como la empresa hace lo que hace)

Diseño Orientado a Objetos (IDEF4) Captura de Descripción Ontológica (IDEF5)

21 Integrated Computer-Aided Manufacturing 22 Information Integration for Concurrent Engineering

Anexo A

156

Otros Métodos Captura de las bases del Diseño (IDEF6) (dice por que, por que no y como un diseño llego a su configuración final)

Auditoria de Sistemas de Información (IDEF7)

Diseño de Interacción Hombre-Sistema (IDEF8)

Descripción de Restricciones (IDEF9) Modelado de Artefactos de Información (IDEF10)

Diseño Organizacional (IDEF12)

Diseño de Redes (IDEF14)

Comparativa Al comparar AGD con IDEF se hizo desde un punto de vista abstracto, ya que en IDEF no se especifican con claridad los posibles productos del trabajo y éste en su mayoría está enfocado hacia el proceso de negocio, hay algunos métodos IDEF que quedan fuera debido a que no corresponden con los del AGD. Los resultados de esta comparación fueron con respecto a la definición de cada método y su posible aplicabilidad con los productos del trabajo del AGD, visto desde un nivel más abstracto.

Al comparar AGD en el nivel CIM con IDEF mostrado en la Tabla A-9 se ven: la identificación del proyecto, las interacciones que hay entre las personas de la organización, la obtención de los requerimientos, todo lo del proceso de negocio, así como las restricciones. Además de ver un pequeño prototipo de la funcionalidad de acuerdo a los requerimientos.

Tabla A-9. AGD en el nivel CIM comparado con IDEF

AGD en el nivel CIM IDEF Inicialización Identificación del proyecto IDEF1

Obtener solicitud del cliente IDEF1X Alcances y prioridades IDEF9

Planificación-Visión

Entender el negocio IDEF3 Diagrama de entidades a nivel de usuario IDEF0

Diagrama de entidades combinado a nivel de usuario IDEF3 Negocio existente

Diagrama de entidades a nivel aplicación IDEF8 Compilación de entradas principales

Objetivos Definición de entradas

IDEF1 Identificación de componentes

Alcance funcional IDEF3 Prototipado Integración del prototipo del sistema IDEF2

En la Tabla A-10 se muestra el método IDEF contra AGD desde el nivel PIM, donde

podemos encontrar aspectos del prototipo en cierto nivel de detalle, los requerimientos del software derivados del análisis de los requerimientos preliminares, además de la presentación de la interacción entre el usuario y el sistema.

Tabla A-10. AGD en el nivel PIM comparado con IDEF AGD en el nivel PIM IDEF

Ingeniería inversa Procesos funcionales Ingeniería directa

Presentación interacción hombre-máquina IDEF8

Prototipado del software Integración del prototipo del sistema IDEF2 Requerimientos del software

En la Tabla A-11 se muestra la comparación del AGD en el nivel PSM contra el IDEF, en

el cual se puede encontrar que se relacionan ambos en los aspectos de definición de descripciones, los datos que se ocupan para el desarrollo del sistema, como está conformado

Anexo A

157

de acuerdo a la interacción con el sistema para realizar un diseño de la arquitectura por medio de analizar esa interacción. Se menciona el IDEF0 debido a que para sacar un producto del trabajo de AGD se requiere de los actores del negocio.

Tabla A-11. AGD en el nivel PSM comparado con IDEF AGD en el nivel PSM IDEF

Restricciones en requerimientos Restricciones IDEF9 Estructura de la arquitectura Arquitectura del componente

Especificación de prueba de integración IDEF8

Reporte de análisis de arquitectura IDEF8 Análisis de arquitectura Directores del negocio IDEF0

La Tabla A-12 se refiere a qué aspectos de la implementación considera AGD contra

IDEF, la única similitud o aproximación que se encontró fue en como son los procesos y su posible estandarización.

Tabla A-12. AGD en el modelo de implementación (IM) comparado con IDEF AGD en el nivel IM IDEF

Diseño detallado Diseño detallado: servicios normales

Diseño detallado: métricas Diseño detallado: datos de proceso Normas para procesos IDEF3

Codificación Operación inicial

158

Anexo B B-1 Análisis de los 13 diagramas de UML 2.0 con respecto al uso en común de sus elementos. Con el fin de mostrar los elementos de los 13 diagramas de UML 2.0 que se utilizaron para obtener los datos mostrados en el capítulo 4 sección 4.3.2, con respecto al número de elementos exclusivos y al número de elementos en común en cada uno de los diagramas, se realizó este análisis de los elementos de los 13 diagramas, específicamente para obtener los elementos en común de un diagrama con otros diagramas, mostrado en este anexo. Primero, se mostrará una breve semblanza de UML 2.0 y posteriormente se presentarán las tablas de cada uno de los 13 diagramas.

En el transcurso de los años han surgido varias versiones de UML, cada una con un plus. En la actualidad existe la versión de UML 2.0, la cual es el producto del refinamiento y revisiones de las versiones anteriores que se van mejorando. UML está conformado por:

• Superestructura.- En ella se encuentran todos los diagramas que se utilizan al

desarrollar un sistema, es decir, es aquí donde se definen los diagramas y los elementos que lo componen. Es la definición formal de los elementos de UML.

• Infraestructura.- Es un metamodelo que da soporte a la superestructura y en el que se definen los conceptos centrales y de más bajo nivel.

Anexo B

159

• OCL.- Define un lenguaje simple para escribir restricciones y expresiones sobre elementos de un modelo.

• y XMI.- Permite compartir diagramas entre diferentes herramientas de modelado UML.

A continuación se presenta en la ilustración B-1 la estructura taxonómica de UML 2.0 y en

la Tabla B-1 una breve descripción de sus diagramas.

Ilustración B-1. Estructura taxonómica de UML 2.0

Tabla B-1. Breve descripción de diagramas UML 2.0 [AMB04] Diagramas UML 2.0 Que puede ser modelado Prioridad Diagramas de Estructura

Destacan los elementos que deben existir en el sistema modelado.

- Clases Clases, tipos, interfaces y relaciones entre ellos. Alta - Componentes Los componentes importantes dentro de un sistema y las interfaces que ellos usan para

interactuar con otros. Media

- Objetos Los casos de objeto de las clases definidos en el diagrama de clases en configuraciones que son importantes para el sistema.

Baja

- Paquetes La organización jerárquica de grupos de clases y componentes. Baja - Estructura de composición

Las clases o componentes internos y pueden describir relaciones de clases dentro de un contexto dado.

Baja

- Distribución o despliegue

Como el sistema es finalmente desplegado en una situación dada del mundo real. Media

Diagramas de Comportamiento

Enfatizan en lo que debe suceder en el sistema modelado o proceso de negocios.

- Maquina de estados El estado de un objeto en todas partes de su vida y los acontecimientos que pueden cambiar ese estado.

Media

- Actividades Actividades secuenciales y paralelas dentro del sistema. Representa los procesos de negocios de alto nivel, incluidos en el flujo de datos.

Alta

- Casos de uso Interacciones entre un sistema y usuarios u otros sistemas externos. También ayuda al mapeo de los requerimientos al sistema.

Media

- Diagramas de interacción

Es un subtipo de diagramas de comportamiento, que enfatiza sobre el flujo de control y de datos entre los elementos del sistema modelado, es decir, la interacción entre objetos.

Secuencia Interacciones entre objetos donde el orden de las interacciones es importante. Alta Comunicación Los modos en los cuales los objetos interactúan y las conexiones que son necesarias para

soportar esa interacción. Baja

Anexo B

160

Cronometraje o tiempos

Las interacciones entre objetos donde el tiempo es un aspecto importante. Baja

Revisión de la interacción

Usa una colección de diagrama de secuencia, comunicación y cronometraje juntos para capturar una importante interacción que ocurre dentro del sistema.

Baja

En la información mostrada en la Tabla B-1 se observa el nivel de prioridad de aprendizaje

de cada uno de los diagramas [AMB04], los que tienen un nivel alto son: de clases, secuencia y actividad, además el diagrama de casos de uso es de prioridad media, pero éste especifica el valor que el sistema entrega a los usuarios y capturan una parte de la funcionalidad que el sistema proporciona, este diagrama afecta y dirige todos los elementos dentro del diseño del sistema.

Una vez presentada la semblanza de UML 2.0 a nivel general, se muestra a continuación

cada uno de los 13 diagramas del UML [UML05] con sus respectivos elementos, además del uso común que se les da en cada uno de los diagramas a partir de la Tabla B-2 a la Tabla B-14, donde la notación para indicar cada uno de los diagramas es la siguiente:

• Casos de Uso = CU • Clases = C • Actividad = A • Secuencia = S • Paquete = P • Objeto = O • Estructura Compuesta = EC • Componentes = Co • Despliegue = D • Comunicación = Com • Revisión de la Interacción = RI • Maquina de Estado = ME • Cronometraje o Tiempo = T

Tabla B-2. Elementos del diagrama de Casos de Uso y su relación con otros diagramas

Elementos Diagramas donde se utiliza

Actor CU, S, Com

Caso de uso CU

Punto de extensión CU

Subject CU

Uso CU,Co

Generalización C, O, CU, D

Incluye CU

Extend CU

Anexo B

161

Tabla B-3. Elementos del diagrama de Actividad y su relación con otros diagramas Elementos Diagramas

donde se utiliza

Actividad A

Acción A

Partición A

Nodo de objeto A

Almacén de datos A

Nodo de decisión A, RI, ME

Nodo merge A

Acción de señal enviada A, ME

Acción de evento recibido A, ME

Nodo inicial A, ME, RI

Nodo Final A, ME, RI

Flujo final A

Región A

Excepción A

Nodo de bifurcación A, RI

Nodo de unión A, RI

Flujo de control A

Flujo de objeto A, RI

Flujo de interrupción A

Tabla B-4. Elementos del diagrama de Maquina de Estado y su relación con otros diagramas

Elementos Diagramas donde se utiliza

Estado ME

Sub máquina de estado ME

Máquina de estado

ME

Estado inicial ME, A, RI

Estado final A, ME, RI

shallowHistory ME

DeepHistory ME

Acción ME

Pseudo estado escogido A, RI, ME

Pseudo estado unido ME

Anexo B

162

Estado compuesto

ME

Acción de señal enviada A, ME

Acción de evento recibido A, ME

Nodo terminado ME

Punto de entrada ME

Región

ME

Punto de salida ME

Transición ME

Tabla B-5. Elementos del diagrama de Cronometraje o Tiempos y su relación con otros diagramas

Elementos Diagramas donde se utiliza

Estado o condición de la línea de tiempo T

Valor general de la línea de vida T

Etiqueta de mensaje T

Evento de destrucción T

Marco

T, S, Com, RI

Línea de vida

T, S, Com, O

Mensaje T, S, Com

Ordenamiento general S, T

Tabla B-6. Elementos del diagrama de Secuencia y su relación con otros diagramas Elementos Diagramas

donde se utiliza

Actor CU, S

Línea de vida S, T, Com, O

Restricciones de duración, Duración, Observación

S

Límite S, Com

Control S, Com

Anexo B

163

Restricciones de tiempo, Observaciones de tiempo

S

Entidad S, Com

Fragmento combinado S

Marco

S, Com, T, RI

Mensaje perdido, mensaje encontrado S

Gate S

Empleo de interacción S, RI

Estado Invariante / Continuaciones S

Stop S

Coregion

S

Mensaje S, Com, T

Self- Message S

Ordenamiento general S, T

Tabla B-7. Elementos del diagrama de Revisión de la Interacción y su relación con otros diagramas

Elementos Diagramas donde se utiliza

Marco

S, Com, T, RI

Decisión A, RI, ME

Nodo inicial ME, A, RI

Nodo final A, ME, RI

Empleo de interacción

RI, S

Interacción

RI

Nodo de bifurcación A, RI

Nodo de unión A, RI

Flujo de objeto A, RI

Anexo B

164

Tabla B-8. Elementos del diagrama de Comunicación y su relación con otros diagramas Elementos Diagramas

donde se utiliza

Actor CU, S, Com

Límite S, Com

Control S, Com

Entidad S, Com

Marco

S, Com, T, RI

Mensaje

S, Com, T

Línea de vida

S, T, Com, O

Tabla B-9. Elementos del diagrama de Paquetes y su relación con otros diagramas

Elementos Diagramas donde se utiliza

Paquete P

Dependencia P, C, O, D

Package Merge P

Package Import P

Tabla B-10. Elementos del diagrama de Clases y su relación con otros diagramas

Elementos Diagramas donde se utiliza

Clase C, EC, Co

Interfaz EC, C, Co

Asociación C, O, D

Generalización C, O, D, CU

Composición C, O

Agregación C, O

Dependencia P, C, O, D

Realización Co, C, O

Realización de la interfaz C, O, Co

Rastro C

Anidar C

Anexo B

165

Tabla B-11. Elementos del diagrama de Objeto y su relación con otros diagramas Elementos Diagramas

donde se utiliza

Especificación de instancia O, S, T, Com

Asociación C, O, D

Generalización C, O, CU, D

Composición C, O

Agregación C, O

Dependencia P, C, O, D

Realización de la interfaz C, O, Co

Realización Co, C, O

Tabla B-12. Elementos del diagrama de Estructura Compuesta y su relación con otros diagramas

Elementos Diagramas donde se utiliza

Clase C, EC, Co

Interfaz EC, C, Co

Parte EC

Puerto EC, Co

Colaboración EC

Empleo de colaboración EC

Conector EC

Role binding EC

Representa EC

Ocurrencia EC

Tabla B-13. Elementos del diagrama de Componentes y su relación con otros diagramas

Elementos Diagramas donde se utiliza

Componente Co

Clase C, EC, Co

Interfaz EC, C, Co

Puerto EC, Co

Artefacto D, Co

Realización de la interfaz C, O, Co

Realización Co, C, O

Uso Co, CU

Anexo B

166

Tabla B-14. Elementos del diagrama de Despliegue y su relación con otros diagramas Elementos Diagramas

donde se utiliza

Nodo D

Artefacto D, Co

Especificación de despliegue D

Asociación C, O, D

Generalización C, O, CU, D

Despliegue D

Manifestación D

Dependencia P, C, O , D

167

Referencias [AGG07] AGG The Attributed Graph Grammar System, http://tfs.cs.tu-berlin.de/agg/, Revisada el 4 de Febrero de 2007. [AGR03] A. Agrawal, G. Karsai and F. Shi, Graph Transformations on Domain-Specific Models, http://www.isis.vanderbilt.edu/publications/archive/Agrawal_A_11_0 _2003_Graph_ Tran.pdf, 2003. [AHS06] Naveed Ahsan Tariq, Naeem Akhter, “Comparison of Model Driven Architecture (MDA) based tools (A Thesis document)”, http://dis.dsv.su.se/~emisnat/CMDA/MDATools_ KTH_KUH_MasterThesis2004_ Telemed5.pdf, 2004, Revisada septiembre de 2006. [ALT07] Altova Umodel, http://www.altova.com/download/umodel/uml_tool.html, 2007. [AMA04] Pablo Amaya, Carlos González, Juan M. Murillo, “Separación de Aspectos en MDA: Una aproximación basada en múltiples vistas”, Actas del I Taller sobre Desarrollo Dirigido por Modelos, MDA y Aplicaciones (DSDM’04), Málaga, España, 9 de noviembre de 2004. [AMA05] Pablo Amaya Barbosa, Carlos González y Juan M. Murillo Rodríguez, “AspectMDA: Hacia un desarrollo incremental consistente integrando MDA y Orientado a Aspectos”, Actas del II Taller sobre Desarrollo Dirigido por Modelos, MDA y Aplicaciones (DSDM’05), Málaga, España, 13 de septiembre de 2005. [AMB04] Scott W. Ambler, “The Object Primer, Agile Model-Driven Development with UML 2.0”, Cambridge University Press, 3

rd edition, 2004.

[AND06] AndroMDA, www.andromda.org2, Revisada septiembre de 2006. [ATOM07] AToM3 A Tool for Multi-Formalism Modelling and Meta-Modelling, http://atom3.cs.mcgill.ca/, Revisada Febrero 2007. [ATL06] ATLAS group LINA & INRIA Nantes, ATL: Atlas Transformation Language, “ATL User Manual version 0.7“, http://www.eclipse.org/m2m/atl/doc/ATL_User_Manual [v0.7].pdf, Febrero 2006. [ARC06] ArcStyle, http://www.arcstyler.com/, Revisada el septiembre de 2006. [BEZ03] Jean Bézivin, Nicolas Farcet, Jean-Marc Jézéque, Benoıt Langlois, and Damien Pollet, “Reflective Model Driven Engineering”, Proceedings of UML 2003, San Francisco, volume 2863 of LNCS, pag. 175-189, Springer (10/2003).

Referencias

168

[BRA03] Peter Braun, Frank Marschall, “BOTL The Bidirectional Object oriented Transformation Language”, http://wwwbib.informatik.tu-muenchen.de/infberichte/2003/TUM -I0307.pdf, Mayo 2003. [BRU02] Bernd Bruegge, Allen H. Dutoit, “Ingeniería de software orientada a objetos”, Prentice Hall, México, 2002. [CAC03-1] Cáceres, P.; Marcos, E.; Vela, B. “A MDA-Based Approach for Web Information System Development”, Workshop in Software Model Engineering (WiSME@UML'2003) in conjunction with UML Conference. San Francisco, USA. http://www.metamodel.com/wisme-2003/07.pdf Octubre, 2003. [CAC03-2] Paloma Cáceres y Esperanza Marcos, “Hacía un proceso metodológico dirigido por modelos para el desarrollo ágil de sistemas de información Web”, Taller de Metodologías Ágiles en el Desarrollo de Software, Alicante, http://issi.dsic.upv.es/archives/f-1069167248521/actas.pdf, del 12 al 14 de Noviembre de 2003. [COR06] Luis Enrique Corredera de Colsa, “Arquitectura dirigida por modelos para J2ME”, http://personal.telefonica.terra.es /web/lencorredera/mda_j2me.pdf, Revisada septiembre de 2006. [CMMI02] Carnegie Mellon Software Engineering Institute, Libro: Capability Maturity Model® Integration (CMMISM), Version 1.1, Continuous Representation, Marzo de 2002. [CSE02] Csertan, G. Huszerl, G. Majzik, I. Pap, Z. Pataricza, A. Varro, D. , “VIATRA - Visual Automated Transformations for Formal Verification and Validation of UML Models”, In Proceedings 17th IEEE International Conference on Automated Software Engineering (ASE 2002), Edinburgh, Scotland, 23-27 September 2002. [CZA03] Krzysztof Czarnecki and Simon Helsen, “Classification of Model Transformation Approaches”, http://www.swen.uwaterloo.ca/~kczarnec/ECE750T7/ czarnecki_helsen.pdf , University of Waterloo, Canada, 2003. [DEM05] Sebastien Demathieu, Catherine Griffin, and Shane Sendall, “Model Transformation with the IBM Model Transformation Framework”, http://www-128.ibm.com/developerworks/ rational/library/05/503 _sebas/, 2005. [DIA04] Isabel Díaz, Oscar Pastor, Lidia Moreno, Alfredo Matteo, “Una aproximación Lingüística de Ingeniería de Requisitos para OO-Method”, IDEAS’ 2004, 7º Workshop Iberoamericano de Ingeniería de Requisitos y Ambientes Software, Mayo 2004. [DSDM06] DSDM: Desarrollo de Software Dirigido por Modelos. MDA y Aplicaciones, http://www.lcc.uma.es/~av/MDD-MDA/, revisada agosto de 2006. [ENT06] Enterprise Architect, http://www.sparxsystems.com.au/, 2006.

Referencias

169

[EXE04] Daniel Exertier, Benoit Langlois Xavier Le Roux, "PIM Definition and Description",Proceedings First European Workshop on Model Driven Architecture with Emphasis on Inductrial Application, Univ. Twente, Netherlands , pag. 17-18, Marzo 2004. [GAR04] J. García Molina, J. Rodríguez, M. Menárguez, M.J. Ortín, J. Sánchez, “Un estudio comparativo de dos herramientas MDA: OptimalJ y ArcStyler”, Actas del I Taller sobre Desarrollo Dirigido por Modelos, MDA y Aplicaciones (DSDM’04), Málaga, España, 9 de noviembre de 2004. [GAR06] Jesús García Molina, M. José Ortín, Begoña Moros, Joaquín Nicolás, Ambrosio Toval, “De los Procesos del Negocio a los Casos de Uso”, http://www.willydev.net/ descargas/ WillyDev_modeladodenegocio.pdf, Revisado en Noviembre de 2006. [GON04] Moisés González-García y Ana María Martínez Enríquez, “Método de Desarrollo Arquitectónico en Grupo”, Reporte técnico de la sección de Computación del CINVESTAV, RT-DE-SC-2004-EMOL, 2004. [GON06] Moisés González García, “Método de Desarrollo Arquitectónico en Grupo”, Tesis Doctoral del Área de Computación del Departamento de Ingeniería Eléctrica, del CINVESTAV, agosto del 2006. [GRO02] Timothy J. Grose, Gary C. Doney, Stephen A. Brodsky, Libro: “Mastering XMI Java Programming with XMI, XML, and UML”, 2002. [IBM05] IBM Software Group, “MDA Overview Applied MDA”, http://www.omg.org/ news/meetings/workshops/SOA_MDA_WS_Workshop_CD/00-T-03_Amsden-Part1.pdf, Noviembre de 2005. [IDEF06] Integrated DEFinition Methods “IDEF”, http://www.idef.com/, 2006. [ISO91] ISO/IEC 9126, Software product evaluation - Quality characteristics and guidelines for their use, 1991. [JAC00] Ivar Jacobson, Grady Booch, James Rumbaugh, “El proceso unificado de desarrollo de software”, Pearson education, Madrid, 2000. [KEM07] Case Study – Kemmerer's Library Problem, http://www.dcs.shef.ac.uk/~ajc/ dfa/slides/slides8.pdf, Revisado el 16 de Febrero de 2007. [KERMETA07] Kermeta, http://www.kermeta.org/documents/, Revisada 2 de Febrero de 2007. [KLE03] Anneke Kleppe, Jos Warmer y Wim Bast, Libro titulado: MDA Explained: The Model Driven Architecture: Practice and Promise, Pearson Education, 2003.

Referencias

170

[LAR06] Xabier Larrucea, Ana Belen García Díez, Jason Xabier Mansell, "Practical Model Driven Development process", http://www.cs.kent.ac.uk/projects/kmf/mdaworkshop/ submissions/Larrucea.pdf, Revisado octubre 2006. [LAR97] Larman, C.: Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design. Prentice Hall, primera edición, 1997. [LAY04] L. Williams, L. Layman, “Extreme programming evaluation framework for Object-Oriented LanguagesVersion 1.4”, North Carolina State University, Department of Computer Science, 2004. ftp://ftp.ncsu.edu/pub/unity/lockers/ftp/csc_anon/tech/2004/TR-2004-18.pdf Revisada en Enero de 2006. [LOP07] Edna D. López L., Moisés González G., Máximo López S., Desarrollo de la demostración de la tesis: “Caracterización de las fronteras de los modelos MDA mediante UML”, Reporte técnico de la sección de Ingeniería de Software del CENIDET, RT-DCC-1-2007, 2007. [LUC05] Francisco Javier Lucas Martínez, Fernando Molina Molina, Ambrosio Toval Álvarez, “Una Propuesta de Proceso Explícito de V&V en el Marco de MDA”, Actas del II Taller sobre Desarrollo Dirigido por Modelos, MDA y Aplicaciones (DSDM’05), Málaga, España, 13 de septiembre de 2005. [MASTER-03-1] Model-driven Architecture inSTrumentation, Enhancement and Refinement (MASTER),"PIM to PSM mapping techniques", http://modeldrivenarchitecture.esi.es/mda _publicDocuments.html#D2.1, Diciembre 2003. [MASTER-03-2] Model-driven Architecture inSTrumentation, Enhancement and Refinement (MASTER),"PSMs Concepts and Techniques”, http://modeldrivenarchitecture.esi.es/mda_ publicDocuments.html#D2.1 Junio 2003. [MDA03] Object Management Group, Model Driven Architecture Guide 1.0.1, 2003. [MIC06] Chris Micali, “Introduction to Model Driven Development with AndroMDA (Part 1)”, http://www.codeproject.com/ useritems/intro_to_andromda_1.asp, Revisada septiembre de 2006. [MIL03] Joaquín Miller y Jishnu Mukerji, MDA Guide Version 1.0.1, http://www.omg.org/ docs/omg/03-06-01.pdf, 12 de Junio de 2003. [OBJ05] Object Management Group, “MOF 2.0/XMI Mapping Specification, v2.1”, OMG Document formal/2005-09-01, http://www.omg.org/docs/formal/05-09-01.pdf, septiembre 2005. [OPT06] OptimalJ, http://www.compuware.com/products/optimalj/, Revisada septiembre de 2006.

Referencias

171

[OMG06] OMG, Committed Companies and Their Products, http://www.omg.org/mda /committed-products.htm, revisada agosto de 2006. [OMG07] OMG Modeling Specifications, http://www.omg.org/technology/documents/vault. htm #modeling, revisada en el 2007. [PAR00] Isaac Alberto Parra Ramírez, Tesis: Modelado visual orientado a objetos, CENIDET, Diciembre de 2000. [QUE06] Pascual Queralt, Luís Hoyos, Artur Boronat, José Á. Carsí e Isidro Ramos, “Un motor de transformación de modelos con soporte para el lenguaje QVT Relations”, http://www.dsic.upv.es/workshops/dsdm06/files/dsdm06-14-Queralt.pdf, DSDM: Desarrollo de Software Dirigido por Modelos. MDA y Aplicaciones DSDM’06, España, 3 de Octubre de 2006. [QVT05] Meta Object Facility (MOF) 2.0 Query/View/Transformation Specification, http://www.omg.org/docs/ptc/05-11-01.pdf, Noviembre de 2005. [ROM03] Javier Román Castañeda, Tesis: Sistema para el diseño detallado de métodos de clases con UML, CENIDET, Marzo de 2003. [RUI03] Francisco Ruiz González, “MANTIS: Definición de un Entorno para la Gestión del Mantenimiento de Software”. Tesis Doctoral. Depto. de Informática, Universidad de Castilla-La Mancha, junio de 2003. [RUP05] IBM Corporation, Rational Unified Process (Evaluation) “RUP” Version 7.0.1.E, 2005. [SAN06-A] Jesús Sánchez Cuadrado, Jesús García Molina, Marcos Menárguez, “RubyTL: A Practical, Extensible Transformation Language”, In 2nd European Conference on Model Driven Architecture, Lecture Notes in Computer Science, June 2006, volume 4066, pages 158–172. [SAN06-B] Jesús Sánchez Cuadrado, Jesús J. García Molina y Marcos Menárguez Tortosa, “RubyTL: un lenguaje de transformación de modelos extensible”, XV Jornadas de Ingeniería del Software y Bases de Datos JISBD, Barcelona, 2006. [SEL06] Bran Selic,"Model-Driven Development: Its Essence and Opportunities",Proceedings of the Ninth IEEE International Symposium on Object and Component-Oriented Real-Time Distributed Computing, http://ieeexplore.ieee.org/Xplore/login.jsp?url=/iel5/10852/34193/01 630494.pdf , 2006. [SHA95] Mary Shaw, David Garlan, Robert Allen, Dan Klein, John Ockerbloom, Curtis Scott, Marco Schumacher, “Candidate Model Problems in Software Architecture”, http://www.cs. cmu.edu/afs/cs/project/vit/ftp/pdf/ModPrb1-3.pdf, Enero de 1995.

Referencias

172

[STD98] IEEE, “IEEE Recommended Practice for SoftwareRequirements Specifications”, IEEE Std. 830-1998, 1998. [STE02] Perdita Stevens y Rob Pooley, Libro titulado: Utilización de UML en Ingeniería del Software con Objetos y Componentes, Pearson Educación, S.A., Madrid, 2002. [STY07] Progress Software Corporation, “Stylus Studio 2007 XML Enterprise Suite”, http://www.stylusstudio.com/, 2007. [TEFKAT07] Tefkat The EMF Transformation Engine, http://tefkat. sourceforge.net/ publications.html, Revisada Enero 2007. [TRO03] Dinh Trong Thanh Trung, “Rules for generating code from UML collaboration diagrams and activity diagrams”, http://www.cs.colostate.edu/~trungdt/code_generation/ Thesis.pdf , 2003. [TUC03] Allen Tucker, Robert Noonan, “Lenguajes de programación. Principios y Paradigmas”, MC Graw Hill, Madrid, 2003, Pág. 89, 271. [ULR06] Ulrich A. Nickel, Jörg Niere, Jörg P. Wadsack, Albert Zündorf, “Roundtrip Engineering with FUJABA”, http://www.coobra.cs.uni-kassel.de/fileadmin/se/publications/ NNWZ00.pdf , 2000, Revisada el 25 de octubre de 2006. [UML05] Object Management Group, “Unified Modeling Language: Superstructure”, http://www.omg .org/docs/formal/05-07-04.pdf, Agosto de 2005. [VIATRA06] VIATRA 2 Model Transformation Framework User’s Guide, http://dev. eclipse.org/viewcvs/indextech.cgi/gmt-home/subprojects/VIATRA2/doc/viatratut_October20 06.pdf, Octubre de 2006. [VIS07] Visual Paradigm for UML, http://www.visual-paradigm.com/product/vpuml/, 2007. [VMT07] VMTS Web Site, http://avalon.aut.bme.hu/~tihamer/research/vmts/, Revisada 23 de enero de 2007. [WIL04] Edward D. Willink,“Towards a Formalization of UMLX”, http://dev.eclipse.org/ viewcvs/indextech.cgi/gmt-home/subprojects/UMLX/doc/UmlxFormalization/UmlxFormaliza tion.pdf, 19 de Diciembre de 2004. [WIN88] Jeannette Wing, A Study of 12 Specifications of the Library Problem, IEEE Software, July 1988, pp. 66-76. [XMI01] XMI Reference,http://www.zvon.org/xxl/XMI/Output/index.html, 2001. [XMI05] Object Management Group, MOF 2.0/XMI Mapping Specification, v2.1, http:// www.omg .org/docs/formal/05-09-01.pdf, Septiembre 2005.

Referencias

173

[XSLT07] W3C; “XSL Transformations version 1.0”. URL: http://www.w3.org/ TR/xslt, Revisada el 15 de enero de 2007. [ZHA05] Wei Zhang, Hong Mei, Haiyan Zhao, Jie Yang, “Transformation from CIM to PIM: A Feature-Oriented Component-Based Approach”, Models 2005, Jamaica, volume 3713 of LNCS, pag. 248-263, 2005. [ZUN02] Dr. Albert Zündorf, “Rigorous Object Oriented Software Development”, http://www.se.eecs.uni-kassel.de/se/fileadmin/se/publications/Zuen02.pdf, 2002.