Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Las técnicas de inmersión, Apuntes de Ingeniería del Software

Asignatura: Metodología de la Programación, Profesor: Maximiliano Paredes, Carrera: Ingeniería del Software, Universidad: URJC

Tipo: Apuntes

2012/2013

Subido el 12/10/2013

blueeyes3334
blueeyes3334 🇪🇸

3.9

(40)

24 documentos

1 / 29

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Contenido
DISEÑO RECURSIVO
Concepto de recursividad, terminología y
notación.
Análisis por casos y Composición
Análisis por casos y Composición
Técnicas de inmersión de especificaciones.
Desplegado y Plegado
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d

Vista previa parcial del texto

¡Descarga Las técnicas de inmersión y más Apuntes en PDF de Ingeniería del Software solo en Docsity!

Contenido

DISEÑO RECURSIVO

Concepto de recursividad, terminología ynotación. Análisis por casos y ComposiciónAnálisis por casos y Composición Técnicas de inmersión de especificaciones

Desplegado y Plegado

Técnicas de inmersión

  • Ayuda a diseñar cuando no es fácil ver la

recursividad de una función f.

Define una función g más general que f, con

Define una función g más general que f, con más parámetros y/o resultados, que enciertas situaciones se comporta como f.

  • Función inmersora: g• Función sumergida: f

Técnicas de inmersión

  • Mecanismo:
    • R

=Manipular la postcondición: sustituir

constantes por variables.constantes por variables.

  • Definir dominio de nuevas variables– Si R

refuerza la precondición: inmersión final

  • Si R

debilita la postcondición: inmersión no

final

  • Especificar llamada a la nueva función

{

}

{

}

dev

fun

y

x

R

T

y

T

x

f

x

Q

2

1

Inmersión no final

•Partimos de la especificacion de f•Añadimos más parámetros

W

•Obtenemos nuevos Q’ y R’ •

Una nueva función

if

{

}

{

}

dev

fun

w

y

x

R

T y T w T x

if

w

x

Q

2

3

1

)

,

(

)

(

que

para

inic

inic

w

x

if

x

f

w

=

Una nueva función

if

•En determinadas condiciones (

Winic

) se comportan

igual

f

e

if

Inmersión no final (

DEBILITANDO LA POSTCONDICIÓN)

•Obtener la postcondición de

if

(

R

) debilitando la

postocondición de

f

(

R

):

•Sustitución de una cte

w

(o varias) por una

)

´(

w , y , x

R

nueva variable (o varias) en R•Relación entre

R

,R

y

W

)

x (

w

Φ

=

y ,

x

R

y , x R ) x ( w w , y , x R

Postc.de la Fun inmer

Postcondición

Ec. Sustit

Inmersión no final

Obtener la precondición

•Reforzando la precondición con las condicionesde dominio de los nuevos parámetros

w

x

D

  • Establecer el valor inicial de los nuevo parámetros
    • Determinar•

if

debe comportarse igual que

f

) ( ) ( ) , (

w , x D x Q w x Q

inic

w

) , , ( ) , (

y

w

x

if

y

x

f

inic

=

{

}

{

}

)

,

(

)

:

(

dev

)

:

(

fun

)

(

y

x

R

T

y

T

x

f

x

Q

2

1

•Partimos de la especificacion de f•Añadimos más parámetros

W

1

y

W

2

•Los corchetes opcionalidad

Inmersión final

dev

])

[

fun

) ] [ , , (

:

:

y

x

R

T y T w T w T x

iif

w

w

x

Q

2 4 2 3 1 1

2

1

  • Obtenemos nueva Q’•R se mantiene•Una nueva función

iif

•En determinadas condiciones(

W

1inic

W

2inic

se comportan igual

f

e

if

])

[ , , ( ) ( ] [ ,

que

para

2inic

1inic

2inic

1inic

w

w

x

iif

x

f

w

w

=

)

:

(

dev

])

[;

;

:

(

fun

) ] [ , , (

:

:

T y T w T w T x

iif

w

w

x

Q

2 4 2 3 1 1

2

1

])

[

caso

1

2

1

t

w

w

w

x

B

Inmersión final

)

,

(

y

x

R

fcaso ffun

]))

[

])

[

[]

])

[

caso

2

1

2

1

nt

1

2

1

t

w

w

x

s

iif

w

w

x

B

w

w

w

x

B



Decidir qué conjuntando reforzará la precondición y cuál será la

condición del caso trivial



(

supongamos que A es el que refuerza la Prec

.)

2

1

2

1

w , w , x B w , w , x A

Inmersión final



(

supongamos que A es el que refuerza la Prec

.)



Obtenenemos la nueva Q

’’’’



Los otros conjuntantes forman Bt



Obtener la precondición



Establecer el valor inicial de los nuevos parámetros

])

[ , , , ( ) , (

que

para

2inic

1inic

w

y

w

x

iif

y

x

f

=

) ] [ ( ) ] [ ( ) ( ) ] [ , (

2 1 2 1 2 1

w

,

w , x D w , w , x A x Q w , w x Q

Técnicas de inmersión

  • Inmersión por razones de eficiencia
    • Mejora eficiencia por reducir repetición de

cálculoscálculos

  • Las expresiones se calculan incrementalmente

en cada llamada recursiva

  • Aprovechar el cálculo parcial de la llamadas

precedentes: un parámetro recoge el cálculoparcial y se pasa en la siguiente llamada

Inmersión de parámetros

Sea

(x) la expresión compleja que se repite

parcialmente en las llamadas recursivas y

w

el nuevo

parámetro acumulador

Obtenemos la nueva función inmersora g:

La cabecera es la de f añadiendo

w

La cabecera es la de f añadiendo

w

  • La prencondición es Q(x) ^

(x)=

w,

siendo Q(x) la

precondición de f

  • La postcondición se mantiene– El cuerpo de g es f sustituyendo las apariciones de

(x) por

w

  • La función s(x) de g se amplia para que calcule el parámetro

real

w

en la llamada recursiva. De debe mantener invariante

la precondición. Se puede usar

w

  • La llamada externa se añade el parámetro real para w (la

precondición obliga

(x)=

w

Inmersión de resultados

La llamada recursiva devuelve un valor que lopuedo utilizar para hacer el cálculo en la llamadaen curso. Sea

(x

,y

) el valor que devuelve la

llamada recursiva

Obtenemos la nueva función inmersora g:

Obtenemos la nueva función inmersora g:

  • La precondición se mantiene– La postcondición es R(x,y) ^

(x,y)=

z

  • El cuerpo es f sustituyendo

(x

,y

) por

z

  • Restablecer la postcondición en el caso no trivial,

calculando z a partir de z

(calculamos z que debe

devolver)

  • Restablecer la postcondición en el caso trivial,

calculamos el valor de z

Técnica de desplegado y plegado

Transforma programas recursivos no finales (f) enrecursivos finales (g más genérico).

f debe satisfacer algunas propiedades.

(combinar: elemento neutro y asociativa)(combinar: elemento neutro y asociativa)

Pasos (introducción):

Generalización

  • define g como una expresión que depende de f y es una

generalización de ella.

  • Determinar un valor inicial para que g se comporte

como f

Técnica de desplegado y plegado

  • Desplegado:
    • Se despliega la definición de f en g (se

sustituye) ysustituye) y

  • se reajusta la nueva definición de g teniendo en

cuenta propiedades (asociativa y elementoneutro)