Coach - The IMDEA Software Institute

Anuncio
MySQL4OCL:
Un compilador de
OCL a MySQL
Carolina Inés Dania
Director: Dr. Manuel García Clavel
Colaboradora externa: Dra. Marina Soledad Egea Gonzalez
Departamento de Sistemas Informáticos y Computación
Universidad Complutense de Madrid
28 de septiembre de 2011
Wednesday, September 28, 11
Organización
Wednesday, September 28, 11
Organización
• Introducción
Desarrollo dirigido por modelos
UML - OCL
Base de datos - SQL y MySQL
Wednesday, September 28, 11
Organización
• Introducción
Desarrollo dirigido por modelos
UML - OCL
Base de datos - SQL y MySQL
• MySQL4OCL: Descripción general
De diagramas UML a tablas MySQL
De expresiones OCL a procedimientos almacenados
Wednesday, September 28, 11
Organización
• Introducción
Desarrollo dirigido por modelos
UML - OCL
Base de datos - SQL y MySQL
• MySQL4OCL: Descripción general
De diagramas UML a tablas MySQL
De expresiones OCL a procedimientos almacenados
• MySQL4OCL: Arquitectura
Optimizaciones y caso de estudio
Wednesday, September 28, 11
Organización
• Introducción
Desarrollo dirigido por modelos
UML - OCL
Base de datos - SQL y MySQL
• MySQL4OCL: Descripción general
De diagramas UML a tablas MySQL
De expresiones OCL a procedimientos almacenados
• MySQL4OCL: Arquitectura
Optimizaciones y caso de estudio
• Conclusiones y trabajo futuro
Wednesday, September 28, 11
MDA: Desarrollo de software dirigido
por modelos
Wednesday, September 28, 11
MDA: Desarrollo de software dirigido
por modelos
Diagrama de
clases/objetos
Consultas OCL
Wednesday, September 28, 11
MDA: Desarrollo de software dirigido
por modelos
UML/OCL
Diagrama de
clases/objetos
Consultas OCL
Wednesday, September 28, 11
MDA: Desarrollo de software dirigido
por modelos
UML/OCL
Diagrama de
clases/objetos
Consultas OCL
Wednesday, September 28, 11
Base de datos
Consultas SQL
MDA: Desarrollo de software dirigido
por modelos
UML/OCL
SQL/MySQL
Diagrama de
clases/objetos
Consultas OCL
Base de datos
Consultas SQL
Wednesday, September 28, 11
MDA: Desarrollo de software dirigido
por modelos
UML/OCL
Diagrama de
clases/objetos
Consultas OCL
Wednesday, September 28, 11
Marco teórico
SQL/MySQL
Base de datos
Consultas SQL
MDA: Desarrollo de software dirigido
por modelos
UML/OCL
Marco teórico
Diagrama de
clases/objetos
Consultas OCL
MySQL4OCL
Wednesday, September 28, 11
SQL/MySQL
Base de datos
Consultas SQL
MDA: Desarrollo de software dirigido
por modelos
UML/OCL
Marco teórico
Diagrama de
clases/objetos
Consultas OCL
MySQL4OCL
Wednesday, September 28, 11
SQL/MySQL
Base de datos
Consultas SQL
MDA: Desarrollo de software dirigido
por modelos
Definición formal
UML/OCL
Marco teórico
Diagrama de
clases/objetos
Consultas OCL
MySQL4OCL
Wednesday, September 28, 11
SQL/MySQL
Base de datos
Consultas SQL
MDA: Desarrollo de software dirigido
por modelos
Definición formal
UML/OCL
Marco teórico
Diagrama de
clases/objetos
Consultas OCL
MySQL4OCL
Wednesday, September 28, 11
Implementación
SQL/MySQL
Base de datos
Consultas SQL
UML: Lenguaje de modelado unificado
Wednesday, September 28, 11
UML: Lenguaje de modelado unificado
• Diagrama de clases
Wednesday, September 28, 11
UML: Lenguaje de modelado unificado
• Diagrama de clases
• Diagrama de objetos
Wednesday, September 28, 11
UML: Lenguaje de modelado unificado
• Diagrama de clases
• Diagrama de objetos
Wednesday, September 28, 11
UML: Lenguaje de modelado unificado
•
•
• Diagrama de clases
• Diagrama de objetos
clases
atributos
20
Trip
+ origin : String
+ destination : String
PrivateTrip
trips
*
tripCoach
RegularTrip
+ availableSeats : Integer
2. Preliminares
Coach
coaches + model : String
+ numberOfSeats : Integer
*
regularTrips
passengers
*
touristGroup
*
Figura 2.3: Diagrama de clases Coach_Company
Wednesday, September 28, 11
Person
+ name : String
UML: Lenguaje de modelado unificado
•
•
• Diagrama de clases
• Diagrama de objetos
clases
atributos
2020
Trip
Trip
trips
+ origin
: String
trips
+ origin
: String
+ destination
: String
+ destination
: String
* *
PrivateTrip
PrivateTrip
2. Preliminares
Preliminares
2.
Coach
Coach
coaches ++model
model: :String
String
coaches
numberOfSeats :: Integer
Integer
++numberOfSeats
**
tripCoach
tripCoach
RegularTrip
Person
RegularTrip
Person
regularTrips
passengers
passengers + name : String
+ availableSeats : Integer regularTrips
+ availableSeats : Integer
*
touristGroup
* + name : String
*
touristGroup
*
Figura 2.3: Diagrama de clases Coach_Company
Figura 2.3: Diagrama de clases Coach_Company
Wednesday, September 28, 11
UML: Lenguaje de modelado unificado
•
•
•
• Diagrama de clases
• Diagrama de objetos
clases
atributos
asociaciones (extremo de asociación)
20
2020
Trip
Trip
Trip
trips
origin
String
++origin
:: String
trips
+ origin
: String
destination :: String
String
++destination
+ destination
: String
* *
PrivateTrip
PrivateTrip
PrivateTrip
2. Preliminares
Preliminares
2.2.
Preliminares
Coach
Coach
Coach
coaches
coaches +
++model
model:: :String
String
coaches
model
String
++numberOfSeats
numberOfSeats: ::Integer
Integer
*
+
numberOfSeats
Integer
**
tripCoach
tripCoach
tripCoach
RegularTrip
Person
RegularTrip
Person
regularTrips
passengers
RegularTrip
Person
regularTrips
passengers
availableSeats :: Integer
+ +name
: String
passengers
++ availableSeats
Integer regularTrips
name
: String
*
touristGroup
*
+ availableSeats : Integer
+
name
:
String
*
touristGroup
*
*
touristGroup
*
Figura 2.3:
2.3: Diagrama
Diagrama de
Figura
de clases
clases Coach_Company
Coach_Company
Figura 2.3: Diagrama de clases Coach_Company
Wednesday, September 28, 11
UML: Lenguaje de modelado unificado
•
•
•
•
• Diagrama de clases
• Diagrama de objetos
clases
atributos
asociaciones (extremo de asociación)
herencia
20
20
2020
Trip
Trip
Trip
Trip
trips
origin
String
trips
++origin
origin
String
:::String
trips
++
origin
: String
destination:::String
String
++destination
destination
String
++
destination
: String
* **
PrivateTrip
PrivateTrip
PrivateTrip
PrivateTrip
2. Preliminares
Preliminares
Preliminares
2.2.
Preliminares
Coach
Coach
Coach
coaches
++model
coaches +
model:: :String
String
coaches
model
String
++numberOfSeats
numberOfSeats: ::Integer
Integer
Integer
*
+
numberOfSeats
Integer
**
tripCoach
tripCoach
tripCoach
RegularTrip
Person
RegularTrip
Person
RegularTrip
Person
regularTrips
passengers
RegularTrip
Person
passengers
regularTrips
availableSeats :: Integer
+ +name
: String
regularTrips
passengers
++availableSeats
availableSeats
name
:: String
+
Integer
String
*
touristGroup
*
+ availableSeats : Integer
+
name
:
String
*
*
touristGroup
*
touristGroup
*
Figura 2.3:
2.3: Diagrama
Diagrama de
clases
Coach_Company
Figura
2.3:
Figura
de
clases
Coach_Company
Figura 2.3: Diagrama de clases Coach_Company
Wednesday, September 28, 11
UML: Lenguaje de modelado unificado
•
•
•
•
• Diagrama de clases
• Diagrama de objetos
clases
atributos
asociaciones (extremo de asociación)
herencia
20
20
2020
20
Trip
Trip
Trip
Trip
Trip
trips
origin
String
trips
++origin
:::String
trips
+origin
origin
:String
String
trips
++
origin
: String
destination
String
++destination
:::String
+destination
destination
:String
String
++
destination
: String
* ***
PrivateTrip
PrivateTrip
PrivateTrip
PrivateTrip
PrivateTrip
2. Preliminares
Preliminares
Preliminares
2.2.
Preliminares
Preliminares
2.
coaches
coaches
coaches
coaches
*
***
tripCoach
tripCoach
tripCoach
tripCoach
Coach
Coach
Coach
Coach
+
model::: String
:String
String
++model
model
+
model
String
+
Integer
numberOfSeats:: ::Integer
Integer
Integer
++numberOfSeats
numberOfSeats
+
numberOfSeats
Integer
RegularTrip
Person
RegularTrip
Person
RegularTrip
Person
RegularTrip
Person
regularTrips
passengers
regularTrips
RegularTrip
Person
passengers
regularTrips
availableSeats
String
availableSeats ::: Integer
Integer regularTrips
++
name
:: String
passengers
+++availableSeats
availableSeats
name
:: String
+
Integer
String
*
touristGroup
*
**
+ availableSeats : Integer
+
name
:
String
*
touristGroup
*
touristGroup
*
Figura
2.3:
Diagrama
clases
Coach_Company
Figura2.3:
2.3: Diagrama
Diagrama de
Figura
2.3:
Figura
de
clases
Coach_Company
Figura 2.3: Diagrama de clases Coach_Company
Wednesday, September 28, 11
UML: Lenguaje de modelado unificado
•
•
•
•
• Diagrama de clases
• Diagrama de objetos
clases
atributos
20
asociaciones (extremo de asociación)
herencia
Trip
+ origin : String
+ destination : String
20
20
2020
20
PrivateTrip
2. Preliminares
Coach
trips
*
coaches + model : String
tripCoach
*
+ numberOfSeats : Integer
Person
2. Preliminares
Preliminares
Preliminares
2.2.
Preliminares
Preliminares
2.
+ name : String
RegularTrip
+ availableSeats : Integer
regularTrips
passengers
*
touristGroup
*
Figura 2.3: Diagrama de clases Coach_Company
Trip
Trip
Trip
Trip
Trip
trips
origin
String
trips
++origin
:::String
trips
+origin
origin
:String
String
trips
++
origin
: String
destination
String
++destination
:::String
+destination
destination
:String
String
++
destination
: String
* ***
Coach
Coach
Coach
Diagramas de objetos Coach
coaches
+
coaches
model
:String
String
coaches
++model
model
::: String
coaches
Un diagrama
de objetos
modela el estado de un sistema en un momento
+
model
String
+
numberOfSeats
: :Integer
Integer
particular.
es similar a la de :los
diagramas
de clases. Los diagramas
numberOfSeats
Integer
Integer
*** Su+
++notación
numberOfSeats
numberOfSeats
:
Integer
*
de objetos se utilizan, principalmente, para el análisis y validación de los modelos
tripCoach
tripCoach
tripCoach
tripCoach
que describen los diagramas de clase.
Un diagrama de objetos está compuesto por:
PrivateTrip
PrivateTrip
PrivateTrip
PrivateTrip
PrivateTrip
Objetos. Son instancias de las clases. Pueden tener valores asignados sus
atributos (tanto propios como “heredados”).
Person
Person
RegularTrip
RegularTrip
RegularTrip
Person
RegularTrip
Person
regularTrips
passengers
regularTrips
RegularTrip
Person
passengers
regularTrips
availableSeats
String
Enlaces (“links”).
Son instancias de+las
asociaciones
entre
clases.
availableSeats ::: Integer
Integer regularTrips
name
:: String
passengers
+++availableSeats
availableSeats
+
name
:
String
+
Integer
:
String
*
touristGroup
*
**
+ availableSeats : Integer
+ name : String
touristGroup
Ejemplo
2. La figura 2.4 muestra el* diagrama de objetos que modela un estado
*
touristGroup
*
concreto de la empresa de vehículos descrita en la figura 2.3, en el que
la empresa dispone actualmente de una flota de cinco vehículos, aunque
cuatro de ellos ya están comprometidos.
la ruta Madrid-Barcelona tiene actualmente un pasajero, y la ruta SevillaFigura
2.3:
Diagrama
de
clases
Coach_Company
Figura
2.3:
Diagrama
tiene dos pasajeros.
Figura 2.3:
2.3: Diagrama de clases Madrid
Figura
Coach_Company
Figura 2.3: Diagrama de clases Coach_Company
Wednesday, September 28, 11
2.3 OCL: Un lenguaje de restricciones y consultas
UML: Lenguaje de modelado unificado
• clases
• atributos 20
2.3. OCL: Un lenguaje de restricciones
y consultas
(extremo de asociación)
• asociaciones
• herencia
• objetos
• valores
• Diagrama de clases
• Diagrama de objetos
20
20
2020
20
MadZar : Trip
origin = Madrid
destination = Zaragoza
Trip
+ origin : String
+ destination : String
trips
*
tripCoach
21
2. Preliminares
Coach
coaches + model : String
*
+ numberOfSeats : Integer
Pcso : Coach
PrivateTrip
RegularTrip
Person
2.regularTrips
Preliminares
Preliminares
2.2.
Preliminares
passengers
Preliminares
2.
Preliminares
model
= Picasso
+ availableSeats
: Integer
+ name : String
*
touristGroup
*
numberOfSeats = 6
Figura 2.3: Diagrama de clases Coach_Company
Smrt :Coach
Coach
Trip
Trip
Coach
Trip
Trip
Trip
Coach
Diagramas de objetos Coach
model
= Smart
trips
coaches
Person
origin
String
+
trips
coaches
MadBar : RegularTripcoaches
++:origin
model
:String
String
+
:::String
trips
coaches
+origin
origin
:String
String
++model
model
::: String
trips
Un diagrama
de objetos
modela el estado de un sistema en un momento
+p1
origin
: String
+
model
String
numberOfSeats
tripCoach
+destination
destination
:String
String
+
numberOfSeats
: :Integer
Integer
particular.
Su
notación
es similar a la=de2:los
diagramas
de clases. Los diagramas
name+ =+
Susanita
+
destination
:
String
numberOfSeats
Integer
tripCoach
:
+
Integer
origin
=
Madrid
*
tripCoach
+
destination
:
String
+
numberOfSeats
*
*
*
tripCoach
destination : String
+
numberOfSeats
:
Integer
* **
*
de objetos se utilizan, principalmente, para el análisis y validación de los modelos
destination = Barcelona
availableSeats = 10
que describen los diagramas de clase.
Un diagrama de objetos está compuesto por:
Btle1 : Coach
Objetos.
Son instancias
de las
clases. Pueden tener valores asignados sus
p2 : Person
model
=
New
Beetle
atributos (tanto propios como “heredados”).
PrivateTrip
RegularTrip
Person
PrivateTrip
RegularTrip
Person
PrivateTrip
RegularTrip
Person
PrivateTrip
RegularTrip
Person
regularTrips
passengers
name
=
Manolito
numberOfSeats
=
5
regularTrips
PrivateTrip
RegularTrip
Person
passengers
regularTrips
availableSeats
:: Integer
String
Enlaces (“links”).
Son instancias de+las
asociaciones
entre
clases.
availableSeats
Integer
name
:: String
regularTrips
passengers
+++availableSeats
availableSeats
+
name
:
String
+
:
Integer
:
String
SevMad1
:
RegularTrip
*
touristGroup
*
**
+ availableSeats : Integer
+ name
: String
* diagrama
touristGroup
Ejemplo
2.
La
figura
2.4
muestra
el
de
objetos
que modela un estado
*
touristGroup
*
origin = Sevilla
concreto de la empresa
de vehículos
descrita en la figura 2.3, en el que
Btle2
: Coach
destination
=
Madrid
p3 : Person
la empresa dispone actualmente de una flota de cinco vehículos, aunque
model = New Beetle
availableSeats
=
8
cuatro de ellos ya están comprometidos.
name = Miguelito
numberOfSeats = 6
la ruta Madrid-Barcelona tiene actualmente un pasajero, y la ruta SevillaFigura
2.3:
Diagrama
de
clases
Coach_Company
Figura
2.3:
Diagrama
tiene dos pasajeros.
Figura 2.3:
2.3: Diagrama de clases Madrid
Figura
Coach_Company
Figura 2.3: Diagrama
de clases Coach_Company
SevMad2 : PrivateTrip
Wednesday, September 28, 11
origin = Sevilla
Btle3 : Coach
2.3 OCL: Un lenguaje de restricciones y consultas
UML: Lenguaje de modelado unificado
2.3. OCL: Un lenguaje de restricciones y consultas
21
Pcso : Coach
• clases
MadZar
: Trip
model = Picasso
• atributos
20
2.3. OCL: Un lenguaje de restricciones
y consultas
origin = Madrid
(extremo
de asociación)= 6
numberOfSeats
• asociaciones
destination
Zaragoza
• =herencia
• objetos
Smrt : Coach
• valores
• Diagrama de clases
• Diagrama de objetos
p1 : Person
20
20
2020
name = Susanita
20
MadBar : RegularTrip
: Trip
originMadZar
= Madrid
origin
= Madrid
destination
= Barcelona
destination
= Zaragoza
availableSeats
= 10
Trip
+ origin : String
+ destination : String
Coach
trips
*
2. Preliminares
21
coaches + model : String
tripCoach
*
+ numberOfSeats : Integer
modelPcso
= Smart
: Coach
PrivateTrip
RegularTrip = 22.
Person
Preliminares
numberOfSeats
Preliminares
2.2.regularTrips
Preliminares
passengers
Preliminares
2.
Preliminares
model
= Picasso
+ availableSeats
: Integer
+ name : String
*
touristGroup
*
numberOfSeats = 6
Btle1 : Coach
Figura 2.3: Diagrama de clases Coach_Company
p2 : Person
model = New Beetle
Smrt :Coach
Coach
Trip
Trip
Coach
Trip
name = Manolito
numberOfSeats
=5
Trip
Trip
Coach
Diagramas
de objetos Coach
model
= Smart
trips
coaches
Person
origin
String
+
SevMad1
RegularTripcoaches
trips
coaches
MadBar : :RegularTrip
++:origin
model
:String
String
+
:::String
trips
coaches
+origin
origin
:String
String
++model
model
::: String
trips
Un diagrama
de objetos
modela el estado de un sistema en un momento
+p1
origin
: String
+
model
String
numberOfSeats
tripCoach
+destination
destination
:String
String
+
numberOfSeats
: :Integer
Integer
particular.
Su
notación
es similar a la=de2:los
diagramas
de clases. Los diagramas
name+ =+
Susanita
Sevilla
+
destination
:
String
numberOfSeats
Integer
tripCoach
:
+
Integer
origin
=
Madrid
*
tripCoach
+
destination
:
String
+
numberOfSeats
*
*
**
*
tripCoach
destination : String
+
numberOfSeats
:
Integer
*destination
*
Btle2
:
Coach
objetos se utilizan, principalmente, para el análisis y validación de los modelos
= Madrid
p3 : Person
Barcelona de
que describen los diagramas de clase.
model = New Beetle
Un diagrama de objetos está compuesto por:
availableSeats = 810
name = Miguelito
Btle1 : Coach
numberOfSeats
=6
Objetos.
Son
instancias
de
las
clases. Pueden tener valores asignados sus
p2 : Person
model
=
New
Beetle
atributos (tanto propios como “heredados”).
PrivateTrip
RegularTrip
Person
PrivateTrip
RegularTrip
Person
PrivateTrip
RegularTrip
Person
PrivateTrip
RegularTrip
Person
regularTrips
passengers
name
=
Manolito
numberOfSeats
=
5
regularTrips
PrivateTrip
RegularTrip
Person
passengers
regularTrips
availableSeats
:: Integer
String
Enlaces (“links”).
Son instancias de+las
asociaciones
entre
clases.
availableSeats
Integer
name
:: String
SevMad2
: RegularTrip
PrivateTrip
regularTrips
passengers
+++availableSeats
availableSeats
+
name
:
String
+
:
Integer
:
String
SevMad1
:
*
touristGroup
*
Btle3
:
Coach
**
+ availableSeats : Integer
+ name
: String
* diagrama
touristGroup
Ejemplo
2.
La
figura
2.4
muestra
el
de
objetos
que modela un estado
origin
=
Sevilla
*
touristGroup
*
origin = Sevilla
model
=
New
Beetle
concreto de la empresa
de vehículos
descrita en la figura 2.3, en el que
Btle2
: Coach
destination
=
Madrid
destination
=
Madrid
p3 : Person
numberOfSeats
= 5de una flota de cinco vehículos, aunque
la empresa
dispone actualmente
model = New Beetle
availableSeats = 8
cuatro de ellos ya están comprometidos.
name = Miguelito
numberOfSeats = 6
la ruta Madrid-Barcelona tiene actualmente un pasajero, y la ruta SevillaFigura
2.3:
Diagrama
de
clases
Coach_Company
Figura
2.3:
Diagrama
tiene dos pasajeros.
Figura 2.3:
2.3: Diagrama de clases Madrid
Figura
Coach_Company
Figura 2.3: Diagrama
de clases Coach_Company
SevMad2 : PrivateTrip
Figura 2.4: Diagrama de objetos Coach_Company_Sample
Btle3 : Coach
Wednesday, September 28, 11
origin = Sevilla
2.3 OCL: Un lenguaje de restricciones y consultas
UML: Lenguaje de modelado unificado
2.3. OCL: Un lenguaje de restricciones y consultas
21
Pcso : Coach
• clases
MadZar
: Trip
model = Picasso
• atributos
20
2.3. OCL: Un lenguaje de restricciones
y consultas
origin = Madrid
(extremo
de asociación)= 6
numberOfSeats
• asociaciones
destination
Zaragoza
• =herencia
• objetos
Smrt : Coach
• valores
• Diagrama de clases
• Diagrama de objetos
Trip
+ origin : String
+ destination : String
trips
*
tripCoach
21
2. Preliminares
Coach
coaches + model : String
*
+ numberOfSeats : Integer
modelPcso
= Smart
MadBar : RegularTrip
: Coach
de restricciones
y
consultas
21 passengers Person
PrivateTrip
RegularTrip = 22.
Preliminares
numberOfSeats
Preliminares
2.
Preliminares
regularTrips
2.
Preliminares
: Trip
originMadZar
= Madrid
2. * Preliminares
model
= Picasso
+ availableSeats
: Integer
+ name : String
touristGroup
*
origin
= Madrid
destination
= Barcelona
numberOfSeats = 6
destination
= Zaragoza
availableSeats
= 10
Btle1 : Coach
Figura 2.3: Diagrama de clases Coach_Company
p2 : Person
model = New Beetle
Pcso
Coach
Smrt :Coach
Trip
Trip
Coach
Trip
name = Manolito
numberOfSeats
=5
TripTrip
Coach
Diagramas de objetos Coach
MadZar
:
Trip
model
= Picasso
model
Smart
trips
coaches
Person
origin
String
+
SevMad1
RegularTripcoaches
trips
coaches
MadBar : :RegularTrip
++:origin
model
:String
String
+
:::String
trips
coaches
+origin
origin
:String
String
++model
model
::: String
trips
Un diagrama
de objetos
modela el estado de un sistema en un momento
+p1
origin
: String
+
model
String
origin = Madrid
numberOfSeats
= 6 : :Integer
numberOfSeats
tripCoach
+destination
destination
:String
String
+
numberOfSeats
particular.
Su
notación
es similar a la de2:los
diagramas
de clases. Los diagramas
name+ =+
Susanita
Sevilla
+
destination
:
String
numberOfSeats
Integer
tripCoach
:
+
Integer
origin
=
Madrid
*
tripCoach
+
destination
:
String
+
numberOfSeats
Integer
*
*
**
*
tripCoach
destination : String destination
+
numberOfSeats
:
Integer
==Zaragoza
*destination
*
Btle2
:
Coach
objetos se utilizan, principalmente, para el análisis y validación de los modelos
Madrid
p3 : Person
Barcelona de
que describen los diagramas de clase.
model = New Beetle
Un diagrama de objetos está compuesto por:
availableSeats = 810
name = Miguelito
Btle1 :: Coach
Coach
Smrt
numberOfSeats
=6
Objetos.
Son
instancias
de
las
clases. Pueden tener valores asignados sus
p2 : Person
model
=
New
Beetle
model
=
Smart
p1
:
Person
atributos (tanto propios como “heredados”).
MadBar : RegularTrip
PrivateTrip
RegularTrip
Person
PrivateTrip
RegularTrip
Person
PrivateTrip
RegularTrip
Person
PrivateTrip
RegularTrip
Person
regularTrips
passengers
name
=
Manolito
numberOfSeats
=
5
regularTrips
PrivateTrip
RegularTrip
Person
numberOfSeats
=
2
passengers
regularTrips
name = Susanita
availableSeats
String
Enlaces (“links”).
Son instancias de+las
asociaciones
entre
clases.
origin
= ::Madrid
availableSeats
: Integer
Integer
name
:: String
SevMad2
: RegularTrip
PrivateTrip
regularTrips
passengers
+++availableSeats
availableSeats
+
name
:
String
+
Integer
:
String
SevMad1
:
*
touristGroup
*
Btle3
:
Coach
**
+ availableSeats
: Integer
+ name
: String
* diagrama
touristGroup
destination
=
Barcelona
Ejemplo
2.
La
figura
2.4
muestra
el
de
objetos
que modela un estado
origin
=
Sevilla
*
touristGroup
*
origin = Sevilla
model
=
New
Beetle
concreto de la empresa
de vehículos
descrita en la figura 2.3, en el que
availableSeats
= 10
Btle2
: Coach
Coach
destination
=
Madrid
Btle1
:
destination
=
Madrid
p3 : Person
numberOfSeats
= 5de una flota de cinco vehículos, aunque
la empresa
dispone actualmente
model
= New
New
Beetle
availableSeats = 8
Beetle
cuatromodel
de ellos ya=están
comprometidos.
namep2=: Person
Miguelito
numberOfSeats =
=5
6
name = Manolito
numberOfSeats
la ruta
Madrid-Barcelona tiene actualmente
un pasajero, y la ruta SevillaFigura
2.3:
Diagrama
de
clases
Coach_Company
Figura
2.3:
Diagrama
Madrid
tiene dos pasajeros.
: RegularTrip
Figura 2.3:
2.3:SevMad1
Figura
Diagrama
de
clases
Coach_Company
Figura 2.3: origin
Diagrama
de clases Coach_Company
= Sevilla
SevMad2
:
PrivateTrip
Figura 2.4: Diagrama
de objetos
Coach_Company_Sample
Btle3 : Coach
Btle2
destination
=
Madrid
p3
:
Person
2.3
OCL:
Un
lenguaje de restricciones y consultas
Wednesday, September 28, 11
origin = Sevilla
p1 : Person
2.3.
OCL:
Un
lenguaje
20
20
2020
name
=
Susanita
20
UML: Lenguaje de modelado unificado
2.3. OCL: Un lenguaje de restricciones y consultas
21
Pcso : Coach
• clases
MadZar
: Trip
model = Picasso
• atributos
20
2. Preliminares
2.3. OCL: Un lenguaje de restricciones
y
consultas
21
origin = Madrid
asociaciones
(extremo
de
asociación)
numberOfSeats
=
6
•
destination
Zaragoza
• =herencia
• objetos
Smrt : Coach
• valores
• enlaces
modelPcso
= Smart
p1 : Person
MadBar : RegularTrip
: Coach
2.3.
OCL:
Un
lenguaje
de
restricciones
y
consultas
2.3.
OCL:
Un
lenguaje
21
20
2.
Preliminares
numberOfSeats
=
2
Preliminares
20
2.
Preliminares
2020
2.
Preliminares
MadZar
:
Trip
name
=
Susanita
origin
=
Madrid
20
model = Picasso2. Preliminares
• Diagrama de clases
• Diagrama de objetos
Trip
+ origin : String
+ destination : String
PrivateTrip
origin
= Madrid
destination
= Barcelona
destination
= Zaragoza
availableSeats
= 10
Coach
trips
*
coaches + model : String
tripCoach
RegularTrip
+ availableSeats : Integer
*
+ numberOfSeats : Integer
regularTrips
passengers
*
touristGroup
*
Person
+ name : String
numberOfSeats = 6
Btle1 : Coach
Figura 2.3: Diagrama de clases Coach_Company
p2 : Person
model = New Beetle
Pcso
Coach
Smrt :Coach
Trip
Trip
Coach
Trip
name = Manolito
numberOfSeats
=5
TripTrip
Coach
Diagramas de objetos Coach
MadZar
:
Trip
model
== Picasso
model
Smart
trips
coaches
Person
origin
String
+
SevMad1
RegularTripcoaches
trips
coaches
MadBar : :RegularTrip
++:origin
model
:String
String
+
:::String
trips
coaches
+origin
origin
:String
String
++model
model
::: String
trips
Un diagrama
de objetos
modela el estado de un sistema en un momento
+p1
origin
: String
+
model
String
origin = Madrid
numberOfSeats
= 6 : :Integer
numberOfSeats
tripCoach
+destination
destination
:String
String
+
numberOfSeats
particular.
Su
notación
es similar a la de2:los
diagramas
de clases. Los diagramas
name+ =+
Susanita
Sevilla
+
destination
:
String
numberOfSeats
Integer
tripCoach
:
+
Integer
origin
=
Madrid
*
tripCoach
+
destination
:
String
+
numberOfSeats
Integer
*
*
**
*
tripCoach
destination : String destination
+
numberOfSeats
:
Integer
==Zaragoza
*destination
*
Btle2
:
Coach
objetos se utilizan, principalmente, para el análisis y validación de los modelos
Madrid
p3 : Person
Barcelona de
que describen los diagramas de clase.
model = New Beetle
Un diagrama de objetos está compuesto por:
availableSeats = 810
name = Miguelito
Btle1 :: Coach
Coach
Smrt
numberOfSeats
=6
Objetos.
Son
instancias
de
las
clases. Pueden tener valores asignados sus
p2 : Person
model
=
New
Beetle
model
=
Smart
p1
:
Person
p1
:
Person
atributos (tanto propios como “heredados”).
MadBar : RegularTrip
PrivateTrip
RegularTrip
Person
PrivateTrip
RegularTrip
Person
PrivateTrip
RegularTrip
Person
PrivateTrip
RegularTrip
Person
regularTrips
passengers
name
=
Manolito
numberOfSeats
=
5
regularTrips
numberOfSeats
=
2
PrivateTrip
RegularTrip
Person
passengers
regularTrips
name == Susanita
Susanita ++++availableSeats
name
availableSeats
String
Enlaces (“links”).
Son instancias de+las
asociaciones
entre
clases.
origin
= ::Madrid
availableSeats
: Integer
Integer
name
:: String
SevMad2
: RegularTrip
PrivateTrip
regularTrips
passengers
availableSeats
+
name
:
String
Integer
:
String
SevMad1
:
*
touristGroup
*
Btle3
:
Coach
**
+ availableSeats
: Integer
+ name
: String
* diagrama
touristGroup
destination
= Barcelona
Ejemplo
2.
La
figura
2.4
muestra
el
de
objetos
que modela un estado
origin
=
Sevilla
*
touristGroup
*
origin = Sevilla
model
=
New
Beetle
concreto de la empresa
de vehículos
descrita en la figura 2.3, en el que
availableSeats
= 10
Btle2
: Coach
Coach
destination
=
Madrid
Btle1
:
destination
=
Madrid
p3 : Person
numberOfSeats
= 5de una flota de cinco vehículos, aunque
la empresa
dispone actualmente
model
New
Beetle
p2=:: Person
Person
availableSeats = 8
==están
New
Beetle
cuatromodel
de ellos ya
comprometidos.
namep2
Miguelito
numberOfSeats == 56
name == Manolito
Manolito
numberOfSeats
name
la ruta
Madrid-Barcelona tiene actualmente un pasajero, y la ruta SevillaFigura
2.3:
Diagrama
de
clases
Coach_Company
Figura
2.3:
Diagrama
SevMad1
:
RegularTrip
tiene dos pasajeros.
Figura 2.3:
2.3: Diagrama de clases Madrid
Figura
Coach_Company
Figura 2.3: origin
Diagrama
de clases Coach_Company
= Sevilla
SevMad2
:
PrivateTrip
Figura
2.4: Diagrama
de objetos
Coach_Company_Sample
Btle2
Btle3 :: Coach
Coach
destination
=
Madrid
p3
:
Person
p3
:
Person
2.3
OCL:
Un
lenguaje
de restricciones y consultas
Wednesday, September 28, 11
origin = Sevilla
UML: Lenguaje de modelado unificado
2.3. OCL: Un lenguaje de restricciones y consultas
2.3. OCL: Un lenguaje de restricciones y consultas
21
21
Pcso : Coach
• clases
MadZar
: Trip
model = Picasso
• atributos
20
2. Preliminares
Pcso : Coach
2.3. OCL: Un lenguaje de restricciones
y
consultas
21
origin = Madrid
asociaciones
(extremo
de
asociación)
numberOfSeats
=
6
• : Trip
MadZar
model = Picasso
destination
Zaragoza
• =herencia
origin = Madrid objetos
numberOfSeats = 6
•
destination = Zaragoza
Smrt : Coach
• valores
• enlaces
modelPcso
= Smart
p1 : Person
MadBar : RegularTrip
: Coach
Coach
Smrt
:
2.3.
OCL:
Un
lenguaje
de
restricciones
y
consultas
2.3.
OCL:
Un
lenguaje
21
20
2.
Preliminares
numberOfSeats
=
2
Preliminares
20
2.
Preliminares
2020
2.
Preliminares
MadZar
:
Trip
name
=
Susanita
origin
=
Madrid
20 p1 : Person
model = Picasso2. Preliminares
model = Smart
• Diagrama de clases
• Diagrama de objetos
Trip
+ origin : String
+ destination : String
PrivateTrip
Coach
trips
*
coaches + model : String
tripCoach
RegularTrip
+ availableSeats : Integer
*
+ numberOfSeats : Integer
regularTrips
passengers
*
touristGroup
*
Person
+ name : String
MadBar
: RegularTrip
origin
= Madrid
destination
= Barcelona
numberOfSeats = 6
numberOfSeats
=2
name = Susanita
origin
= Madrid
destination
= Zaragoza
availableSeats
= 10
Btle1 : Coach
Figura 2.3: Diagrama de clases Coach_Company
destination
=
Barcelona
p2 : Person
model = New Beetle
Pcso
Coach
availableSeats
=
10
Smrt ::Coach
Trip
Btle1
Coach
Trip
Coach
Trip
name = Manolito
numberOfSeats
=5
TripTrip
Coach
Diagramas de objetos Coach
MadZar
:
Trip
model
===Picasso
model
Smart
trips
coaches
p2
Person
origin
String
+
SevMad1
RegularTripcoaches
trips
coaches
MadBar : :RegularTrip
+:+:Person
model
:String
String
+
origin
:::String
model
Beetle
trips
coaches
+origin
origin
:String
String
++model
model
::New
String
trips
Un diagrama
de objetos
modela
el estado de un sistema en un momento
+p1
origin
: String
+
model
:
String
origin
=
Madrid
numberOfSeats
=
62los
numberOfSeats
tripCoach
+destination
destination
:String
String
+
numberOfSeats
Integer
name
Manolito
particular.
Su
notación
es similar a la=de5
diagramas
de clases. Los diagramas
name+==+
Susanita
Sevilla
numberOfSeats
+
destination
:
String
numberOfSeats
Integer
tripCoach
:
+
Integer
origin
=
Madrid
*
tripCoach
+
destination
:
String
+
numberOfSeats
:: ::Integer
*
*
**
*
tripCoach
destination : String destination
+
numberOfSeats
Integer
=
Zaragoza
*
*
Btle2
:
Coach
objetos se utilizan, principalmente, para el análisis y validación de los modelos
SevMad1
destination: RegularTrip
= Madrid
p3 : Person
Barcelona de
que describen los diagramas de clase.
model = New Beetle
Un diagrama de objetos está compuesto por:
availableSeats
origin
= Sevilla = 810
name = Miguelito
Btle1 ::: Coach
Coach
Smrt
numberOfSeats
=6
Btle2
Coach
destination = Madrid
p3
Objetos.
Son
instancias
de
las
clases. Pueden tener valores asignados sus
p2: :Person
Person
model
=
New
Beetle
model
=
Smart
p1
:
Person
p1
:
Person
=
New
Beetle
atributos (tanto propios como “heredados”).
MadBar : RegularTrip
PrivateTrip
RegularTrip
Person
availableSeats
= 8 regularTrips
PrivateTrip
RegularTrip
Person
PrivateTrip
RegularTrip
Person
PrivateTrip
RegularTrip
Person
name
=
Miguelito
passengers
name
=
Manolito
numberOfSeats
=
5
regularTrips
numberOfSeats
=
2
PrivateTrip
RegularTrip
Person
passengers
regularTrips
6
name == Susanita
Susanita ++++availableSeats
name
availableSeats
String
Enlaces (“links”).
Son instancias de+las
asociaciones
entre
clases.
origin
= ::Madrid
availableSeats
: Integer
Integer
name
:: String
SevMad2
: RegularTrip
PrivateTrip
regularTrips
passengers
availableSeats
+
name
:
String
Integer
:
String
SevMad1
:
*
touristGroup
*
Btle3
:
Coach
**
+ availableSeats
: Integer
+ name
: String
* diagrama
touristGroup
destination
= Barcelona
Ejemplo
2.
La
figura
2.4
muestra
el
de
objetos
que modela un estado
origin
=
Sevilla
*
touristGroup
*
origin = Sevilla
model
=
New
Beetle
concreto de la empresa
de vehículos
descrita en la figura 2.3, en el que
availableSeats
= 10
Btle2
: Coach
Coach
destination
=
Madrid
Btle1
:
SevMad2
:
PrivateTrip
destination
=
Madrid
p3 : Person
numberOfSeats
= 5de una flota de cinco vehículos, aunque
Btle3
:
Coach
la empresa
dispone
actualmente
model
New
Beetle
p2=:: Person
Person
availableSeats
==están
New
Beetle
origin
= Sevilla = 8
cuatromodel
de ellos ya
comprometidos.
namep2
Miguelito
model
= New Beetle
numberOfSeats
name == Manolito
Manolito
numberOfSeats
==actualmente
56
name
destination = Madrid
la ruta
Madrid-Barcelona
tiene
un pasajero, y la ruta SevillanumberOfSeats = 5
Figura
2.3:
Diagrama
de
clases
Coach_Company
Figura
2.3:
Diagrama
SevMad1
:
RegularTrip
tiene dos pasajeros.
Figura 2.3:
2.3: Diagrama de clases Madrid
Figura
Coach_Company
Figura 2.3: origin
Diagrama
de clases Coach_Company
= Sevilla
SevMad2
:
PrivateTrip
Figura
2.4: Diagrama
de objetos
Coach_Company_Sample
Btle2
Btle3 :: Coach
Coach
destination
=
Madrid
p3
:
Person
p3
:
Person
2.3
OCL:
Un
lenguaje
de restricciones y consultas
Wednesday, September 28, 11
origin = Sevilla
UML: Lenguaje de modelado unificado
2.3. OCL: Un lenguaje de restricciones y consultas
2.3. OCL: Un lenguaje de restricciones y consultas
21
21
Pcso : Coach
• clases
MadZar
: Trip
model = Picasso
• atributos
20
2. Preliminares
Pcso : Coach
2.3. OCL: Un lenguaje2.3.
de restricciones
y
consultas
21
origin
=
Madrid
asociaciones
(extremo
de
asociación)
numberOfSeats
=
6
• lenguaje
OCL:MadZar
Un
de restricciones
y consultas
: Trip
model
=
Picasso
destination
=
Zaragoza
• herencia
origin = Madrid objetos
numberOfSeats = 6
•
destination = Zaragoza
Smrt : Coach
• valores
• enlaces
modelPcso
= Smart
p1 : Person
MadBar : RegularTrip
: Coach
Coach
Smrt
:
2.3.
OCL:
Un
lenguaje
de
restricciones
y
consultas
2.3.
OCL:
Un
lenguaje
21
20
2.
Preliminares
numberOfSeats
=
2
Preliminares
Pcso
20
2.
Preliminares
2020
2.
Preliminares
MadZar
:
Trip
name
=
Susanita
origin
=
Madrid
20 p1 : Person
model = Picasso2. Preliminares
model = Smart
• Diagrama de clases
• Diagrama de objetos
Trip
+ origin : String
+ destination : String
PrivateTrip
Coach
trips
*
coaches + model : String
tripCoach
RegularTrip
+ availableSeats : Integer
*
+ numberOfSeats : Integer
regularTrips
passengers
*
touristGroup
*
Person
+ name : String
MadZar : Trip
MadBar
: RegularTrip
model = Pi
origin
= Madrid
destination
= Barcelona
numberOfSeats
=6
numberOfSeats
=
2
name = Susanita
origin
= Madrid
origin
= Madrid
destination
= Zaragoza
availableSeats
= 10
numberOfS
Btle1
: Coach
Figura 2.3: Diagrama de clases Coach_Company
destination = Barcelona
destination
= Beetle
Zaragoza
p2 : Person
model = New
Pcso
Coach
availableSeats = 10
Smrt ::Coach
Trip
Btle1
Coach
Trip
Coach
Trip
name = Manolito
numberOfSeats
=5
TripTrip
Coach
Diagramas de objetos Coach
MadZar
:
Trip
model
===Picasso
model
Smart
trips
coaches
p2
Person
Smrt
origin
String
+
SevMad1
RegularTripcoaches
trips
coaches
MadBar : :RegularTrip
+:+:Person
model
:String
String
+
origin
:::String
model
Beetle
trips
coaches
+origin
origin
:String
String
++model
model
::New
String
trips
Un diagrama
de objetos
modela
el estado de un sistema en un momento
+p1
origin
: String
+
model
:
String
origin = Madrid
numberOfSeats
= 62los
numberOfSeats
tripCoach
+destination
destination
:String
String
+
numberOfSeats
Integer
name
Manolito
particular.
Su
notación
es similar a la=de5
diagramas
de clases. Los
diagramas
name+==+
Susanita
Sevilla
numberOfSeats
+
destination
:
String
numberOfSeats
Integer
tripCoach
:
+
Integer
origin
=
Madrid
*
model
= Sm
tripCoach
+
destination
:
String
+
numberOfSeats
:: ::Integer
*
*
p1
:
Person
**
*
MadBar
:
RegularTrip
tripCoach
destination : String destination
+
numberOfSeats
Integer
=
Zaragoza
*
*
Btle2
:
Coach
de
objetos
se
utilizan,
principalmente,
para
el
análisis
y
validación
de
los
modelos
SevMad1
destination: RegularTrip
= Madrid
p3 : Person
Barcelona que describen los diagramas de clase.
numberOfS
name = Susanita
origin
=
Madrid
model
=
New
Beetle
Un diagrama de objetos está compuesto por:
availableSeats
origin
= Sevilla = 810
name = Miguelito
Btle1 ::: Coach
Coach
Smrt
numberOfSeats
=6
destination
= Barcelona
Btle2
Coach
destination = Madrid
p3
Objetos.
Son
instancias
de
las
clases. Pueden tener valores asignados sus
p2: :Person
Person
model
=
New
Beetle
model
=
Smart
availableSeats
= 10 Person
p1
:
Person
p1
:
Person
=
New
Beetle
atributos (tanto propios como “heredados”).
MadBar : RegularTrip
PrivateTrip
RegularTrip
Person
availableSeats
= 8 regularTrips
PrivateTrip
RegularTrip
Btle1
PrivateTrip
RegularTrip
Person
PrivateTrip
RegularTrip
Person
name
=
Miguelito
passengers
name
=
Manolito
numberOfSeats
=
5
regularTrips
numberOfSeats
=
2
PrivateTrip
RegularTrip
Person
passengers
regularTrips
6+lasname
name == Susanita
Susanita ++++availableSeats
name
availableSeats
Integer
String
Enlaces (“links”).
Son instancias de
asociaciones
entre
clases.
origin
availableSeats
: Person
Integer
:: String
p2= :::Madrid
SevMad2
: RegularTrip
PrivateTrip
regularTrips
passengers
availableSeats
+
name
:
String
Integer
:
String
SevMad1
:
model = N
*
touristGroup
*
Btle3
:
Coach
**
+ availableSeats
: Integer
+
name
:
String
*
touristGroup
destination
=
Barcelona
Ejemplo
2. La figura 2.4 muestra *el diagrama de objetos que modela
un estado
origin= =
=Manolito
Sevilla
name
*
touristGroup
numberOfS
origin
Sevilla
model
=
New
Beetle
concreto de la empresa
de vehículos
descrita en la figura 2.3, en el que
availableSeats
= 10
Btle2
::Coach
Coach
destination
=
Madrid
Btle1
:
SevMad2
:
PrivateTrip
SevMad1
RegularTrip
destination
=
Madrid
p3 : Person
numberOfSeats
= 5de una flota de cinco vehículos, aunque
Btle3
:
Coach
la empresa
dispone
actualmente
model
New
Beetle
p2=:: Person
Person
availableSeats
==están
New
Beetle
origin
= Sevilla = 8
cuatromodel
de ellos ya
comprometidos.
origin
=
Sevilla
namep2
Miguelito
model
= New Beetle
numberOfSeats
Btle2
name == Manolito
Manolito
numberOfSeats
==actualmente
56
name
destination
=
Madrid
destination
=
Madrid
la ruta
Madrid-Barcelona
tiene
un pasajero, y la ruta Sevillap3
:
Person
numberOfSeats
=
5
Figura
2.3:
Diagrama
de
clases
Coach_Company
Figura2.3:
2.3:SevMad1
Diagrama
: RegularTrip
Madrid
tiene dos pasajeros.
model = N
Figura
2.3:
Figura
Diagrama
de
clases
Coach_Company
availableSeats
=8
name
=
Miguelito
Figura 2.3: origin
Diagrama
de
clases
Coach_Company
= Sevilla
numberOfS
SevMad2
: PrivateTrip
Figura
2.4:
Diagrama
de
objetos
Coach_Company_Sample
Btle2
:
Coach
Btle3
:
Coach
destination
= Madrid
p3
Person
:: Person
2.3 OCL: Un lenguaje de restricciones y consultas
Wednesday, Septemberp3
28, 11
origin = Sevilla
UML: Lenguaje de modelado unificado
2.3. OCL: Un lenguaje de restricciones y consultas
2.3. OCL: Un lenguaje de restricciones y consultas
21
21
Pcso : Coach
• clases
MadZar
: Trip
model = Picasso
• atributos
20
2. Preliminares
Pcso : Coach
2.3. OCL: Un lenguaje2.3.
de restricciones
y
consultas
21
origin
=
Madrid
asociaciones
(extremo
de
asociación)
numberOfSeats
=
6
• lenguaje
OCL:MadZar
Un
de restricciones
y consultas
: Trip
model
=
Picasso
destination
=
Zaragoza
• herencia
origin
=
Madrid
numberOfSeats = 6 21
2.3. OCL: Un lenguaje de restricciones y consultas
objetos
•
destination = Zaragoza
Smrt : Coach
• valores
• enlaces
modelPcso
= Smart
p1 : Person
MadBar : RegularTrip
: Coach
Coach
Smrt
:
2.3.
OCL:
Un
lenguaje
de
restricciones
y
consultas
2.3.
OCL:
Un
lenguaje
21
20
2.
Preliminares
numberOfSeats
=
2
Preliminares
Pcso
20
2.
Preliminares
2020
2.
Preliminares
MadZar
:
Trip
name
=
Susanita
origin
=
Madrid
20 p1 : Person
model = Picasso2. Preliminares
model = Smart
• Diagrama de clases
• Diagrama de objetos
Trip
+ origin : String
+ destination : String
PrivateTrip
Coach
trips
*
coaches + model : String
tripCoach
RegularTrip
+ availableSeats : Integer
*
+ numberOfSeats : Integer
regularTrips
passengers
*
touristGroup
*
Person
+ name : String
Pcso MadZar
: Coach : Trip
MadBar
: RegularTrip
model = Pi
origin
= Madrid
destination
= Barcelona
numberOfSeats
=6
numberOfSeats
=
2
MadZar
: Trip
model
= Picasso
name = Susanita
origin
= Madrid
origin
= Madrid
destination
= Zaragoza
availableSeats
= 10
numberOfS
Btle1
:
Coach
origin
=
Madrid
numberOfSeats
= =6 Zaragoza
Figura 2.3: Diagrama
de clases Coach_Company
destination = Barcelona
destination
p2 : Person
model = New Beetle
destination
= Zaragoza
Pcso
Coach
availableSeats
=
10
Smrt ::Coach
Trip
Btle1
Coach
Trip
Coach
Trip
name = Manolito
numberOfSeats
=5
TripTrip
Coach
Diagramas de objetos Coach
MadZar
:
Trip
model
==Coach
model
Smart
trips
coaches
p2
Person
Smrt
origin
String
+
SevMad1
RegularTripcoaches
trips
coaches
MadBar : :RegularTrip
+:+:Person
+model
model
:String
String
+
origin
:::String
model
=Picasso
Beetle
trips
coaches
+origin
origin
:String
String
+Smrt
model
::New
String
trips
Un diagrama
de :objetos
modela
el estado de un sistema en un momento
+p1
origin
: String
+
model
:
String
origin = Madrid
numberOfSeats
= 62los
numberOfSeats
tripCoach
+:destination
destination
:String
String
+
numberOfSeats
Integer
name
Manolito
particular.
Su
notación
es similar a la=de5
diagramas
de clases. Los
diagramas
name+=p1
=+
Susanita
Sevilla
numberOfSeats
+
destination
:
String
numberOfSeats
Integer
model
=
Smart
tripCoach
:
+
Integer
origin
=
Madrid
*
model
= Sm
tripCoach
+
destination
:
String
+
numberOfSeats
:: ::Integer
Person
*
*
p1
:
Person
**
MadBar
RegularTrip
*
MadBar
:
RegularTrip
tripCoach
destination : String destination
+
numberOfSeats
Integer
=
Zaragoza
*
*
Btle2
:
Coach
de
objetos
se
utilizan,
principalmente,
para
el
análisis
y
validación
de
los
modelos
SevMad1
: RegularTrip
destination
= Madrid
numberOfSeats
=de2clase.
: Person
Barcelona que describen
numberOfS
name p3
= Susanita
origin
==Madrid
los diagramas
name
Susanita
origin
=
Madrid
model
=
New
Beetle
= 810
Un diagrama de objetos está compuesto por:
availableSeats
origin
= Sevilla
name = Miguelito
destination
= Barcelona
Btle1 ::: Coach
Coach
Smrt
numberOfSeats
=6
destination
= Barcelona
Btle2
Coach
destination = =Madrid
p3
availableSeats
10
Objetos.
Son
instancias
de
las
clases. Pueden tener valores asignados sus
p2: :Person
Person
Btle1 :==
Coach
model
=
New
Beetle
model
Smart
availableSeats
= 10 Person
p1
:
Person
p1
:
Person
New
Beetle
atributos (tanto propios como “heredados”).
MadBar : RegularTrip
PrivateTrip
RegularTrip
Person
availableSeats
= 8 regularTrips
PrivateTrip
RegularTrip
Btle1
PrivateTrip
RegularTrip
Person
PrivateTrip
RegularTrip
Person
name
=
Miguelito
p2
:
Person
passengers
name
=
Manolito
numberOfSeats
=
5
model
=
New
Beetle
regularTrips
numberOfSeats
=
2
PrivateTrip
RegularTrip
Person
passengers
regularTrips
6+lasname
name == Susanita
Susanita
name
availableSeats
Integer
String
Enlaces (“links”).
Son instancias de
asociaciones
entre
clases.
origin
availableSeats
: Person
Integer
:: String
p2= :::Madrid
SevMad2
: RegularTrip
PrivateTrip
regularTrips
passengers
+++availableSeats
availableSeats
+
name
:
String
Integer
:
String
SevMad1
:
model = N
name = Manolito + +
numberOfSeats
=
5
*
touristGroup
*
Btle3
:
Coach
**
availableSeats
: Integer
+
name
:
String
*
touristGroup
destination
=
Barcelona
Ejemplo
2. La figura 2.4 muestra *el diagrama de objetos que modela
un estado
SevMad1
:Sevilla
RegularTrip*
origin= =
=Manolito
Sevilla
name
touristGroup
numberOfS
origin
model
=
New
Beetle
concreto de la empresa
de vehículos
descrita en la figura 2.3, en el que
availableSeats
= 10
Btle2
::Coach
Coach
destination
=
Madrid
origin
=
Sevilla
Btle1
:
SevMad2
:
PrivateTrip
SevMad1
RegularTrip
destination
=
Madrid
p3 : Person
numberOfSeats
= 5de una flota de cinco vehículos, aunque
Btle3
:
Coach
Btle2
:
Coach
la empresa
dispone
actualmente
model
New
Beetle
destination
= Madrid
p2
Person
p3
Person
availableSeats
=8
==están
New
Beetle
origin
= Sevilla
cuatromodel
de ellos ya
comprometidos.
origin
=
Sevilla
namep2
=:::Person
Miguelito
model
= New
BeetleBeetle
model
= New
availableSeats
=Madrid
8
numberOfSeats
= 56
Btle2
name=== Manolito
Miguelito
name
Manolito
numberOfSeats
=
name
destination
=
destination
=
Madrid
la
ruta
Madrid-Barcelona
tiene
actualmente
un pasajero, y la ruta Sevillap3
:
Person
numberOfSeats
=
6
numberOfSeats
=
5
Figura
2.3:
Diagrama
de
clases
Coach_Company
Figura2.3:
2.3:SevMad1
Diagrama
: RegularTrip
Madrid
tiene dos pasajeros.
model = N
Figura
2.3:
Figura
Diagrama
de
clases
Coach_Company
availableSeats
=8
name
=
Miguelito
Figura 2.3: origin
Diagrama
de
clases
Coach_Company
= Sevilla
numberOfS
SevMad2
: PrivateTrip
Figura
2.4:
Diagrama
de
objetos
Coach_Company_Sample
Btle2
:
Coach
Btle3
:
Coach
SevMad2
:
PrivateTrip
destination
= Madrid
p3
Person
Btle3
Coach
:: Person
2.3 OCL:
Un: lenguaje
de restricciones y consultas
Wednesday, Septemberp3
28, 11
origin = Sevilla
Pcso : Coach
21
model = Picasso
numberOfSeats21= 6
UML: Lenguaje de modelado unificado
2.3. OCL: Un lenguaje de restricciones
y consultas
MadZar
: Trip
2.3. OCL: Un lenguaje de restricciones
y consultas
origin = Madrid
destination = Zaragoza
Pcso : Coach
• clases
MadZar
: Trip
model = Picasso
• atributos
Smrt : Coach
20
2. Preliminares
Pcso
:
Coach
2.3. OCL: Un lenguaje2.3.
de restricciones
y
consultas
21
origin
=
Madrid
asociaciones
(extremo
de
asociación)
numberOfSeats
=
6
• lenguaje
OCL:MadZar
Un
de restricciones
y =consultas
: RegularTrip
Trip
model
Smart
model
=
Picasso
p1 : Person
MadBar
:
destination
=
Zaragoza
• herencia
origin = Madrid
numberOfSeats
= 6 21
numberOfSeats
=2
2.3. =
OCL:
Un lenguaje de restricciones
yMadrid
consultas
objetos
•
name
Susanita
origin
=
destination = Zaragoza
valores
Smrt : Coach
destination•• =enlaces
Barcelona
modelPcso
= Smart
p1 : Person
MadBar : RegularTrip
: Coach
Coach
Smrt
:
availableSeats
=
10
2.3.
OCL:
Un
lenguaje
de
restricciones
y
consultas
2.3.
OCL:
Un
lenguaje
21
20
2.
Preliminares
numberOfSeats
=
2
Preliminares
Pcso
Btle1
:
Coach
20
2.
Preliminares
2020
2.
Preliminares
MadZar
:
Trip
name
=
Susanita
origin
=
Madrid
20 p1 : Person
model = Picasso2. Preliminares
model = Smart
• Diagrama de clases
• Diagrama de objetos
Trip
+ origin : String
+ destination : String
PrivateTrip
Coach
trips
*
coaches + model : String
tripCoach
RegularTrip
+ availableSeats : Integer
*
+ numberOfSeats : Integer
regularTrips
passengers
*
touristGroup
*
Person
+ name : String
Pcso MadZar
: Coach : Trip
MadBar
: RegularTrip
origin
= Madrid
destination
= Barcelona
numberOfSeats
==6 New Beetle model = Pi
model
numberOfSeats
=
2
MadZar
: Trip
model
= Picasso
origin
= Madrid
origin
=
Madrid
destination
= Zaragoza
availableSeats
= 10
numberOfS
Btle1
:
Coach
numberOfSeats
=
5
origin
=
Madrid
numberOfSeats
= =6 Zaragoza
Figura 2.3: Diagrama
de clases Coach_Company
destination = Barcelona
destination
p2 : Person
model = New Beetle
SevMad1
: =RegularTrip
destination
= Zaragoza
Pcso
Coach
availableSeats
10
Smrt ::Coach
Trip
Btle1
Coach
Trip
Coach
Trip
name = Manolito
numberOfSeats
=5
Coach
TripTrip
Coach
Diagramas
de
objetos
MadZar
:
Trip
origin
=
Sevilla
model
==Coach
model
Smart
trips
coaches
p2
Person
Smrt
origin
String
+
SevMad1
RegularTripcoaches
trips
coaches
MadBar : :RegularTrip
+:+:Person
+model
model
:String
String
+
origin
:::String
model
=Picasso
Beetle
trips
coaches
+origin
origin
:String
String
+Smrt
model
::New
String
trips
Btle2
:
Coach
Un diagrama
de :objetos
modela
el estado
de un sistema en un momento
+p1
origin
: String
+
model
:
String
origin
= Madrid
numberOfSeats
= 62los
destination
= Madridparticular.
numberOfSeats
p3 : =Person
tripCoach
+:destination
destination
:String
String
+
numberOfSeats
Integer
name
Manolito
Su
notación
es similar a la=de5
diagramas
de clases. Los
diagramas
name
=
Susanita
Sevilla
numberOfSeats
+
destination
:
String
numberOfSeats
Integer
model
=
Smart
tripCoach
+
:
+
Integer
origin
=
Madrid
*
model
= Sm
tripCoach
+
destination
:
String
+
numberOfSeats
:: ::Integer
p1
Person
*
*
p1
:
Person
**
MadBar
RegularTrip
*
MadBar
:
RegularTrip
tripCoach
+ destination : String destination
+
numberOfSeats
Integer
=
Zaragoza
*
*
model
=
New
Beetle
Btle2
:
Coach
de
objetos
se
utilizan,
principalmente,
para
el
análisis
y
validación
de
los
modelos
availableSeats
= 8 que describen
SevMad1
: RegularTrip
destination
= Madrid
numberOfSeats
=de2clase.
p3
: Person
Barcelona
name name
= Miguelito
numberOfS
= Susanita
origin
==Madrid
los diagramas
name
Susanita
origin
=
Madrid
model
=
New
Beetle
numberOfSeats
=
6
= 810
Un diagrama de objetos está compuesto por:
availableSeats
origin
= Sevilla
name = Miguelito
destination
= Barcelona
Btle1 ::: Coach
Coach
Smrt
numberOfSeats
=6
destination
= Barcelona
Btle2
Coach
destination = =Madrid
p3
availableSeats
10
Objetos.
Son
instancias
de
las
clases. Pueden tener valores asignados sus
p2: :Person
Person
Btle1 :==
Coach
model
=
New
Beetle
model
Smart
availableSeats
= 10 Person
p1
:
Person
p1
:
Person
New
Beetle
atributos (tanto propios como “heredados”).
MadBar : RegularTrip
PrivateTrip
RegularTrip
Person
availableSeats
= 8 regularTrips
PrivateTrip
RegularTrip
Btle1
PrivateTrip
RegularTrip
Person
PrivateTrip
RegularTrip
Person
name
=
Miguelito
p2
:
Person
passengers
name
=
Manolito
numberOfSeats
=
5
model
=
New
Beetle
regularTrips
numberOfSeats
=
2
PrivateTrip
RegularTrip
Person
passengers
regularTrips
6+lasname
SevMad2
: PrivateTrip
name == Susanita
Susanita
name
availableSeats
Integer
String
Enlaces (“links”).
Son instancias de
asociaciones
entre
clases.
origin
availableSeats
: Person
Integer
:: String
p2= :::Madrid
SevMad2
: RegularTrip
PrivateTrip
regularTrips
passengers
+++availableSeats
availableSeats
+
name
:
String
Integer
:
String
SevMad1
:
model = N
name = Manolito + +
numberOfSeats
=
5
Btle3
:
Coach
*
touristGroup
*
Btle3
:
Coach
**
availableSeats
: Integer
+
name
:
String
*
touristGroup
destination
=
Barcelona
Ejemplo
2. La figura 2.4 muestra *el diagrama de objetos que modela
un estado
SevMad1
:Sevilla
RegularTrip
origin
=Manolito
Sevilla
origin
=
Sevilla *
name
==
touristGroup
numberOfS
origin
model
=
New
Beetle
model
= New
concreto de la empresa
de vehículos
descrita
en la Beetle
figura 2.3, en el que
availableSeats
= 10
Btle2
::Coach
Coach
destination
=
Madrid
origin
=
Sevilla
Btle1
:
SevMad2
:
PrivateTrip
SevMad1
RegularTrip
destination
=
Madrid
destination
=
Madrid
p3 : Person
numberOfSeats
= 5de una flota de=cinco
Btle3
:
Coach
Btle2
:
Coach
la empresa
dispone
actualmente
numberOfSeats
5 vehículos, aunque
model
=
New
Beetle
destination
= Madrid
p2
:
Person
p3
:
Person
p2
:
Person
availableSeats
=
8
model
=
New
Beetle
origin
=
Sevilla
cuatroorigin
de ellos ya
comprometidos.
==están
Sevilla
name = Miguelito
model
= New
Beetle
model
New
Beetle
availableSeats
=
8
numberOfSeats
= 56
Btle2
name=== Manolito
Miguelito
name
Manolito
numberOfSeats
=
name
destination
=
Madrid
destination
=
Madrid
la
ruta
Madrid-Barcelona
tiene
actualmente
un pasajero, y la ruta Sevillap3
:
Person
numberOfSeats
=
6
numberOfSeats
=
5
Figura
2.3:
Diagrama
de
clases
Coach_Company
Figura2.3:
2.3:SevMad1
Diagrama
: RegularTrip
Madrid
tiene dos pasajeros.
model = N
Figura
2.3:
Figura
Diagrama
de
clases
Coach_Company
availableSeats
=8
name
=
Miguelito
Figura 2.3: origin
Diagrama
de
clases
Coach_Company
= Sevilla
numberOfS
SevMad2
: PrivateTrip
Figura
2.4:
Diagrama
de
objetos
Coach_Company_Sample
Btle2
:
Coach
Btle3
:
Coach
SevMad2
:
PrivateTrip
destination
= Madrid
p3
Person
Btle3
Coach
:: Person
2.3 OCL:
Un: lenguaje
de restricciones y consultas
Wednesday, Septemberp3
28, 11
origin = Sevilla
p2 : Person
name = Susanita
name = Manolito
OCL: Lenguaje de restricciones y
consultas a objetos (OMG - 2000)
Wednesday, September 28, 11
OCL: Lenguaje de restricciones y
consultas a objetos (OMG - 2000)
• El viaje MadBar de Madrid a Barcelona
Wednesday, September 28, 11
OCL: Lenguaje de restricciones y
consultas a objetos (OMG - 2000)
• El viaje MadBar de Madrid a Barcelona
Madbar
Wednesday, September 28, 11
OCL: Lenguaje de restricciones y
consultas a objetos (OMG - 2000)
• El viaje MadBar de Madrid a Barcelona
Madbar
• Todos los viajes
Wednesday, September 28, 11
OCL: Lenguaje de restricciones y
consultas a objetos (OMG - 2000)
• El viaje MadBar de Madrid a Barcelona
Madbar
• Todos los viajes
Trip.allInstances()
Wednesday, September 28, 11
OCL: Lenguaje de restricciones y
consultas a objetos (OMG - 2000)
• El viaje MadBar de Madrid a Barcelona
Madbar
• Todos los viajes
Trip.allInstances()
• La suma de los asientos que hay en Pcso y Smrt
Wednesday, September 28, 11
OCL: Lenguaje de restricciones y
consultas a objetos (OMG - 2000)
• El viaje MadBar de Madrid a Barcelona
Madbar
• Todos los viajes
Trip.allInstances()
• La suma de los asientos que hay en Pcso y Smrt
Pcso.numberOfSeats + Smrt.numberOfSeats
Wednesday, September 28, 11
OCL: Lenguaje de restricciones y
consultas a objetos (OMG - 2000)
• El viaje MadBar de Madrid a Barcelona
Madbar
• Todos los viajes
Trip.allInstances()
• La suma de los asientos que hay en Pcso y Smrt
Pcso.numberOfSeats + Smrt.numberOfSeats
• Los viajes que tienen como origen Madrid
Wednesday, September 28, 11
OCL: Lenguaje de restricciones y
consultas a objetos (OMG - 2000)
• El viaje MadBar de Madrid a Barcelona
Madbar
• Todos los viajes
Trip.allInstances()
• La suma de los asientos que hay en Pcso y Smrt
Pcso.numberOfSeats + Smrt.numberOfSeats
• Los viajes que tienen como origen Madrid
Trip.allInstances()->select(t|t.origin=‘Madrid’)
Wednesday, September 28, 11
Base de datos
• SQL: lenguaje de consulta estructurado
• MySQL: gestor de base de datos relacional que
soporta SQL y lenguaje procedural
Wednesday, September 28, 11
Base de datos
• SQL: lenguaje de consulta estructurado
• MySQL: gestor de base de datos relacional que
soporta SQL y lenguaje procedural
• tablas
• tablas estáticas y derivadas
Wednesday, September 28, 11
Base de datos
• SQL: lenguaje de consulta estructurado
• MySQL: gestor de base de datos relacional que
soporta SQL y lenguaje procedural
• tablas
• tablas estáticas y derivadas
create table nameTbl(val Int);
Wednesday, September 28, 11
Base de datos
• SQL: lenguaje de consulta estructurado
• MySQL: gestor de base de datos relacional que
soporta SQL y lenguaje procedural
• tablas
• tablas estáticas y derivadas
create table nameTbl(val Int);
select * from nameTbl;
Wednesday, September 28, 11
Base de datos
• SQL: lenguaje de consulta estructurado
• MySQL: gestor de base de datos relacional que
soporta SQL y lenguaje procedural
• tablas
• tablas estáticas y derivadas
create table nameTbl(val Int);
select * from nameTbl;
Wednesday, September 28, 11
Base de datos
• SQL: lenguaje de consulta estructurado
• MySQL: gestor de base de datos relacional que
soporta SQL y lenguaje procedural
• tablas
• sentencias
tablas estáticas y derivadas
• sentencias
create table nameTbl(val Int);
select * from nameTbl;
Wednesday, September 28, 11
Base de datos
• SQL: lenguaje de consulta estructurado
• MySQL: gestor de base de datos relacional que
soporta SQL y lenguaje procedural
• tablas
• sentencias
tablas estáticas y derivadas
• sentencias
select
fromnameTbl(val
nameTbl;
create *
table
Int);
select * from nameTbl;
Wednesday, September 28, 11
Base de datos
• SQL: lenguaje de consulta estructurado
• MySQL: gestor de base de datos relacional que
soporta SQL y lenguaje procedural
• tablas
• sentencias
tablas estáticas y derivadas
• sentencias
select
fromnameTbl(val
nameTbl;
create *
table
Int);
select into
insert
* from
nameTbl(val)
nameTbl;
(select pk from Trip);
Wednesday, September 28, 11
Base de datos
• SQL: lenguaje de consulta estructurado
• MySQL: gestor de base de datos relacional que
soporta SQL y lenguaje procedural
• tablas
• sentencias
tablas estáticas y derivadas
• sentencias
select
fromnameTbl(val
nameTbl;
create *
table
Int);
select into
insert
* from
nameTbl(val)
nameTbl;
(select pk from Trip);
Wednesday, September 28, 11
Base de datos
• SQL: lenguaje de consulta estructurado
• MySQL: gestor de base de datos relacional que
soporta SQL y lenguaje procedural
• tablas
• sentencias
• consultas
tablas
estáticas y derivadas
• sentencias
consultas
select
fromnameTbl(val
nameTbl;
create *
table
Int);
select into
insert
* from
nameTbl(val)
nameTbl;
(select pk from Trip);
Wednesday, September 28, 11
Base de datos
• SQL: lenguaje de consulta estructurado
• MySQL: gestor de base de datos relacional que
soporta SQL y lenguaje procedural
• tablas
• sentencias
• consultas
tablas
estáticas y derivadas
• sentencias
consultas
select
nameTbl;
create
table
Int);
select *
* from
fromnameTbl(val
nameTbl
select into
insert
* from
nameTbl(val)
nameTbl;
(select pk from Trip);
Wednesday, September 28, 11
Base de datos
• SQL: lenguaje de consulta estructurado
• MySQL: gestor de base de datos relacional que
soporta SQL y lenguaje procedural
• tablas
• sentencias
• consultas
tablas
estáticas y derivadas
• sentencias
consultas
select
nameTbl;
create
table
Int);
select *
* from
fromnameTbl(val
nameTbl
insert into
select
* from
nameTbl(val)
nameTbl;
(select pk from Trip);
select *
from (select * from nameTbl) as t
Wednesday, September 28, 11
Base de datos
• SQL: lenguaje de consulta estructurado
• MySQL: gestor de base de datos relacional que
soporta SQL y lenguaje procedural
• tablas
• sentencias
• consultas
tablas
estáticas y derivadas
• sentencias
consultas
select
nameTbl;
create
table
Int);
select *
* from
fromnameTbl(val
nameTbl
insert into
select
* from
nameTbl(val)
nameTbl;
(select pk from Trip);
select *
from (select * from nameTbl) as t
Wednesday, September 28, 11
Base de datos
• SQL: lenguaje de consulta estructurado
• MySQL: gestor de base de datos relacional que
soporta SQL y lenguaje procedural
• tablas
• sentencias
• consultas
• procedimientos almacenados
- cursores
- condicionales
procedimientos almacenados
bucles
tablas estáticas y derivadas
sentencias
•
• consultas
select
nameTbl;
create
table
Int);
select *
* from
fromnameTbl(val
nameTbl
insert into
select
* from
nameTbl(val)
nameTbl;
(select pk from Trip);
select *
from (select * from nameTbl) as t
Wednesday, September 28, 11
Base de datos
• SQL: lenguaje de consulta estructurado
• MySQL: gestor de base de datos relacional que
soporta SQL y lenguaje procedural
• tablas
• sentencias
• consultas
• procedimientos almacenados
- cursores
- condicionales
procedimientos almacenados
bucles
tablas estáticas y derivadas
sentencias
•
• consultas
declare procedure nameProc
select
*
from
nameTbl;
create
table
nameTbl(val
Int);
select
*
from
nameTbl
begin
select
insert
* from
into
nameTbl(val)
nameTbl;
(select pk from Trip);
...
select *
end;
from (select * from nameTbl) as t
Wednesday, September 28, 11
Base de datos
• SQL: lenguaje de consulta estructurado
• MySQL: gestor de base de datos relacional que
soporta SQL y lenguaje procedural
• tablas
• sentencias
• consultas
• procedimientos almacenados
- cursores
- condicionales
procedimientos almacenados
bucles
tablas estáticas y derivadas
sentencias
•
• consultas
declare procedure nameProc
select
*
from
nameTbl;
create
table
nameTbl(val
Int);
select
*
from
nameTbl
begin
select
insert
* from
into
nameTbl(val)
nameTbl;
(select pk from Trip);
...
select *
end;
from (select * from nameTbl) as t
call nameProc;
Wednesday, September 28, 11
MySQL4OCL: Descripción general
Wednesday, September 28, 11
MySQL4OCL: Descripción general
• MySQL4OCL compila cada expresión OCL exp
como un procedimiento proc(exp) que típicamente
invocará a los procedimientos que compilan las
subexpresiones de la expresión dada.
Wednesday, September 28, 11
MySQL4OCL: Descripción general
• MySQL4OCL compila cada expresión OCL exp
como un procedimiento proc(exp) que típicamente
invocará a los procedimientos que compilan las
subexpresiones de la expresión dada.
• El resultado de cada procedimiento proc(exp) se
almacena en una tabla table(proc(exp)).
Wednesday, September 28, 11
MySQL4OCL: Descripción general
• MySQL4OCL compila cada expresión OCL exp
como un procedimiento proc(exp) que típicamente
invocará a los procedimientos que compilan las
subexpresiones de la expresión dada.
• El resultado de cada procedimiento proc(exp) se
almacena en una tabla table(proc(exp)).
call proc(exp);
select * from table(proc(exp))
Wednesday, September 28, 11
Descripción general
Wednesday, September 28, 11
Descripción general
Para toda expresión exp, en el contexto de un
diagrama de clases dcl, MySQL4OCL utiliza los
siguientes conjuntos de reglas:
Wednesday, September 28, 11
Descripción general
Para toda expresión exp, en el contexto de un
diagrama de clases dcl, MySQL4OCL utiliza los
siguientes conjuntos de reglas:
• toRDB: define el modo de almacenar los diagramas
de objetos del diagrama dcl. [cap. 3]
Wednesday, September 28, 11
Descripción general
Para toda expresión exp, en el contexto de un
diagrama de clases dcl, MySQL4OCL utiliza los
siguientes conjuntos de reglas:
• toRDB: define el modo de almacenar los diagramas
de objetos del diagrama dcl. [cap. 3]
• toProc: define el modo de generar el procedimiento
proc(exp). [cap. 4,5 y anexo]
Wednesday, September 28, 11
Descripción general
Para toda expresión exp, en el contexto de un
diagrama de clases dcl, MySQL4OCL utiliza los
siguientes conjuntos de reglas:
• toRDB: define el modo de almacenar los diagramas
de objetos del diagrama dcl. [cap. 3]
• toProc: define el modo de generar el procedimiento
proc(exp). [cap. 4,5 y anexo]
En las aplicaciones de MySQL4OCL, las bases de datos sobre las que se ejecutan las
expresiones compiladas deben satisfacer las reglas toRDB.
Wednesday, September 28, 11
toRDB:
De diagramas UML a tablas MySQL
Wednesday, September 28, 11
toRDB:
20
2. Preliminares
De diagramas UML a tablas MySQL
Trip
+ origin : String
+ destination : String
PrivateTrip
trips
*
tripCoach
RegularTrip
+ availableSeats : Integer
Coach
coaches + model : String
+ numberOfSeats : Integer
*
regularTrips
passengers
*
touristGroup
*
Person
+ name : String
Figura 2.3: Diagrama de clases Coach_Company
Diagramas de objetos
Un diagrama de objetos modela el estado de un sistema en un momento
particular. Su notación es similar a la de los diagramas de clases. Los diagramas
de objetos se utilizan, principalmente, para el análisis y validación de los modelos
que describen los diagramas de clase.
Un diagrama de objetos está compuesto por:
Wednesday, September 28, 11
toRDB:
20
2. Preliminares
De diagramas UML a tablas MySQL
Trip
+ origin : String
+ destination : String
PrivateTrip
pk
trips
*
tripCoach
RegularTrip
+ availableSeats : Integer
Coach
coaches + model : String
+ numberOfSeats : Integer
*
regularTrips
passengers
*
touristGroup
*
Person
+ name : String
Trip
origin destination
Figura 2.3: Diagrama de clases Coach_Company
Diagramas de objetos
Un diagrama de objetos modela el estado de un sistema en un momento
particular. Su notación es similar a la de los diagramas de clases. Los diagramas
de objetos se utilizan, principalmente, para el análisis y validación de los modelos
que describen los diagramas de clase.
Un diagrama de objetos está compuesto por:
Wednesday, September 28, 11
toRDB:
2. Preliminares
Preliminares
2020
2.
De diagramas UML a tablas MySQL
Trip
Trip
trips
+ origin
: String
trips
+ origin
: String
+ destination
: String
+ destination
: String
* *
PrivateTrip
PrivateTrip
Coach
Coach
coaches ++model
model: :String
String
coaches
numberOfSeats :: Integer
Integer
++numberOfSeats
**
tripCoach
tripCoach
RegularTrip
Person
RegularTrip
Person
regularTrips
passengers
passengers + name : String
+ availableSeats : Integer regularTrips
+ availableSeats : Integer
*
touristGroup
* + name : String
*
pk
touristGroup
*
Trip
origin destination
Figura 2.3: Diagrama de clases Coach_Company
Figura 2.3: Diagrama de clases Coach_Company
Diagramas de objetos
Diagramas de objetos
Un diagrama de objetos modela el estado de un sistema en un momento
Un diagrama de objetos modela el estado de un sistema en un momento
particular. Su notación es similar a la de los diagramas de clases. Los diagramas
particular.
es similar a la de
los el
diagramas
clases. Los
diagramas
de objetosSu
se notación
utilizan, principalmente,
para
análisis y de
validación
de los
modelos
deque
objetos
se utilizan,
principalmente,
describen
los diagramas
de clase.para el análisis y validación de los modelos
que describen
los diagramas
de
clase.
Un
diagrama
de
objetos
está
compuesto por:
Wednesday, September 28, 11
toRDB:
2. Preliminares
Preliminares
2020
2.
De diagramas UML a tablas MySQL
Trip
Trip
trips
+ origin
: String
trips
+ origin
: String
+ destination
: String
+ destination
: String
* *
PrivateTrip
PrivateTrip
Coach
Coach
coaches ++model
model: :String
String
coaches
numberOfSeats :: Integer
Integer
++numberOfSeats
**
tripCoach
tripCoach
RegularTrip
Person
RegularTrip
Person
regularTrips
passengers
passengers + name : String
+ availableSeats : Integer regularTrips
+ availableSeats : Integer
*
touristGroup
* + name : String
*
pk
touristGroup
*
Trip
Coach
origin destination
pk model numberOfSeats
Figura 2.3: Diagrama de clases Coach_Company
Figura 2.3: Diagrama de clases Coach_Company
Diagramas de objetos
Diagramas de objetos
Un diagrama de objetos modela el estado de un sistema en un momento
Un diagrama de objetos modela el estado de un sistema en un momento
particular. Su notación es similar a la de los diagramas de clases. Los diagramas
particular.
es similar a la de
los el
diagramas
clases. Los
diagramas
de objetosSu
se notación
utilizan, principalmente,
para
análisis y de
validación
de los
modelos
deque
objetos
se utilizan,
principalmente,
describen
los diagramas
de clase.para el análisis y validación de los modelos
que describen
los diagramas
de
clase.
Un
diagrama
de
objetos
está
compuesto por:
Wednesday, September 28, 11
toRDB:
2. Preliminares
Preliminares
20
2.2.
2020
Preliminares
De diagramas UML a tablas MySQL
Trip
Trip
Trip
trips
origin
String
++origin
:: String
trips
+ origin
: String
destination :: String
String
++destination
+ destination
: String
* *
PrivateTrip
PrivateTrip
PrivateTrip
Coach
Coach
Coach
coaches
coaches +
++model
model:: :String
String
coaches
model
String
++numberOfSeats
numberOfSeats: ::Integer
Integer
*
+
numberOfSeats
Integer
**
tripCoach
tripCoach
tripCoach
RegularTrip
Person
RegularTrip
Person
regularTrips
passengers
RegularTrip
Person
regularTrips
passengers
availableSeats :: Integer
+ +name
: String
passengers
++ availableSeats
Integer regularTrips
name
: String
*
touristGroup
*
+ availableSeats : Integer
+
name
:
String
*
touristGroup
*
*
pk
touristGroup
*
Trip
Coach
Figura 2.3:
2.3: Diagrama
Diagrama de
origin destination
pk model numberOfSeats
Figura
de clases
clases Coach_Company
Coach_Company
Figura 2.3: Diagrama de clases Coach_Company
Diagramas
de
objetos
Diagramas de objetos
Diagramas de objetos
Un diagrama de objetos modela el estado de un sistema en un momento
Un diagrama de objetos modela el estado de un sistema en un momento
particular.
Su notación
es similar
a laeldeestado
los diagramas
de clases.en
Losundiagramas
Un diagrama
de objetos
modela
de un sistema
momento
particular. Su notación es similar a la de los diagramas de clases. Los diagramas
de objetos
senotación
utilizan, principalmente,
para
eldiagramas
análisis y validación
de
losdiagramas
modelos
particular.
Su
es
similar
a
la
de
los
de
clases.
Los
de
objetos
se utilizan,
principalmente,
para el análisis y validación de los modelos
que
describen
los
diagramas
de
clase.
deque
objetos
se utilizan,
principalmente,
para el análisis y validación de los modelos
describen
los
diagramas
de
clase.
Un diagrama
de objetosde
está
compuesto por:
que describen
los
diagramas
clase.
Un diagrama de objetos está compuesto por:
Wednesday, September 28, 11
toRDB:
2. Preliminares
Preliminares
20
2.2.
2020
Preliminares
De diagramas UML a tablas MySQL
Trip
Trip
Trip
trips
origin
String
++origin
:: String
trips
+ origin
: String
destination :: String
String
++destination
+ destination
: String
* *
PrivateTrip
PrivateTrip
PrivateTrip
Coach
Coach
Coach
coaches
coaches +
++model
model:: :String
String
coaches
model
String
++numberOfSeats
numberOfSeats: ::Integer
Integer
*
+
numberOfSeats
Integer
**
tripCoach
tripCoach
tripCoach
RegularTrip
Person
RegularTrip
Person
regularTrips
passengers
RegularTrip
Person
regularTrips
passengers
availableSeats :: Integer
+ +name
: String
passengers
++ availableSeats
Integer regularTrips
name
: String
*
touristGroup
*
+ availableSeats : Integer
+
name
:
String
*
touristGroup
*
*
pk
touristGroup
*
Trip
TripCoach
Coach
Figura 2.3:
2.3: Diagrama
Diagrama
clases
origin destination
trips de
coaches
pk model numberOfSeats
Figura
de
clases Coach_Company
Coach_Company
Figura 2.3: Diagrama de clases Coach_Company
Diagramas
de
objetos
Diagramas de objetos
Diagramas de objetos
Un diagrama de objetos modela el estado de un sistema en un momento
Un diagrama de objetos modela el estado de un sistema en un momento
particular.
Su notación
es similar
a laeldeestado
los diagramas
de clases.en
Losundiagramas
Un diagrama
de objetos
modela
de un sistema
momento
particular. Su notación es similar a la de los diagramas de clases. Los diagramas
de objetos
senotación
utilizan, principalmente,
para
eldiagramas
análisis y validación
de
losdiagramas
modelos
particular.
Su
es
similar
a
la
de
los
de
clases.
Los
de
objetos
se utilizan,
principalmente,
para el análisis y validación de los modelos
que
describen
los
diagramas
de
clase.
deque
objetos
se utilizan,
principalmente,
para el análisis y validación de los modelos
describen
los
diagramas
de
clase.
Un diagrama
de objetosde
está
compuesto por:
que describen
los
diagramas
clase.
Un diagrama de objetos está compuesto por:
Wednesday, September 28, 11
toRDB:
20
2. Preliminares
Preliminares
Preliminares
20
2.2.
2020
Preliminares
De diagramas UML a tablas MySQL
Trip
Trip
Trip
Trip
trips
origin
String
trips
++origin
origin
String
:::String
trips
++
origin
: String
destination:::String
String
++destination
destination
String
++
destination
: String
* **
PrivateTrip
PrivateTrip
PrivateTrip
PrivateTrip
Coach
Coach
Coach
coaches
++model
coaches +
model:: :String
String
coaches
model
String
++numberOfSeats
numberOfSeats: ::Integer
Integer
Integer
*
+
numberOfSeats
Integer
**
tripCoach
tripCoach
tripCoach
RegularTrip
Person
RegularTrip
Person
RegularTrip
Person
regularTrips
passengers
RegularTrip
Person
passengers
regularTrips
availableSeats :: Integer
+ +name
: String
regularTrips
passengers
++availableSeats
availableSeats
name
:: String
+
Integer
String
*
touristGroup
*
+ availableSeats : Integer
+
name
:
String
*
*
touristGroup
*
pk
touristGroup
*
Trip
TripCoach
Coach
Figura 2.3:
2.3: Diagrama
Diagrama
clases
origin destination
trips de
coaches
pk model numberOfSeats
Figura
2.3:
Figura
de
clases Coach_Company
Coach_Company
Figura 2.3: Diagrama de clases Coach_Company
Diagramas
de
objetos
Diagramas de
de objetos
Diagramas
Diagramas de objetos
Un diagrama de objetos modela el estado de un sistema en un momento
Un diagrama
diagrama de
de objetos
objetos modela el estado de un sistema en un momento
Un
momento
particular.
Su
notación
es
similar
a
la
de
los
diagramas
de
clases.
Los
diagramas
Un diagrama de objetos modela el estado de un sistema en un momento
particular.
Su notación
notación es similar a la de los diagramas de clases. Los diagramas
particular.
Su
diagramas
de
objetos
se
utilizan,
principalmente,
para
el
análisis
y
validación
de
los
modelos
particular.
Su
notación
es
similar
a
la
de
los
diagramas
de
clases.
Los
diagramas
de
objetos
se utilizan,
utilizan,
principalmente,
para el análisis y validación de los modelos
de
objetos
se
principalmente,
modelos
que
describen
los
diagramas
de
clase.
deque
objetos
se utilizan,
principalmente, para el análisis y validación de los modelos
describen
los
diagramas
que describen
los
diagramas
de clase.
Un
diagrama
de
objetos
está
compuesto por:
que describen
los
diagramas
de
clase.
Un diagrama
diagrama de
de objetos
objetos está compuesto por:
Un
Wednesday, September 28, 11
toRDB:
20
2. Preliminares
Preliminares
Preliminares
20
2.2.
2020
Preliminares
De diagramas UML a tablas MySQL
Trip
Trip
Trip
Trip
trips
origin
String
trips
++origin
origin
String
:::String
trips
++
origin
: String
destination:::String
String
++destination
destination
String
++
destination
: String
* **
PrivateTrip
PrivateTrip
PrivateTrip
PrivateTrip
Coach
Coach
Coach
coaches
++model
coaches +
model:: :String
String
coaches
model
String
++numberOfSeats
numberOfSeats: ::Integer
Integer
Integer
*
+
numberOfSeats
Integer
**
tripCoach
tripCoach
tripCoach
RegularTrip
Person
RegularTrip
Person
RegularTrip
Person
regularTrips
passengers
RegularTrip
Person
passengers
regularTrips
availableSeats :: Integer
+ +name
: String
regularTrips
passengers
++availableSeats
availableSeats
name
:: String
+
Integer
String
*
touristGroup
*
+ availableSeats : Integer
+
name
:
String
*
*
touristGroup
*
pk
touristGroup
*
Trip
TripCoach
Coach
Figura 2.3:
2.3: Diagrama
Diagrama
clases
origin destination
trips de
coaches
pk model numberOfSeats
Figura
2.3:
Figura
de
clases Coach_Company
Coach_Company
Figura 2.3: Diagrama de clases Coach_Company
Diagramas
de
objetos
Diagramas de
de objetos
Diagramas
Diagramas de objetos
Un diagrama deRegularTrip
objetos modela el estado de un sistema en un momento
PrivateTrip
Un diagrama
diagrama de
de objetos
objetos modela el estado de un sistema en un momento
Un
momento
particular.
Su
notación
es
similar
a
la
de
los
diagramas
de
clases.
Los
diagramas
Unpkdiagrama de
objetos
modela el estado de un sistema en un momento
pk
availableSeats
particular.
Su
notación
es
similar
a la de los diagramas de clases. Los diagramas
particular.
Su
notación
diagramas
de
objetos
se
utilizan,
principalmente,
para
el
análisis
y
validación
de
los
modelos
particular.
Su
notación
es
similar
a
la
de
los
diagramas
de
clases.
Los
diagramas
de
objetos
se utilizan,
utilizan,
principalmente,
para el análisis y validación de los modelos
de
objetos
se
principalmente,
modelos
que
describen
los
diagramas
de
clase.
deque
objetos
se utilizan,
principalmente, para el análisis y validación de los modelos
describen
los
diagramas
que describen
los
diagramas
de clase.
Un
diagrama
de
objetos
está
compuesto por:
que describen los diagramas de clase.
Un diagrama
diagrama de
de objetos
objetos está compuesto por:
Un
Wednesday, September 28, 11
toRDB:
De diagramas UML a tablas MySQL
Wednesday, September 28, 11
OCL: Un lenguaje de restricciones y consultas
21
toRDB:
De diagramas UML a tablas MySQL
MadZar : Trip
origin = Madrid
destination = Zaragoza
p1 : Person
name = Susanita
MadBar : RegularTrip
origin = Madrid
destination = Barcelona
availableSeats = 10
p2 : Person
name = Manolito
p3 : Person
name = Miguelito
SevMad1 : RegularTrip
origin = Sevilla
destination = Madrid
availableSeats = 8
SevMad2 : PrivateTrip
origin = Sevilla
destination = Madrid
Pcso : Coach
model = Picasso
numberOfSeats = 6
Smrt : Coach
model = Smart
numberOfSeats = 2
Btle1 : Coach
model = New Beetle
numberOfSeats = 5
Btle2 : Coach
model = New Beetle
numberOfSeats = 6
Btle3 : Coach
model = New Beetle
numberOfSeats = 5
Figura 2.4: Diagrama de objetos Coach_Company_Sample
September
28, 11amplio: actualmente, OCL es utilizado, por ejemplo, en la
LWednesday,
es mucho
más
OCL: Un lenguaje de restricciones y consultas
21
toRDB:
De diagramas UML a tablas MySQL
MadZar : Trip
origin = Madrid
destination = Zaragoza
p1 : Person
name = Susanita
MadBar : RegularTrip
origin = Madrid
destination = Barcelona
availableSeats = 10
p2 : Person
name = Manolito
p3 : Person
name = Miguelito
pk
1
SevMad1 : RegularTrip
origin = Sevilla
destination = Madrid
availableSeats = 8
Trip
SevMad2 : PrivateTrip
origin
destination
origin = Sevilla
Madrid
Zaragoza
destination = Madrid
Pcso : Coach
model = Picasso
numberOfSeats = 6
Smrt : Coach
model = Smart
numberOfSeats = 2
Btle1 : Coach
model = New Beetle
numberOfSeats = 5
Btle2 : Coach
model = New Beetle
numberOfSeats = 6
Btle3 : Coach
model = New Beetle
numberOfSeats = 5
RegularTrip
2.4: Diagrama de objetos Coach_Company_Sample
pk Figura
availableSeats
1
10
September
28, 11amplio: actualmente, OCL es utilizado, por ejemplo, en la
LWednesday,
es mucho
más
OCL: Un lenguaje de
MadZar : Trip
restricciones
y consultas
origin = Madrid
destination = Zaragoza
model = Picasso
numberOfSeats = 6
21
toRDB:
De diagramas UML a tablas MySQL
p1 : Person
name = Susanita
p2 : Person
name = Manolito
p1 : Person
name = Susanita
p3 : Person
name = Miguelito
p2 : Person
name = Manolito
p3 : Person
name = Miguelito
MadBar : RegularTrip
: Trip
originMadZar
= Madrid
origin
= Madrid
destination
= Barcelona
destination
= Zaragoza
availableSeats
= 10
SevMad1
RegularTrip
MadBar : :RegularTrip
Sevilla
origin = Madrid
destination = Madrid
Barcelona
availableSeats = 810
SevMad2 :: RegularTrip
PrivateTrip
SevMad1
origin =
= Sevilla
Sevilla
origin
destination =
destination
= Madrid
Madrid
availableSeats = 8
Trip
origin
destination
origin = Sevilla
Madrid
Zaragoza
destination = Madrid
Smrt : Coach
modelPcso
= Smart
: Coach
numberOfSeats
model = Picasso= 2
numberOfSeats = 6
Btle1 : Coach
model = New Beetle
Smrt : Coach
numberOfSeats
=5
model = Smart
numberOfSeats = 2
Btle2 : Coach
model = New Beetle
Btle1 : Coach
numberOfSeats
=6
model = New Beetle
numberOfSeats = 5
Btle3 : Coach
modelBtle2
= New
Beetle
: Coach
numberOfSeats = 5
model = New Beetle
numberOfSeats = 6
: PrivateTrip
Figura 2.4: DiagramaSevMad2
de objetos
Coach_Company_Sample
Btle3 : Coach
pk
1
model = New Beetle
numberOfSeats = 5
CL es mucho más amplio: actualmente, OCL es utilizado, por ejemplo, en la
finición de metamodelos de dominio específico, la transformación de modelos,
RegularTrip
l testing
y la validación de modelos.
2.4: Diagrama de objetos Coach_Company_Sample
pk Figura
availableSeats
OCL es un lenguaje de especificación puro: la evaluación de una expresión
1
10
CL es instantánea de modo que cuando una expresión se evalúa, simplemente
vuelve
unSeptember
valor
cambiar
nada en el OCL
modelo.
OCL es unpor
lenguaje
fuerte28,sin
11amplio:
LWednesday,
es mucho
más
actualmente,
es utilizado,
ejemplo,
en la
OCL: Un lenguaje de
MadZar : Trip
restricciones
y consultas
origin = Madrid
destination = Zaragoza
model = Picasso
numberOfSeats = 6
21
toRDB:
De diagramas UML a tablas MySQL
p1 : Person
name = Susanita
p2 : Person
name = Manolito
p1 : Person
name = Susanita
p3 : Person
name = Miguelito
p2 : Person
name = Manolito
p3 : Person
name = Miguelito
MadBar : RegularTrip
: Trip
originMadZar
= Madrid
origin
= Madrid
destination
= Barcelona
destination
= Zaragoza
availableSeats
= 10
SevMad1
RegularTrip
MadBar : :RegularTrip
Sevilla
origin = Madrid
destination = Madrid
Barcelona
availableSeats = 810
SevMad2 :: RegularTrip
PrivateTrip
SevMad1
origin =
= Sevilla
Sevilla
origin
destination =
destination
= Madrid
Madrid
availableSeats = 8
Trip
origin
destination
origin = Sevilla
Madrid
Zaragoza
destination = Madrid
Sevilla
Madrid
Smrt : Coach
modelPcso
= Smart
: Coach
numberOfSeats
model = Picasso= 2
numberOfSeats = 6
Btle1 : Coach
model = New Beetle
Smrt : Coach
numberOfSeats
=5
model = Smart
numberOfSeats = 2
Btle2 : Coach
model = New Beetle
Btle1 : Coach
numberOfSeats
=6
model = New Beetle
numberOfSeats = 5
Btle3 : Coach
modelBtle2
= New
Beetle
: Coach
numberOfSeats = 5
model = New Beetle
numberOfSeats = 6
: PrivateTrip
Figura 2.4: DiagramaSevMad2
de objetos
Coach_Company_Sample
Btle3 : Coach
pk
1
2
model = New Beetle
numberOfSeats = 5
CL es mucho más amplio: actualmente, OCL es utilizado, por ejemplo, en la
finición de metamodelos de dominio específico, la transformación de modelos,
RegularTrip
l testing
y la validación dePrivateTrip
modelos.
2.4: Diagrama depkobjetos Coach_Company_Sample
pk Figura
availableSeats
OCL es un lenguaje de especificación puro: la evaluación de una expresión
1
10
2
CL es instantánea de modo que cuando una expresión se evalúa, simplemente
vuelve
unSeptember
valor
cambiar
nada en el OCL
modelo.
OCL es unpor
lenguaje
fuerte28,sin
11amplio:
LWednesday,
es mucho
más
actualmente,
es utilizado,
ejemplo,
en la
OCL: Un lenguaje de
MadZar : Trip
restricciones
y consultas
origin = Madrid
MadZar : Trip
destination = Zaragoza
origin = Madrid
destination = Zaragoza
model = Picasso
Pcso : Coach
numberOfSeats = 6
model = Picasso
numberOfSeats = 6
Smrt : Coach
modelPcso
= Smart
: Coach
Coach
Smrt
:
numberOfSeats
model = Picasso= 2
model = Smart
numberOfSeats = 6
numberOfSeats = 2
Btle1 : Coach
model = New Beetle
Pcso
Smrt :: Coach
Btle1
Coach
numberOfSeats
=5
model
=
Picasso
model = Smart
model
New Beetle
numberOfSeats
numberOfSeats =
2
numberOfSeats
=6
5
Btle2 : Coach
model = New Beetle
Btle1 :: Coach
Coach
Smrt
numberOfSeats
=6
Btle2
Coach
model ==
=Smart
New Beetle
Beetle
model
New
numberOfSeats =
=2
5
numberOfSeats
6
Btle3 : Coach
modelBtle2
= New
Beetle
:
Coach
Btle1 : Coach
numberOfSeats
=5
Btle3
: Coach
model
=
New
Beetle
model = New Beetle
model
= New Beetle
numberOfSeats
=5
6
numberOfSeats
=
numberOfSeats = 5
21
toRDB:
OCL: Un lenguaje de restricciones y consultas
21
De diagramas UML a tablas MySQL
p1 : Person
name = Susanita
p1 : Person
name = Susanita
MadBar : RegularTrip
: Trip
originMadZar
= Madrid
MadBar
: RegularTrip
origin
= Madrid
destination
= Barcelona
origin
= Madrid
destination
= Zaragoza
availableSeats
= 10
destination = Barcelona
p2 : Person
availableSeats = 10
name = Manolito
MadZar : Trip
p2
p1: :Person
Person
SevMad1
RegularTrip
MadBar : :RegularTrip
origin
=
Madrid
name
name==Manolito
Susanita
Sevilla
origin = Madrid
destination
SevMad1
destination: =RegularTrip
=Zaragoza
Madrid
p3 : Person
Barcelona
availableSeats
origin
= Sevilla = 810
name = Miguelito
destination = Madrid
p3
p2: :Person
Person
p1 : Person
MadBar : RegularTrip
availableSeats
=8
name
name==Miguelito
Manolito
name = Susanita
origin
= Madrid
SevMad2
PrivateTrip
SevMad1
:: RegularTrip
destination
= Barcelona
origin =
= Sevilla
Sevilla
origin
availableSeats
= 10
destination: =
SevMad2
PrivateTrip
destination
= Madrid
Madrid
p3 : Person
availableSeats
origin
= Sevilla = 8
namep2=: Person
Miguelito
name = Manolito
destination = Madrid
SevMad1 : RegularTrip
Trip
origin
= Sevilla
SevMad2
: PrivateTrip
Figura 2.4: Diagrama
de
objetos
Coach_Company_Sample
Btle3 : Coach
Btle2
destination
=
Madrid
p3 : Person
pk
origin
destination
origin = Sevilla
model = New Beetle
model
availableSeats
=8
1 Madrid
Zaragoza
name = Miguelito
destination = Madrid
numberOfSeats = 6
5
numberOfSeats
Figura 2.4: Diagrama de objetos Coach_Company_Sample
2
Sevilla
Madrid
CL es mucho más amplio: actualmente, OCL es utilizado, por ejemplo, en la
SevMad2 :específico,
PrivateTrip la transformación de modelos,
finición de metamodelos de dominio
Btle3 : Coach
RegularTrip
PrivateTrip
origin
= Sevilla OCL es utilizado, por ejemplo, en la
l es
testing
y la
validación
de
modelos.
mucho
más
amplio:
actualmente,
model = New Beetle
2.4: Diagrama
depkobjetos
Coach_Company_Sample
destination
= Madrid
pk Figura
availableSeats
numberOfSeats
5
ición
dominio específico,
transformación
modelos,
OCL de
es metamodelos
un lenguaje dedeespecificación
puro: lalaevaluación
de unade=expresión
1
10
2
CL
es instantánea
de modo
que cuando una expresión se evalúa, simplemente
testing
y la validación
de modelos.
vuelve
un
valor
cambiar
nada en elpuro:
modelo.
OCL es unpor
lenguaje
fuerteSeptember
28,sin
11amplio:
OCL
un
lenguaje
de especificación
la
de
una expresión
LWednesday,
es es
mucho
más
actualmente,
OCL
es evaluación
utilizado,
ejemplo,
en la
OCL: Un lenguaje de
MadZar : Trip
restricciones
y consultas
origin = Madrid
MadZar : Trip
destination = Zaragoza
origin = Madrid
destination = Zaragoza
model = Picasso
Pcso : Coach
numberOfSeats = 6
model = Picasso
numberOfSeats = 6
Smrt : Coach
modelPcso
= Smart
: Coach
Coach
Smrt
:
numberOfSeats
model = Picasso= 2
model = Smart
numberOfSeats = 6
numberOfSeats = 2
Btle1 : Coach
model = New Beetle
Pcso
Smrt :: Coach
Btle1
Coach
numberOfSeats
=5
model
=
Picasso
model = Smart
model
New Beetle
numberOfSeats
numberOfSeats =
2
numberOfSeats
=6
5
Btle2 : Coach
model = New Beetle
Btle1 :: Coach
Coach
Smrt
numberOfSeats
=6
Btle2
Coach
model ==
=Smart
New Beetle
Beetle
model
New
numberOfSeats =
=2
5
numberOfSeats
6
Btle3 : Coach
modelBtle2
= New
Beetle
:
Coach
Btle1 : Coach
numberOfSeats
=5
Btle3
: Coach
model
=
New
Beetle
model = New Beetle
model
= New Beetle
numberOfSeats
=5
6
numberOfSeats
=
numberOfSeats = 5
21
toRDB:
OCL: Un lenguaje de restricciones y consultas
21
De diagramas UML a tablas MySQL
p1 : Person
name = Susanita
p1 : Person
name = Susanita
MadBar : RegularTrip
: Trip
originMadZar
= Madrid
MadBar
: RegularTrip
origin
= Madrid
destination
= Barcelona
origin
= Madrid
destination
= Zaragoza
availableSeats
= 10
destination = Barcelona
p2 : Person
availableSeats = 10
name = Manolito
MadZar : Trip
p2
p1: :Person
Person
SevMad1
RegularTrip
MadBar : :RegularTrip
origin
=
Madrid
name
name==Manolito
Susanita
Sevilla
origin = Madrid
destination
SevMad1
destination: =RegularTrip
=Zaragoza
Madrid
p3 : Person
Barcelona
availableSeats
origin
= Sevilla = 810
name = Miguelito
destination = Madrid
p3
p2: :Person
Person
p1 : Person
MadBar : RegularTrip
availableSeats
=8
name
name==Miguelito
Manolito
name = Susanita
origin
= Madrid
SevMad2
PrivateTrip
SevMad1
:: RegularTrip
destination
= Barcelona
origin =
= Sevilla
Sevilla
origin
availableSeats
= 10
destination: =
SevMad2
PrivateTrip
destination
= Madrid
Madrid
p3 : Person
availableSeats
origin
= Sevilla = 8
namep2=: Person
Miguelito
name = Manolito
destination = Madrid
SevMad1 : RegularTrip
Trip
origin
= Sevilla
SevMad2
: PrivateTrip
Figura 2.4: Diagrama
de
objetos
Coach_Company_Sample
Btle3 : Coach
Btle2
destination
=
Madrid
p3 : Person
pk
origin
destination
origin = Sevilla
Coach
model = New Beetle
model
availableSeats
=
8
1 Madrid
Zaragoza
name = Miguelito
destination = Madrid
numberOfSeats
5 model
pk= 6
numberOfSeats
numberOfSeats
Figura 2.4: Diagrama de objetos Coach_Company_Sample
2
Sevilla
Madrid
1
Picasso
CL es mucho más amplio: actualmente, OCL es utilizado, por ejemplo,
en la
2
Smart
SevMad2 :específico,
PrivateTrip la transformación de modelos,
finición de metamodelos de dominio
Btle3 : Coach
3 New Beetle
RegularTrip
PrivateTrip
origin
=
Sevilla
l es
testing
y
la
validación
de
modelos.
mucho
más
amplio:
actualmente,
OCL
es utilizado,
ejemplo,
modelpor
= New
Beetle en la
Figura
2.4:
Diagrama
de
objetos
Coach_Company_Sample
destination
availableSeats
pk = Madrid
numberOfSeats
5
ición
dominio
específico,
transformación
modelos,
OCLpkde
es metamodelos
un lenguaje dedeespecificación
puro: lalaevaluación
de unade=expresión
1
10
2
CL
es instantánea
de modo
que cuando una expresión se evalúa, simplemente
testing
y la validación
de modelos.
vuelve
un
valor
cambiar
nada en elpuro:
modelo.
OCL es unpor
lenguaje
fuerteSeptember
28,sin
11amplio:
OCL
un
lenguaje
de especificación
la
de
una expresión
LWednesday,
es es
mucho
más
actualmente,
OCL
es evaluación
utilizado,
ejemplo,
en la
6
2
5
OCL: Un
MadZar : Trip
lenguaje2.3.
de restricciones
y consultas
origin =Un
Madrid
OCL:
lenguaje
de
MadZar : Trip
destination = Zaragoza
origin = Madrid
destination = Zaragoza
model = Picasso
Pcso : Coach
21
numberOfSeatsy=consultas
6
restricciones
model = Picasso
numberOfSeats = 6
Smrt : Coach
modelPcso
= Smart
: Coach
Coach
Smrt
:
21
numberOfSeats
model = Picasso= 2
modelMadZar
= Smart
numberOfSeats: Trip
=6
numberOfSeats = 2
origin
= Madrid
Btle1
: Coach
destination
= Beetle
Zaragoza
model
= New
Pcso
Smrt :: Coach
Btle1
Coach
numberOfSeats
=5
model
=
Picasso
model == Smart
model
New Beetle
numberOfSeats
65
numberOfSeats =
2
numberOfSeats
=
MadBar
RegularTrip
Btle2 :: Coach
origin =
model
= Madrid
New Beetle
Btle1 ::: Coach
Coach
Smrt
numberOfSeats
=6
destination
= Barcelona
Btle2
Coach
model
=Smart
New Beetle
Beetle
model
==
availableSeats
= 10
New
numberOfSeats
=
5
numberOfSeats = 26
Btle3 : Coach
modelBtle2
= New
Beetle
:
Coach
Btle1
:
Coach
SevMad1
:Coach
RegularTrip
numberOfSeats
=5
Btle3
:
model
=
New
Beetle
model
New Beetle
origin ==
Sevilla
model
=
New Beetle
numberOfSeats
numberOfSeats
== 56
destination
=
Madrid
numberOfSeats = 5
toRDB:
OCL: Un lenguaje de restricciones y consultas
De diagramas UML a tablas MySQL
p1 : Person
OCL:
Un lenguaje
name = Susanita
p1 : Person
name = Susanita
MadBar : RegularTrip
Pcso : Coach
origin = Madrid
MadBar
: RegularTrip
model = Picasso
origin
= Madrid
destination
= Barcelona
origin
= Madrid
destination
= Zaragoza
availableSeats
= 10
numberOfSeats = 6
destination = Barcelona
p2 : Person
availableSeats = 10
name = Manolito
MadZar : Trip
p2
p1: :Person
Person
Smrt : Coach
SevMad1
RegularTrip
MadBar : :RegularTrip
origin
=
Madrid
name
name==Manolito
Susanita
Sevilla
origin
model = Smart
p1=: Madrid
Person
destination
=
Zaragoza
SevMad1
destination: RegularTrip
= Madrid
p3 : Person
Barcelona
numberOfSeats = 2
name
=
Susanita
availableSeats
origin
= Sevilla = 810
name = Miguelito
destination = Madrid
p3
p2: :Person
Person
p1 :: Person
Person
p1
MadBar : RegularTrip
availableSeats
=8
Btle1 : Coach
name
name==Miguelito
Manolito
name == Susanita
Susanita
name
origin
p2= :Madrid
Person
SevMad2
PrivateTrip
SevMad1
:: RegularTrip
model = New Beetle
destination
= Barcelona
origin= =
=Manolito
Sevilla
name
numberOfSeats = 5
origin
Sevilla
availableSeats
= 10
destination: =
SevMad2
PrivateTrip
destination
= Madrid
Madrid
p3 : Person
p2=:: Person
Person
availableSeats
origin
= Sevilla = 8
namep2
Miguelito
Btle2 : Coach
name == Manolito
Manolito
name
destination
= Madrid
p3 : Person
SevMad1 : RegularTrip
model = New Beetle
availableSeats = 8
name
=
Miguelito
Trip
origin
= Sevilla
numberOfSeats = 6
SevMad2
: PrivateTrip
Figura
2.4:
Diagrama
de
objetos
Coach_Company_Sample
Btle2
:: Coach
Btle3
Coach
destination
= Madrid
p3 :: Person
Personorigin
p3
pk
destination
origin = Sevilla
Coach
model
== New
Beetle
model
New
Beetle
availableSeats
=
8
name == Miguelito
Miguelito
1 Madrid
Zaragoza
name
destination = Madrid
numberOfSeats
numberOfSeats
pk= 65 model
numberOfSeats
SevMad2 : PrivateTrip
Figura 2.4: Diagrama de objetos Coach_Company_Sample
2
Sevilla
de restricciones
consultas
MadZary: Trip
Madrid
Btle3 : Coach
1
Picasso
6
CL es mucho más amplio: actualmente, OCL es utilizado,
ejemplo,
en la
originpor
= Sevilla
model
= New Beetle
2
Smart
2
destination =de
Madrid
SevMad2 :específico,
PrivateTrip la transformación
finición de metamodelos de dominio
modelos,
Btle3 : Coach
numberOfSeats
=5
3
New
Beetle
5
RegularTrip
PrivateTrip
origin
= Sevilla OCL es utilizado, por ejemplo, en la
l es
testing
y la
validación
de
modelos.
mucho
más
amplio:
actualmente,
model = New Beetle
2.4: Diagrama
depkobjetos
Coach_Company_Sample
destination
= Madrid
pk Figura
availableSeats
numberOfSeats
5
ición
dominio específico,
transformación
modelos,
OCL de
es metamodelos
un lenguaje dedeespecificación
puro: lalaevaluación
de unade=expresión
1
10
2
CL
es instantánea
de modo
que cuando una expresión se evalúa, simplemente
testing
y la validación
de modelos.
vuelve
un
valor
cambiar
nada
en elpuro:
modelo.
OCL esde
unpor
lenguaje
fuerteFigura
2.4:
Diagrama
objetos
Coach_Company_Sample
September
28,sin
11amplio:
OCL
un
lenguaje
de especificación
la
de
una expresión
LWednesday,
es es
mucho
más
actualmente,
OCL
es evaluación
utilizado,
ejemplo,
en la
OCL: Un
MadZar : Trip
lenguaje2.3.
de restricciones
y consultas
origin =Un
Madrid
OCL:
lenguaje
de
MadZar : Trip
destination = Zaragoza
origin = Madrid
destination = Zaragoza
model = Picasso
Pcso : Coach
21
numberOfSeatsy=consultas
6
restricciones
model = Picasso
numberOfSeats = 6
Smrt : Coach
modelPcso
= Smart
: Coach
Coach
Smrt
:
21
numberOfSeats
model = Picasso= 2
modelMadZar
= Smart
numberOfSeats: Trip
=6
numberOfSeats = 2
origin
= Madrid
Btle1
: Coach
destination
= Beetle
Zaragoza
model
= New
Pcso
Smrt :: Coach
Btle1
Coach
numberOfSeats
=5
model
=
Picasso
model == Smart
model
New Beetle
numberOfSeats
65
numberOfSeats =
2
numberOfSeats
=
MadBar
RegularTrip
Btle2 :: Coach
origin =
model
= Madrid
New Beetle
Btle1 ::: Coach
Coach
Smrt
numberOfSeats
=6
destination
= Barcelona
Btle2
Coach
model
=Smart
New Beetle
Beetle
model
==
availableSeats
= 10
New
numberOfSeats
=
5
numberOfSeats = 26
Btle3 : Coach
modelBtle2
= New
Beetle
:
Coach
Btle1
:
Coach
SevMad1
:Coach
RegularTrip
numberOfSeats
=5
Btle3
:
model
=
New
Beetle
model
New Beetle
origin ==
Sevilla
model
=
New Beetle
numberOfSeats
numberOfSeats
== 56
destination
=
Madrid
numberOfSeats = 5
toRDB:
OCL: Un lenguaje de restricciones y consultas
De diagramas UML a tablas MySQL
p1 : Person
OCL:
Un lenguaje
name = Susanita
p1 : Person
name = Susanita
MadBar : RegularTrip
Pcso : Coach
origin = Madrid
MadBar
: RegularTrip
model = Picasso
origin
= Madrid
destination
= Barcelona
origin
= Madrid
destination
= Zaragoza
availableSeats
= 10
numberOfSeats = 6
destination = Barcelona
p2 : Person
availableSeats = 10
name = Manolito
MadZar : Trip
p2
p1: :Person
Person
Smrt : Coach
SevMad1
RegularTrip
MadBar : :RegularTrip
origin
=
Madrid
name
name==Manolito
Susanita
Sevilla
origin
model = Smart
p1=: Madrid
Person
destination
=
Zaragoza
SevMad1
destination: RegularTrip
= Madrid
p3 : Person
Barcelona
numberOfSeats = 2
name
=
Susanita
availableSeats
origin
= Sevilla = 810
name = Miguelito
destination = Madrid
p3
p2: :Person
Person
p1 :: Person
Person
p1
MadBar : RegularTrip
availableSeats
=8
Btle1 : Coach
name
name==Miguelito
Manolito
name == Susanita
Susanita
name
origin
p2= :Madrid
Person
SevMad2
PrivateTrip
SevMad1
:: RegularTrip
model = New Beetle
destination
= Barcelona
origin= =
=Manolito
Sevilla
name
numberOfSeats = 5
origin
Sevilla
availableSeats
= 10
destination: =
SevMad2
PrivateTrip
destination
= Madrid
Madrid
p3 : Person
p2=:: Person
Person
availableSeats
origin
= Sevilla = 8
namep2
Miguelito
Btle2 : Coach
name == Manolito
Manolito
name
destination
= Madrid
p3 : Person
SevMad1 : RegularTrip
model = New Beetle
availableSeats = 8
name
=
Miguelito
Trip
origin
= Sevilla
numberOfSeats = 6
SevMad2
: PrivateTrip
TripCoach
Figura
2.4:
Diagrama
de
objetos
Coach_Company_Sample
Btle2
:: Coach
Btle3
Coach
destination
= Madrid
p3 :: Person
Personorigin
p3
pk
destination
origin = Sevilla
trips coachesmodel
Coach
== New
Beetle
model
New
Beetle
availableSeats
=
8
name == Miguelito
Miguelito
1 Madrid
Zaragoza
name
destination = Madrid1
1 numberOfSeats
numberOfSeats
pk= 65 model
numberOfSeats
SevMad2 : PrivateTrip
Figura 2.4: Diagrama de objetos Coach_Company_Sample
2
Sevilla
de restricciones
consultas
MadZary: Trip
Madrid
Btle3 : Coach
2
1
Picasso
6
CL es mucho más amplio: actualmente, OCL1 es utilizado,
ejemplo,
en la
originpor
= Sevilla
model
= New Beetle
2
3
2
Smart
2
destination =de
Madrid
SevMad2 :específico,
PrivateTrip la transformación
finición de metamodelos de dominio
modelos,
Btle3 : Coach
numberOfSeats
=5
3
New
Beetle
5
RegularTrip
PrivateTrip
origin
= Sevilla OCL es utilizado, por ejemplo, en la
l es
testing
y la
validación
de
modelos.
mucho
más
amplio:
actualmente,
model = New Beetle
2.4: Diagrama
depkobjetos
Coach_Company_Sample
destination
= Madrid
pk Figura
availableSeats
numberOfSeats
5
ición
dominio específico,
transformación
modelos,
OCL de
es metamodelos
un lenguaje dedeespecificación
puro: lalaevaluación
de unade=expresión
1
10
2
CL
es instantánea
de modo
que cuando una expresión se evalúa, simplemente
testing
y la validación
de modelos.
vuelve
un
valor
cambiar
nada
en elpuro:
modelo.
OCL esde
unpor
lenguaje
fuerteFigura
2.4:
Diagrama
objetos
Coach_Company_Sample
September
28,sin
11amplio:
OCL
un
lenguaje
de especificación
la
de
una expresión
LWednesday,
es es
mucho
más
actualmente,
OCL
es evaluación
utilizado,
ejemplo,
en la
toProc: De expresiones OCL a
procedimientos almacenados
Wednesday, September 28, 11
toProc: De expresiones OCL a
procedimientos almacenados
Sea exp la expresión: 1.+(2)
Wednesday, September 28, 11
toProc: De expresiones OCL a
procedimientos almacenados
Sea exp la expresión: 1.+(2)
create procedure sum1()
begin
call const1();
call const2();
create table sum1Tbl(val int);
insert into sum1Tbl(val)
select t0.val + t1.val
from
(select * from const1Tbl) as t0,
(select * from const2Tbl) as t1;
end;
Wednesday, September 28, 11
toProc: De expresiones OCL a
procedimientos almacenados
Sea exp la expresión: 1.+(2)
create procedure sum1()
begin
call const1();
call const2();
create table sum1Tbl(val int);
insert into sum1Tbl(val)
select t0.val + t1.val
from
(select * from const1Tbl) as t0,
(select * from const2Tbl) as t1;
end;
Wednesday, September 28, 11
toProc: De expresiones OCL a
procedimientos almacenados
Sea exp la expresión: 1.+(2)
create procedure const1()
create procedure sum1()
begin
begin
create table
call const1();
const1Tbl(val int);
insert into const1Tbl(val)
(select 1 as val);
int);end;
call const2();
create table sum1Tbl(val
insert into sum1Tbl(val)
select t0.val + t1.val
from
(select * from const1Tbl) as t0,
(select * from const2Tbl) as t1;
end;
Wednesday, September 28, 11
toProc: De expresiones OCL a
procedimientos almacenados
Sea exp la expresión: 1.+(2)
create procedure const1()
create procedure sum1()
begin
begin
create table
call const1();
const1Tbl(val int);
insert into const1Tbl(val)
(select 1 as val);
int);end;
call const2();
create table sum1Tbl(val
insert into sum1Tbl(val)
select t0.val + t1.val
from
(select * from const1Tbl) as t0,
(select * from const2Tbl) as t1;
end;
Wednesday, September 28, 11
toProc: De expresiones OCL a
procedimientos almacenados
Sea exp
Sea la
expexpresión:
la expresión:
op(exp1,...,expn)
1.+(2)
create procedure const1()
create procedure sum1()
begin
begin
create table
call const1();
const1Tbl(val int);
insert into const1Tbl(val)
(select 1 as val);
int);end;
call const2();
create table sum1Tbl(val
insert into sum1Tbl(val)
select t0.val + t1.val
from
(select * from const1Tbl) as t0,
(select * from const2Tbl) as t1;
end;
Wednesday, September 28, 11
toProc: De expresiones OCL a
procedimientos almacenados
Sea exp
Sea la
expexpresión:
la expresión:
op(exp1,...,expn)
1.+(2)
create procedure const1()
create procedure proc(op(exp1,...expn))
sum1()
begin
begin
create table
call const1();
const1Tbl(val int);
insert into const1Tbl(val)
(select 1 as val);
int);end;
call const2();
create table sum1Tbl(val
insert into sum1Tbl(val)
select t0.val + t1.val
from
(select * from const1Tbl) as t0,
(select * from const2Tbl) as t1;
end;
Wednesday, September 28, 11
toProc: De expresiones OCL a
procedimientos almacenados
Sea exp
Sea la
expexpresión:
la expresión:
op(exp1,...,expn)
1.+(2)
create procedure const1()
create procedure proc(op(exp1,...,expn))
proc(op(exp1,...expn))
sum1()
begin
begin
create table
call const1();
proc(exp1);
const1Tbl(val int);
...
insert into const1Tbl(val)
call proc(expn);
const2();
(select 1 as val);
create table sum1Tbl(val int);end;
insert into sum1Tbl(val)
select t0.val + t1.val
from
(select * from const1Tbl) as t0,
(select * from const2Tbl) as t1;
end;
Wednesday, September 28, 11
toProc: De expresiones OCL a
procedimientos almacenados
Sea exp
Sea la
expexpresión:
la expresión:
op(exp1,...,expn)
1.+(2)
create procedure const1()
create procedure proc(op(exp1,...,expn))
proc(op(exp1,...expn))
sum1()
begin
begin
create table
call const1();
proc(exp1);
const1Tbl(val int);
...
insert into const1Tbl(val)
call proc(expn);
const2();
(select 1 as val);
create table nameTable(columns(exp));
sum1Tbl(val int);end;
insert into nameTable(columns(exp))
sum1Tbl(val)
select t0.val + t1.val
from
(select * from const1Tbl) as t0,
(select * from const2Tbl) as t1;
end;
Wednesday, September 28, 11
toProc: De expresiones OCL a
procedimientos almacenados
Sea exp
Sea la
expexpresión:
la expresión:
op(exp1,...,expn)
1.+(2)
create procedure const1()
create procedure proc(op(exp1,...,expn))
proc(op(exp1,...expn))
sum1()
begin
begin
create table
call const1();
proc(exp1);
const1Tbl(val int);
...
insert into const1Tbl(val)
call proc(expn);
const2();
(select 1 as val);
create table nameTable(columns(exp));
sum1Tbl(val int);end;
insert into nameTable(columns(exp))
sum1Tbl(val)
select
query(op(exp1,...,expn));
t0.val + t1.val
from
(select * from const1Tbl) as t0,
(select * from const2Tbl) as t1;
end;
Wednesday, September 28, 11
toProc: De expresiones OCL a
procedimientos almacenados
Wednesday, September 28, 11
toProc: De expresiones OCL a
procedimientos almacenados
Sea exp la expresión: ‘hola’.characters()
Wednesday, September 28, 11
toProc: De expresiones OCL a
procedimientos almacenados
Sea exp la expresión: ‘hola’.characters()
create procedure characters1
begin
call constH;
call characters1Shp;
create table characters1Tbl(pos int, val varchar...);
insert into characters1Tbl(val)
(select val
from characters1ShpTbl)));
end;
Wednesday, September 28, 11
toProc: De expresiones OCL a
procedimientos almacenados
.,expn)
Sea exp
exp la
la expresión:
expresión: op(exp1,..
‘hola’.characters()
Sea
create procedure characters1
begin
call constH;
call characters1Shp;
create table characters1Tbl(pos int, val varchar...);
insert into characters1Tbl(val)
(select val
from characters1ShpTbl)));
end;
Wednesday, September 28, 11
toProc: De expresiones OCL a
procedimientos almacenados
.,expn)
Sea exp
exp la
la expresión:
expresión: op(exp1,..
‘hola’.characters()
Sea
create procedure proc(op(exp1,...,expn))
characters1
begin
call constH;
call characters1Shp;
create table characters1Tbl(pos int, val varchar..);
varchar...);
insert into characters1Tbl(val)
(select val
from characters1ShpTbl)));
end;
Wednesday, September 28, 11
toProc: De expresiones OCL a
procedimientos almacenados
.,expn)
Sea exp
exp la
la expresión:
expresión: op(exp1,..
‘hola’.characters()
Sea
create procedure proc(op(exp1,...,expn))
characters1
begin
call constH;
proc(exp1);
call characters1Shp;
...
create
table characters1Tbl(pos int, val varchar..);
call
proc(expn);
varchar...);
insert
into characters1Tbl(val)
call
characters1Shp;
(select
val characters1(pos int, val varchar...);
create
table
from characters1ShpTbl)));
insert
into characters1(val)
(select val
from characters1ShpTbl)));
end;
Wednesday, September 28, 11
toProc: De expresiones OCL a
procedimientos almacenados
.,expn)
Sea exp
exp la
la expresión:
expresión: op(exp1,..
‘hola’.characters()
Sea
create procedure proc(op(exp1,...,expn))
characters1
begin
call proc(exp1);
constH;
call characters1Shp;
...
create
call
proc(expn);
table characters1Tbl(pos int, val varchar..);
varchar...);
insert
call
proc#(op(exp1,...,expn));
into characters1Tbl(val)
characters1Shp;
create
(select
table
val characters1(pos int, val varchar...);
insert
from characters1ShpTbl)));
into characters1(val)
(select val
from characters1ShpTbl)));
end;
Wednesday, September 28, 11
toProc: De expresiones OCL a
procedimientos almacenados
.,expn)
Sea exp
exp la
la expresión:
expresión: op(exp1,..
‘hola’.characters()
Sea
create procedure proc(op(exp1,...,expn))
characters1
begin
call proc(exp1);
constH;
call characters1Shp;
...
create
call
proc(expn);
table characters1Tbl(pos int, val varchar..);
varchar...);
insert
call
proc#(op(exp1,...,expn));
into characters1Tbl(val)
characters1Shp;
create
(select
table
val nameTable(columns(proc(exp)));
characters1(pos int, val varchar...);
insert
from characters1ShpTbl)));
into nameTable(columns(proc(exp)))
characters1(val)
(select val
from characters1ShpTbl)));
end;
Wednesday, September 28, 11
toProc: De expresiones OCL a
procedimientos almacenados
.,expn)
Sea exp
exp la
la expresión:
expresión: op(exp1,..
‘hola’.characters()
Sea
create procedure proc(op(exp1,...,expn))
characters1
begin
constH;
call proc(exp1);
call characters1Shp;
...
create
table characters1Tbl(pos int, val varchar..);
call
proc(expn);
varchar...);
insert
into characters1Tbl(val)
call
characters1Shp;
proc#(op(exp1,...,expn));
(select
val nameTable(columns(proc(exp)));
characters1(pos int, val varchar...);
create
table
from characters1ShpTbl)));
characters1(val)
insert
into nameTable(columns(proc(exp)))
(select val
characters1ShpTbl)));
from table(proc#(op(exp1,...,expn))))));
end;
Wednesday, September 28, 11
toProc: De expresiones OCL a
procedimientos almacenados
Wednesday, September 28, 11
toProc: De expresiones OCL a
procedimientos almacenados
Sea exp la expresión
Trip.allInstances().origin->exists(o|o=‘Madrid’)
Wednesday, September 28, 11
toProc: De expresiones OCL a
procedimientos almacenados
Sea exp la expresión
Trip.allInstances().origin->exists(o|o=‘Madrid’)
create procedure existsIt
begin
call origin;
call existsItShp;
create table existsItTbl(val Boolean);
insert into existsItTbl(val)
(select *
from existsItShpTbl);
end;
Wednesday, September 28, 11
toProc: De expresiones OCL a
procedimientos almacenados
Sea exp la expresión
Sea exp la expresión: fuente->iter(o|cuerpo)
Trip.allInstances().origin->exists(o|o=‘Madrid’)
create procedure existsIt
begin
call origin;
call existsItShp;
create table existsItTbl(val Boolean);
insert into existsItTbl(val)
(select *
from existsItShpTbl);
end;
Wednesday, September 28, 11
toProc: De expresiones OCL a
procedimientos almacenados
Sea exp la expresión
Sea exp la expresión: fuente->iter(o|cuerpo)
Trip.allInstances().origin->exists(o|o=‘Madrid’)
create procedure proc(iter(fuente,cuerpo))
existsIt
begin
call origin;
call existsItShp;
create table existsItTbl(val Boolean);
insert into existsItTbl(val)
(select *
from existsItShpTbl);
end;
Wednesday, September 28, 11
toProc: De expresiones OCL a
procedimientos almacenados
Sea exp la expresión
Sea exp la expresión: fuente->iter(o|cuerpo)
Trip.allInstances().origin->exists(o|o=‘Madrid’)
create procedure proc(iter(fuente,cuerpo))
existsIt
begin
call proc(fuente);
origin;
call existsItShp;
create table existsItTbl(val Boolean);
insert into existsItTbl(val)
(select *
from existsItShpTbl);
end;
Wednesday, September 28, 11
toProc: De expresiones OCL a
procedimientos almacenados
Sea exp la expresión
Sea exp la expresión: fuente->iter(o|cuerpo)
Trip.allInstances().origin->exists(o|o=‘Madrid’)
create procedure proc(iter(fuente,cuerpo))
existsIt
begin
call proc(fuente);
origin;
call proc#(iter(fuente,cuerpo));
existsItShp;
create table existsItTbl(val Boolean);
insert into existsItTbl(val)
(select *
from existsItShpTbl);
end;
Wednesday, September 28, 11
toProc: De expresiones OCL a
procedimientos almacenados
Sea exp la expresión
Sea exp la expresión: fuente->iter(o|cuerpo)
Trip.allInstances().origin->exists(o|o=‘Madrid’)
create procedure proc(iter(fuente,cuerpo))
existsIt
begin
call proc(fuente);
origin;
call proc#(iter(fuente,cuerpo));
existsItShp;
create table nameTable(columns(exp));
existsItTbl(val Boolean);
insert into nameTable(columns(exp))
existsItTbl(val)
(select *
from existsItShpTbl);
end;
Wednesday, September 28, 11
toProc: De expresiones OCL a
procedimientos almacenados
Sea exp la expresión
Sea exp la expresión: fuente->iter(o|cuerpo)
Trip.allInstances().origin->exists(o|o=‘Madrid’)
create procedure proc(iter(fuente,cuerpo))
existsIt
begin
call proc(fuente);
origin;
call proc#(iter(fuente,cuerpo));
existsItShp;
create table nameTable(columns(exp));
existsItTbl(val Boolean);
insert into nameTable(columns(exp))
existsItTbl(val)
(select *
from table(proc#(iter(fuente,cuerpo))));
existsItShpTbl);
end;
Wednesday, September 28, 11
toProc: Procedimientos almacenados
para iteradores
Wednesday, September 28, 11
toProc: Procedimientos almacenados
para iteradores
Sea exp la expresión: iter(fuente,cuerpo)
Wednesday, September 28, 11
toProc: Procedimientos almacenados
para iteradores
Sea exp la expresión: iter(fuente,cuerpo)
create procedure proc#(iter(fuente,cuerpo))
begin
declare crs cursor for
(select val from table(proc(fuente)));
declare var, done ...;
create table nameTable(columns(exp));
open crs;
repeat
fetch crs into var;
call proc(cuerpo);
insert into nameTable(columns(exp)) ...;
until done end repeat; close crs;
end;
Wednesday, September 28, 11
toProc: Procedimientos almacenados
para iteradores
Sea exp la expresión: iter(fuente,cuerpo)
create procedure proc#(iter(fuente,cuerpo))
begin
declare crs cursor for
(select val from table(proc(fuente)));
declare var, done ...;
create table nameTable(columns(exp));
open crs;
repeat
fetch crs into var;
call proc(cuerpo);
insert into nameTable(columns(exp)) ...;
until done end repeat; close crs;
end;
Wednesday, September 28, 11
MySQL4OCL: Arquitectura
58
6. Implementación
MySQL4OCL compiler
queries ocl
EOS parser
diagrama de clases
MySQL4OCL
codgen
queries sql
MySQL4OCL
tabgen
tables
Figura 6.1: Arquitectura de la implementación de MySQL4OCL.
Wednesday, September 28, 11
Optimizaciones
Wednesday, September 28, 11
Optimizaciones
La creación de tablas tiene un coste significativo.
Wednesday, September 28, 11
Optimizaciones
La creación de tablas tiene un coste significativo.
Creamos un algoritmo bottom up que elimina las
llamadas a procedimientos (o las reemplaza por
consultas), evitando la creación de tablas auxiliares
siempre que esto es posible: o sea, cuando el cuerpo
del procedimiento:
Wednesday, September 28, 11
Optimizaciones
La creación de tablas tiene un coste significativo.
Creamos un algoritmo bottom up que elimina las
llamadas a procedimientos (o las reemplaza por
consultas), evitando la creación de tablas auxiliares
siempre que esto es posible: o sea, cuando el cuerpo
del procedimiento:
- no incluye ninguna llamada a procedimiento, sino
que él mismo es una consulta, o
- incluye llamadas a procedimientos, pero éstas
pueden realizarse “fuera” del mismo.
Wednesday, September 28, 11
Ejemplo
Wednesday, September 28, 11
Ejemplo
exp = ‘hola’.characters()->size()
Wednesday, September 28, 11
Ejemplo
exp = ‘hola’.characters()->size()
create procedure size1()
begin
call proc(characters1);
create table size1Tbl(val int);
insert into size1Tbl(val)
select count(*)
from (select *
from characteres1Tbl) as t;
end;
Wednesday, September 28, 11
Ejemplo
exp = ‘hola’.characters()->size()
create procedure size1()
begin
call proc(characters1);
create table size1Tbl(val int);
insert into size1Tbl(val)
select count(*)
from (select *
from characteres1Tbl) as t;
end;
create procedure characters1()
begin
call proc(constH);
call proc#(characters1Shp);
create table
characters1Tbl(val varchar(50));
insert into characters1Tbl(val)
(select * from characters1ShpTbl);
end;
Wednesday, September 28, 11
Ejemplo
exp = ‘hola’.characters()->size()
create procedure size1()
begin
call proc(characters1);
create table size1Tbl(val int);
insert into size1Tbl(val)
select count(*)
from (select *
from characteres1Tbl) as t;
end;
create procedure characters1()
begin
call proc(constH);
call proc#(characters1Shp);
create table
characters1Tbl(val varchar(50));
insert into characters1Tbl(val)
(select * from characters1ShpTbl);
end;
Wednesday, September 28, 11
create procedure characters1Shp()
begin
declare ...
create table characters1ShpTbl(pos
int, val varchar(250));
...
while ... do
insert into characters1ShpTbl(val)
select substring(val,i,1) as val
from (select * from constHTbl) as t;
end while;
end;
Ejemplo
exp = ‘hola’.characters()->size()
create procedure size1()
begin
call proc(characters1);
create table size1Tbl(val int);
insert into size1Tbl(val)
select count(*)
from (select *
from characteres1Tbl) as t;
end;
create procedure characters1()
begin
call proc(constH);
call proc#(characters1Shp);
create table
characters1Tbl(val varchar(50));
insert into characters1Tbl(val)
(select * from characters1ShpTbl);
end;
Wednesday, September 28, 11
create procedure characters1Shp()
begin
declare ...
create table characters1ShpTbl(pos
int, val varchar(250));
...
while ... do
insert into characters1ShpTbl(val)
select substring(val,i,1) as val
from (select * from constHTbl) as t;
end while;
end;
create procedure constH()
begin
create table constHTbl(val int);
insert into constHTbl(val)
(select ‘hola’ as val);
end;
Ejemplo
exp = ‘hola’.characters()->size()
create procedure size1()
begin
call proc(characters1);
create table size1Tbl(val int);
insert into size1Tbl(val)
select count(*)
from (select *
from characteres1Tbl) as t;
end;
create procedure characters1()
begin
call proc(constH);
call proc#(characters1Shp);
create table
characters1Tbl(val varchar(50));
insert into characters1Tbl(val)
(select * from characters1ShpTbl);
end;
Wednesday, September 28, 11
create procedure characters1Shp()
begin
declare ...
create table characters1ShpTbl(pos
int, val varchar(250));
...
while ... do
insert into characters1ShpTbl(val)
select substring(val,i,1) as val
from (select ‘hola’
* from as
constHTbl)
val) as t;
as t;
end while;
end;
create procedure constH()
begin
create table constHTbl(val int);
insert into constHTbl(val)
(select ‘hola’ as val);
end;
Ejemplo
exp = ‘hola’.characters()->size()
create procedure size1()
begin
call proc(characters1);
create table size1Tbl(val int);
insert into size1Tbl(val)
select count(*)
from (select *
from characteres1Tbl) as t;
end;
create procedure characters1()
begin
call proc(constH);
call proc#(characters1Shp);
create table
characters1Tbl(val varchar(50));
insert into characters1Tbl(val)
(select * from characters1ShpTbl);
end;
Wednesday, September 28, 11
create procedure characters1Shp()
begin
declare ...
create table characters1ShpTbl(pos
int, val varchar(250));
...
while ... do
insert into characters1ShpTbl(val)
select substring(val,i,1) as val
from (select ‘hola’
* from as
constHTbl)
val) as t;
as t;
end while;
end;
create procedure constH()
begin
create table constHTbl(val int);
insert into constHTbl(val)
(select ‘hola’ as val);
end;
Ejemplo
exp = ‘hola’.characters()->size()
create procedure size1()
begin
call proc(characters1);
create table size1Tbl(val int);
insert into size1Tbl(val)
select count(*)
from (select *
from characteres1Tbl) as t;
end;
create procedure characters1()
begin
call proc(constH);
call proc#(characters1Shp);
create table
characters1Tbl(val varchar(50));
insert into characters1Tbl(val)
(select * from characters1ShpTbl);
end;
Wednesday, September 28, 11
create procedure characters1Shp()
begin
declare ...
create table characters1ShpTbl(pos
int, val varchar(250));
...
while ... do
insert into characters1ShpTbl(val)
select substring(val,i,1) as val
from (select ‘hola’
* from as
constHTbl)
val) as t;
as t;
end while;
end;
create procedure constH()
begin
create table constHTbl(val int);
insert into constHTbl(val)
(select ‘hola’ as val);
end;
Ejemplo
exp = ‘hola’.characters()->size()
create procedure size1()
begin
call proc(characters1);
create table size1Tbl(val int);
insert into size1Tbl(val)
select count(*)
from (select *
from characteres1Tbl) as t;
end;
create procedure characters1()
begin
call proc(constH);
call proc#(characters1Shp);
create table
characters1Tbl(val varchar(50));
insert into characters1Tbl(val)
(select * from characters1ShpTbl);
end;
Wednesday, September 28, 11
create procedure characters1Shp()
begin
declare ...
create table characters1ShpTbl(pos
int, val varchar(250));
...
while ... do
insert into characters1ShpTbl(val)
select substring(val,i,1) as val
from (select ‘hola’
* from as
constHTbl)
val) as t;
as t;
end while;
end;
create procedure constH()
begin
create table constHTbl(val int);
insert into constHTbl(val)
(select ‘hola’ as val);
end;
Ejemplo
exp = ‘hola’.characters()->size()
create procedure size1()
begin
call proc#(characters1Shp);
proc(characters1);
create table size1Tbl(val int);
insert into size1Tbl(val)
select count(*)
from (select *
from characteres1ShpTbl)
characteres1Tbl) as as
t; t;
end;
create procedure characters1()
begin
call proc(constH);
call proc#(characters1Shp);
create table
characters1Tbl(val varchar(50));
insert into characters1Tbl(val)
(select * from characters1ShpTbl);
end;
Wednesday, September 28, 11
create procedure characters1Shp()
begin
declare ...
create table characters1ShpTbl(pos
int, val varchar(250));
...
while ... do
insert into characters1ShpTbl(val)
select substring(val,i,1) as val
from (select ‘hola’
* from as
constHTbl)
val) as t;
as t;
end while;
end;
create procedure constH()
begin
create table constHTbl(val int);
insert into constHTbl(val)
(select ‘hola’ as val);
end;
Ejemplo
exp = ‘hola’.characters()->size()
create procedure size1()
begin
call proc#(characters1Shp);
proc(characters1);
create table size1Tbl(val int);
insert into size1Tbl(val)
select count(*)
from (select *
from characteres1ShpTbl)
characteres1Tbl) as as
t; t;
end;
create procedure characters1()
begin
call proc(constH);
call proc#(characters1Shp);
create table
characters1Tbl(val varchar(50));
insert into characters1Tbl(val)
(select * from characters1ShpTbl);
end;
Wednesday, September 28, 11
create procedure characters1Shp()
begin
declare ...
create table characters1ShpTbl(pos
int, val varchar(250));
...
while ... do
insert into characters1ShpTbl(val)
select substring(val,i,1) as val
from (select ‘hola’
* from as
constHTbl)
val) as t;
as t;
end while;
end;
create procedure constH()
begin
create table constHTbl(val int);
insert into constHTbl(val)
(select ‘hola’ as val);
end;
Ejemplo
exp = ‘hola’.characters()->size()
create procedure size1()
begin
call proc#(characters1Shp);
proc(characters1);
create table size1Tbl(val int);
insert into size1Tbl(val)
select count(*)
from (select *
from characteres1ShpTbl)
characteres1Tbl) as as
t; t;
end;
create procedure characters1()
begin
call proc(constH);
call proc#(characters1Shp);
create table
characters1Tbl(val varchar(50));
insert into characters1Tbl(val)
(select * from characters1ShpTbl);
end;
Wednesday, September 28, 11
create procedure characters1Shp()
begin
declare ...
create table characters1ShpTbl(pos
int, val varchar(250));
...
while ... do
insert into characters1ShpTbl(val)
select substring(val,i,1) as val
from (select ‘hola’
* from as
constHTbl)
val) as t;
as t;
end while;
end;
create procedure constH()
begin
create table constHTbl(val int);
insert into constHTbl(val)
(select ‘hola’ as val);
end;
MySQL4OCL en ActionGUI
Wednesday, September 28, 11
MySQL4OCL en ActionGUI
• MySQL4OCL está integrado en la herramienta
ActionGUI de desarrollo de aplicaciones web
basadas en modelos.
Wednesday, September 28, 11
MySQL4OCL en ActionGUI
• MySQL4OCL está integrado en la herramienta
ActionGUI de desarrollo de aplicaciones web
basadas en modelos.
• ActionGUI se ha utilizado para el desarrollo de un
sistema de voluntariado para un hospital
Wednesday, September 28, 11
Sistema de voluntariado en hospital
Wednesday, September 28, 11
Sistema de voluntariado en hospital
Modelo de datos: 22 clases y 34 asociaciones
Wednesday, September 28, 11
Sistema de voluntariado en hospital
Modelo de datos: 22 clases y 34 asociaciones
Modelo de seguridad: 46 restricciones de acceso (en OCL)
Wednesday, September 28, 11
Sistema de voluntariado en hospital
Modelo de datos: 22 clases y 34 asociaciones
Modelo de seguridad: 46 restricciones de acceso (en OCL)
Un voluntario puede leer la información de un compromiso (self) si es suyo y el voluntario está activo
self.tieneCompromiso.comoUsuario = caller and self.tieneCompromiso.estado = 1
Wednesday, September 28, 11
Sistema de voluntariado en hospital
Modelo de datos: 22 clases y 34 asociaciones
Modelo de seguridad: 46 restricciones de acceso (en OCL)
Un voluntario puede leer la información de un compromiso (self) si es suyo y el voluntario está activo
self.tieneCompromiso.comoUsuario = caller and self.tieneCompromiso.estado = 1
Modelo de GUI:
• 92 ventanas, 263 botones, 657 etiquetas, 161 campos de datos, 108
tablas.
• 2697 expresiones OCL (condiciones y argumentos de acciones, valores
para mostrar).
Wednesday, September 28, 11
Sistema de voluntariado en hospital
Modelo de datos: 22 clases y 34 asociaciones
Modelo de seguridad: 46 restricciones de acceso (en OCL)
Un voluntario puede leer la información de un compromiso (self) si es suyo y el voluntario está activo
self.tieneCompromiso.comoUsuario = caller and self.tieneCompromiso.estado = 1
Modelo de GUI:
• 92 ventanas, 263 botones, 657 etiquetas, 161 campos de datos, 108
tablas.
• 2697 expresiones OCL (condiciones y argumentos de acciones, valores
para mostrar).
Sesiones de cursos que comienzan en una fecha específica
[cursos.row].sesiones->select(s|s.fechaInicio.date() = [agendaGrupo.fecha].date())
Wednesday, September 28, 11
Sistema de voluntariado en hospital
Modelo de datos: 22 clases y 34 asociaciones
Modelo de seguridad: 46 restricciones de acceso (en OCL)
Un voluntario puede leer la información de un compromiso (self) si es suyo y el voluntario está activo
self.tieneCompromiso.comoUsuario = caller and self.tieneCompromiso.estado = 1
Modelo de GUI:
• 92 ventanas, 263 botones, 657 etiquetas, 161 campos de datos, 108
tablas.
• 2697 expresiones OCL (condiciones y argumentos de acciones, valores
para mostrar).
Sesiones de cursos que comienzan en una fecha específica
[cursos.row].sesiones->select(s|s.fechaInicio.date() = [agendaGrupo.fecha].date())
• MySQL4OCL generó
Wednesday, September 28, 11
Sistema de voluntariado en hospital
Modelo de datos: 22 clases y 34 asociaciones
Modelo de seguridad: 46 restricciones de acceso (en OCL)
Un voluntario puede leer la información de un compromiso (self) si es suyo y el voluntario está activo
self.tieneCompromiso.comoUsuario = caller and self.tieneCompromiso.estado = 1
Modelo de GUI:
• 92 ventanas, 263 botones, 657 etiquetas, 161 campos de datos, 108
tablas.
• 2697 expresiones OCL (condiciones y argumentos de acciones, valores
para mostrar).
Sesiones de cursos que comienzan en una fecha específica
[cursos.row].sesiones->select(s|s.fechaInicio.date() = [agendaGrupo.fecha].date())
• MySQL4OCL generó
4434 procedimientos almacenados (46647 líneas de código MySQL).
Wednesday, September 28, 11
Conclusiones
Wednesday, September 28, 11
Conclusiones
• Presentamos un compilador de OCL a MySQL que
permite la evaluación de expresiones OCL en base de
datos.
superando la limitación actual de los evaluadores OCL sobre escenarios
grandes
Wednesday, September 28, 11
Conclusiones
• Presentamos un compilador de OCL a MySQL que
permite la evaluación de expresiones OCL en base de
datos.
superando la limitación actual de los evaluadores OCL sobre escenarios
grandes
define de manera recursiva sobre las expresiones
• Se
superando las limitaciones de las propuestas anteriores basadas en
patrones. (OCL2SQL de DresdenOCL)
Wednesday, September 28, 11
Conclusiones
• Presentamos un compilador de OCL a MySQL que
permite la evaluación de expresiones OCL en base de
datos.
superando la limitación actual de los evaluadores OCL sobre escenarios
grandes
define de manera recursiva sobre las expresiones
• Se
superando las limitaciones de las propuestas anteriores basadas en
patrones. (OCL2SQL de DresdenOCL)
• Las construcciones utilizadas son soportadas por
otros gestores de base de datos.
Wednesday, September 28, 11
Trabajo futuro
Wednesday, September 28, 11
Trabajo futuro
• Demostrar formalmente la corrección de nuestro
compilador y del algoritmo de optimización.
Wednesday, September 28, 11
Trabajo futuro
• Demostrar formalmente la corrección de nuestro
•
compilador y del algoritmo de optimización.
Extender el compilador MySQL4OCL para dar
soporte a operaciones sobre colección de
colecciones, tuplas y funciones definidas por el
usuario.
Wednesday, September 28, 11
Trabajo futuro
• Demostrar formalmente la corrección de nuestro
•
•
compilador y del algoritmo de optimización.
Extender el compilador MySQL4OCL para dar
soporte a operaciones sobre colección de
colecciones, tuplas y funciones definidas por el
usuario.
Optimizar el código generado con un análisis de precompilación y uno de post-compilación.
Wednesday, September 28, 11
Trabajo futuro
• Demostrar formalmente la corrección de nuestro
•
•
•
compilador y del algoritmo de optimización.
Extender el compilador MySQL4OCL para dar
soporte a operaciones sobre colección de
colecciones, tuplas y funciones definidas por el
usuario.
Optimizar el código generado con un análisis de precompilación y uno de post-compilación.
Integrar el compilador con una política de seguridad
de forma que la consulta/procedimiento resultado
tenga en cuenta esta política.
Wednesday, September 28, 11
Preguntas?
Wednesday, September 28, 11
Publicaciones
•
Marina Egea, Carolina Dania, Manuel Clavel: MySQL4OCL: A Stored
Procedure-Based MySQL Code Generator for OCL. Workshop OCL.
ECEASST 36: (2010)
•
Miguel Angel García de Dios, Carolina Dania, Michael Schläpfer, David
A. Basin, Manuel Clavel, Marina Egea: SSG: A Model-Based
Development Environment for Smart, Security-Aware GUIs. ICSE (2)
2010: 311-312
•
David A. Basin, Manuel Clavel, Marina Egea, Miguel Angel García de
Dios, Carolina Dania, Gonzalo Ortiz, Javier Valdazo: Model-Driven
Development of Security-Aware GUIs for Data-Centric Applications.
FOSAD 2011: 101-124
•
Disponible en: http://www.bm1software.com/mysql-ocl/
Wednesday, September 28, 11
Descargar