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