ocl (object constraint language)

16
29/01/03 1 OCL OCL (Object Constraint (Object Constraint Language) Language) Juan Casas Cuevas Mercedes Arenas Fernández Laboratorio de Sistemas de Información Facultad de Informática Universidad Politécnica de Valencia

Upload: ewa

Post on 05-Jan-2016

61 views

Category:

Documents


0 download

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 Presentation

TRANSCRIPT

Page 1: OCL  (Object Constraint Language)

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

Page 2: OCL  (Object Constraint Language)

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.

Page 3: OCL  (Object Constraint Language)

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.

Page 4: OCL  (Object Constraint Language)

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

Page 5: OCL  (Object Constraint Language)

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 =, <>

Page 6: OCL  (Object Constraint Language)

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

Page 7: OCL  (Object Constraint Language)

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'

Page 8: OCL  (Object Constraint Language)

29/01/03 8

EjemploEjemplo

Page 9: OCL  (Object Constraint Language)

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

Page 10: OCL  (Object Constraint Language)

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

Page 11: OCL  (Object Constraint Language)

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

Page 12: OCL  (Object Constraint Language)

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

Page 13: OCL  (Object Constraint Language)

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.

Page 14: OCL  (Object Constraint Language)

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.

Page 15: OCL  (Object Constraint Language)

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.

Page 16: OCL  (Object Constraint Language)

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.