480 likes | 623 Views
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.
E N D
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 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
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
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
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
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
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
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
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
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
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
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
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
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
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
La incertidumbre como herramienta en la ingeniería de software ¿Dónde hay incertidumbre? Nelson Medinilla Martínez
La incertidumbre como herramienta en la ingeniería de software Hay incertidumbre en la solución, como recurso resolutivo mesa Nelson Medinilla Martínez
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
La incertidumbre como herramienta en la ingeniería de software Patrón Modelo Vista Controlador Nelson Medinilla Martínez
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
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
imprimir A leer La incertidumbre como herramienta en la ingeniería de software Cambio de dependencias Nelson Medinilla Martínez
imprimir A leer La incertidumbre como herramienta en la ingeniería de software A necesita imprimir y avisa Nelson Medinilla Martínez
imprimir A leer La incertidumbre como herramienta en la ingeniería de software A necesita imprimir y leer, y avisa Nelson Medinilla Martínez
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
(imprimir) A (leer) La incertidumbre como herramienta en la ingeniería de software vista observador controlador El patrón Nelson Medinilla Martínez
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
RUP La incertidumbre como herramienta en la ingeniería de software Nelson Medinilla Martínez
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
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
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