Download - Universidad De Oviedo
UniversidadUniversidad
De OviedoDe Oviedo Trabajo de InvestigaciónTrabajo de Investigación Junio 2004Junio 2004
Autor Daniel FERNÁNDEZ LANVIN
Director Aquilino A. JUAN FUENTE
Desarrollo de una Desarrollo de una Metodología para un Metodología para un Nuevo Paradigma de Nuevo Paradigma de
Desarrollo de SoftwareDesarrollo de SoftwareDepartamento de
Informática
Índice …
Introducción
Programación Orientada a Conjuntos
Lenguajes de Modelado
Metodologías de desarrollo
Familias metodológicas
Herramientas CASE
UniversidadUniversidad
De OviedoDe Oviedo
Departamento de
Informática
Líneas de Investigación
INTRODUCCIÓN
Introducción
Programación Orientada a Conjuntos
Lenguajes de Modelado
Metodologías de desarrollo
Familias Metodológicas
Herramientas CASE
¿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?
Líneas de Investigación
INTRODUCCIÓN
Introducción
Programación Orientada a Conjuntos
Lenguajes de Modelado
Metodologías de desarrollo
Familias Metodológicas
Herramientas CASE
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.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.
El Lenguaje Venn
• Prototipo de implementación de la POC
• En desarrollo por el OOTLAB
• Evoluciona 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
Características diferenciadoras de VennVenn 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.
• Control de los aviones
• En vuelo dentro del área de control del aeropuerto
• En pista
¿Modelado del objeto avió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
PROGRAMACIÓN ORIENTADA A CONJUNTOS
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.
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
PROGRAMACIÓN ORIENTADA A CONJUNTOS
Solución en POC
ConjuntosAvión en vuelo• Atributos: Los necesarios para el avión en
vuelo• Métodos: Idem.Ej.
GuardarTrenAterrizaje(Avion_en_vuelo)Avión en tierraAtributos: Los necesarios para el avión en
tierraMé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 …• Metodologías de desarrollo
• Paradigmas
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
Alcance
• Distintos lenguajes de modelado cubren distintos aspectos del sistema.
• Cada vista del sistema : modelo del sistema.
• Dos tipos:
• 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.
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
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
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)
Role Clase CódigoImplementa Implementa
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 CASEIntroducció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
Metodologías de desarrollo
Familias Metodológicas
Herramientas CASE
Líneas de Investigación
• 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
Daniel FERNÁNDEZ LANVIN
Realizada con Microsoft PowerPoint y Adobe PhotoShop 5.5