420 likes | 560 Views
Universidad De Oviedo. Trabajo de Investigación. Junio 2004. Desarrollo de una Metodología para un Nuevo Paradigma de Desarrollo de Software. Departamento de Informática. Autor Daniel FERNÁNDEZ LANVIN Director Aquilino A. JUAN FUENTE. Universidad De Oviedo. Índice …. Introducción.
E N D
Universidad De Oviedo Trabajo de Investigación Junio 2004 Desarrollo de una Metodología para un Nuevo Paradigma de Desarrollo de Software Departamento de Informática AutorDaniel FERNÁNDEZ LANVIN DirectorAquilino A. JUAN FUENTE
Universidad De Oviedo Índice … Introducción Programación Orientada a Conjuntos Lenguajes de Modelado Metodologías de desarrollo Familias metodológicas Departamento de Informática 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. • Necesaria una adaptación de los procesos de la ingeniería del software. • Una adaptación es momento adecuado de reflexió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 Programación Orientada a Conjuntos Lenguajes de Modelado Metodologías de desarrollo Familias Metodológicas Herramientas CASE Líneas de Investigación
INTRODUCCIÓN Metodología aplicada • Pasos Seguidos: • Estudio del paradigma POC • 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 • ¿Líneas de continuació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 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 Introducción • Actualmente en desarrollo por el OOTLAB (Object Oriented Technology Laboratory) • Evolución de la Orientación a Objetos • Aproximación a • SBCs • Programación Lógica • Motivación de la iniciativa, • Solucionar los problemas evidenciados por la orientación a objetos. 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 Objetivos • 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. Introducción Programación Orientada a Conjuntos Lenguajes de Modelado El Lenguaje Venn Metodologías de desarrollo • Prototipo de implementación de la POC • En desarrollo por el OOTLAB • Evoluciona la orientación a objetos Familias Metodológicas Herramientas CASE Líneas de Investigación
PROGRAMACIÓN ORIENTADA A CONJUNTOS Características diferenciadoras de Venn • Venn parte de la OO. Se distancia en: • Tipificación de los datos • Métodos disociados • Aritmética de 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
PROGRAMACIÓN ORIENTADA A CONJUNTOS Tipificación de datos • 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: • 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 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 Métodos independientes • 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 ); 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 Aritmética de Conjuntos • Es posible emplear operaciones de aritmética de conjuntos al invocar métodos en Venn • Unión • Intersección • Negación • Etc. • Ejemplo: • Nombre_método( Conjunto_A + Conjunto_B ) 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 Tratamiento de Contextos • 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. 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 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 • Control de los aviones • En vuelo dentro del área de control del aeropuerto • En pista • ¿Modelado del objeto avión? Lenguajes de Modelado Metodologías de desarrollo Familias Metodológicas Herramientas CASE Líneas de Investigación
PROGRAMACIÓN ORIENTADA A CONJUNTOS Solución en POO • Clase Avión • Atributos: Los necesarios para el avión en vuelo, y los necesarios para el avión en tierra. • Métodos: Idem. Introducción Programación Orientada a Conjuntos • Inconvenientes: Lenguajes de Modelado • 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. Metodologías de desarrollo Familias Metodológicas Herramientas CASE Líneas de Investigación
PROGRAMACIÓN ORIENTADA A CONJUNTOS Solución en POC • 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) Introducción Programación Orientada a Conjuntos Lenguajes de Modelado Metodologías de desarrollo Familias Metodológicas Herramientas CASE Líneas de Investigación
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: • 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 … Introducción Programación Orientada a Conjuntos Lenguajes de Modelado Metodologías de desarrollo Familias Metodológicas • Metodologías de desarrollo Herramientas CASE • Paradigmas Líneas de Investigación
NOTACIONES Y LENGUAJES DE MODELADO Alcance • Distintos lenguajes de modelado cubren distintos aspectos del sistema. • Cada vista del sistema : modelo del sistema. • Dos tipos: Introducción Programación Orientada a Conjuntos • Modelos estáticos: • 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. Lenguajes de Modelado Metodologías de desarrollo Familias Metodológicas Herramientas CASE Líneas de Investigación
Metodologías 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
METODOLOGÍAS DE DESARROLLO Definició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 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 Modelos de proceso • Rasgo principal de una metodología. • Define el ciclo de vida del proyecto: • Modelo Clásico o en Cascada. • Desarrollo Evolutivo o Prototipado. • Espiral. • Desarrollo Incremental. • Desarrollo formal de sistemas. • Codificar y Corregir. • Modelos de Proceso Híbridos. 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 Alcance • El proceso de desarrollo de un proyecto se divide en actividades. • Cada método de una metodología soluciona una actividad. • No todas las metodologías cubren las mismas actividades. • Tipos: • Actividades técnicas o de desarrollo • Actividades de administración y gestión del proceso 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
METODOLOGÍAS DE DESARROLLO Clasificació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 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 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 • 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 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 a Datos • 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: • Secuencia • Selección • Repetición • Proponen un conjunto de pasos que transforman directamente las estructuras de datos en programas. • Metodología de Jackson 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 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. • Emplean lenguajes de modelado OO. • Rápido desarrollo y proliferación: • Objectory, Booch, OMT, RUP, … • Método Unificado de Rational (RUP –Rational Unified Process) Introducción Programación Orientada a Conjuntos Lenguajes de Modelado Metodologías de desarrollo Familias Metodológicas Herramientas CASE Líneas de Investigación
Implementa Implementa Role Clase Código 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. • OORAM (Object Oriented Role Analysis and Modelling) 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 Ágiles de Desarrollo • 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) 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 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 • 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 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 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 • 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 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 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 • 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: • La adaptación a la POC • Solventar los problemas actuales de las metodologías 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
LÍNEAS DE INVESTIGACIÓN Agilización de Metodologías Clásicas • 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 … • Incorporando técnicas ágiles ya propuestas y probadas • Investigando nuevas alternativas de agilizació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 Automatización de procesos de desarrollo • Línea relacionada con las herramientas CASE. • Las posibilidades de automatización dependen • 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. 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 Modelado de sistemas basados en conjuntos • 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: • 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. 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 Métodos de desarrollo de sistemas basados en conjuntos • Rasgo diferencial de la POC: Disociación de los métodos y los objetos. • 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. • El diseño e implementación del método puede ser posterior al del objeto. • 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. 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 Integración con herramientas CASE/IDEs • 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. 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 Formalización de requisitos mediante lógica de predicados • 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. Introducción Programación Orientada a Conjuntos Lenguajes de Modelado • Alternativas: • Formalización de requisitos mediante lógica de predicados. • Línea de investigación activa (Michael R. A. Huth) Metodologías de desarrollo Familias Metodológicas Herramientas CASE Líneas de Investigación
Fin de la presentación Realizada con Microsoft PowerPoint y Adobe PhotoShop 5.5 Daniel FERNÁNDEZ LANVIN