metodo1

14
Métodos de Desarrollo de SW Profesor: Juan Antonio López Quesada 1 Fundamentos de Ingeniería del Software Departamento de Informática y Sistemas Facultad de Informática Campus Universitario de Espinardo - Murcia Tema 7. Métodos de desarrollo de SW. Asignatura: Fundamentos de Ingeniería del Software Titulación: Ingeniera Técnica de Informática de Gestión Curso Académico: 2004-2005 Curso: Cuatrimetres: Primero Créditos: 6(3+3) Página Web: dis.um.es/~lopezquesada Profesor: Juan Antonio López Quesada Departamento: Informática y Sistemas

Upload: david-antonio-rapri-mendoza

Post on 17-Nov-2015

216 views

Category:

Documents


0 download

DESCRIPTION

ingenieria de software

TRANSCRIPT

  • Mtodos de Desarrollo de SWProfesor: Juan Antonio Lpez Quesada*Fundamentos de Ingeniera del Software

    Tema 7. Mtodos de desarrollo de SW.Asignatura: Fundamentos de Ingeniera del SoftwareTitulacin: Ingeniera Tcnica de Informtica de GestinCurso Acadmico: 2004-2005Curso: 3Cuatrimetres: PrimeroCrditos: 6(3+3)Pgina Web: dis.um.es/~lopezquesadaProfesor: Juan Antonio Lpez QuesadaDepartamento: Informtica y Sistemas

    Profesor: Juan Antonio Lpez Quesada*

  • Mtodos de Desarrollo de SWProfesor: Juan Antonio Lpez Quesada*Introduccin a los Mtodos de Desarrollo de Software.ndiceDefinicin. Beneficios. Adaptacin del mtodo. Caractersticas deseables. Clasificacin. Ejemplos de mtodos.

    Profesor: Juan Antonio Lpez Quesada

  • Mtodos de Desarrollo de SWProfesor: Juan Antonio Lpez Quesada*Mtodos (metodologas) de Desarrollo de SoftwareConjunto de pasos y procedimientos que deben seguirse para el desarrollo de softwareCmo se debe dividir un proyecto en etapas.Qu tareas se llevan a cabo en cada etapa.Heursticas para llevar a cabo dichas tareas.Qu salidas se producen y cundo se deben producir.Qu restricciones se aplican.Qu herramientas se van a utilizar.Cmo se gestiona y controla un proyecto.

    Profesor: Juan Antonio Lpez Quesada*Vamos a ver un instrumento para conseguir el enfoque disciplinado al desarrollo de software que estamos buscando: las metodologas o mtodos de desarrollo de software. (Existe confusin en cuanto al uso de los trminos mtodo y metodologa.)Como tantas veces en ingeniera del software, no existe un consenso en cuanto a qu cosas deben formar parte de un mtodo.

  • Mtodos de Desarrollo de SWProfesor: Juan Antonio Lpez Quesada*Mtodos de desarrollo de softwareEs necesario establecer un enfoque disciplinado y sistemtico para desarrollar un proyecto de software

    Mtodo (metodologa)Mtodo NotacinMtodo Tcnica

    Profesor: Juan Antonio Lpez Quesada

  • Mtodos de Desarrollo de SWProfesor: Juan Antonio Lpez Quesada*Qu es un mtodo de desarrollo de software?Conjunto de procedimientos, tcnicas, herramientas, y un soporte documental que ayuda a los desarrolladores a producir nuevo software.Modelo de proceso (fases y subfases, actividades, tareas).Procedimientos que dan lugar a productos.Tcnicas (grficas, textuales) (p.ej. DFDs, E/R, HVE).Herramientas.

    Puede acomodar varios ciclos de vida:Ciclo de vida: qu hay que producir, no cmo.Mtodo: qu y cmo.

    Profesor: Juan Antonio Lpez Quesada*Entre los componentes genricos de un mtodo, tenemos:

    Un modelo de proceso (fases y subfases, actividades, tareas).Un conjunto de procedimientos, que definen la forma de ejecutar las tareas.Un conjunto de tcnicas, que permiten aplicar los procedimientos, y con las que se genera un conjunto de productos (artefactos). Con mucha frecuencia son grficas con apoyos textuales formales. Una misma tcnica se puede aplicar varias veces dentro de una metodologa, o en metodologas diferentes (p.ej. DFDs en Mtrica y en SSADM).Para usar una tcnica, podemos apoyarnos en herramientas software que automatizan en mayor o menor grado su aplicacin. Hay herramientas que dan soporte a ms de una metodologa (como System Architect).

  • Mtodos de Desarrollo de SWProfesor: Juan Antonio Lpez Quesada*Qu es un mtodo de desarrollo de software?Definicin alternativa de (Sommerville 2002)

    Un mtodo de ingeniera de software es un enfoque estructurado para el desarrollo de software cuyo propsito es facilitar la produccin de software de alta calidad de una forma costeable. .

    Todos los mtodos se basan en la idea de modelos grficos de desarrollo de un sistema y en el uso de estos modelos como un sistema de especificacin o diseo.

    Profesor: Juan Antonio Lpez Quesada

  • Mtodos de Desarrollo de SWProfesor: Juan Antonio Lpez Quesada*Qu es un mtodo de desarrollo de software?

    ComponentesDescripcinEjemploDescripciones del modelo del sistemaDescripciones de los modelos del sistema que se desarrollar y la notacin utilizada para definir estos modelosModelos de objetos, de flujo de datos, de mquina de estado, etc.ReglasRestricciones que siempre aplican a los modelos de sistemasCada entidad de un modelo de sistema debe tener un nombre nicoRecomenda-cionesHeurstica que caracteriza una buena prctica de diseo en este mtodo. Seguir estas recomendaciones debe dar como resultado un modelo del sistema bien organizado.Ningn objeto debe tener ms de 7 subobjetos asociados a l.Guas en el procesoDescripciones de las actividades que deben seguirse para desarrollar los modelos del sistema y la organizacin de estas actividades.Los atributos de los objetos deben documentarse antes de definir las operaciones asociadas a un objeto.

    Profesor: Juan Antonio Lpez Quesada*Para (Sommerville 2002), los mtodos contienen los componentes que refleja esta tabla.

  • Mtodos de Desarrollo de SWProfesor: Juan Antonio Lpez Quesada*Mtodos de desarrolloBeneficiosSistemas de mayor calidad

    pero el seguimiento de una metodologa no basta!Proceso de desarrollo (modelo de procesos) definido productos intermedios en cada fase mejor planificacin y gestin del proyectodesarrollos ms rpidos.recursos adecuados.Proceso estndar en la organizacin facilidad de cambios de personal.

    Profesor: Juan Antonio Lpez Quesada*

  • Mtodos de Desarrollo de SWProfesor: Juan Antonio Lpez Quesada*Mtodos de desarrolloAdaptacin del mtodoNo existe un mtodo universal o idealMtodos diferentes tienen distintas reas donde son aplicablesP.ej., los mtodos OO son adecuados para sistemas interactivos, pero no para sistemas en tiempo real con requisitos severos (Sommerville 2002).El mtodo est condicionado por el tamao y estructura de la organizacin, y el tipo de aplicaciones.No es razonable pensar que dos organizaciones utilicen la misma metodologa sin realizar cambios sobre ella.

    Profesor: Juan Antonio Lpez Quesada

  • Mtodos de Desarrollo de SWProfesor: Juan Antonio Lpez Quesada*Mtodos de desarrolloCaractersticas deseablesExistencia de reglas predefinidas.Fases y subfases, tareas, productos intermedios, tcnicas, herramientas, etc.Cobertura total del ciclo de desarrollo.Verificaciones intermedias.Planificacin y control.Comunicacin efectiva.Uso sobre un amplio abanico de proyectos.Fcil formacin.

    Profesor: Juan Antonio Lpez Quesada*Ver (Piattini et al. 96) p.72

  • Mtodos de Desarrollo de SWProfesor: Juan Antonio Lpez Quesada*Mtodos de desarrolloCaractersticas deseablesHerramientas CASE.Debe contener actividades que mejoren el proceso de desarrollo.Soporte al mantenimiento.p.ej. Reingeniera.Soporte de la reutilizacin del softwareno slo reutilizacin de cdigo.Actualmente, se huye de mtodos muy burocrticos o monolticos.

    Mtodos giles.

    Profesor: Juan Antonio Lpez Quesada

  • Mtodos de Desarrollo de SWProfesor: Juan Antonio Lpez Quesada*Mtodos. Clasificacin

    Profesor: Juan Antonio Lpez Quesada

    ENFOQUE

    TIPO DE SISTEMA

    FORMALIDAD

    ESTRUCTURADOS

    Orientados a procesos

    Orientados a datos

    Jerrquicos

    No jerrquicos

    Mixtos

    GESTIN

    NO FORMAL

    OO

    TIEMPO REAL

    FORMAL

    *Esta sencilla clasificacin aparece en (Piattini et al. 96).

    Se pueden distinguir seis escuelas principales de pensamiento en relacin con las tcnicas y mtodos de desarrollo de ingeniera del software:Orientadas a procesos: se fundamentan en el modelo bsico entrada/proceso/salida de un sistema, de forma que los datos se introducen en el sistema y ste responde ante ellos transformndolos para obtener salidas. Estas metodologas se enfocan fundamentalmente en la parte de proceso y, por esto, se describen como un enfoque de desarrollo de software orientado al proceso. En general utilizan un enfoque de descomposicin descendente para evaluar los procesos del espacio del problema y los flujos de datos con los que estn conectados. Este tipo de metodologas se desarroll a lo largo de los aos 70. Referencias importantes de este tipo de mtodos son las de Stevens, Myers y Constantine, Yourdon y Constantine; Yourdon; Tom DeMarco; Gane y Sarson. Representantes de ste grupo son metodologas de anlisis y diseo estructurado como SSADM (Structured Systems Analysis and Design Method), Merise, Mtrica 2.1 y parcialmente Mtrica 3 (esta ltima integra el paradigma orientado a procesos y el orientado a objetos).Orientadas a datos: al contrario que en el caso anterior, estas metodologas se centran ms la parte de entrada/salida dentro del modelo bsico entrada/proceso/salida. En estas metodologas las actividades de anlisis comienzan evaluando en primer lugar los datos y sus interrelaciones para determinar la arquitectura de datos subyacente. Cuando esta arquitectura est definida, se definen las salidas a producir y los procesos y entradas necesarios para obtenerlas. Ejemplos representativos de este grupo son los mtodos JSP (Jackson Structured Programming) y JSD (Jackson Structured Design), y la construccin lgica de programas LCP (Logical Construction Program) de Warnier.Orientadas a estados y transiciones (tiempo real): estas metodologas estn dirigidas a la especificacin de sistemas en tiempo real y sistemas que tienen que reaccionar continuamente a estmulos internos y externos (eventos o sucesos). Las extensiones de las metodologas de anlisis y diseo estructurado de Ward y Mellor y de Hatley y Pirbhai son dos buenos ejemplos de estas metodologas.Diseo basado en el conocimiento: es una aproximacin que utiliza tcnicas y conceptos de inteligencia artificial para especificar y generar sistemas de informacin. El mtodo KADS (Knowledge Acquisition and Development Systems) es un ejemplo de esta categora.Orientadas a objetos: estas metodologas se fundamentan en la integracin de los dos aspectos de los sistemas de informacin: datos y procesos. En este paradigma un sistema se concibe como una sociedad de objetos que se comunican entre s mediante mensajes. El objeto encapsula datos y operaciones. Este enfoque permite un modelado ms natural del mundo real y facilita enormemente la reutilizacin y extensibilidad del software. Algunos representantes de este grupo son las metodologas OOA/D de Booch, la primera versin de OMT (Object Modeling Technique), OOSE (Object Oriented Software Engineering) de Jacobson, FUSION, y RUP (Rational Unified Process).Basadas en mtodos formales: estas metodologas implican una revolucin en los procedimientos de desarrollo, ya que a diferencia de las anteriores, estas tcnicas se basan en teoras matemticas que permiten una verdadera aproximacin cientfica y rigurosa al desarrollo de sistemas de informacin. Hay dos escuelas fundamentales de notaciones formales para definir la funcionalidad de un sistema: basadas en modelos (como Z) y algebraicas o ecuacionales (como OBJ).

    Hay un consenso en la literatura (ver por ejemplo Sommerville 2002, Pressman 2001, Pfleeger 1998, Wieringa 1998, Bell 2000, Wasserman 1996) en que no existe un mtodo ideal, y en que mtodos diferentes tienen distintas reas donde son aplicables.Se han definido tambin mtodos hbridos, que integran varias de las aproximaciones anteriores: por ejemplo, Mtrica 3 integra la aproximacin basada en procesos y la basada en objetos; FOOPS (Functional and Object-Oriented Programming System) y OOZE integran la orientada a objetos y la formal.

  • Mtodos de Desarrollo de SWProfesor: Juan Antonio Lpez Quesada*Mtodos. ClasificacinEstructurados: representan los procesos, flujos y estructuras de datos, de una manera jerrquica, descendenteVen el sistema como entradas-proceso-salidasOrientados a procesos: se centran en la parte procesoconstan de (fundamentalmente) DFDs, DD, miniespecificaciones de proceso, E-R/DEDOrientados a datos:se orientan ms a las entradas y salidasprimero se definen los datosa partir de ellos, los componentes procedimentalesLos datos son ms estables

    Profesor: Juan Antonio Lpez Quesada

  • Mtodos de Desarrollo de SWProfesor: Juan Antonio Lpez Quesada*Mtodos. EjemplosEstructuradosDe Marco 79Gane & Sarson 79Yourdon 89SSADMMeriseMTRICA 2.1Orientados a datosJSP/JSD JacksonWarnier 74

    OOOMT (Rumbaugh et al. 91)Booch 94Objectory/OOSE (Jacobson 93)FUSION (Coleman 94)OOram (Reenskaug 96)Proceso Unificado (Jacobson et al. 99)Rational Unified Process (RUP) (Krutchen et al. 99)Tiempo realWard & Mellor 85Hatley & Pirbhay 87

    Profesor: Juan Antonio Lpez Quesada*Una vez que has visto este tema, deberas ser capaz de poner varios ejemplos de mtodos, que usen distintas tcnicas y notaciones.

    *

    *Vamos a ver un instrumento para conseguir el enfoque disciplinado al desarrollo de software que estamos buscando: las metodologas o mtodos de desarrollo de software. (Existe confusin en cuanto al uso de los trminos mtodo y metodologa.)Como tantas veces en ingeniera del software, no existe un consenso en cuanto a qu cosas deben formar parte de un mtodo.

    *Entre los componentes genricos de un mtodo, tenemos:

    Un modelo de proceso (fases y subfases, actividades, tareas).Un conjunto de procedimientos, que definen la forma de ejecutar las tareas.Un conjunto de tcnicas, que permiten aplicar los procedimientos, y con las que se genera un conjunto de productos (artefactos). Con mucha frecuencia son grficas con apoyos textuales formales. Una misma tcnica se puede aplicar varias veces dentro de una metodologa, o en metodologas diferentes (p.ej. DFDs en Mtrica y en SSADM).Para usar una tcnica, podemos apoyarnos en herramientas software que automatizan en mayor o menor grado su aplicacin. Hay herramientas que dan soporte a ms de una metodologa (como System Architect).*Para (Sommerville 2002), los mtodos contienen los componentes que refleja esta tabla.

    *

    *Ver (Piattini et al. 96) p.72*Esta sencilla clasificacin aparece en (Piattini et al. 96).

    Se pueden distinguir seis escuelas principales de pensamiento en relacin con las tcnicas y mtodos de desarrollo de ingeniera del software:Orientadas a procesos: se fundamentan en el modelo bsico entrada/proceso/salida de un sistema, de forma que los datos se introducen en el sistema y ste responde ante ellos transformndolos para obtener salidas. Estas metodologas se enfocan fundamentalmente en la parte de proceso y, por esto, se describen como un enfoque de desarrollo de software orientado al proceso. En general utilizan un enfoque de descomposicin descendente para evaluar los procesos del espacio del problema y los flujos de datos con los que estn conectados. Este tipo de metodologas se desarroll a lo largo de los aos 70. Referencias importantes de este tipo de mtodos son las de Stevens, Myers y Constantine, Yourdon y Constantine; Yourdon; Tom DeMarco; Gane y Sarson. Representantes de ste grupo son metodologas de anlisis y diseo estructurado como SSADM (Structured Systems Analysis and Design Method), Merise, Mtrica 2.1 y parcialmente Mtrica 3 (esta ltima integra el paradigma orientado a procesos y el orientado a objetos).Orientadas a datos: al contrario que en el caso anterior, estas metodologas se centran ms la parte de entrada/salida dentro del modelo bsico entrada/proceso/salida. En estas metodologas las actividades de anlisis comienzan evaluando en primer lugar los datos y sus interrelaciones para determinar la arquitectura de datos subyacente. Cuando esta arquitectura est definida, se definen las salidas a producir y los procesos y entradas necesarios para obtenerlas. Ejemplos representativos de este grupo son los mtodos JSP (Jackson Structured Programming) y JSD (Jackson Structured Design), y la construccin lgica de programas LCP (Logical Construction Program) de Warnier.Orientadas a estados y transiciones (tiempo real): estas metodologas estn dirigidas a la especificacin de sistemas en tiempo real y sistemas que tienen que reaccionar continuamente a estmulos internos y externos (eventos o sucesos). Las extensiones de las metodologas de anlisis y diseo estructurado de Ward y Mellor y de Hatley y Pirbhai son dos buenos ejemplos de estas metodologas.Diseo basado en el conocimiento: es una aproximacin que utiliza tcnicas y conceptos de inteligencia artificial para especificar y generar sistemas de informacin. El mtodo KADS (Knowledge Acquisition and Development Systems) es un ejemplo de esta categora.Orientadas a objetos: estas metodologas se fundamentan en la integracin de los dos aspectos de los sistemas de informacin: datos y procesos. En este paradigma un sistema se concibe como una sociedad de objetos que se comunican entre s mediante mensajes. El objeto encapsula datos y operaciones. Este enfoque permite un modelado ms natural del mundo real y facilita enormemente la reutilizacin y extensibilidad del software. Algunos representantes de este grupo son las metodologas OOA/D de Booch, la primera versin de OMT (Object Modeling Technique), OOSE (Object Oriented Software Engineering) de Jacobson, FUSION, y RUP (Rational Unified Process).Basadas en mtodos formales: estas metodologas implican una revolucin en los procedimientos de desarrollo, ya que a diferencia de las anteriores, estas tcnicas se basan en teoras matemticas que permiten una verdadera aproximacin cientfica y rigurosa al desarrollo de sistemas de informacin. Hay dos escuelas fundamentales de notaciones formales para definir la funcionalidad de un sistema: basadas en modelos (como Z) y algebraicas o ecuacionales (como OBJ).

    Hay un consenso en la literatura (ver por ejemplo Sommerville 2002, Pressman 2001, Pfleeger 1998, Wieringa 1998, Bell 2000, Wasserman 1996) en que no existe un mtodo ideal, y en que mtodos diferentes tienen distintas reas donde son aplicables.Se han definido tambin mtodos hbridos, que integran varias de las aproximaciones anteriores: por ejemplo, Mtrica 3 integra la aproximacin basada en procesos y la basada en objetos; FOOPS (Functional and Object-Oriented Programming System) y OOZE integran la orientada a objetos y la formal.*Una vez que has visto este tema, deberas ser capaz de poner varios ejemplos de mtodos, que usen distintas tcnicas y notaciones.