Ingeniero

Solo disponible en BuenasTareas
  • Páginas : 6 (1305 palabras )
  • Descarga(s) : 4
  • Publicado : 17 de abril de 2010
Leer documento completo
Vista previa del texto
OCL: Object Constraint Language
•  Un lenguaje formal textual para definir restricciones sobre objetos •  Usos

–  Modelo conceptual: Restricciones adicionales al modelo gráfico –  Modelo de operaciones: Definición formal de condiciones (pre-, posty disparadores) –  Modelo de objetivos: Definición formal de objetivos (aunque habría que extenderlo con operadores temporales) –  Diseño
• Diagrama de Clases •  Contratos

–  Navegación de modelos estructurales

1

OCL en el Modelo Conceptual
•  El diagrama de clases suele ser insuficientemente expresivo:
–  Muchas veces, se cuelan instanciaciones del diagrama que no condicen con un estado deseable del sistema

•  OCL brinda

–  mayor expresividad para definir qué estados son válidos
–  (i.e., hay una signatura que sedesprende del modelo de clases)

•  El vocabulario de OCL depende del modelo de clases •  Estructura de aserciones OCL en el MC
–  Un contexto: Donde la aserción se espera que sea verdadera –  Un invariante: La aserción misma

2

Object Constraint Language

¿Cómo modelar los siguientes requerimientos?
•  Posible número de dueños que un vehículo puede tener. •  Edad requerida para los dueños deautos. •  Toda persona deba tener al menos un auto negro.

3

Object Constraint Language
“El dueño de un auto debe tener al menos 18 años”

4

Object Constraint Language
¿Qué significa esto?

5

Object Constraint Language
“El dueño de un auto debe tener al menos 18 años”

6

Object Constraint Language
“Nadie tiene más de 3 vehiculos”

7

Object Constraint Language“Todos los vehiculos de una persona son negros”

Conjunción
8

Object Constraint Language
“Nadie tiene más de 3 vehículos negros”

Retorna un conjunto de vehículos

9

Object Constraint Language
“Ninguna persona menor a 18 años, posee un auto”

Retorna un conjunto de vehículos que no son autos

10

Object Constraint Language
“Existe un auto rojo”

11

Visión Semántica
• Una descripción MC/OCL está dada en los mismos términos que una descripción de MC
–  Conjuntos de objetos con valores de atributos, relaciones entre conjuntos.

•  La diferencia es la expresividad de OCL
–  Podemos recortar modelos inválidos con más precisión

Semántica de prunning o de recorte: a medida que agregamos especificación recortamos las interpretaciones válidas de la especificaciónModelos con semántica de prunning: Modelo de objetivos, de operaciones
12

OCL: Resumen
•  Especificación formal de invariantes de los objetos •  Expresiones OCL utilizan vocabulario del modelo conceptual.
–  El MC introduce una signatura para las aserciones OCL

•  •  •  • 

Predicados “navegan” el diagrama de clases. context especifica el elemento del cual se está hablando. selfindica el objeto actual. Soporte para predicar sobre colecciones (“->”)
–  select, exists, size, forAll, etc…

13

Sintaxis
•  Definida recursivamente a partir del modelo conceptual •  Expresiones se construyen a partir de:
–  Cada clase induce un tipo en el lenguaje –  Constantes. Ej. ‘5’, ‘Rojo’ –  Variables tipadas. Ej. x:Estudiante, y:Integer –  Queries. –  Atributos. Ej. Estudiante.nombre–  Roles. Ej. Piloto.conduce –  Tipos predefinidos y sus operaciones
•  Tipos básicos:
–  –  –  – 

•  Funciones sin efectos colaterales para especificaciones mas concisas)

•  Comparadores de tipos básicos: , =, =>, =< •  Colecciones: Set, Bag, Sequence
–  ...

Integer: *, +, -, /, div(), abs(), mod(), max(), min(), sum(), sin(), cos() Real: *, +, -, /, floor(), sum(), sin(), cos()Boolean: and, or, xor, not, implies, if-then-else String:concat(), size(), substring(), toInteger() and toReal()

14

Clases introducen Tipos en OCL
Persona introduce un tipo nuevo a OCL

self es de tipo Persona

self.flota tiene tipo Colección de Vehículos

Devuelve el true si v es de tipo Auto

15

Colecciones
•  OCL viene con tipos básicos parametricos para modelar colecciones...
tracking img