Cierto, OCL no es el lenguaje más popular sobre la capa de la tierra pero déjame darte dos razones por las cuáles deberías empezar a aprender OCL ya:

  • OCL está en todas partes. Puedes usarlo para definir restricciones sobre modelos (y reglas de derivación, inicialización de atributos, contratos de operaciones, …) pero también lo necesitas para definir “well-formedness rules” para nuevos DSLs que diseñes y, muy probablemente, te lo encontrarás cuando tengas que definir cualquier operación de manipulación de modelos (e.j. OCL se usa para definir los patrones de matching para las transformaciones modelo a modelo y modelo a texto)
  • Sin OCL, tendrás especificaciones software imprecisas ( si utilizas un lenguaje visual como UML, no serás capaz de expresar con símbolos gráficos toda la información necesaria para representar correctamente el dominio) o ambiguas (si utilizas lenguaje natural para definir lo que la notación gráfica no cubre).

Para ilustrar el segundo caso, me permito reutilizar la viñeta (sacada de Far Side ) que John Mylopoulos , utilizó en su keynote talk en la conferencia ER’09 . Con ella, John quiso ilustrar los problemas de comunicación que se producen al usar lenguajes de modelado informales: hay una gran diferencia entre lo que se dice y lo que la gente entiende!!

Un diseñador de software completo necesita OCL, UML (o cualquier otro lenguaje de modelado gráfico) es sólo la punta del iceberg de lo que se necesita para crear especificaciones software completas y precisas.