Download Diapositiva 1 - Departamento de Informática

Document related concepts

Oz (lenguaje de programación) wikipedia , lookup

Dylan (lenguaje de programación) wikipedia , lookup

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