La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez...

48
a incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez Universidad Politécnica de Madrid extas Jornadas Iberoamericanas de Ingeniería de Software e Ingeniería del Conocimiento

Transcript of La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez...

Page 1: La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez Universidad Politécnica de Madrid Sextas Jornadas Iberoamericanas.

La incertidumbre como herramienta en la ingeniería de software

Nelson Medinilla MartínezUniversidad Politécnica de Madrid

Sextas Jornadas Iberoamericanas de Ingeniería de Software e Ingeniería del Conocimiento

Page 2: La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez Universidad Politécnica de Madrid Sextas Jornadas Iberoamericanas.

La incertidumbre como herramienta en la ingeniería de software

Nelson Medinilla Martínez

Lo ideal, aunque en la práctica no siempre es realizable, es que los requisitos posean las

siguientes características: Correctos, •No ambiguos, incertidumbre nula•Completos, •….

Estándar IEEE 830

Consideraciones iniciales

Page 3: La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez Universidad Politécnica de Madrid Sextas Jornadas Iberoamericanas.

La incertidumbre como herramienta en la ingeniería de software

Nelson Medinilla Martínez

Analogía militar. Estándar (deseado) IMMM 1

“Lo ideal, aunque en la práctica no siempre es realizable, es que el enemigo se coloque en fila india para eliminarlo de un solo disparo.”

Page 4: La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez Universidad Politécnica de Madrid Sextas Jornadas Iberoamericanas.

La incertidumbre como herramienta en la ingeniería de software

Nelson Medinilla Martínez

Ni la modularidad, la cohesión, el acoplamiento, la privacidad de los atributos, la copia de la realidad, divide y vencerás, son guías útiles de diseño para conseguir facilidad de modificación y evolución de los sistemas software.

(En fin, los Reyes Magos son los padres)

Pero,generalmente el enemigo es reacio a cumplir ese estándar;los requisitos también.

Tampoco es posible conocer el qué antes del cómo.

Ni siquiera conviene eliminar la incertidumbre porque es parte de los procesos creativos, de lo nuevo; porque es una herramienta humana (y también divina).

Page 5: La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez Universidad Politécnica de Madrid Sextas Jornadas Iberoamericanas.

La incertidumbre como herramienta en la ingeniería de software

Nelson Medinilla Martínez

“[…] no puede haber ninguna verdad, por lejos que se halle situada o por oculta que esté, que no se llegue a alcanzar o descubrir.” (a través del MÉTODO) [Descartes, siglo XVII]

El universo es uno, infinito e inmóvil [Bruno, siglo XIV]

Aquiles parte en busca de algo permanente e inmutable

[Homero, siglo -VIII]

Precedentes del modelo (concepto) temprano de la ingeniería de software

Page 6: La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez Universidad Politécnica de Madrid Sextas Jornadas Iberoamericanas.

La incertidumbre como herramienta en la ingeniería de software

Nelson Medinilla Martínez

Consideraciones iniciales

Análisis

Diseño

Implementación

Pruebas

Requisitos

Desarrollo en cascada (exclusas)

Primero qué, después cómo

Incertidumbre nulaIncertidumbre >0

(corregir equivocaciones)

Page 7: La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez Universidad Politécnica de Madrid Sextas Jornadas Iberoamericanas.

La incertidumbre como herramienta en la ingeniería de software

Nelson Medinilla Martínez

Incertidumbre nula

requisitos diseño métodos

ingeniería de software temprana

La premisa:

El modelo(sistema de ideas)

Page 8: La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez Universidad Politécnica de Madrid Sextas Jornadas Iberoamericanas.

La incertidumbre como herramienta en la ingeniería de software

Nelson Medinilla Martínez

complejidad descriptivauniverso visible

problemas

soluciones

aspectos no visibles

Consecuencias

incertidumbre nula

incertidumbre > 0

Page 9: La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez Universidad Politécnica de Madrid Sextas Jornadas Iberoamericanas.

La incertidumbre como herramienta en la ingeniería de software

Nelson Medinilla Martínez

complejidad descriptiva

universo visible

problemas

soluciones

divide y vencerás

sistemas conocidos y estables

cambios de requisitos

Introducir incertidumbreConsecuencias

Page 10: La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez Universidad Politécnica de Madrid Sextas Jornadas Iberoamericanas.

La incertidumbre como herramienta en la ingeniería de software

Nelson Medinilla Martínez

Espacio de representación unidimensional

Figuras n-dimensionales

Analogía geométrica

Page 11: La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez Universidad Politécnica de Madrid Sextas Jornadas Iberoamericanas.

La incertidumbre como herramienta en la ingeniería de software

Nelson Medinilla Martínez

Preguntas con respuestas en otra dimensión

¿Qué es objetos y qué es estructurado?¿Cuándo, cómo, por qué usar objetos en vez de estructurado?¿En qué se diferencian las metodologías de desarrollo?¿Cuándo, cómo, por qué, usar una metodología y no otra? ¿xP para estructurado?¿Cómo interpretar una metodología? ¿P.U. es un ciclo de cascadas?¿Por qué la modularidad, la cohesión, el acoplamiento, la privacidad de los atributos, copiar la realidad,son pobres guías de diseño?¿Qué guías de diseño utilizar?¿Qué cualidades debe tener un diseño software para facilitar la evolución? ¿Qué relaciones existen entre problemas y soluciones, objetos y estructurado, métodos de desarrollo técnicas de diseño?

¿……?

Page 12: La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez Universidad Politécnica de Madrid Sextas Jornadas Iberoamericanas.

La incertidumbre como herramienta en la ingeniería de software

Nelson Medinilla Martínez

¿Por qué no puedo pedir esa muñeca, a los Reyes Magos, si es gratis?

Page 13: La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez Universidad Politécnica de Madrid Sextas Jornadas Iberoamericanas.

La incertidumbre como herramienta en la ingeniería de software

Nelson Medinilla Martínez

Espacio de representación bidimensional

Figura bidimensional

Ampliación del espacio geométrico

R2 = (X – X0)2 + (y – y0)2

Page 14: La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez Universidad Politécnica de Madrid Sextas Jornadas Iberoamericanas.

La incertidumbre como herramienta en la ingeniería de software

Nelson Medinilla Martínez

complejidad descriptiva

complejidad por incertidumbre

universo software

(cantidad de información para describir el sistema)

(cantidad de información necesaria para resolver la incertidumbre asociada con el sistema)

Ampliación del espacio software

No ortogonalidad

Page 15: La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez Universidad Politécnica de Madrid Sextas Jornadas Iberoamericanas.

La incertidumbre como herramienta en la ingeniería de software

Nelson Medinilla Martínez

Incertidumbre se asocia con problemático, cuestionable, vago, no definido o determinado, dudoso, no seguro, ambiguo, sujeto a oportunidad o cambio, no estable, variable, no confiable.

Vaguedad se asocia con la dificultad de hacer distinciones agudas o precisas en el mundo; algún dominio de interés es vago si no puede ser delimitado por fronteras precisas.

Ambigüedad se asocia con relaciones de uno a muchos; esto es, con situaciones donde la elección entre dos o más alternativas se deja sin especificar.

Términos

Page 16: La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez Universidad Politécnica de Madrid Sextas Jornadas Iberoamericanas.

La incertidumbre como herramienta en la ingeniería de software

Nelson Medinilla Martínez

¿Dónde hay incertidumbre?

Page 17: La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez Universidad Politécnica de Madrid Sextas Jornadas Iberoamericanas.

La incertidumbre como herramienta en la ingeniería de software

Nelson Medinilla Martínez

mesa

Hay incertidumbre en la solución, como recurso resolutivo

Page 18: La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez Universidad Politécnica de Madrid Sextas Jornadas Iberoamericanas.

La incertidumbre como herramienta en la ingeniería de software

Nelson Medinilla Martínez

Una abstracción representa alternativas,

expresa ambigüedad

Una abstracción simplifica:

1)la complejidad descriptiva, porque permite omitir los detalles

2)la complejidad por incertidumbre porque la incertidumbre en los detalles, los cambios en los detalles, no se consideran

Page 19: La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez Universidad Politécnica de Madrid Sextas Jornadas Iberoamericanas.

La incertidumbre como herramienta en la ingeniería de software

Nelson Medinilla Martínez

Se conoce el problema,

se conoce la solución

Se conoce el problema, NO se conoce la solución

NO se conoce el problema, NO se conoce la solución

S P E(CLASIFICACIÓN DE LEHMAN)

Incertidumbre en el problema y en la solución

Page 20: La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez Universidad Politécnica de Madrid Sextas Jornadas Iberoamericanas.

La incertidumbre como herramienta en la ingeniería de software

Nelson Medinilla Martínez

tiempo

requisitos

T

R Incertidumbre

C

Incertidumbre en los requisitos (deseos)

Page 21: La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez Universidad Politécnica de Madrid Sextas Jornadas Iberoamericanas.

La incertidumbre como herramienta en la ingeniería de software

Nelson Medinilla Martínez

consideraciones actuales

Los cambios son inherentes al software

La incertidumbre es inevitable en la ingeniería de software

Page 22: La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez Universidad Politécnica de Madrid Sextas Jornadas Iberoamericanas.

La incertidumbre como herramienta en la ingeniería de software

Nelson Medinilla Martínez

La incertidumbre está presente en la ingeniería de software:

•Como recurso resolutivo•En los problemas•En las soluciones, en el proceso creativo

Page 23: La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez Universidad Politécnica de Madrid Sextas Jornadas Iberoamericanas.

La incertidumbre como herramienta en la ingeniería de software

Nelson Medinilla Martínez

•Divide y vencerás no funciona

Condición: incertidumbre inevitable

•Se pierde la aditividad

Consecuencias:

Page 24: La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez Universidad Politécnica de Madrid Sextas Jornadas Iberoamericanas.

La incertidumbre como herramienta en la ingeniería de software

Nelson Medinilla Martínez

Admitir incertidumbre en la solución es una técnica ancestral para enfrentar la complejidad descriptiva y la complejidad por

incertidumbre

Condición: incertidumbre inevitable

Solución: admitir incertidumbre en la solución

(ambigüedad o vaguedad)

expresión de alternativas imprecisión

Page 25: La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez Universidad Politécnica de Madrid Sextas Jornadas Iberoamericanas.

La incertidumbre como herramienta en la ingeniería de software

Nelson Medinilla Martínez

modelos diseño métodos

máquinas abstractasprincipio de ocultacióntipos abstractos principio de sustituciónprincipio de abierto y cerradoprincipio de inversión de dependenciaspatrones de diseño

desarrollo evolutivodesarrollo espiraldesarrollo caosmétodos ágiles

variablesalternativasrutinasentidad-relación objetosagentes

soluciones software basadas en la admisión de incertidumbre

Page 26: La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez Universidad Politécnica de Madrid Sextas Jornadas Iberoamericanas.

La incertidumbre como herramienta en la ingeniería de software

Nelson Medinilla Martínez

ambigüedad en el modelo

variables

tipos abstractos de datos

rutinas

alternativas

recursiónlistasvectoressimples

objetos (cosas)

clases

clases abstractas

interfaces

ambigüedad

(capacidad para expresar alternativas)

Page 27: La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez Universidad Politécnica de Madrid Sextas Jornadas Iberoamericanas.

La incertidumbre como herramienta en la ingeniería de software

Nelson Medinilla Martínez

a n

b

s c

h i

p

y

mx

COMPLEJIDAD

modelos

cosas interrelacionadas

funciones y datos

ambigüedad en los modelos

a

b

c

x

yF (x)

Estructurado y objetos,

la diferencia: capacidad para expresar ambigüedad

Page 28: La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez Universidad Politécnica de Madrid Sextas Jornadas Iberoamericanas.

La incertidumbre como herramienta en la ingeniería de software

Nelson Medinilla Martínez

a n

b

s ch i

p

y

mx

ps

m

i

n

h

modelos

cosas interrelacionadas

a n

b

s ch i

p

y

mx

ab

c

x

y

funciones y datos

CONVERGENCIA DE MODELOS

inutilidad de la diferencia

objetos funciones y objetos datos

Page 29: La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez Universidad Politécnica de Madrid Sextas Jornadas Iberoamericanas.

La incertidumbre como herramienta en la ingeniería de software

Nelson Medinilla Martínez

F

F

F

F

Plasticidad del cuadrado

Rigidez del triángulo

F

FF

Incertidumbre en el diseño

propiedades de las formas alotrópicas

Page 30: La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez Universidad Politécnica de Madrid Sextas Jornadas Iberoamericanas.

La incertidumbre como herramienta en la ingeniería de software

Nelson Medinilla Martínez

C

SCu

SCa

Si C < SCu

Si C < SCa

SCu <- Scu - C

12 3

Extracción*

Caja*

Cuenta*

C SCu

SCa

Si C < SCu

Si C < SCa

SCu <-Scu -C

1 2

3

ExtracciónCuenta

Caja4

65

1C

SCu

SCa

Si C < SCu

Si C < SCa

SCu <- Scu -C

2

3

estructura A

estructura B

estructura C

Formas alotrópicas del algoritmo

La misma cohesión y acoplamiento, modularidad, pero…

Page 31: La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez Universidad Politécnica de Madrid Sextas Jornadas Iberoamericanas.

La incertidumbre como herramienta en la ingeniería de software

Nelson Medinilla Martínez

:Extracción

:Cuenta

- saldoimporte

dato

función de transformación

:Extracción :Cuenta

saldoautoriza(i)

i i

ni función, ni dato

ni función, ni dato

cosa cosa

Estructurado con ropaje de Objetos

Objetos

¡¿privado saldo?!

¿copiar la realidad?

Page 32: La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez Universidad Politécnica de Madrid Sextas Jornadas Iberoamericanas.

La incertidumbre como herramienta en la ingeniería de software

Nelson Medinilla Martínez

Relación ambigua de A hacia B

Para una A hay más de una B posible

A B

B’

B’

A B

A’Relación unívoca

Para cada B hay una A

A B No hay relación entre A y B A no depende de B

A depende fuertemente de B

A depende débilmente de B

Relaciones dirigidas entre elementos software

Page 33: La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez Universidad Politécnica de Madrid Sextas Jornadas Iberoamericanas.

La incertidumbre como herramienta en la ingeniería de software

Nelson Medinilla Martínez

Independencia UnicidadAmbigüedad

Nula Poca Mucha

dependencia

cantidad de información

0

Page 34: La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez Universidad Politécnica de Madrid Sextas Jornadas Iberoamericanas.

La incertidumbre como herramienta en la ingeniería de software

Nelson Medinilla Martínez

Si cantidad < saldo

Extracción

Si no bloqueo

saldo

Cuenta

bloqueo

cantidad

próximo paso

leer saldo

leer bloqueo

leer otro dato

otro dato

Si otro dato

autoriza (cantidad)

Extracción*cantidad

próximo paso

autoriza (v)

Cuenta*

Relación ambiguaRelaciones unívocas

Ambigüedad en el diseño

Page 35: La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez Universidad Politécnica de Madrid Sextas Jornadas Iberoamericanas.

La incertidumbre como herramienta en la ingeniería de software

Nelson Medinilla Martínez

Ambigüedad en soluciones de diseño software

Capas de máquinas abstractasPrincipio de ocultaciónPrincipio de sustituciónPolimorfismoPrincipio de abierto y cerradoPrincipio de inversión de dependenciasDelegar Patrón acción

Patrón adaptadorPatrón cadena de responsabilidadesPatrón composiciónPatrón estadoPatrón observador

Page 36: La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez Universidad Politécnica de Madrid Sextas Jornadas Iberoamericanas.

La incertidumbre como herramienta en la ingeniería de software

Nelson Medinilla Martínez

Patrón Modelo Vista Controlador

Page 37: La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez Universidad Politécnica de Madrid Sextas Jornadas Iberoamericanas.

La incertidumbre como herramienta en la ingeniería de software

Nelson Medinilla Martínez

El origen: leer e imprimir NO se comportan como abstracciones; se mezclan con el contenido de A

imprimir

leer

A

Page 38: La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez Universidad Politécnica de Madrid Sextas Jornadas Iberoamericanas.

La incertidumbre como herramienta en la ingeniería de software

Nelson Medinilla Martínez

leer e imprimir se comportan como abstracciones,pero A depende de ambas

A

imprimir

leer

Page 39: La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez Universidad Politécnica de Madrid Sextas Jornadas Iberoamericanas.

La incertidumbre como herramienta en la ingeniería de software

Nelson Medinilla Martínez

Cambio de dependencias

A

imprimir

leer

Page 40: La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez Universidad Politécnica de Madrid Sextas Jornadas Iberoamericanas.

La incertidumbre como herramienta en la ingeniería de software

Nelson Medinilla Martínez

A necesita imprimir y avisa

A

imprimir

leer

Page 41: La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez Universidad Politécnica de Madrid Sextas Jornadas Iberoamericanas.

La incertidumbre como herramienta en la ingeniería de software

Nelson Medinilla Martínez

A necesita imprimir y leer, y avisa

A

imprimir

leer

Page 42: La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez Universidad Politécnica de Madrid Sextas Jornadas Iberoamericanas.

La incertidumbre como herramienta en la ingeniería de software

Nelson Medinilla Martínez

A necesita imprimir y leer, y avisa. Además, se advierte de algo en la lectura

A

imprimir

leer

Page 43: La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez Universidad Politécnica de Madrid Sextas Jornadas Iberoamericanas.

La incertidumbre como herramienta en la ingeniería de software

Nelson Medinilla Martínez

El patrón

A

(imprimir)

(leer)

observador

controlador

vista

Page 44: La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez Universidad Politécnica de Madrid Sextas Jornadas Iberoamericanas.

La incertidumbre como herramienta en la ingeniería de software

Nelson Medinilla Martínez

COMPLEJIDAD

dividir

admitir incertidumbre

Incertidumbre en los métodos de desarrollo

Análisis Diseño

ImplementaciónPruebas

Requisitos

Método linealSe conoce el fin

(Cascada)

Método iterativo

NO se conoce el fin, pero se conoce su proximidad

(Espiral)

Método exploratorioNO se conoce el fin, NI se conoce su proximidad

(Caos)

métodos

Page 45: La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez Universidad Politécnica de Madrid Sextas Jornadas Iberoamericanas.

La incertidumbre como herramienta en la ingeniería de software

Nelson Medinilla Martínez

RUP

Page 46: La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez Universidad Politécnica de Madrid Sextas Jornadas Iberoamericanas.

La incertidumbre como herramienta en la ingeniería de software

Nelson Medinilla Martínez

Manifiesto para el Desarrollo de Software Ágil

“Estamos descubriendo mejores maneras de desarrollar Software haciéndolo y ayudando a otros a hacerlo. A través de este trabajo hemos llegado a valorar:

•Los individuos y las interacciones sobre los procesos y las herramientas.•Software operativo sobre documentos detallados.•Colaboración del cliente sobre la negociación de contratos.•Responder a los cambios sobre seguir un plan.”

Page 47: La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez Universidad Politécnica de Madrid Sextas Jornadas Iberoamericanas.

La incertidumbre como herramienta en la ingeniería de software

Nelson Medinilla Martínez

funciones y datos cosas interrelacionadas

incertidumbre

(Se conoce el problema y se conoce la solución)

S

(Se conoce el problema, pero NO se conoce la solución)

P

(NO se conoce el problema y NO se conoce la solución)

E

(Se conoce el fin)

lineal

(NO se conoce el fin, pero se conoce su proximidad)

cíclica

(NO se conoce el fin; NO se conoce su proximidad)arbórea

Modelos software

Métodos de desarrollo

Condiciones

(estructurado) (objetos, …)

Page 48: La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez Universidad Politécnica de Madrid Sextas Jornadas Iberoamericanas.

La incertidumbre como herramienta en la ingeniería de software

Nelson Medinilla Martínez

S P E

Elementos constructivos

métodos

Sistemas

incertidumbre

lineal cíclico arbóreo

funciones y datos cosas interrelacionadas