OCL (Object Constraint Language)

Download Report

Transcript OCL (Object Constraint Language)

OCL
(Object Constraint
Language)
Juan Casas Cuevas
Mercedes Arenas Fernández
Laboratorio de Sistemas de Información
Facultad de Informática
Universidad Politécnica de Valencia
29/01/03
1
Introducción

UML (Unified Modeling Language) es un lenguaje para
especificar, construir, visualizar y documentar los objetos
de un sistema software.
 No está lo suficientemente refinado.
 No permite p.e. describir restricciones adicionales sobre
los objetos modelo.
29/01/03
2
Introducción

OCL (Object Constraint Language) es un lenguaje
notacional (subconjunto de UML estándar), que permite
escribir restricciones sobre modelos de objetos.

Estas restricciones rigen el aspecto de un objeto
individual.
29/01/03
3
Introducción
 Características de OCL:
 Lenguaje de expresiones:
Cuando se evalúa una expresión OCL,
simplemente devuelve un valor.
 Lenguaje de modelos:
Lenguaje de modelos y no de programación.
 Lenguaje formal
29/01/03
4
Operadores de UML
Tipo
de
operandos
Real
Integer
Boolean
String
Enumeration
29/01/03
Operaciones
=, +, -, *, /, abs, floor, max, min, <, >, <=, >=
=, +, -, *, /, abs, div, mod, max, min
=, or, xor, and, not, implies, if-then- else
=, size, concat, toUpper, toLower, substring
=, <>
5
Concordancia de tipos
Tipo
Set(T)
Sequence(T)
Bag(T)
Integer
29/01/03
Concuerda con / Es un subtipo de
Collection(T)
Collection(T)
Collection(T)
Real
6
Reglas de precedencia
@pre
punto y operaciones flecha: '.' y '->'
operadores unitarios 'not' y menos '-'
'*' y '/'
'+' y el operador binario '-'
'if-then-else-endif'
'<','>','<=','>='
'=','<>'
'and','or', y 'xor'
'implies'
29/01/03
7
Ejemplo
29/01/03
8
Conexión con el metamodelo
UML
 Self : se usa para referirse a la instancia contextual.
 Invariantes: restricción estereotipada como
<<invariante>>. Por ejemplo:
context Company inv enoughEmployees:
Self.numberofEmployees > 50
29/01/03
9
Conexión con el metamodelo
UML

Pre y Post-condiciones: se corresponden con los
estereotipos <<precondicion>> y <<postcondicion>>,
respectivamente.
context Typename::OperationName
(param1:Type1,...):ReturnType
post: result = 5000
29/01/03
10
Conexión con el metamodelo
UML

Let: Define una variable que es una
subexpresión usada varias veces en una R.I.
context Person inv:
let income : Integer =self.job.salary sum in
if isUnemployed then income < 100
else income >=100
endif
29/01/03
11
Conexión con el metamodelo
UML

Propiedades predefinidas de los objetos:
 OclIsTypeOf (t : OclType) : Boolean
 OclIsKingOf (t : OclType) : Boolean
 OclInState (s : OclState) : Boolean
 OclisNew : Boolean
 OclAsType (t : OclType) : instance of OclType
29/01/03
12
Conexión con el metamodelo
UML

Allinstances: Su resultado es el conjunto de todas las
instancias del tipo existente en un momento dado.

Tipo Collection:supertipo abstracto para todos los tipos de
colección en OCL. Tres tipos: Set, Sequence y Bag.
29/01/03
13
Paquete estándar OCL

Cada modelo UML que usa como lenguaje de restricción
OCL contiene un paquete estándar denominado
“UML_OCL”.
 Cada
tipo OCL puede extenderse con nuevas
características.
29/01/03
14
Conclusiones

OCL no es tan expresivo como el CRT está incompleto
como lenguaje de consulta de B.D.

Es más fácil encontrar los errores en fases más
tempranas del proyecto.
29/01/03
15
Conclusiones

La combinación de UML y OCL mejorará definitivamente
el proceso de desarrollo software e incrementará la
calidad del software desarrollado.
 Algunos autores han sugerido reemplazarlo por otro
lenguaje bien formado como el EER.
29/01/03
16