ocl (object constraint language)
DESCRIPTION
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. Introducción. - PowerPoint PPT PresentationTRANSCRIPT
29/01/03 1
OCL OCL (Object Constraint (Object Constraint
Language)Language)
Juan Casas CuevasMercedes Arenas Fernández
Laboratorio de Sistemas de Información
Facultad de InformáticaUniversidad Politécnica de Valencia
29/01/03 2
IntroducciónIntroducció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 3
IntroducciónIntroducció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 4
IntroducciónIntroducció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 5
Operadores de UMLOperadores de UML
Tipo Tipo dede OperacionesOperaciones operandosoperandos
Real =, +, -, *, /, abs, floor, max, min, <, >, <=, >=Integer =, +, -, *, /, abs, div, mod, max, minBoolean =, or, xor, and, not, implies, if-then- else
String =, size, concat, toUpper, toLower, substringEnumeration =, <>
29/01/03 6
Concordancia de tiposConcordancia de tipos
Tipo Tipo Concuerda con / Es un Concuerda con / Es un subtipo desubtipo deSet(T) Collection(T)Sequence(T) Collection(T)Bag(T) Collection(T)Integer Real
29/01/03 7
Reglas de precedenciaReglas 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 8
EjemploEjemplo
29/01/03 9
Conexión con el Conexión con el metamodelo UMLmetamodelo 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 10
Conexión con el Conexión con el metamodelo UMLmetamodelo 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 11
Conexión con el Conexión con el metamodelo UMLmetamodelo 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 12
Conexión con el Conexión con el metamodelo UMLmetamodelo 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 13
Conexión con el Conexión con el metamodelo UMLmetamodelo 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 14
Paquete estándar OCLPaquete 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 15
ConclusionesConclusiones
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 16
ConclusionesConclusiones
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.