Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Departamento de Informtica
TESIS DOCTORAL
Oviedo, 2007
UNIVERSIDAD DE OVIEDO
Departamento de Informtica
TESIS DOCTORAL
Presentada por
Da. Begoa Cristina Pelayo Garca-Bustelo
Para la obtencin del ttulo de Doctora por la Universidad de Oviedo
Dirigida por el
Profesor Doctor D. Juan Manuel Cueva Lovelle
RESUMEN
La
especificacin
Model
Driven
Architecture
(MDA),
es
una
especializacin del desarrollo dirigido por modelos que separa la lgica del
negocio del software y las plataformas tecnolgicas. Para ello MDA define tres
tipos de modelos. Los CIM, Computation Independent Model, asociados al
dominio del negocio, los PIM, Platform Independent Model, asociados a modelos
abstractos del software, y los PSM, Platform Specific Model, relacionados con
modelos de software especficos de plataformas tecnolgicas.
Sin embargo MDA no detalla cmo deben ser los modelos CIM y tampoco
describe cmo deben ser transformados a modelos PIM. Como solucin a dicho
problema, esta tesis presenta una recomendacin que propone un proceso de
desarrollo de software basado en la creacin de modelos de procesos del
negocio, clasificados como CIM, que son asociados a los modelos iniciales del
software, considerados PIM.
Partiendo de una interpretacin vlida de MDA, la recomendacin
propuesta se apoya adems en la aplicacin de otras disciplinas de gran
actualidad. Entre ellas destacamos el uso de desarrollo gil de software, para la
definicin adecuada de los procesos del negocio.
ABSTRACT
Model Driven Architecture (MDA) specification is a specialization of
model driven development that separates business logic from software and
technological platforms. In this sense it MDA defines three types of models.
CIM, Computation Independent Model, related to business domain, PIM,
Platform Independent Model, associated to abstract software models, and PSM,
Platform Specific Model, related specific to software models of technological
platforms.
Nevertheless MDA does not detail how CIM models must be and it does
not describe either how they must be transformed to PIM models. Like a
solution to this problem, this thesis presents a recommendation that proposes a
development process based on the creation of business processes models,
classified like CIM, and associated to initial software models, considered PIM.
Starting on a valid MDA interpretation, proposed recommendation is
based as well on the application of other important present disciplines. Between
them we emphasized, agile software development, for adequate definition of
business processes.
iii
NDICE GENERAL
Resumen .................................................................................................................i
Abstract.................................................................................................................iii
ndice general........................................................................................................ v
ndice de figuras ...................................................................................................xi
ndice de tablas ................................................................................................. xvii
ndice de cdigos fuentes................................................................................... xix
1.
Introduccin a la investigacin......................................................................1
1.1.
1.2.
1.3.
1.4.
2.
NDICE GENERAL
3.
vi
Mayo de 2007
ndice general
4.
5.
TALISMAN
vii
NDICE GENERAL
5.4.4. Vista de Implementacin ...........................................................................110
5.4.5. Vista de Despliegue ..................................................................................110
5.5.
UML Ejecutable ..........................................................................................110
5.5.1. La Propuesta de UML Ejecutable ................................................................111
6.
7.
8.
9.
Sistemas de Persistencia............................................................................131
9.1.
Definicin de Persistencia ...........................................................................131
9.2.
Almacenamiento y acceso a los datos y objetos ...........................................132
9.2.1. Base de Datos ..........................................................................................132
9.2.2. Sistema Gestor de Base de Datos ..............................................................133
9.2.3. Sistema de Indexacin ..............................................................................134
9.3.
Desarrollo de Aplicaciones Persistentes ........................................................137
9.3.1. SQL: Structured Query Language...............................................................137
9.3.2. JDBC: Java Database Connectivity .............................................................139
9.3.3. SQLJ ........................................................................................................143
9.3.4. Mecanismo de Serializacin de Objetos Java...............................................144
9.3.5. Serializacin de Java Beans con XML..........................................................145
9.3.6. Herramientas de Correspondencia Objeto/Relacional...................................146
9.3.6.1. Hibernate ..........................................................................................149
9.3.6.2. Java Data Objects (JDO) ....................................................................159
9.4.
Frameworks de Persistencia ........................................................................168
9.4.1. Enterprise Java Beans ...............................................................................168
9.4.2. Spring ......................................................................................................172
viii
Mayo de 2007
ndice general
10.2.5. Principios o reglas de Usabilidad ..............................................................191
10.3. El Modelo Vista Controlador (MVC) ..............................................................192
10.3.1. Flujo de la Informacin ...........................................................................193
10.3.2. Implementaciones...................................................................................194
10.3.2.1. JavaServer Faces .............................................................................195
10.3.2.2. Apache Struts ..................................................................................196
10.3.2.3. XForms............................................................................................198
11. Plataformas: J2EE y .NET ...........................................................................203
11.1. La Plataforma J2EE.....................................................................................203
11.1.1. JVM - Java Virtual Machine ......................................................................205
11.1.2. Lenguaje Java ........................................................................................207
11.1.3. Java API (Java Application Programming Interface)...................................209
11.1.4. Utilidades ...............................................................................................210
11.2. La Plataforma .NET ....................................................................................211
11.2.1. CLR - Common Language Runtime...........................................................214
11.2.1.1. Utilizacin de una pila de ejecucin ...................................................216
11.2.1.2. Compilacin JIT ...............................................................................216
11.2.1.3. Generacin de cdigo en tiempo de instalacin ..................................217
11.2.1.4. Verificacin esttica de tipos .............................................................217
11.2.1.5. Gestin dinmica de memoria ...........................................................218
11.2.1.6. Independiente del lenguaje ..............................................................218
11.2.1.7. Sistema de Componentes .................................................................219
11.2.2. Lenguajes .Net .......................................................................................220
11.2.2.1. Lenguaje Visual Basic .......................................................................220
11.2.2.2. Lenguaje C#....................................................................................220
11.2.2.3. Lenguaje C++ administrado .............................................................221
11.2.2.4. Lenguaje Jscript .NET.......................................................................221
11.2.2.5. Lenguaje J# ....................................................................................221
11.2.3. CTS: Sistema Comn de Tipos .................................................................222
11.2.3.1. Tipos de valor ..................................................................................222
11.2.3.2. Tipos de referencia...........................................................................223
11.2.4. Biblioteca de clases de .Net Framework....................................................225
11.2.5. Utilidades ...............................................................................................226
11.2.5.1. Herramientas de configuracin e implementacin...............................226
11.2.5.2. Herramientas de depuracin .............................................................228
11.2.5.3. Herramientas de seguridad ...............................................................229
11.2.5.4. Herramientas generales....................................................................230
12. TALISMAN: Metodologa gil con MDA ......................................................233
12.1. Metodologas tradicionales y MDA ..............................................................233
12.1.1. Proceso de Desarrollo Tradicional.............................................................234
12.1.1.1. La Iteracin como Respuesta al Cambio ............................................234
12.1.1.2. Mtodos giles.................................................................................236
12.1.1.3. Modelado y Codificacin ...................................................................239
12.1.1.4. Problemas en los Procesos de Desarrollo Actuales ..............................241
12.1.2. Proceso de desarrollo utilizando MDA .......................................................246
12.2. Adaptacin de los MDAs a los mtodos de desarrollo gil de Software:
TALISMAN .............................................................................................................249
12.2.1. Anlisis...................................................................................................250
12.2.2. Diseo....................................................................................................251
12.2.3. XMI + Extensiones..................................................................................252
12.2.4. TALISMAN ..............................................................................................253
TALISMAN
ix
NDICE GENERAL
12.2.4.1. Persistencia .....................................................................................254
13. Construccin del Prototipo.........................................................................257
13.1. Construccin del PIM ..................................................................................259
13.1.1. Introduccin de la Informacin sobre la aplicacin a generar .....................259
13.2. Construccin del PSM .................................................................................260
13.3. Salida Generada .........................................................................................260
13.3.1.1. Generacin de Cdigo fuente ............................................................260
13.3.1.2. Administracin de usuarios y perfiles de usuario ................................264
13.4. Registros (logs)..........................................................................................266
13.4.1. Registro (log) del Proyecto generado ......................................................266
13.4.2. Registro (log) de la ejecucin del Proyecto generado ................................267
14. Pruebas del Prototipo ................................................................................269
14.1. Anlisis y Diseo ........................................................................................269
14.1.1. Diagrama de Clases ................................................................................270
14.1.2. Diagramas de Interfaz de Usuario ............................................................270
14.1.2.1. Diagrama de Fragmentos..................................................................270
14.1.2.2. Diagrama de Navegacin ..................................................................271
14.1.3. Diseo de la Lgica de Negocio................................................................272
14.1.3.1. Diagrama de Servicios Web ..............................................................272
14.1.3.2. Diagrama de Servicios Web Cliente ...................................................272
14.1.3.3. Diagrama de Usuarios ......................................................................272
14.2. XMI + Extensiones .....................................................................................273
14.3. TALISMAN .................................................................................................273
14.3.1. Modelo PIM ............................................................................................273
14.3.2. Transformaciones mediante archivos XSLT y CSS......................................276
14.3.3. Recursos adicionales ...............................................................................276
14.4. Salida Generada .........................................................................................277
15. Conclusiones y lneas de investigacin futuras .........................................279
15.1. Evaluacin de la hiptesis de partida ...........................................................280
15.2. Verificacin y evaluacin de los objetivos .....................................................282
15.3. Aportaciones de la tesis ..............................................................................283
15.3.1. Aportaciones en el mbito de MDA...........................................................283
15.3.2. Aportaciones en el mbito del desarrollo de software gil ..........................284
15.4. Trabajos derivados .....................................................................................285
15.5. Lneas de investigacin futuras....................................................................286
Anexos ...............................................................................................................287
Anexo A.
Anexo B.
Mayo de 2007
NDICE DE FIGURAS
Figura 2.1. Coste del cambio tradicional en ingeniera del software. ................14
Figura 2.2. Coste del cambio en XP. ...................................................................14
Figura 2.3. Evolucin de los ciclos de desarrollo. ................................................16
Figura 2.4. Ejemplo de ficha CRC.........................................................................21
Figura 2.5. JUnit en funcionamiento....................................................................22
Figura 3.1. Ejemplo de niveles de abstraccin e independencia con respecto a la
plataforma en MDA. .............................................................................................31
Figura 3.2. Transformaciones y herramientas de transformacin. .....................33
Figura 3.3. Definicin de la informacin de la transformacin............................34
Figura 3.4. Proceso de desarrollo de Software Tradicional. ................................35
Figura 3.5. Ciclo de Vida. ....................................................................................38
Figura 3.6. Visin alternativa de MDA. ................................................................39
Figura 3.7. Arquitectura de AndroMDA versin 4. ..............................................60
Figura 4.1. Estructura del patrn Abstract Factory. ............................................71
Figura 4.2. Estructura del patrn Builder. ...........................................................72
Figura 4.3.Estructura del patrn Factory Method................................................72
Figura 4.4. Estructura del patrn Prototype. .......................................................73
Figura 4.5.Estructura del patrn Singleton. ........................................................73
Figura 4.6. Estructura del patrn Adapter de clases. ..........................................74
Figura 4.7. Estructura del patrn Bridge. ............................................................75
xi
NDICE DE FIGURAS
Figura 4.8.Estructura del patrn Composite........................................................75
Figura 4.9. Estructura del patrn Decorator........................................................77
Figura 4.10.Aplicacin del patrn Facade............................................................77
Figura 4.11.Estructura del patrn Facade. ..........................................................78
Figura 4.12. Estructura del patrn Proxy. ...........................................................80
Figura 4.13. Estructura del patrn Chain of Responsibility. ................................81
Figura 4.14.Estructura del patrn Command. .....................................................81
Figura 4.15.Estructura del patrn Interpreter. ...................................................82
Figura 4.16.Estructura del patrn Iterator. .........................................................83
Figura 4.17. Estructura del patrn Mediator. ......................................................84
Figura 4.18.Estructura del patrn Memento........................................................84
Figura 4.19.Estructura del patrn Observer. .......................................................85
Figura 4.20. Estructura del patrn State. ............................................................86
Figura 4.21. Estructura del patrn Strategy. .......................................................86
Figura 4.22. Estructura del patrn Template Method..........................................87
Figura 4.23.Estructura del patrn Visitor. ...........................................................87
Figura 5.1.Representacin de una clase. .............................................................93
Figura 5.2.Ejemplo de una interfaz......................................................................93
Figura 5.3.Ejemplo de colaboracion. ...................................................................94
Figura 5.4.Ejemplo de caso de uso. .....................................................................94
Figura 5.5.Ejemplo de clase Activa. .....................................................................95
Figura 5.6.Ejemplo de componente. ....................................................................95
Figura 5.7.Ejemplo de nodo. ................................................................................95
Figura 5.8.Ejemplo de interaccion. ......................................................................96
Figura 5.9.Ejemplo de estado. .............................................................................96
Figura 5.10.Ejemplo de paquete..........................................................................97
Figura 5.11.Ejemplo de nota................................................................................97
xii
Mayo de 2007
ndice de figuras
Figura 5.12.Representacin de la relacin de dependencia. ...............................98
Figura 5.13.Ejemplo de la relacin de asociacin................................................98
Figura 5.14.Representacin de la relacin de generalizacin. ............................98
Figura 5.15.Representacin de la relacin de realizacin. ..................................99
Figura 5.16.Jerarqua de los diagramas UML 2.1. ...............................................99
Figura 5.17.Diagrama de Clases. .......................................................................100
Figura 5.18.Diagrama de Objetos. .....................................................................101
Figura 5.19.Diagrama de Casos de Uso. ............................................................101
Figura 5.20.Diagrama de Secuencia. .................................................................102
Figura 5.21.Diagrama de Colaboracin. ............................................................102
Figura 5.22.Diagrama de Estados. .....................................................................103
Figura 5.23.Diagrama de Actividades. ...............................................................104
Figura 5.24.Diagrama de Componentes. ...........................................................104
Figura 5.25.Diagrama de Despliegue.................................................................105
Figura 5.26.Adornos en la definicin de una clase. ...........................................106
Figura 5.27.Divisin entre clases y objetos. ......................................................106
Figura 5.28.Divisin entre interfaz e implementacin. .....................................107
Figura 5.29.Modelado de la arquitectura de un sistema. ..................................108
Figura 6.1.Metamodelo de los tipos de OCL. .....................................................120
Figura 6.2.Metamodelo de las expresiones de OCL. ..........................................120
Figura 7.1.Fragmento del metamodelo de UML.................................................122
Figura 7.2. Metamodelo para los diagramas de estados de UML. .....................123
Figura 8.1.Aplicacin de las reglas de la transformacin XMI sobre un
metamodelo UML. ..............................................................................................128
Figura 9.1.Principales clases e interfaces JDBC. ...............................................141
Figura 9.2.Ciclo de vida de un objeto persistente. ............................................153
Figura 9.3.Estados correspondientes a la operacin de hacer una instancia
persistente. ........................................................................................................162
TALISMAN
xiii
NDICE DE FIGURAS
Figura 9.4.Estados correspondientes a la modificacin de los campos de una
instancia.............................................................................................................163
Figura 9.5.Interfaz Query. .................................................................................163
Figura 9.6.Arquitectura de Spring. ....................................................................172
Figura 9.7.Diagrama de clases del patrn Data Access Object. ........................175
Figura 10.1.Arquitectura MVC. ..........................................................................193
Figura 10.2.Representacin de JavaServer Faces. ............................................196
Figura 10.3.Control de Flujo en Struts...............................................................198
Figura 10.4.Modelo XForms. ..............................................................................200
Figura 10.5.Visin global de XForms. ................................................................200
Figura 11.1.La mquina virtual de Java (JVM). .................................................205
Figura 11.2.Compilacin de un programa Java. ................................................207
Figura 11.3.Pasos para ejecutar un programa Java. .........................................208
Figura 11.4. Aspecto de la ejecucin de un programa.......................................209
Figura 11.5.Paquetes de J2EE............................................................................210
Figura 11.6.Relacin de CLR y las aplicaciones. ................................................213
Figura 11.7.Estructura de la CLR. ......................................................................216
Figura 11.8.Contenido de un ensamblado esttico. ..........................................220
Figura 11.9.Interacin entre lenguajes y creacin de assemblys. ....................220
Figura 11.10.Utilizacin de los lenguajes de programacin en la plataforma
.NET....................................................................................................................221
Figura 11.11.Interoperatividad entre lenguajes. ..............................................222
Figura 11.12.Sistema Comn de Tipos. .............................................................223
Figura 11.13.Componentes del espacio de nombres System. ...........................226
Figura 12.2.Proceso de desarrollo con un ciclo de vida iterativo. .....................236
Figura 12.3. Especificacin e implementacin de aplicaciones con MDA. .........247
Figura 12.4. Esquema del proceso de desarrollo gil con TALISMAN...............250
Figura 12.5.Detalle del Anlisis en TALISMAN ..................................................251
xiv
Mayo de 2007
ndice de figuras
Figura 12.6.Detalle del Anlisis en TALISMAN ..................................................252
Figura 12.7.Detalle de la arquitectura de TALISMAN ........................................254
Figura 12.8. Motor de persistencia ....................................................................255
Figura 13.1. Men de anlisis (PIM)..................................................................259
Figura 13.2. Men de diseo (PSM)...................................................................260
Figura 13.3. Los 5 proyectos generados ............................................................261
Cdigo Fuente 13.1. Ejemplo de cadena de conexin generada automticamente
262
Figura 13.4. Ejemplo de ejecucin del proyecto UnitTest .................................263
Figura 13.5. Aspecto de Microsoft Sql Server Management Studio...................264
Figura 13.6. Aspecto de la herramienta de configuracin de sitios Web ..........265
Figura 13.7. Posible aspecto de la pgina de Login...........................................266
Figura 14.1. Diagrama de clases.......................................................................270
Figura 14.2. Diagrama de fragmentos ...............................................................271
Figura 14.3. Diagrama de navegacin ...............................................................271
Figura 14.4. Diagrama de clases de servicios Web............................................272
Figura 14.5. Diagrama de servicios Web cliente ...............................................272
Figura 14.6. Diagrama de usuarios....................................................................273
Figura 14.7. Imgenes de la carpeta Media. .....................................................277
Figura 14.8.Aspecto de la Aplicacin de casas rurales. .....................................278
TALISMAN
xv
xvi
ndice de tablas
NDICE DE TABLAS
Tabla 2.1. Caractersticas de los mtodos giles. ................................................12
Tabla 7.1. Metaniveles de MOF. .........................................................................124
TALISMAN
xvii
NDICE DE TABLAS
xviii
Mayo de 2007
xix
xx
Mayo de 2007