Download Diapositiva 1 - Departamento de Informática
Document related concepts
Transcript
Universidad De Oviedo Departamento de Trabajo de Investigación Junio 2004 Desarrollo de una Metodología para un Nuevo Paradigma de Desarrollo de Software Informática Autor Director Daniel FERNÁNDEZ LANVIN Aquilino A. JUAN FUENTE Universidad De Oviedo Índice … Introducción Programación Orientada a Conjuntos Lenguajes de Modelado Metodologías de desarrollo Departamento de Informática Familias metodológicas Herramientas CASE Líneas de Investigación INTRODUCCIÓN ¿Porqué otra metodología más? • Principalmente, aparición del paradigma POC • Nuevo paradigma conlleva nuevas necesidades. Introducción • Programación Orientada a Conjuntos Necesaria una adaptación de los procesos de la ingeniería del software. • Una adaptación es momento adecuado de reflexión: Lenguajes de Modelado Metodologías de desarrollo Familias Metodológicas Herramientas CASE Líneas de Investigación ¿Funcionan las metodologías de desarrollo de software? ¿Cuáles son los problemas? ¿Qué soluciones se han propuesto? ¿Qué estamos haciendo mal? ¿Qué caminos hay que seguir? INTRODUCCIÓN Metodología aplicada Pasos Seguidos: • Estudio del paradigma POC Introducción • Programación Orientada a Conjuntos Anatomía de lenguajes de modelado y metodologías de desarrollo. Clasificación. • Estudio de las metodologías más representativas de cada familia • Análisis de la tecnología CASE Lenguajes de Modelado Metodologías de desarrollo Familias Metodológicas ¿Líneas de continuación? Herramientas CASE Líneas de Investigación Siempre desde un enfoque próximo a la OO. Introducción Programación Orientada a Conjuntos Lenguajes de Modelado Metodologías de desarrollo Familias Metodológicas Herramientas CASE Líneas de Investigación Programación Orientada a Conjuntos PROGRAMACIÓN ORIENTADA A CONJUNTOS Introducción • Actualmente en desarrollo por el OOTLAB (Object Oriented Technology Laboratory) Introducción • Evolución de la Orientación a Objetos Programación Orientada a Conjuntos • Aproximación a Lenguajes de Modelado Metodologías de desarrollo Familias Metodológicas Herramientas CASE Líneas de Investigación • • SBCs • Programación Lógica Motivación de la iniciativa, Solucionar los problemas evidenciados por la orientación a objetos. PROGRAMACIÓN ORIENTADA A CONJUNTOS Objetivos Introducción Programación Orientada a Conjuntos Lenguajes de Modelado Metodologías de desarrollo Familias Metodológicas Herramientas CASE Líneas de Investigación • Aproximar la implementación al análisis • Alejar al programador de detalles y tareas técnicas que pueden ser obviadas o resueltas. • Flexibilizar la gestión del modelo de negocio de los sistemas orientados a objetos. El Lenguaje Venn • Prototipo de implementación de la POC • En desarrollo por el OOTLAB • Evoluciona la orientación a objetos PROGRAMACIÓN ORIENTADA A CONJUNTOS Características diferenciadoras de Venn Venn parte de la OO. Se distancia en: Introducción Programación Orientada a Conjuntos Lenguajes de Modelado Metodologías de desarrollo Familias Metodológicas Herramientas CASE Líneas de Investigación • Tipificación de los datos • Métodos disociados • Aritmética de conjuntos • Tratamiento de contextos PROGRAMACIÓN ORIENTADA A CONJUNTOS Tipificación de datos Introducción • En POO los miembros de un objeto viene determinado por la clase a la que pertenece. • En POC los miembros de un objeto en un momento dado se determinan por el conjunto al que pertenece en ese momento. • Justificación: Programación Orientada a Conjuntos Lenguajes de Modelado • Metodologías de desarrollo Familias Metodológicas Herramientas CASE Líneas de Investigación • Ligar métodos a clases en tiempo de diseño es inflexible. En Venn no existe conjunto estático y limitado de métodos ligados a una clase Los objetos contienen sólo atributos PROGRAMACIÓN ORIENTADA A CONJUNTOS Métodos independientes Introducción Programación Orientada a Conjuntos Lenguajes de Modelado Metodologías de desarrollo Familias Metodológicas Herramientas CASE Líneas de Investigación • Los métodos no se asocian a las clases • Tratamiento similar a los SBCs (Ej, Kappa) y programación declarativa: matching de reglas. Nombre_Método( Conjunto_A, conjunto_B, …) Ejemplo Aviones: Aterriza_Avión( Avión_en_vuelo ); • Sobrecarga de métodos. Aterriza_Avión( Avión_en_vuelo ); Aterriza_Avión( Avión_harrier_vuelo ); PROGRAMACIÓN ORIENTADA A CONJUNTOS Aritmética de Conjuntos • Es posible emplear operaciones de aritmética de conjuntos al invocar métodos en Venn Introducción • Unión Programación Orientada a Conjuntos • Intersección • Negación • Etc. Lenguajes de Modelado Metodologías de desarrollo Familias Metodológicas Herramientas CASE Líneas de Investigación Ejemplo: Nombre_método( Conjunto_A + Conjunto_B ) PROGRAMACIÓN ORIENTADA A CONJUNTOS Tratamiento de Contextos Introducción Programación Orientada a Conjuntos Lenguajes de Modelado Metodologías de desarrollo Familias Metodológicas Herramientas CASE Líneas de Investigación • Definen ámbitos que limitan el alcance de una modificación de comportamiento. • Permiten limitar el alcance de modificaciones de comportamiento de métodos. • Establecen una modificación temporal de la implementación de un método. PROGRAMACIÓN ORIENTADA A CONJUNTOS Ejemplo de aplicación: Modelado de un sistema de control de vuelo y acercamiento de aviones para aeropuertos. Introducción Programación Orientada a Conjuntos Lenguajes de Modelado Metodologías de desarrollo • Control de los aviones • En vuelo dentro del área de control del aeropuerto • En pista Familias Metodológicas Herramientas CASE Líneas de Investigación ¿Modelado del objeto avión? PROGRAMACIÓN ORIENTADA A CONJUNTOS Solución en POO Introducción Programación Orientada a Conjuntos Lenguajes de Modelado Metodologías de desarrollo Familias Metodológicas Herramientas CASE Líneas de Investigación Clase Avión • Atributos: Los necesarios para el avión en vuelo, y los necesarios para el avión en tierra. • Métodos: Idem. Inconvenientes: • Hay atributos y métodos que pierden sentido dependiendo del estado. Ej, Altitud de avión en tierra • Es necesario controlar por código que no se invoquen ciertos métodos en determinados estados. Ej: Guardar tren de aterrizaje en tierra Abrir puertas en vuelo. PROGRAMACIÓN ORIENTADA A CONJUNTOS Solución en POC Introducción Programación Orientada a Conjuntos Lenguajes de Modelado Metodologías de desarrollo Familias Metodológicas Herramientas CASE Líneas de Investigación Conjuntos Avión en vuelo • Atributos: Los necesarios para el avión en vuelo • Métodos: Idem. Ej. GuardarTrenAterrizaje(Avion_en_vuelo) Avión en tierra Atributos: Los necesarios para el avión en tierra Métodos: Idem. Ej. AbrirPuertas(Avion_en_tierra) Lenguajes de Modelado Introducción Programación Orientada a Conjuntos Lenguajes de Modelado Metodologías de desarrollo Familias Metodológicas Herramientas CASE Líneas de Investigación NOTACIONES Y LENGUAJES DE MODELADO Definición Notación: Introducción Programación Orientada a Conjuntos Lenguajes de Modelado Metodologías de desarrollo Familias Metodológicas Herramientas CASE Líneas de Investigación Cualquiera de los diagramas que representan los distintos modelos que definen un sistema software. Lenguaje de Modelado: Conjunto de notaciones. • No todos los lenguajes de modelado cubren los mismos aspectos del sistema. •Suelen estar ligados a … • Metodologías de desarrollo • Paradigmas NOTACIONES Y LENGUAJES DE MODELADO Alcance Introducción Programación Orientada a Conjuntos • Distintos lenguajes de modelado cubren distintos aspectos del sistema. • Cada vista del sistema : modelo del sistema. • Dos tipos: • Modelos estáticos: Lenguajes de Modelado Metodologías de desarrollo Familias Metodológicas Herramientas CASE Líneas de Investigación • • Aspectos estructurales y arquitectónicos del sistema Modelos dinámicos: • Muestran la secuencia de eventos y mensajes susceptibles de aparecer en el ciclo de vida del sistema. Ligados a la escala de tiempo. Introducción Programación Orientada a Conjuntos Lenguajes de Modelado Metodologías de desarrollo Familias Metodológicas Herramientas CASE Líneas de Investigación Metodologías de Desarrollo METODOLOGÍAS DE DESARROLLO Definición • Introducción Programación Orientada a Conjuntos Lenguajes de Modelado Metodologías de desarrollo Familias Metodológicas Herramientas CASE Líneas de Investigación Metodología o proceso de desarrollo. Definición de Rumbaugh: … proceso para la producción organizada del software, empleando una colección de técnicas predefinidas y convenciones en las notaciones. … se presenta normalmente como una serie de pasos, con técnicas y notaciones asociadas a cada paso... … Los pasos de la producción del software se organizan normalmente en un ciclo de vida consistente en varias fases de desarrollo METODOLOGÍAS DE DESARROLLO Modelos de proceso • Rasgo principal de una metodología. • Define el ciclo de vida del proyecto: Introducción • Modelo Clásico o en Cascada. Programación Orientada a Conjuntos • Desarrollo Evolutivo o Prototipado. • Espiral. • Desarrollo Incremental. • Desarrollo formal de sistemas. Familias Metodológicas • Codificar y Corregir. Herramientas CASE • Modelos de Proceso Híbridos. Lenguajes de Modelado Metodologías de desarrollo Líneas de Investigación METODOLOGÍAS DE DESARROLLO Alcance • El proceso de desarrollo de un proyecto se divide en actividades. Introducción • Programación Orientada a Conjuntos Cada método de una metodología soluciona una actividad. • No todas las metodologías cubren las mismas actividades. • Tipos: Lenguajes de Modelado Metodologías de desarrollo Familias Metodológicas Herramientas CASE Líneas de Investigación • Actividades técnicas o de desarrollo • Actividades de administración y gestión del proceso de desarrollo. METODOLOGÍAS DE DESARROLLO Clasificación • Introducción • Programación Orientada a Conjuntos Lenguajes de Modelado Metodologías de desarrollo Familias Metodológicas Herramientas CASE Líneas de Investigación • En base a su agilidad • Burocráticas o ingenieriles • Ágiles En base a su alcance • Metodología de análisis • Metodología de desarrollo En base a la naturaleza del proyecto • Metodologías orientadas a flujo de información • Metodologías orientadas a datos • Metodologías orientadas a objetos • Metodologías basadas en roles • Metodologías ágiles de desarrollo • Metodologías de dominio específico. • Metodologías híbridas Familias Metodológicas Introducción Programación Orientada a Conjuntos Lenguajes de Modelado Metodologías de desarrollo Familias Metodológicas Herramientas CASE Líneas de Investigación FAMILIAS METODOLÓGICAS Metodologías orientadas al Flujo de información Introducción Programación Orientada a Conjuntos Lenguajes de Modelado Metodologías de desarrollo Familias Metodológicas Herramientas CASE Líneas de Investigación • Contemplan los sistemas software como procesadores de flujo de información. • La información entra, se transforma a su paso por las distintas unidades (hardware, software y elementos humanos) y sale procesada. • Entrada: señales eléctricas, voz, pulsaciones de teclado, sensores, etc. • Transformación: comparaciones sencillas, algoritmos complejos, inferencia lógica, etc. • Salida: listados, actuadores, dispositivos multimedia, etc. • Metodología Análisis Estructurado • Metodología de diseño estructurado de Yourdon FAMILIAS METODOLÓGICAS Metodologías orientadas a Datos Introducción Programación Orientada a Conjuntos Lenguajes de Modelado • Se basan en la estructuración de la información manejada por el modelo. • Utilizan las estructuras de datos como base para el desarrollo de software. • Suponen una estructura de información jerárquica. • Se basan en tres estructuras de control: Metodologías de desarrollo Familias Metodológicas Herramientas CASE Líneas de Investigación • Secuencia • Selección • Repetición • Proponen un conjunto de pasos que transforman directamente las estructuras de datos en programas. • Metodología de Jackson FAMILIAS METODOLÓGICAS Metodologías Orientadas a Objetos • Concebidas para el desarrollo de sistemas basados en el paradigma de la orientación a objetos. • Se desarrollan alrededor del concepto de clase. • Conciben el diseño como una evolución o refinamiento del análisis, eliminando el salto existente hasta entonces. Lenguajes de Modelado • Emplean lenguajes de modelado OO. Metodologías de desarrollo • Rápido desarrollo y proliferación: Introducción Programación Orientada a Conjuntos Familias Metodológicas Herramientas CASE Líneas de Investigación • • Objectory, Booch, OMT, RUP, … Método Unificado de Rational (RUP –Rational Unified Process) FAMILIAS METODOLÓGICAS Metodologías Orientadas Basadas en Roles • Evolución de las OO. • No por desarrollar con objetos, hay que diseñar con objetos • No se basan en la abstracción de clase, sino de la del rol que juega cada clase. • La clase no es un elemento atómico, sino la implementación de un rol. Introducción Programación Orientada a Conjuntos Lenguajes de Modelado Metodologías de desarrollo Implementa Role Implementa Clase Código Familias Metodológicas Herramientas CASE Líneas de Investigación • OORAM (Object Oriented Role Analysis and Modelling) FAMILIAS METODOLÓGICAS Metodologías Ágiles de Desarrollo Introducción Programación Orientada a Conjuntos Lenguajes de Modelado Metodologías de desarrollo Familias Metodológicas Herramientas CASE Líneas de Investigación • Se basan en la creencia de que las metodologías ingenieriles no son válidas para el desarrollo de software. • Las metodologías clásicas se basan en la planificación. • No es posible planificar cuando el desarrollo de software no es predecible. • Centran su filosofía en la adaptabilidad al cambio en los requisitos. • Orientadas a la gente. • Ciclos de vida muy cortos. • eXtreme Programming (XP) FAMILIAS METODOLÓGICAS Metodologías de Dominio Específico. • Diseñadas para construir soluciones software que responden a perfiles muy concretos cuya característica diferenciadora no es la naturaleza tecnológica de los proyectos que están orientadas a gestionar • No se fundamentan en paradigmas, sino más bien en las particularidades de los sistemas específicos. • Enfatizan los aspectos particulares del dominio específico. • Normalmente son compatibles y complementarias con las metodologías de propósito general Introducción Programación Orientada a Conjuntos Lenguajes de Modelado Metodologías de desarrollo Familias Metodológicas Herramientas CASE Líneas de Investigación FAMILIAS METODOLÓGICAS Metodologías Híbridas Introducción Programación Orientada a Conjuntos Lenguajes de Modelado Metodologías de desarrollo Familias Metodológicas Herramientas CASE Líneas de Investigación • No se centran en la naturaleza tecnológica del proyecto • Abarcan más de una de las familias anteriores • Suelen surgir del interés de grandes organizaciones en normalizar todos sus desarrollos de software. • Pretender satisfacer otros objetivos distintos a los puramente técnicos. • Más orientadas a la gestión del proyecto. • Metodología MÉTRICA 3 Herramientas CASE Introducción Programación Orientada a Conjuntos Lenguajes de Modelado Metodologías de desarrollo Familias Metodológicas Herramientas CASE Líneas de Investigación HERRAMIENTAS CASE Tecnología CASE Introducción Programación Orientada a Conjuntos Lenguajes de Modelado Metodologías de desarrollo Familias Metodológicas Herramientas CASE Líneas de Investigación • CASE (Computer Aided Systems Engineering): Aplicación de tecnología informática a las actividades, las técnicas y las metodologías propias de desarrollo de sistemas • Objetivos: • Permitir la aplicación práctica de las metodologías respaldadas por la herramienta • Facilitar la realización de prototipos y el desarrollo conjunto de aplicaciones. • Simplificar el mantenimiento de los programas • Mejorar y estandarizar la documentación. • Aumentar la portabilidad de las aplicaciones. • Facilitar la reutilización de componentes software. • Permitir un desarrollo y un refinamiento visual Líneas de Investigación Introducción Programación Orientada a Conjuntos Lenguajes de Modelado Metodologías de desarrollo Familias Metodológicas Herramientas CASE Líneas de Investigación LÍNEAS DE INVESTIGACIÓN Introducción • Introducción Programación Orientada a Conjuntos Lenguajes de Modelado Metodologías de desarrollo Familias Metodológicas • Objetivos a satisfacer. • Reducir la distancia entre el análisis y el diseño • Flexibilizar los productos software para que se adapten a los cambios en el dominio. • Agilizar el proceso de construcción de software • Adaptar el desarrollo orientado a objetos al concepto de conjunto. Dos macrolíneas de investigación: Herramientas CASE • La adaptación a la POC Líneas de Investigación • Solventar los problemas actuales de las metodologías OO. LÍNEAS DE INVESTIGACIÓN Agilización de Metodologías Clásicas • Introducción Programación Orientada a Conjuntos Lenguajes de Modelado Metodologías de desarrollo Familias Metodológicas Metodologías clásicas o ingenieriles no son adecuadas para el desarrollo de software porque, • Se basan en la predicción • Los proyectos software no son predecibles. Hay cambios en los requerimientos • Las metodologías ágiles son inmaduras y poco experimentadas. • Alternativa: Agilizar las metodologías orientadas a objetos • Diversos estudios (Hirsh, Fowler) sobre ello. • Líneas … Herramientas CASE • Líneas de Investigación Incorporando técnicas ágiles ya propuestas y probadas • Investigando nuevas alternativas de agilización LÍNEAS DE INVESTIGACIÓN Automatización de procesos de desarrollo Introducción • Línea relacionada con las herramientas CASE. • Las posibilidades de automatización dependen Programación Orientada a Conjuntos Lenguajes de Modelado Metodologías de desarrollo Familias Metodológicas Herramientas CASE Líneas de Investigación • Del tratamiento que realice la metodología de desarrollo aplicada. Ej, concepto de arquitectura software. • De la potencia expresiva del lenguaje de modelado • Reducen la sensibilidad a los cambios en los requisitos • Puede considerarse como una técnica ágil • Se trata de una línea de investigación activa. Ej, Model Driven Architecture (MDA) de OMG. LÍNEAS DE INVESTIGACIÓN Modelado de sistemas basados en conjuntos Introducción • Principal peculiaridad del la POC: Disociación de los métodos y los objetos. • Invalida el UML como lenguaje de modelado de sistemas basados en POC. Ej: Programación Orientada a Conjuntos Lenguajes de Modelado Metodologías de desarrollo Familias Metodológicas Herramientas CASE Líneas de Investigación • • Diagrama de clase • Diagrama de objetos. • Diagramas de interacción, etc. Alternativas • Extensión del UML • Nuevo lenguaje de modelado Consideraciones: El concepto de conjunto es próximo al modelo de roles propuesto por OORAM. LÍNEAS DE INVESTIGACIÓN Métodos de desarrollo de sistemas basados en conjuntos • Rasgo diferencial de la POC: Disociación de los métodos y los objetos. • Programación Orientada a Conjuntos Se requiere un cambio en la filosofía del tratamiento de las reglas de negocio • Se requiere un tratamiento específico para dichos métodos. Lenguajes de Modelado • El diseño e implementación del método puede ser posterior al del objeto. Introducción Metodologías de desarrollo Familias Metodológicas Herramientas CASE Líneas de Investigación • Consecuencia: Los métodos de análisis y diseño del dominio del sistema para la OO no son válidos. • Hay que modelar para modificar. • Disociar arquitectura software y reglas de negocio. LÍNEAS DE INVESTIGACIÓN Integración con herramientas CASE/IDEs • Introducción Programación Orientada a Conjuntos Lenguajes de Modelado • Metodologías de desarrollo Familias Metodológicas Herramientas CASE Líneas de Investigación • CASE y metodologías van de la mano: • Una CASE no orientada a metodología no tiene sentido, no se usa. • Una metodología sin soporte CASE no es aplicable. POC: • Nuevo lenguaje de modelado • Nueva metodología Alternativas: • Integrar POC en herramientas CASE actuales. • Desarrollo de nuevas CASE. LÍNEAS DE INVESTIGACIÓN Formalización de requisitos mediante lógica de predicados • Introducción Programación Orientada a Conjuntos Lenguajes de Modelado Metodologías de desarrollo Familias Metodológicas Herramientas CASE Líneas de Investigación Metodologías actuales: • Pérdida de información durante la abstracción. • Desprecio por los artefactos generados durante el análisis • Consecuencia: Se pierden los razonamientos del analista. • Alternativas: Formalización de requisitos mediante lógica de predicados. Línea de investigación activa (Michael R. A. Huth) Fin de la presentación Realizada con Microsoft PowerPoint y Adobe PhotoShop 5.5 Daniel FERNÁNDEZ LANVIN