Nelson Medinilla Martínez Universidad Politécnica de Madrid

Slides:



Advertisements
Presentaciones similares
S.O.L.I.D. AltNetHispano Carlos Peix
Advertisements

Ciclo de vida de desarrollo de software
MODELOS ORIENTADOS A OBJETOS
METODOLOGÍA ORIENTADA A OBJETOS CARACTERISTICAS DEL PROCESO
Problema de investigación
UML DCU -DS Alvaro Garrido V..
Fundamentos de Diseño de Software INFT.1
CICLO DE VIDA DE LOS SISTEMAS DE INFORMACIÓN
ANÁLISIS DE REQUERIMIENTOS
Universidad de San Carlos de Guatemala Facultad de Ciencias Médicas
Una vuelta de tuerca a Haythorn Sonia Pamplona Roche junio, 2006.
DSOO - María Eugenia Valencia
Introducción 1 Puntos Clave –La orientación a objetos representa un cambio radical en los métodos tradicionales de creación de software –Los métodos tradicionales.
MODELADO DE ANALISIS Y DISEÑO
Tipo de Dato Abstracto Tipos de datos:
Modelos de confiabilidad
CONCEPTOS Y PRINCIPIOS DE DISEÑO
GENERACIONES DE LENGUAJES DE PROGRAMACIÓN
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE INGENIERIA DIVISIÓN DE INGENIERÍA ELÉCTRICA COMPUTACIÓN PARA INGENIEROS NOTA IMPORTANTE: Para complementar.
INTRODUCCIÓN A UML Oscar Miguel Alonso Moreno.
DIAGRAMAS DE CLASES Completando los diagramas de interacción, es posible identificar la especificación de las clases que participarán en la solución indicando.
Si piensas claro, escribes claro
Ingeniería de Sistemas [UNI – NORTE]
MÉTODO GENERAL DE TOMA DE DECISIÓN Generalmente, para tomar una decisión se requiere seguir los siguientes pasos: 1. Fijar Objetivos: Este es el paso más.
MODELANDO EL DOMINIO Capítulo 2 del libro guía Gloria Lucía Giraldo G. UNIVERSIDAD NACIONAL DE COLOMIBIA DISEÑO Y CONSTRUCCIÓN DE PRODUCTOS DE SOFTWARE.
Secuencia referencial que ayuda a ordenar el proceso de diseño
Diseño del Software Diseño de datos Diseño arquitectónico
(c) P. Gomez-Gil, INAOE DISEÑO DE COMPONENTES DE SOFTWARE * NOTAS DEL CURSO Ingeniería de Software I DRA. MARIA DEL PILAR GÓMEZ GIL INAOEP.

Ingeniería de Software
Ingeniería de Software Orientado a Objetos
DISEÑO DE SOFTWARE 1ª. Parte
Bases de Datos Modelamiento.
Ciclo de Vida del Software Paradigmas de Desarrollo
Fundamentos de Ingeniería de Software Facultad de Ingenieria Universidad Distrital Francisco José de Caldas ESPECIFICACIÓN Y MANEJO DE LOS REQUERIMIENTOS.
5.3 APROXIMACIONES AL DISEÑO
UNIVERSIDAD AUTONOMA SAN FRANCISCO
Comunicación y Multimedia
CONCEPTOS BÁSICOS Diseño de Sistemas.
PROCESOS DEL PENSAMIENTO
Diseño: Fundamento y Documentación ISF5501 Ingeniería de Software Semana 13/2.
INGENIERÍA DE SOFTWARE
Almudena Moya Muñoz Julio 2006 Una vuelta de tuerca a los principios de diseño ágiles.
INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE
TEMA 9: DIAGRAMA DE CLASE EN UML
Metodología de Desarrollo Unidad Educativa Bolívar Sebastián Torres 6° 18°
 Sara Isabel Osorio Alcaraz Ana Isabel Vallejo Grisales 10 Informática 1.
POO U1: INTRODUCCIÓN AL PARADIGMA DE LA PROGRAMACIÓN ORIENTADA A OBJETOS.
Ingeniería de Sistemas
Prospectiva Mtra. Ma. Del Carmen López Munive
INTRODUCCION Es un elemento fundamental en todo proceso de investigación Viene después del problema, y el investigador la enuncia Esto orienta el proceso.
HIPÓTESIS Y VARIABLES Delimita un estudio, dando una orientación definida a la búsqueda de la solución de un problema de investigación.
Actividades en el Proceso de desarrollo de Software
Simón Esneider Herrera Álvarez Media Técnica Casd 10-2
TIPOS DE DATOS ABSTRACTOS
Técnica: es un procedimiento o conjunto de procedimientos, (reglas normas o protocolos), que tienen como objetivo obtener un resultado determinado, ya.
Un requerimiento es una condición o capacidad a la que el sistema (siendo construido) debe conformar [ Rational ]. Un requerimiento de software puede.
Análisis de Requerimientos
Acceso a Datos Erick López Ovando Licenciado en Informática.
CONCEPTO DE CICLO DE VIDA 1 En los departamentos de Sistemas se debe definir un marco de referencia común que debe ser:  Pueda ser empleado por todos.
República Bolivariana de Venezuela Universidad Nacional Experimental Politécnica de la Fuerza Armada (UNEFA) Carrera: Ingeniería de Sistemas Cátedra: Análisis.
Introducción AOO. Contenido - Introducción - Repaso de Orientación a Objetos - UML - Casos de Uso.
Fundamentos de Computación
NZ/EA/abril Introducción Julio NZ/EA/abril ¿ Que es la IS ? Disciplina que trata los aspectos concernientes al desarrollo de sistemas.
Modelo de procesos de software
Fundamentos de Ingeniería de Software
Introducción a la abstracción de datos MC Beatriz Beltrán Martínez Primavera 2015.
Prof. Manuel B. Sánchez. Un paradigma de programación representa un enfoque particular o filosofía para la construcción del software. No es mejor uno.
Programación Orientada a Objetos Unidad 5. Los objetos son entidades que combinan estado Contiene toda la información denominados atributos REPASO Cada.
VERIFICACIÓN Y VALIDACIÓN DE SISTEMAS 3.10 Fase de manejo de requerimientos 4.1 Modelado de pruebas en UML Ponente: ing. Alejandro tapia vazquez.
Transcripción de la presentación:

Nelson Medinilla Martínez Universidad Politécnica de Madrid 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

No ambiguos, incertidumbre nula Completos, …. 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

… Analogía militar. Estándar (deseado) IMMM 1 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

… Pero, (En fin, los Reyes Magos son los padres) 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

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

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

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

Consecuencias universo visible soluciones problemas 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

¿……? Preguntas con respuestas en otra dimensión 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

¿Por qué no puedo pedir esa muñeca, a los Reyes Magos, si es gratis? 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

Ampliación del espacio geométrico 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

Ampliación del espacio software La incertidumbre como herramienta en la ingeniería de software Ampliación del espacio software complejidad por incertidumbre universo software (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

Términos Incertidumbre Vaguedad Ambigüedad 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

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

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

Una abstracción representa alternativas, expresa ambigüedad 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

NO se conoce la solución NO se conoce el problema, 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

R C tiempo T requisitos Incertidumbre 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

consideraciones actuales 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 está presente en la ingeniería de software: 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

Divide y vencerás no funciona 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 Condición: incertidumbre inevitable Solución: admitir incertidumbre en la solución (ambigüedad o vaguedad) expresión de alternativas imprecisión 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

diseño modelos métodos La incertidumbre como herramienta en la ingeniería de software soluciones software basadas en la admisión de incertidumbre diseño modelos métodos 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 desarrollo evolutivo desarrollo espiral desarrollo caos métodos ágiles variables alternativas rutinas entidad-relación objetos agentes Nelson Medinilla Martínez

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

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

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

Incertidumbre en el diseño 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

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

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

No hay relación entre A y B La incertidumbre como herramienta en la ingeniería de software Relación ambigua de A hacia B Para una A hay más de una B posible A B 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 Nelson Medinilla Martínez

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

Ambigüedad en el diseño La incertidumbre como herramienta en la ingeniería de software 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* autoriza (v) Cuenta* Relación ambigua Relaciones unívocas Ambigüedad en el diseño Nelson Medinilla Martínez

Ambigüedad en soluciones de diseño software La incertidumbre como herramienta en la ingeniería de software 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 Nelson Medinilla Martínez

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

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

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

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

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

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

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

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

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

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

Manifiesto para el Desarrollo de Software Ágil 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

… (estructurado) (objetos, …) Modelos software funciones y datos La incertidumbre como herramienta en la ingeniería de software (estructurado) (objetos, …) … 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

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