You are on page 1of 15

OCL (Object Constraint Language) Herlees Enrique Guadalupe Torrejn Ingeniera de sistemas - Universidad Autnoma del Per RESUMEN

..........................................................................................................................2 1.- INTRODUCCIN ............................................................................................................2 2.- LGEBRA RELACIONAL .............................................................................................. 4 3.- DIAGRAMA DE CLASES DE EJEMPLO ........................................................................ 4 3.1. CONEXIN CON EL METAMODELO UML ......................................................................... 6 3.1.1. SELF........................................................................................................................ 6 3.1.2. ESPECIFICAR EL CONTEXTO UML ................................................................................ 6 3.1.3. INVARIANTES ........................................................................................................... 6 3.1.4. PRE- Y POSTCONDICIONES ..........................................................................................7 3.2.- OPERADORES .............................................................................................................7 3.2.1. LA EXPRESIN LET .....................................................................................................7 3.2.2. CONCORDANCIA DE TIPOS ......................................................................................... 8 3.2.3. RETIPADO O CASTING ............................................................................................... 8 3.2.4. REGLAS DE PRECEDENCIA .......................................................................................... 8 3.3. PROPIEDADES ............................................................................................................ 9 3.3.1. ATRIBUTOS.............................................................................................................. 9 3.3.2. OPERACIONES ......................................................................................................... 9 3.3.3. COMBINACIN DE PROPIEDADES ................................................................................ 9 3.3.4. ACCESO A LAS PROPIEDADES QUE SOBREESCRIBEN SUPERTIPOS .................................... 10 3.3.5. PROPIEDADES PREDEFINIDAS EN TODOS LOS OBJETOS .................................................. 10 3.3.6. CARACTERSTICAS DE LAS PROPIAS CLASES ..................................................................11 3.3.7. COLECCIONES ..........................................................................................................11 3.3.8. VALORES PREVIOS EN LAS POSTCONDICIONES ............................................................. 12 3.4. OPERACIONES SOBRE COLECCIONES ............................................................................. 12 3.4.1. OPERACIONES SELECT Y REJECT ................................................................................ 12 3.4.2. OPERACIN COLLECT .............................................................................................. 12 3.4.3. OPERACIN FORALL ............................................................................................... 13 3.4.4. OPERACIN EXISTS ................................................................................................. 13 4.- EL PAQUETE ESTNDAR OCL ................................................................................... 13 5.- GRAMTICA ............................................................................................................... 14 6.- CONCLUSIONES ......................................................................................................... 14 7.- REFERENCIAS ............................................................................................................. 15

1 Ingenieria de Sistemas Universidad Autonoma del Peru

Resumen El objetivo de este trabajo es conocer un lenguaje de restricciones de objetos: Object Constraint Language (OCL), que forma parte del UML 1.1. Es un conjunto de notaciones precisas de lenguaje textual para expresar restricciones que no pueden ser expresadas en la notacin de diagramas estndar usada en UML. La semntica de OCL se aplica sobre la base de la construccin de herramientas CASE que soportan comprobaciones de integridad sobre todos los modelos UML, no slo sobre los componentes expresados en OCL. Este documento proporciona la semntica de OCL, al mismo tiempo que proporciona una semntica para clases, asociaciones, atributos y estados. 1.- Introduccin UML (Unified Modeling Language, lenguaje de modelizacin unificado) es un lenguaje para especificar, construir, visualizar y documentar los objetos de un sistema intensivo de software. Un diagrama UML, como puede ser un diagrama de clases, normalmente no est lo suficientemente refinado y, por tanto, no refleja todos los aspectos relevantes de una especificacin. Existe, entre otras cosas, la necesidad de describir restricciones adicionales sobre los objetos en el modelo. La prctica demuestra que esto siempre se traduce en ambigedades. Con el objetivo de escribir restricciones no ambiguas, se han desarrollado lenguajes pseudo-formales. La desventaja de los lenguajes formales tradicionales es que se suelen usar por personas con un amplio conocimiento matemtico, pero dificulta su utilizacin para personas de negocios o analistas de sistemas. OCL (Object Constraint Language, lenguaje de restricciones de objetos) es un nuevo lenguaje notacional un subconjunto del UML estndar industrial, que permite a los desarrolladores de software escribir restricciones sobre modelos de objetos (pre y postcondiciones, guardas, invariantes, valores derivados, restricciones sobre operaciones, etc.). Estas restricciones son particularmente tiles, en la medida en que permiten a los desarrolladores crear un amplio conjunto de reglas que rigen el aspecto de un objeto individual. OCL tiene las caractersticas de un lenguaje de expresiones, un lenguaje de modelos y un lenguaje formal: Lenguaje de expresiones OCL es un lenguaje de expresiones puro. Una expresin OCL garantiza que quedar sin efecto. Esto no puede cambiar nada en el modelo. Esto significa que un estado del sistema nunca cambiar debido a una expresin OCL, incluso una expresin OCL podra usarse para describir tal cambio de estado (p.e. en una postcondicin).Todos los valores de todos los objectos, incluidos los enlaces, no 2 Ingenieria de Sistemas Universidad Autonoma del Peru

cambiarn. En cualquier momento en que se evala una expresin OCL, simplemente devuelve un valor. Lenguaje de modelos OCL es un lenguaje de modelos y no un lenguaje de programacin. No se puede escribir un programa lgico o un flujo de control en OCL. Especialmente, no se puede invocar procesos o activar operaciones no de consulta en OCL. Debido a que OCL es en primer lugar un lenguaje de modelos, no se puede asegurar que todo sea directamente ejecutable. Como lenguaje de modelos, todos los aspectos de implementacin estn fuera de alcance y no pueden expresarse en OCL. Cada expresin OCL es conceptualmente atmica. El estado de los objetos en el sistema no pueden cambiar durante la evaluacin. Lenguaje formal OCL es un lenguaje formal donde todos los constructores tienen un significado formal definido. La especificacin de OCL es parte de la especificacin de UML. OCL no tiene la intencin de reemplazar los lenguajes formales existentes. Los lenguajes formales tradicionales se usaban por personas con conocimientos matemticos, pero dificulta su uso para la mitad de empresas y modeladores de sistemas. OCL ha sido desarrollado para llenar este hueco. Puesto que en un proyecto hay mucha gente involucrada (usuario, expertos, personas que despus se debern encargar de su mantenimiento, etc.) los modelos deben ser entendidos por una amplia y variada audiencia. OCL es fcil de aprender y usar por los desarrolladores sin amplios conocimientos matemticos. OCL tiene ciertas caractersticas que permiten a los desarrolladores adoptarlo a su ritmo y slo donde lo necesiten. Hace accesibles las especificaciones formales con un trasfondo matemtico limitado.

Otro aspecto importante es que OCL no es un lenguaje completo en s mismo. Muchos lenguajes formales mandan (o al menos se supone) que la especificacin completa se escriba en el mismo lenguaje. Con OCL, no se necesita, incluso se tiene la posibilidad de escribir las especificaciones completas en OCL. La intencin de OCL es la de utilizarlo en combinacin con los modelos visuales UML. Muchos aspectos de modelaje pueden expresarse mucho mejor usando diagramas visuales y OCL no intenta reemplazarlos por sus propios mecanismos. Por el contrario, toma la informacin expresada en los modelos visuales y permite al desarrollador acceder a esta informacin en las expresiones OCL.

3 Ingenieria de Sistemas Universidad Autonoma del Peru

OCL es un lenguaje tipado, por lo que cada expresin OCL tiene un tipo. Para ser bien formada, una expresin debe concordar con los tipos de las reglas del lenguaje. Por ejemplo, no puede compararse un Integer con un String. Cada clasificador definido en un modelo UML representa un tipo distinto en OCL. Adems, OCL incluye un conjunto de tipos adicionales predefinidos. En el apartado siguiente (lgebra relacional) se clasifica el lenguaje OCL dentro de los lenguajes de consulta. Ms tarde, lo que se intentar es dar unas nociones tericas bsicas sobre OCL y sirvindonos de la ayuda de un diagrama de clases, ofreceremos algunos ejemplos prcticos. A continuacin, hablaremos del paquete estndar que cada modelo UML que usa OCL contiene y de la gramtica UML. Por ltimo, expondremos algunas conclusiones y aportaremos referencias en las que se puede encontrar informacin ms detallada sobre el tema en cuestin. 2.- lgebra relacional Los lenguajes de consulta se dividen en dos grandes grupos: Lenguajes algebraicos Estos lenguajes realizan las consultas aplicando operadores especiales a las relaciones.

Lenguajes de clculo de predicados En estos lenguajes las consultas describen un conjunto de tuplas deseado especificando un predicado que las tuplas deben satisfacer.

Las consultas en OCL se definen, por una parte, como un conjunto de elementos que satisfacen una expresin restrictiva, y por otra, se pueden aplicar operadores especiales para interactuar con las relaciones. Por tanto, OCL sigue un modelo mixto. 3.- Diagrama de clases de ejemplo El siguiente diagrama se usa como base para ejemplos posteriores.

4 Ingenieria de Sistemas Universidad Autonoma del Peru

Bank

AccountNumber:Int eger 0..1

Customer Person IsMarried:Boolean IsUnemployed:Boolean BirthDate:Date Age:integer FirstName:String LastName:Satring Sex: enum{male,female} husban d

manag er

0..*
Company Name:String NumberOfEmployees:int eger

managedCompan ies employe employe e r 0..* wife 0..1 0..*

Job Title:String StartDate:Dat e Salary:integer

Marriage Place:string Date:Date

5 Ingenieria de Sistemas Universidad Autonoma del Peru

3.1. Conexin con el metamodelo UML 3.1.1. Self Cada expresin OCL se escribe en el contexto de una instancia de un tipo especfico. En una expresin OCL, la palabra reservada self se usa para referirse a la instancia contextual. Por ejemplo, si el contexto es Company, entonces self se refiere a una instancia de Company. 3.1.2. Especificar el contexto UML El contexto de una expresin OCL en un modelo UML puede especificarse mediante una declaracin de pseudo-contexto al inicio de una expresin OCL. Si la restriccin se muestra en un diagrama, con el estereotipo correspondiente y las lneas de guiones largos para conectarlos con su elemento contextual, no hay necesidad de una declaracin de contexto explcita en el test de las restricciones. La declaracin de contexto es opcional. 3.1.3. Invariantes Una expresin OCL puede ser parte de un invariante el cual es una restriccin estereotipada como <<invariante>>. Una expresin OCL es un invariante del tipo y debe ser cierta para todas las instancias de ese tipo en cualquier momento. (Hay que destacar que todas las expresiones OCL que expresan invariantes son de tipo Boolean). Por ejemplo, si en el contexto de la compaa del diagrama anterior, la siguiente expresin especificara un invariante que el nmero de empleado debiera exceder siempre a los 50: context Company inv enoughEmployees: Self.numberofEmployees > 50 donde self es una instancia del tipo Company. (Puede verse a self como el objeto desde donde se empieza la expresin). Este invariante permanece para todas las instancias de tipo Company. La etiqueta inv: declara la restriccin para que sea un <<invariante>>. Opcionalmente, el nombre de la restriccin puede escribirse tras la palabra clave inv, permitiendo que la restriccin pueda ser referenciada mediante el nombre. 6 Ingenieria de Sistemas Universidad Autonoma del Peru

3.1.4. Pre- y postcondiciones La expresin OCL puede ser parte de una pre- o postcondicin, que se corresponden con los estereotipos <<precondicion>> y <<postcondicion>>, respectivamente, de la restriccin asociada con una operacin o mtodo. La instancia contextual self es entonces una instancia del tipo que pertenece a la operacin o mtodo como una caracterstica. La declaracin de contexto en OCL utiliza la palabra clave context, seguido del tipo y la declaracin de la operacin. El estereotipo de restriccin se muestra mediante las etiquetas 'pre:' y 'post:' antes de las pre- y postcondiciones reales. context Typename::operationName(param1:Type1, ...):ReturnType pre parameterOk: param1>... post resultOk: result=... Puede usarse la palabra self en la expresin refirindose al objeto sobre el que la operacin fue llamada. Opcionalmente, el nombre de la pre- o postcondicin puede escribirse tras las palabras claves pre o post. En el diagrama ejemplo podemos escribir: context Typename::OperationName(param1:Type1,...):ReturnType post: result = 5000 3.2.- Operadores OCL incluye las siguientes funciones aritmticas y agregadas: Tipo de operandos Real Integer Boolean String Enumeration Operaciones =, +, -, *, /, abs, floor, max, min, <, >, <=, >= =, +, -, *, /, abs, div, mod, max, min =, or, xor, and, not, implies, if-thenelseC:\Users\sistemas\Downloads\footnode.html - fnm =, size, concat, toUpper, toLower, substring =, <>

3.2.1. La expresin let A veces una subexpresin se usa varias veces en una restriccin. La expresin let permite definir una variable que puede usarse en la restriccin. context Person inv: let income : Integer =self.job.salary sum in if isUnemployed then 7 Ingenieria de Sistemas Universidad Autonoma del Peru

income < 100 else income >=100 endif 3.2.2. Concordancia de tipos Una expresin OCL en la que los tipos no concuerdan es una expresin invalida. sta contiene un tipo de error de concordancia. Un tipo type1 concuerda con un tipo type2 cuando una instancia de type1 puede ser sustituida en cualquier lugar donde se espera una instancia de type2. Las reglas de concordancia de tipos en los diagramas de clases son simples: Cada tipo concuerda con cada uno de sus supertipos. La concordancia de tipos es transitiva: si type1 concuerda con type2, y type2 concuerda con type3, entonces type1 concuerda con type3. Tipo Set(T) Sequence(T) Bag(T) Integer Concuerda con / Es un subtipo de Collection(T) Collection(T) Collection(T) Real

3.2.3. Retipado o Casting Cuando es cierto que el tipo real del objeto es el subtipo, el objeto puede ser retipado usando la operacin oclAsType(OclType). Esta operacin tiene efecto en el mismo objeto, pero el tipo conocido es el argumento OclType. Cuando se tiene un objeto object de tipo Type1 y Type2 es otro tipo, se puede escribir: Object.oclAsType(Type2) --- Evalua al objeto con el tipo Type2 Un objeto puede ser slo retipado a uno de sus subtipos; por tanto, en el ejemplo, Type2 debe ser un subtipo de Type1. 3.2.4. Reglas de precedencia El orden de precedencia de las operaciones, de mayor a menor prioridad, en OCL es: @pre punto y operaciones flecha: '.' y '->' operadores unitarios 'not' y menos '-' '*' y '/' 8 Ingenieria de Sistemas Universidad Autonoma del Peru

'+' y el operador binario '-' 'if-then-else-endif' '<','>','<=','>=' '=','<>' 'and','or', y 'xor' 'implies' Los parntesis '(' y ')' pueden usarse para variar la precedencia.

3.3. Propiedades 3.3.1. Atributos Por ejemplo, la edad de una persona se escribe como: context Person inv: self.age>0 El valor de la subexpresin self.age es el del atributo age en una instancia, en concreto, de Person identificada por self. El tipo de esta subexpresin es el tipo del atributo age. 3.3.2. Operaciones Las operaciones pueden tener parmetros. Por ejemplo, un objeto Person tiene un ingreso expresado como una funcin de la fecha: context Person::income (d:Date):Integer post: result = age*1000 3.3.3. Combinacin de propiedades Las propiedades se pueden combinar para obtener expresiones ms complicadas. Una regla importante es que una expresin OCL siempre evala a un objeto especfico de un tipo en concreto. Tras obtener un resultado, siempre se puede aplicar otra propiedad al resultado para obtener un nuevo valor resultante. Por tanto, cada expresin OCL puede leerse y evaluarse de izquierda a derecha. Por ejemplo, si quisiramos decir que los casados son mayores de edad: context Person inv: self.wife->notEmpty implies self.wife.age>=18 and self.husband->notEmpty implies self.husband.age>=18 9 Ingenieria de Sistemas Universidad Autonoma del Peru

3.3.4. Acceso a las propiedades que sobreescriben supertipos Las propiedades siempre se redefinen en un tipo, la propiedad de los supertipos puede accederse usando la operacin oclAsType(). Siempre que tengamos una clase B como un subtipo de la clase A, y una propiedad p1 tanto de A como de B, podemos escribir: context B inv: self.oclAsType(A).p1 -- accede a la propiedad p1 definida en A self.p1 -- accede a la propiedad p1 definida en B 3.3.5. Propiedades predefinidas en todos los objetos Hay varias propiedades que se aplican a todos los objetos y que estn predefinidas en OCL. Estas son: OclIsTypeOf (t : OclType) : Boolean OclIsKingOf (t : OclType) : Boolean OclInState (s : OclState) : Boolean OclisNew : Boolean OclAsType (t : OclType) : instance of OclType El resultado de la operacin oclTypeOf es verdad si el tipo de self y t son el mismo. Por ejemplo: context Person inv: self.oclIsTypeOf( Person ) -- es verdad inv: self.oclIsTypeOf( Company ) -- es falso La propiedad oclIsKindOf adems determina si t es el tipo directo de uno de los supertipos de un objeto. La operacin oclInState devuelve verdad si el objeto est en el estado s. Los valores para s son los nombres de los estados de la mquina de estado s vinculada al clasificador del objeto. Si tenemos un conjunto de estados donde unos estn contenidos en otros, los nombres de los estados pueden combinarse usando la notacin ::. La operacin oclIsNew se evala a verdad si, usado en una postcondicin, el objeto se crea durante la ejecucin de la operacin.

10 Ingenieria de Sistemas Universidad Autonoma del Peru

3.3.6. Caractersticas de las propias clases Una caractersticas predefinida en cada tipo es allInstance, cuyo resultado es el conjunto de todas las instancias del tipo existente en un momento determinado a la hora de evaluar una expresin. Si queremos asegurarnos de que todas las instancias de Person tienen nombres nicos, podramos escribir: context Person inv: Person.allInstances -> forAll(p1,p2 | p1<>p2 implies p1.name <> p2.name) El uso de allInstances tiene algunos problemas y su uso est desaconsejado en muchos casos. Para los tipos integer, real y string el significado de allInstances est indefinido. Adems, la existencia de objetos debe ser considerada en algunos contextos globales, como un sistema o un modelo. Este contexto global debe ser definido, lo que no se hace con OCL. 3.3.7. Colecciones El tipo Collection define un gran nmero de operaciones predefinidas que permiten al modelador de expresiones OCL manipular colecciones. Las operaciones de colecciones nunca cambian las colecciones originales, sino que guardan el resultado en otra coleccin. Coleccin es un supertipo abstracto para todos los tipos de coleccin en OCL. Cada ocurrencia de un objeto en una coleccin se llama elemento. Si un objeto aparece por segunda vez en una coleccin, hay dos elementos. Algunas propiedades se pueden definir con el subtipo, el cual significa que hay una post condicin adicional o un valor de retorno especial. La definicin de algunas propiedades comunes es diferente para cada subtipo. OCL distingue tres tipos diferentes de colecciones: Set, Sequence y Bag. Set es un conjunto matemtico. No contiene elementos duplicados. Bag es como un conjunto, que puede contener duplicados. Sequence es como un Bag en el que los elementos estn ordenados. Para definir una coleccin, los elementos se encierran entre llaves y estn separados por comas. El tipo de la coleccin se escribe antes de las llaves, como por ejemplo: Set {1, 2, 5, 88 } Sequence {'mono', 'nuez'} Bag{1, 3, 4, 3, 5} 11 Ingenieria de Sistemas Universidad Autonoma del Peru

3.3.8. Valores previos en las postcondiciones El valor de una propiedad en una postcondicin es el valor tras completar la operacin. Para referirse al valor de la propiedad al comienzo de la operacin, se tiene que aadir tras el nombre de la propiedad la palabra clave '@pre': context Person::birthdayHappens() post: age = age@pre + 1 La propiedad age se refiere a la propiedad de la instancia de Person sobre la que se ejecuta la operacin. La propiedad age@pre se refiefe al valor de la misma propiedad, pero al inicio de la operacin. Si la propiedad tuviera parmetros, el sufijo se aadira tras el nombre de la propiedad y antes de los parmetros. 3.4. Operaciones sobre colecciones 3.4.1. Operaciones Select y Reject Algunas veces una expresin usa operaciones que devuelven una coleccin, en la que slo estamos interesados en un subconjunto en concreto. OCL tiene constructores especiales para especificar una seleccin de una coleccin especfica (Select y Reject). Select especifica un subconjunto de una coleccin. El parmetro de la select debe ser una expresin booleana. El resultado es una coleccin que contiene todos los elementos para los que la expresin booleana se evala a cierto. Los dos ejemplos siguientes son idnticos: context Company inv: self.employee -> select (age > 50) -> notEmpty context Company inv: self.employee -> select (p | p.age > 50) -> notEmpty La operacin reject es idntica a la select, pero con la reject podemos obtener un subconjunto de todos los elementos de la coleccin para los que la expresin se evala a falso. 3.4.2. Operacin Collect Cuando queremos especificar una coleccin que se deriva de otra, pero que contiene objetos diferentes de la coleccin original, podemos usar la operacin Collect. La coleccin resultante es un Bag. Si queremos obtener la fecha de cumpleaos de todos los empleados: 12 Ingenieria de Sistemas Universidad Autonoma del Peru

Self.employee -> collect (birthDate) Self.employee -> collect (person | person.birthDate) Self.employee -> collect (person | person.birthDate) Cuando ms de un empleado tiene el mismo valor para la fecha de cumpleaos, ste aparecer ms de una vez, por lo que la coleccin resultante ser del mismo tamao que la original. Si queremos hacer un Set de Bag, usaremos la propiedad asSet de Bag: Self.employee -> collect (birthDate) -> asSet 3.4.3. Operacin ForAll Muchas veces se necesita que todos los elementos de una coleccin cumplan una cierta restriccin. La operacin forAll permite especificar una expresin booleana que deben cumplir todos los objetos de una coleccin. Devuelve cierto si todos los elementos de la coleccin cumplen la restriccin y falso en caso contrario. Si queremos saber si todos los nombres de pila de los trabajadores son distintos, podramos hacerlo de tres formas: self.employee -> forAll (e1, e2 | e1 <> e2 implies e1.forename <> e2.forename) self.employee -> forAll (e1,e2 : Person | e1 <> e2 implies e1.forename <> e2.forename) self.employee -> forAll (e1 | self.employee -> forAll (e2 | e1 <> e2 implies e1.forename <> e2.forename))) 3.4.4. Operacin Exists Muchas veces se necesita saber si hay al menos un elemento en una coleccin que cumple una cierta restriccin. Este es el objetivo de la operacin exists. Devuelve cierto si se cumple la expresin booleana para algunos de los elementos. Si queremos saber si existe algn empleado que se llame Jack: Self.employee -> exists (forename = 'Jack') Self.employee -> exists (p | p.forename = 'Jack') Self.employee -> exists (p: Person | p.forename = 'Jack') 4.- El paquete estndar OCL Cada modelo UML que usa como lenguaje de restriccin OCL contiene un paquete estndar denominado UML_OCL. Este paquete es usado por defecto en 13 Ingenieria de Sistemas Universidad Autonoma del Peru

todos los otros paquetes en el modelo para evaluar expresiones OCL. Este paquete contiene todos los tipos OCL predefinidos y sus caractersticas. Para extender los tipos predefinidos OCL, un modelador debe definir un paquete separado. El paquete estndar de OCL puede ser importado, y cada tipo OCL puede extenderse con nuevas caractersticas. Para especificar que un paquete us tipos predefinidos OCL de un paquete definido por el usuario en lugar de un paquete estndar, el paquete usado debe definir una dependencia con estereotipo <<Tipo_OCL>> al paquete que define el tipo OCL extendido. Una restriccin, en el paquete OCL definido por el usuario, es que como mnimo todos los tipos predefinidos OCL junto con todas sus caractersticas deben estar definidos. El paquete de usuario debe ser una extensin correcta del estndar OCL. 5.- Gramtica La descripcin de gramtica usa la sintaxis EBNF , donde I significa eleccin, ? opcionalidad, y * significa cero o ms veces, + significa una o ms veces. En la descripcin del nombre, typeName, y string, la sintaxis de los smbolos lxicos se usa el generador de anlisis de JavaCC. 6.- Conclusiones OCL no es tan expresivo como el clculo relacional est incompleto como lenguaje de consulta en el sentido de bases de datos. OCL slo puede procesar funciones recursivas primitivas y no cualquier funcin recursiva. En otras palabras, OCL no es equivalente a la mquina de Turing. OCL hace prctica la construccin de modelos ms formales. De esta forma es ms fcil encontrar los errores en fases ms tempranas del proyecto. Fijndolos durante el modelaje es ms barato que al final del cdigo. Con el mercado de componentes emergentes, podremos obtener una gran cantidad de componentes desde donde elegirlos. Necesitamos tener disponible un componente para poder seleccionarlo desde su especificacin. Una especificacin no ambigua con OCL nos permite realizar esta seleccin. La combinacin de UML y OCL mejorar definitivamente el proceso de desarrollo software e incrementar la calidad del software desarrollado. Debido a las ambigedades, a algunas inconsistencias y a la falta de formalidad de las especificaciones de OCL, algunos autores han sugerido reemplazarlo por otro lenguaje bien formado como el EER. Se espera que nuevas 14 Ingenieria de Sistemas Universidad Autonoma del Peru

revisiones del UML traigan a la comunidad una nueva versin revisada de OCL o, quizs mejor, una nueva aproximacin que facilite la especificacin de las propiedades del modelo formalmente. 7.- Referencias [1] [2] [3] [4] [5] ml [6] [7] [8] http://www.software.ibm.com/ad/ocl http://www.boldsoft.com/news/columns/columnJWarmer.htm [More results from www.boldsoft.com] http://www.computer.org/proceedings/tools/0278/02780399abs.htm [More results from www.computer.org] http://www.awl.com/product/0,2627,0201379406,00.html http://www.rational.com/technotes/rose_html/Rose_html/technote_7933.ht http://www.cs.ukc.ac.uk/pubs/1998/784/ (computer sciencie) http://www-4.ibm.com/software/ad/standards/ocl-download.html UML Versin 1.3

15 Ingenieria de Sistemas Universidad Autonoma del Peru

You might also like