desarrollo software ii.ppt

42
Universidad Universidad De Oviedo De Oviedo Trabajo de Investigación Trabajo de Investigación Junio 2004 Junio 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 Software Desarrollo de Software Departamento de Informática

Upload: edwin-coronado-prado

Post on 23-Dec-2015

46 views

Category:

Documents


0 download

TRANSCRIPT

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