ANÁLISIS Y DISEÑO DE Software Principios

11
Estas transparencias proveen sólo una referencia a los temas. Para su estudio debe remitirse a la bibliografía. 1 Universidad Nacional del Sur – Departamento de Ciencias e Ingeniería de la Computación Análisis y Diseño de Sistemas – 1er.Cuatrimestre de 2013. Mg. María Mercedes Vitturini [[email protected]] Dpto. Cs. e Ing. de la Computación Universidad Nacional del Sur ANÁLISIS Y DISEÑO DE SISTEMAS Clase XIX: Especificación Formal Primer Cuatrimestre 2013 AyDS2012 - Clase 20- MMV 2 Principios de Ingeniería de Software Principios enunciados generales y abstractos que describen las propiedades deseables de los procesos y productos de software. Principios de IE: rigor y formalismo, separación de intereses, modularización, abstracción, generalización y anticipo al cambio. Para aplicar los principios se requieren; Métodos: guías generales que gobiernan la ejecución de alguna actividad. Son aproximaciones rigurosas, semánticas y disciplinadas. Técnicas: guías más técnicas y mecánicas que los métodos. AyDS2012 - Clase 20- MMV 3 Principios de Ingeniería de Software ... Una metodologías provee una aproximación estable para resolver un problema, preseleccionando los métodos y técnicas a ser usadas. Metodología = métodos + técnicas Las Herramientas se desarrollan para colaborar con la aplicación de técnicas, métodos y metodologías. HERRAMIENTAS METODOLOGÍA MÉTODOS Y TÉCNICAS PRINCIPIOS DE IS AyDS2012 - Clase 22- MMV 4 Rigor y Formalismo Si bien el desarrollo de software es una actividad “creativa”, la rigurosidad es el complemento necesario en la creación de cualquier actividad de ingeniería. El nivel más alto de rigurosidad es el formalismo. Formalismo: requiere que el software sea evaluado y derivado mediante reglas matemáticas y lógicas. Rigor o formalismo? Depende de la tarea y su criticidad. Sólo con aproximaciones rigurosas se pueden producir productos confiables. Rigor y Formalismo Las metodologías vistas hasta ahora en este curso son rigurosas”: Las especificaciones de análisis y diseño usan una combinación de modelos, diagramas, textos, tablas, etc. Metodologías formales: Las especificaciones de análisis y diseño requieren de sintaxis y semántica formal. Usan técnicas matemáticas para describir las propiedades de funcionalidad y comportamiento esperadas. AyDS2013 - Clase 18- MMV 5 AyDS2012 - Clase 20- MMV 6 Modelos de Proceso - Repaso Modelo Transformacional define el desarrollo de software como una secuencia de pasos que gradualmente transforma la especificación en implementación. El proceso de desarrollo está basado en transformaciones. Es pre-requisito contar con la especificación formal del sistema. La especificación es transformada a través de una serie de pasos que preservan la correctitud.

Transcript of ANÁLISIS Y DISEÑO DE Software Principios

Page 1: ANÁLISIS Y DISEÑO DE Software Principios

Estas transparencias proveen sólo una referencia a los temas. Para su estudio debe remitirse a la bibliografía.

1

Universidad Nacional del Sur – Departamento de Ciencias e Ingeniería de la Computación Análisis y Diseño de Sistemas – 1er.Cuatrimestre de 2013.

Mg. María Mercedes Vitturini

[[email protected]]

Dpto. Cs. e Ing. de la Computación

Universidad Nacional del Sur

ANÁLISIS Y DISEÑO DE

SISTEMAS

Clase XIX: Especificación

Formal Primer Cuatrimestre 2013

AyDS2012 - Clase 20- MMV 2

Principios de Ingeniería de Software

Principios – enunciados generales y abstractos que

describen las propiedades deseables de los procesos y

productos de software.

• Principios de IE: rigor y formalismo, separación de

intereses, modularización, abstracción, generalización y

anticipo al cambio.

• Para aplicar los principios se requieren;

– Métodos: guías generales que gobiernan la ejecución

de alguna actividad. Son aproximaciones rigurosas,

semánticas y disciplinadas.

– Técnicas: guías más técnicas y mecánicas que los

métodos.

AyDS2012 - Clase 20- MMV 3

Principios de Ingeniería de Software ...

• Una metodologías provee una

aproximación estable para resolver un

problema, preseleccionando los

métodos y técnicas a ser usadas.

Metodología = métodos + técnicas

• Las Herramientas se desarrollan

para colaborar con la aplicación de

técnicas, métodos y metodologías.

HERRAMIENTAS

METODOLOGÍA

MÉTODOS Y TÉCNICAS

PRINCIPIOS DE IS

AyDS2012 - Clase 22- MMV 4

Rigor y Formalismo • Si bien el desarrollo de software es una actividad

“creativa”, la rigurosidad es el complemento necesario en la creación de cualquier actividad de ingeniería.

• El nivel más alto de rigurosidad es el formalismo.

• Formalismo: requiere que el software sea evaluado y derivado mediante reglas matemáticas y lógicas.

– Rigor o formalismo? Depende de la tarea y su criticidad.

Sólo con aproximaciones rigurosas se pueden producir productos confiables.

Rigor y Formalismo

• Las metodologías vistas hasta ahora en este curso son “rigurosas”:

– Las especificaciones de análisis y diseño usan una combinación de modelos, diagramas, textos, tablas, etc.

• Metodologías formales:

– Las especificaciones de análisis y diseño requieren de sintaxis y semántica formal.

– Usan técnicas matemáticas para describir las propiedades de funcionalidad y comportamiento esperadas.

AyDS2013 - Clase 18- MMV 5 AyDS2012 - Clase 20- MMV 6

Modelos de Proceso - Repaso

Modelo Transformacional – define el desarrollo de software como una secuencia de pasos que gradualmente transforma la especificación en implementación.

• El proceso de desarrollo está basado en transformaciones.

• Es pre-requisito contar con la especificación formal del sistema.

• La especificación es transformada a través de una serie de

pasos que preservan la correctitud.

Page 2: ANÁLISIS Y DISEÑO DE Software Principios

Estas transparencias proveen sólo una referencia a los temas. Para su estudio debe remitirse a la bibliografía.

2

Universidad Nacional del Sur – Departamento de Ciencias e Ingeniería de la Computación Análisis y Diseño de Sistemas – 1er.Cuatrimestre de 2013.

AyDS2012 - Clase 20- MMV 7

Modelo Transformacional

AyDS2012 - Clase 20- MMV

Métodos Formales

• Los métodos formales para desarrollo de software son técnicas con sólidas bases matemática para describir y validar las propiedades del sistema.

– Proporcionan el marco de referencia para especificar, desarrollar y verificar los sistemas de manera sistemática.

8

Método

Lenguaje de Especificación

• La base matemática de un método formal está dada por un lenguaje de especificación formal.

– Un lenguaje de especificación formal define los requisitos de diseño en forma única.

Especificación de Requisitos

• Propiedades deseadas de una especificación de requerimientos:

– Consistencia

– Integridad

– Falta de ambigüedad

• Deficiencias de los enfoques menos formales:

– Contradicciones

– Ambigüedades

– Vaguedades

• Obs: ninguno de los enfoques asegura completitud. AyDS2012 - Clase 20- MMV 9

Más simples de alcanzar con

una especificación formal

Especificaciones Formales • Las especificaciones formales fundamentalmente se

prefieren en los sistemas críticos.

• Entre los beneficios de una especificación formal está la posibilidad de demostrar que el resultado se ajusta a los requerimientos (usando reglas de inferencia).

• La aplicación de métodos formales aumenta los costos y esfuerzos requeridos en las etapas de análisis y especificación y disminuye los tiempos y costos de las etapas de diseño y prueba.

AyDS2012 - Clase 20- MMV 10

AyDS2012 - Clase 20- MMV 11

Especificaciones Formales vs Informales

COSTO

Lenguajes de Especificación Formal

• La base de un método formal generalmente está dada por un lenguaje de especificación formal.

• Un lenguaje formal está compuesto de:

– Sintaxis: que define la notación para representar la especificación.

– Semántica: que indica cómo el lenguaje representa los objetos del sistema.

– Un conjunto de reglas

AyDS2012 - Clase 20- MMV 12

Page 3: ANÁLISIS Y DISEÑO DE Software Principios

Estas transparencias proveen sólo una referencia a los temas. Para su estudio debe remitirse a la bibliografía.

3

Universidad Nacional del Sur – Departamento de Ciencias e Ingeniería de la Computación Análisis y Diseño de Sistemas – 1er.Cuatrimestre de 2013.

AyDS2012 - Clase 20- MMV

Lenguajes de Especificación Formal

• Los lenguajes de especificación formal tradicionalmente se dividen en:

– Algebraicos u Orientados a propiedades: el sistema se describe en utilizando definiciones axiomáticas en términos de las operaciones y sus relaciones.

– Orientados a modelos: se construye un modelo del sistema utilizando constructores matemáticos concretos como conjuntos y sucesiones. Las operaciones están definidas en base a cómo modifican el estado del sistema.

13

+

A B S T R A C C I O N

-

AyDS2012 - Clase 20- MMV

Especificación Orientada a Modelos

scheme PadronPersonas =

class

type

Persona = Text,

Padron = Persona-set,

value

vacio : Padron = { },

insertar : Persona >< Padron-> Padron

insertar (per, pad) pad {per},

check: Persona >< Padron-> Bool

check (per, pad) per pad

end

14

La solución propuesta

construye un modelo del

sistema utilizando elementos

matemáticos concretos, en este

caso conjuntos.

AyDS2012 - Clase 20- MMV

Especificación Algebraica scheme PadronPersonas =

class

type

Padron, Persona

value

vacio: Padron,

insertar : Persona >< Padron-> Padron

check: Persona >< Padron-> Bool

axiom

per: Persona • check(per, vacio) false,

per1, per2: Persona, pad: Padron •

check(per2, insertar(per1,pad)) per2 = per1 check(per2,pad)

end

15

El sistema se describe en

términos de definiciones

axiomáticas .

• El álgebra como formalismo matemático:

– Álgebra homogénea: un solo conjunto de valores posibles y varias operaciones. Las álgebras tradicionales son homogéneas. • Ejemplo: números enteros y sus operaciones.

– Álgebra heterogénea: colección de conjuntos diferentes en los cuales se definen diferentes operaciones.

• Ejemplo: el tipo cadenas de caracteres y la operación longitud. La longitud de la cadena es un número natural.

Algebras

AyDS2012 - Clase 20- MMV 16

AyDS2012 - Clase 20- MMV

Especificaciones Algebraicas

Las especificaciones algebraicas definen al sistema como un álgebra heterogénea.

Signatura del álgebra: es la colección de conjuntos que componen el álgebra heterogénea. Para definir un álgebra heterogénea:

– Especificar la signatura.

– Especificar las operaciones involucradas.

– Especificar dominios y rangos de las operaciones.

• Existe relación entre álgebras heterogéneas y tipos de datos abstractos.

17

RAISE

Rigurous Approach to Industrial Software Engineering

Page 4: ANÁLISIS Y DISEÑO DE Software Principios

Estas transparencias proveen sólo una referencia a los temas. Para su estudio debe remitirse a la bibliografía.

4

Universidad Nacional del Sur – Departamento de Ciencias e Ingeniería de la Computación Análisis y Diseño de Sistemas – 1er.Cuatrimestre de 2013.

AyDS2012 - Clase 20- MMV

RAISE

• RAISE: Rigorous Approach to Industrial Software Engineering

“RAISE is a formal method. It provides facilities for the industrial use

of Formal Methods in the development of software systems”

• Consiste de :

– Método para desarrollo de software.

– Un lenguaje de especificación formal: RSL - RAISE Specification Language.

– Herramientas automáticas.

19 AyDS2012 - Clase 20- MMV

RAISE ...

• Background:

– Orientados a Modelos: VDM, Z, ...

– Orientados a Propiedades: Larch, ...

– Concurrentes: Redes de Petri, CSP, ...

– Secuenciales: Z, VDM, Larch ...

– Herramientas.

20

El método

• El método RAISE propone su propio modelo de proceso para las actividades del desarrollo de sistema, incluyendo captura de requerimientos y gestión de proyectos.

• El método se sustenta en cuatro principios:

– Desarrollo por partes.

– Desarrollo paso a paso.

– Inventar y verificar.

– Rigor (más que formalismo).

AyDS2012 - Clase 20- MMV 21 AyDS2012 - Clase 20- MMV

Desarrollo por Partes

• Definir la especificación de forma que actúe como un contrato que indique de forma precisa las propiedades esenciales de los elementos especificados.

• Importancia de las especificaciones:

– El desarrollo de sistemas es una actividad de descomposición y composición.

– En la mayoría de los sistemas existen personas trabajando sobre componentes distintas en simultáneo.

22

AyDS2012 - Clase 20- MMV

Desarrollo Paso a Paso

• El desarrollo de software involucra una secuencia evolutiva de pasos.

• Usando el método RAISE

– Encontrar los requerimientos (mayor nivel de abstracción).

– Iterar: refinar tomando decisiones de diseño (evoluciones en la especificación).

23 AyDS2012 - Clase 20- MMV

Inventar y verificar - Rigor • Inventar y verificar

– Inventar y verificar es un estilo que fuerza a los desarrolladores a pensar un nuevo diseño y luego verificarlo.

– Las justificaciones de RAISE usan técnicas de transformación, pero aplicadas a expresiones lógicas (no a programas).

• Rigor

– No es práctico probar todo.

– Se requiere de métodos formales para las justificaciones.

24

Page 5: ANÁLISIS Y DISEÑO DE Software Principios

Estas transparencias proveen sólo una referencia a los temas. Para su estudio debe remitirse a la bibliografía.

5

Universidad Nacional del Sur – Departamento de Ciencias e Ingeniería de la Computación Análisis y Diseño de Sistemas – 1er.Cuatrimestre de 2013.

AyDS2012 - Clase 20- MMV

El Método RAISE

Requerimientos de usuario

Especificación 0

...

...

...

Especificación n

Programa

Pasos del

Desarrollo

Inventar y Verificar

25 AyDS2012 - Clase 20- MMV

Lenguaje de Especificación RSL

• Características del lenguaje RSL

– Es formal.

– Posee facilidades de estructuración.

– Es un lenguaje de amplio espectro:

• Orientado a modelos y a propiedades.

• Aplicativo e imperativo.

• Secuencial y concurrente.

26

AyDS2012 - Clase 20- MMV 27

Objetivos de RSL

• Soportar grandes especificaciones modulares.

• Soportar un amplio rango de especificación: – Abstractas (cercanas al análisis).

– Concretas (cercanas al diseño).

• Proveer distintos estilos de especificación: – Axiomáticas y basadas en modelos.

– Aplicativas e imperativas.

– Secuenciales y concurrentes.

AyDS2012 - Clase 20- MMV 28

Abstracción en RSL

• Qué en lugar de Cómo

• RSL permite:

– Abstracción de datos.

– Abstracción de operaciones.

AyDS2012 - Clase 20- MMV

Abstracciones de Datos

type Persona && persona abstracto

type Persona = Text

type Persona = Nat

type Base && base abstracta

type Base = Persona-set && base usando conjuntos

type Base = Persona* && base usando listas

29 AyDS2012 - Clase 20- MMV

Abstracción de Operaciones

• Distintos estilos para definir funciones:

– Explícitas (Ejemplo 1)

– Axiomáticas (Ejemplo 2)

– Implícitas (Ejemplo 3)

30

Page 6: ANÁLISIS Y DISEÑO DE Software Principios

Estas transparencias proveen sólo una referencia a los temas. Para su estudio debe remitirse a la bibliografía.

6

Universidad Nacional del Sur – Departamento de Ciencias e Ingeniería de la Computación Análisis y Diseño de Sistemas – 1er.Cuatrimestre de 2013.

AyDS2012 - Clase 20- MMV

Ejemplo 1 – Definición Explícita

• Definición de funciones explícita:

value

check: Persona >< Padron-> Bool

check (p, pad) p pad

31 AyDS2012 - Clase 20- MMV

Ejemplo 2 – Definición Axiomática

• Definición de función axiomática:

value

check: Persona >< Padron-> Bool

axiom

p: Persona check (p, vacia) false,

p, p1: Persona, pad: Padron

check(p1, insertar(p, pad)) p1= p check(p1,pad)

32

AyDS2012 - Clase 20- MMV

Ejemplo 3 – Definición Implicita

• Definición de funciones implícitas:

value

raiz: Real -~-> Real

raiz (r) as s

post s * s = r s 0.0

pre r 0.0

33 AyDS2012 - Clase 20- MMV

Relación de Refinamiento

Especificación Anterior

Especificación Nueva

1. Preserva Signaturas: La nueva signatura incluye la anterior.

2. Preserva Propiedades: Las propiedades anteriores se mantienen en la nueva (condiciones de refinamiento).

34

AyDS2012 - Clase 20- MMV

Ejemplo: un Paso del Desarrollo

Definición Abstracta para Padrón

Definición para Padrón utilizando Conjuntos

35 AyDS2012 - Clase 20- MMV

Condiciones de Refinamiento

p, p1: Persona, pad: Padron

check(p1, insertar(p,pad)) p1 = p check(p1,pad)

insertar : Persona >< Padron -> Padron

insertar (p, pad) pad {p},

check: Persona >< Padron -> Bool

check (p, pad) p pad

36

Page 7: ANÁLISIS Y DISEÑO DE Software Principios

Estas transparencias proveen sólo una referencia a los temas. Para su estudio debe remitirse a la bibliografía.

7

Universidad Nacional del Sur – Departamento de Ciencias e Ingeniería de la Computación Análisis y Diseño de Sistemas – 1er.Cuatrimestre de 2013.

AyDS2012 - Clase 20- MMV

Verificación check(p1, insertar(p, pad)) p1 = p check(p1,pad)

• -->> unfold insertar

check(p1, pad {p}) p1 = p check(p1, pad)

• -->>unfold check

p1 (pad {p}) p1 = p p1 pad

• pertenece a la unión

p1 pad p1 {p} p1 = p p1 pad

• -->> pertenece al conjunto unitario

p1 pad p1 = p p1 = p p1 pad

• -->> conmutativa

p1 = p p1 pad p1 = p p1 pad

• -->> reducción

true

qed

37 AyDS2012 - Clase 20- MMV

Validación vs. Verificación

• VALIDACIÓN: es el chequeo de que se está creando lo correcto, esto es, lo que piden los requerimientos: “resolviendo el problema correcto”. Como los requerimientos son en lenguaje natural, la validación es informal.

• VERIFICACIÓN: chequea que el proceso de desarrollo es correcto. Incluye la formulación y justificación de relaciones formales entre pasos del desarrollo: “resolviendo el problema correctamente”. Puede tener distintos grados de formalidad.

38

RSL

• Las especificaciones en RAISE se hacen usando RSL:

– RAISE Specification Language, el lenguaje de especificación de RAISE

• A continuación vamos a presentar la definición del lenguaje, sus expresiones, constructores, etc.

• Se deja disponible un resumen con los conceptos del lenguaje que se requieren para en este curso (AyDS_Introduccion_RAISE-RSL.pdf).

• Más información se puede obtener en el link http://iist.unu.edu/search/node/RAISE

AyDS2013 - Clase 18- MMV 39

Organización RSL

• Una especificación en RSL consiste de definiciones de módulos.

• Los módulos son el medio para descomponer la especificación en partes manejables, comprensibles y reusables. Un módulo puede ser usado para definir otro módulo.

• Existen dos clases de módulos

– Esquemas (expresiones de clases)

– Objetos (instancias de los esquemas)

AyDS2013 - Clase 18- MMV 40

AyDS2012 - Clase 20- MMV

Módulos

Cada módulo consta de una colección de declaraciones con nombre.

• Una declaración comienza con una palabra reservada que indica el tipo de declaración, seguida por una o más definiciones de dicho tipo separadas por comas.

41

Declaraciones

Keyword Define …

Object Módulos embebidos

Type Tipos

Value Valores: constantes y funciones

Variable Variables que pueden almacenar valores

Channel Canales de entrada o salida

Axiom Propiedades lógicas que deben verificarse

Test case Expresiones a ser evaluadas por un traductor o Intérprete

AyDS2013 - Clase 18- MMV 42

Page 8: ANÁLISIS Y DISEÑO DE Software Principios

Estas transparencias proveen sólo una referencia a los temas. Para su estudio debe remitirse a la bibliografía.

8

Universidad Nacional del Sur – Departamento de Ciencias e Ingeniería de la Computación Análisis y Diseño de Sistemas – 1er.Cuatrimestre de 2013.

AyDS2012 - Clase 20- MMV

Ejemplo – Padrón electoral

Presentación del problema:

– Una aplicación para un sistema electoral debe soportar la administración del padrón, identificando a todas las personas registradas como votantes.

– El sistema debe proveer las siguientes funciones:

• Registrar: Registra a una persona en la base de datos del padrón.

• Check: controla si una persona ha sido registrada en la base de datos del padrón.

43 AyDS2012 - Clase 20- MMV

Especificación RSL PADRON =

class

type

Persona,

Padron = Persona-set

value

vacio: Padron,

registrar: Persona X Padron → Padron,

check: Persona X Padron → Bool

axiom

vacio { },

p: Persona, pd : Padron registrar(p,pd) {p} pd,

p: Persona, pd : Padron check(p,pd) p pd

end

44

AyDS2012 - Clase 20- MMV

Definición de Tipos • Las definiciones de tipo tienen la forma:

type

definicion_tipo1,

….

definicion_tipon con n>=1

• Las expresiones de tipo se definen a partir de:

– Tipos predefinidos (build-in).

– De constructores de tipo.

– Subtipos de una expresión de tipo.

– Tipos definidos por el usuario.

45 AyDS2012 - Clase 20- MMV

Definición de Tipos

– Abreviadas: “id = expresión de tipo”

type

Punto = Real >< Real,

– Abstractas (o sorts). Para tipos no cuya definición final no se ha decidido.

type

Punto,

– Tipos registros

– Tipos variantes

46

AyDS2012 - Clase 20- MMV

Definición de Tipos - Ejemplos

type

Persona,

Padron = Persona-set

Donde:

• El tipo Persona es abstracto.

• El tipo padrón está definido como un conjunto de personas. El operador “-set” lo transforma en un tipo compuesto.

47

Tipos Predefinidos

AyDS2013 - Clase 18- MMV 48

Page 9: ANÁLISIS Y DISEÑO DE Software Principios

Estas transparencias proveen sólo una referencia a los temas. Para su estudio debe remitirse a la bibliografía.

9

Universidad Nacional del Sur – Departamento de Ciencias e Ingeniería de la Computación Análisis y Diseño de Sistemas – 1er.Cuatrimestre de 2013.

Constructores de tipo

AyDS2013 - Clase 18- MMV 49 AyDS2012 - Clase 20- MMV

Ejemplos

Constructor Ejemplo Operadores

><

Nat >< Bool ><

Char (1,true,'a') ~

-set Int-set {}, {1, 2} ,card,\

* Int* <>,<1,2>

hd, tl, ,len,

elems, inds

-m-> Char->Bool

[], ['a'->true,

'b'->false]

dom, rng, hd,

\

50

Registros

• Similar a los registros en otros lenguajes:

type

Libro ::

titulo : Text

autor : Text

precio : Real

AyDS2013 - Clase 18- MMV 51 AyDS2012 - Clase 20- MMV

Definición de Valor

• Representan los valores para los tipos.

• Definen – constantes y

– funciones.

• Ejemplos value

x : Int,

cardinalidad : Int ● cardinalidad >= 2,

52

AyDS2012 - Clase 20- MMV

Definición de Valor: Constantes

• Constantes:

– Definición de valores explícita

value

x :Int = 1

– Definición de valores implícita

value

x : Int ● x >0

– Tipos (+ axiomas)

value

x : Int

axiom x >0 53 AyDS2012 - Clase 20- MMV

Definición de Valor: Funciones

• Definición de función explícita

value

f : Int → Int

f(x) ≡ x + 1

• Definición de función implícita

value

f : Int → Int

f(x) as r post r > x

• Tipos (+ axioms)

value f : Int → Int

axiom x: Int ● f(x)>x

54

Page 10: ANÁLISIS Y DISEÑO DE Software Principios

Estas transparencias proveen sólo una referencia a los temas. Para su estudio debe remitirse a la bibliografía.

10

Universidad Nacional del Sur – Departamento de Ciencias e Ingeniería de la Computación Análisis y Diseño de Sistemas – 1er.Cuatrimestre de 2013.

AyDS2012 - Clase 20- MMV

Ejercicio Colas con listas Dada las siguientes definiciones:

type Elemento, Cola = Elemento*

value vacia : Cola = <>

capacidad: Nat = 10,

• Definir las funciones: – Encolar

– Desencolar

55

Object Constraint Language • Muchas veces un diagrama UML (i.e. un diagrama de

clases) no provee todos los aspectos importantes de la especificación.

– Es necesario poder describir restricciones extras sobre los objetos que figuran en el modelo

– Las restricciones especifican condiciones invariantes que deben ser satisfechas por el sistema a construir. Las restricciones pueden ser escritas en lenguaje natural, pero podrían resultar ambiguas.

• (-) Los lenguajes formales permiten escribir restricciones no ambiguas, pero en general no son de dominio masivo

• (+) OCL: es un Lenguaje Formal usado para expresar restricciones simple de escribir y leer.

AyDS2013 - Clase 18- MMV 56

OCL

OCL (Object Constraint language) es un lenguaje, que se puede ver como un agregado a la especificación 2.0 de UML.

• Provee una manera para expresar restricciones y lógica sobre los modelos.

Ejemplo: Sea un modelo sobre empleados y sucursales de una empresa, podemos querer expresar algunas restricciones adicionales a las que el modelo nos permite expresar:

– La edad de un empleado debe estar entre 18 y 70.

– Cada sucursal debe tener una secretaria cada 10 empleados.

– El legajo de un empleado no puede ser un valor nulo.

AyDS2013 - Clase 18- MMV 57

Características de OCL

OCL no modifica el modelo ni causa efectos colaterales (query only)

– La evaluación de una expresión OCL retorna un valor.

– La evaluación no altera el estado del sistema.

– Puede usar expresiones OCL para especificar un estado de cambio (por ejemplo, como post condición).

No es un lenguaje de programación

– No expresa lógica de programación.

– No puede invocar procesos.

Es un lenguaje tipado: cada expresión tiene un tipo

– Las expresiones bien formadas deben respetar las reglas de tipo.

– Los clasificadores definidos en UML representan tipos en OCL.

– Tiene un conjunto de tipos predefinidos.

La evaluación de una expresión OCL es instantánea

AyDS2013 - Clase 18- MMV 58

¿Cuando usar OCL?

Usar expresiones OCL para:

• Definir invariantes sobre clases del modelo de clases y sus propiedades (atributos).

• Describir condiciones pre y post de operaciones y métodos.

• Para describir guardas.

• Para especificar restricciones sobre operaciones.

• Especificar invariantes de estereotipos.

• Como un lenguaje de navegación.

AyDS2013 - Clase 18- MMV 59

OCL

• A continuación se presentan algunos elementos de la definición del lenguaje.

• Se deja disponible en la página de la materia un resumen con los conceptos del lenguaje que se requieren para en este curso (AyDS_Introduccion_OCL.pdf).

• Más información se puede obtener en el link http://www.omg.org/spec/OCL/2.3.1/

AyDS2013 - Clase 18- MMV 60

Page 11: ANÁLISIS Y DISEÑO DE Software Principios

Estas transparencias proveen sólo una referencia a los temas. Para su estudio debe remitirse a la bibliografía.

11

Universidad Nacional del Sur – Departamento de Ciencias e Ingeniería de la Computación Análisis y Diseño de Sistemas – 1er.Cuatrimestre de 2013.

OCL Tipos Predefinidos

• Tipos:

• Operaciones:

AyDS2013 - Clase 18- MMV 61

Tipos definidos por el usuario

• Además, todo clasificador (clase, asociación, interface, datatype) en UML es reconocido como un tipo en OCL.

– Ejemplo si se cuenta en el modelo con la clase CURSO, para OCL Curso es un tipo.

• OCL es fuertemente tipado, por lo tanto no se pueden comparar valores de un tipo directamente con valores de otro tipos.

• OCL soporta casting de objetos.

AyDS2013 - Clase 18- MMV 62

Contexto y Self

• Cada expresión OCL se escribe en el contexto de una instancia de un tipo específico.

Ejemplo: context Compañia

• La palabra reservada self se usa para referir a la instancia contextual.

• Por ejemplo, si el contexto es Compañía, entonces self se refiere a una instancia de Compañía.

AyDS2013 - Clase 18- MMV 63

Objetos y propiedades • Todas las propiedades (atributos, roles de asociaciones,

métodos y operaciones) definidas para los tipos de un modelo UML se pueden usar en expresiones OCL.

• El valor de la propiedad de un objeto definido en el diagrama UML se especifica con el punto seguido por el nombre de la propiedad.

• Ejemplos:

– En el contexto Persona self.edad, donde edad es un atributo de Persona. El tipo de la expresión es el tipo del atributo edad (int).

– En el contexto Persona self.empleador.nombre_compañia nombre de la compañía donde trabaja.

– En el contexto Compañía self.darNombre() denota el valor de la operación darNombre para la instancia definida por self.

AyDS2013 - Clase 18- MMV 64

Restricciones sobre operaciones

• También pueden usarse expresiones OCL asociadas a las operaciones para capturar pre y post condiciones, utilizando los keywords pre y post respectivamente.

• Para hacer referencia al resultado de una operación, en una expresión de poscondición se utiliza el keyword result

• Al igual que con las invariantes se puede dar un nombre a las expresiones.

context Factura::agregarItem(p: Producto): Boolean

pre hayStock: p.unidades > 0

post registracionExitosa: result = true

AyDS2013 - Clase 18- MMV 65 AyDS2012 - Clase 20- MMV

Temas de la clase de hoy

• Especificaciones Formales. – Generalidades

– Especificaciones Algebraicas

• RAISE – RSL – Presentación del Método.

• OCL

• Bibliografía: – Ingeniería de Software – Ian Sommerville (6ta Edición).

Capítulo 9.

– The RAISE Method – Introducción (Capítulo 1)

– The RAISE Specification Language

66