ocl (object constraint language)

Post on 05-Jan-2016

61 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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

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.

top related