160 likes | 455 Views
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.
E N D
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 • 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.
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.
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
Tipo de Operaciones operandos Real =, +, -, *, /, abs, floor, max, min, <, >, <=, >= Integer =, +, -, *, /, abs, div, mod, max, min Boolean =, or, xor, and, not, implies, if-then- else String =, size, concat, toUpper, toLower, substring Enumeration =, <> Operadores de UML
Tipo Concuerda con / Es un subtipo de Set(T) Collection(T) Sequence(T) Collection(T) Bag(T) Collection(T) Integer Real Concordancia de tipos
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'
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
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
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
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
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.
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.
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.
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.