1 / 48

La incertidumbre como herramienta en la ingeniería de software

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

shada
Télécharger la présentation

La incertidumbre como herramienta en la ingeniería de software

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. La incertidumbre como herramienta en la ingeniería de software Consideraciones iniciales Estándar IEEE 830 • 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, • …. Nelson Medinilla Martínez

  3. La incertidumbre como herramienta en la ingeniería de software 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.” … Nelson Medinilla Martínez

  4. La incertidumbre como herramienta en la ingeniería de software 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). 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) Nelson Medinilla Martínez

  5. La incertidumbre como herramienta en la ingeniería de software Aquiles parte en busca de algo permanente e inmutable [Homero, siglo -VIII] Precedentes del modelo (concepto) temprano de la ingeniería de software El universo es uno, infinito e inmóvil [Bruno, siglo XIV] “[…] 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] Nelson Medinilla Martínez

  6. Pruebas Implementación Diseño Análisis Requisitos La incertidumbre como herramienta en la ingeniería de software Consideraciones iniciales Desarrollo en cascada (exclusas) Primero qué, después cómo (corregir equivocaciones) Incertidumbre >0 Incertidumbre nula Nelson Medinilla Martínez

  7. ingeniería de software temprana … requisitos diseño métodos Incertidumbre nula La incertidumbre como herramienta en la ingeniería de software El modelo (sistema de ideas) La premisa: Nelson Medinilla Martínez

  8. soluciones problemas complejidad descriptiva universo visible La incertidumbre como herramienta en la ingeniería de software Consecuencias aspectos no visibles incertidumbre > 0 incertidumbre nula Nelson Medinilla Martínez

  9. La incertidumbre como herramienta en la ingeniería de software Consecuencias Introducir incertidumbre soluciones cambios de requisitos problemas divide y vencerás sistemas conocidos y estables complejidad descriptiva universo visible Nelson Medinilla Martínez

  10. La incertidumbre como herramienta en la ingeniería de software Analogía geométrica Figuras n-dimensionales Espacio de representación unidimensional Nelson Medinilla Martínez

  11. La incertidumbre como herramienta en la ingeniería de software 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? ¿……? Nelson Medinilla Martínez

  12. La incertidumbre como herramienta en la ingeniería de software ¿Por qué no puedo pedir esa muñeca, a los Reyes Magos, si es gratis? Nelson Medinilla Martínez

  13. La incertidumbre como herramienta en la ingeniería de software Ampliación del espacio geométrico Figura bidimensional R2 = (X – X0)2 + (y – y0)2 Espacio de representación bidimensional Nelson Medinilla Martínez

  14. universo software La incertidumbre como herramienta en la ingeniería de software Ampliación del espacio software complejidad por incertidumbre (cantidad de información necesaria para resolver la incertidumbre asociada con el sistema) complejidad descriptiva No ortogonalidad (cantidad de información para describir el sistema) Nelson Medinilla Martínez

  15. La incertidumbre como herramienta en la ingeniería de software Términos 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. Nelson Medinilla Martínez

  16. La incertidumbre como herramienta en la ingeniería de software ¿Dónde hay incertidumbre? Nelson Medinilla Martínez

  17. La incertidumbre como herramienta en la ingeniería de software Hay incertidumbre en la solución, como recurso resolutivo mesa Nelson Medinilla Martínez

  18. La incertidumbre como herramienta en la ingeniería de software 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 Nelson Medinilla Martínez

  19. La incertidumbre como herramienta en la ingeniería de software Incertidumbre en el problema y en la solución 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 P E S (CLASIFICACIÓN DE LEHMAN) Nelson Medinilla Martínez

  20. La incertidumbre como herramienta en la ingeniería de software Incertidumbre en los requisitos (deseos) requisitos R Incertidumbre C tiempo T Nelson Medinilla Martínez

  21. La incertidumbre como herramienta en la ingeniería de software consideraciones actuales Los cambios son inherentes al software La incertidumbre es inevitable en la ingeniería de software Nelson Medinilla Martínez

  22. La incertidumbre como herramienta en la ingeniería de software • La incertidumbre está presente en la ingeniería de software: • Como recurso resolutivo • En los problemas • En las soluciones, en el proceso creativo Nelson Medinilla Martínez

  23. La incertidumbre como herramienta en la ingeniería de software Condición: incertidumbre inevitable Consecuencias: • Se pierde la aditividad • Divide y vencerás no funciona Nelson Medinilla Martínez

  24. Condición: incertidumbre inevitable La incertidumbre como herramienta en la ingeniería de software Solución: admitir incertidumbre en la solución (ambigüedad o vaguedad) imprecisión expresión de alternativas Admitir incertidumbre en la solución es una técnica ancestral para enfrentar la complejidad descriptiva y la complejidad por incertidumbre Nelson Medinilla Martínez

  25. La incertidumbre como herramienta en la ingeniería de software soluciones software basadas en la admisión de incertidumbre diseño modelos métodos desarrollo evolutivo desarrollo espiral desarrollo caos métodos ágiles máquinas abstractas principio de ocultación tipos abstractos principio de sustitución principio de abierto y cerrado principio de inversión de dependencias patrones de diseño variables alternativas rutinas entidad-relación objetos agentes Nelson Medinilla Martínez

  26. ambigüedad ambigüedad en el modelo interfaces (capacidad para expresar alternativas) clases abstractas clases objetos (cosas) tipos abstractos de datos rutinas listas vectores simples recursión variables alternativas La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez

  27. a ambigüedad en los modelos x b y F (x) c funciones y datos n a m s c p x h i b y Estructurado y objetos, la diferencia: capacidad para expresar ambigüedad modelos cosas interrelacionadas COMPLEJIDAD La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez

  28. a x CONVERGENCIA DE MODELOS b y c n n a a m m funciones y datos s s c c p p x x h h i i b b y y inutilidad de la diferencia n m modelos s p h objetos funciones y objetos datos i cosas interrelacionadas La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez

  29. La incertidumbre como herramienta en la ingeniería de software Incertidumbre en el diseño F propiedades de las formas alotrópicas F F F F F Rigidez del triángulo F Plasticidad del cuadrado Nelson Medinilla Martínez

  30. C Extracción* 1 2 3 Si C < SCu C estructura B 1 Cuenta* SCu Si C < SCu SCu <- Scu - C SCa Si C < SCa SCu 2 Caja* Formas alotrópicas del algoritmo Si C < SCa Cuenta 3 SCa Extracción SCu C 1 2 estructura A La misma cohesión y acoplamiento, modularidad, pero… Si C < SCu SCu <- Scu -C Caja 4 3 SCa Si C < SCa 5 SCu <-Scu -C 6 estructura C La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez

  31. dato Estructurado con ropaje de Objetos ¡¿privado saldo?! importe :Extracción :Cuenta función de transformación - saldo cosa cosa :Cuenta :Extracción ¿copiar la realidad? i i saldo autoriza(i) ni función, ni dato ni función, ni dato Objetos La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez

  32. Relaciones dirigidas entre elementos software A B No hay relación entre A y B A no depende de B B A B’ A’ Relación unívoca Para cada B hay una A A depende fuertemente de B B A B’ Relación ambigua de A hacia B Para una A hay más de una B posible A depende débilmente de B La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez

  33. Independencia Ambigüedad Unicidad 0 dependencia cantidad de información Nula Mucha Poca La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez

  34. Ambigüedad en el diseño Extracción Cuenta cantidad Extracción* Cuenta* cantidad leer saldo saldo autoriza (cantidad) autoriza (v) Si cantidad < saldo leer bloqueo bloqueo Si no bloqueo leer otro dato otro dato Si otro dato próximo paso próximo paso Relaciones unívocas Relación ambigua La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez

  35. Ambigüedad en soluciones de diseño software Capas de máquinas abstractas Principio de ocultación Principio de sustitución Polimorfismo Principio de abierto y cerrado Principio de inversión de dependencias Delegar Patrón acción Patrón adaptador Patrón cadena de responsabilidades Patrón composición Patrón estado Patrón observador La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez

  36. La incertidumbre como herramienta en la ingeniería de software Patrón Modelo Vista Controlador Nelson Medinilla Martínez

  37. A leer imprimir La incertidumbre como herramienta en la ingeniería de software El origen: leer e imprimir NO se comportan como abstracciones; se mezclan con el contenido de A Nelson Medinilla Martínez

  38. imprimir A leer La incertidumbre como herramienta en la ingeniería de software leer e imprimir se comportan como abstracciones, pero A depende de ambas Nelson Medinilla Martínez

  39. imprimir A leer La incertidumbre como herramienta en la ingeniería de software Cambio de dependencias Nelson Medinilla Martínez

  40. imprimir A leer La incertidumbre como herramienta en la ingeniería de software A necesita imprimir y avisa Nelson Medinilla Martínez

  41. imprimir A leer La incertidumbre como herramienta en la ingeniería de software A necesita imprimir y leer, y avisa Nelson Medinilla Martínez

  42. imprimir A leer La incertidumbre como herramienta en la ingeniería de software A necesita imprimir y leer, y avisa. Además, se advierte de algo en la lectura Nelson Medinilla Martínez

  43. (imprimir) A (leer) La incertidumbre como herramienta en la ingeniería de software vista observador controlador El patrón Nelson Medinilla Martínez

  44. Incertidumbre en los métodos de desarrollo Pruebas Implementación Diseño Análisis Requisitos dividir Método lineal Se conoce el fin métodos (Cascada) Método exploratorio admitir incertidumbre NO se conoce el fin, NI se conoce su proximidad Método iterativo NO se conoce el fin, pero se conoce su proximidad (Caos) COMPLEJIDAD (Espiral) La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez

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

  46. La incertidumbre como herramienta en la ingeniería de software • 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.” Nelson Medinilla Martínez

  47. La incertidumbre como herramienta en la ingeniería de software (objetos, …) … (estructurado) Modelos software funciones y datos cosas interrelacionadas (NO se conoce el fin; NO se conoce su proximidad) (NO se conoce el fin, pero se conoce su proximidad) (Se conoce el fin) Métodos de desarrollo arbórea lineal cíclica (Se conoce el problema y se conoce la solución) (Se conoce el problema, pero NO se conoce la solución) (NO se conoce el problema y NO se conoce la solución) Condiciones S P E incertidumbre Nelson Medinilla Martínez

  48. La incertidumbre como herramienta en la ingeniería de software … Elementos constructivos cosas interrelacionadas funciones y datos métodos lineal arbóreo cíclico Sistemas S P E incertidumbre Nelson Medinilla Martínez

More Related