Ingeniería del SoftwareIngeniería del Software de Gestión
Tema 3Metodologías de Desarrollo de
Software
Félix Óscar García RubioCrescencio Bravo Santos
Metodologías de Desarrollo de Software 2
Índice
1. Definiciones2. Objetivos3. Conceptos Generales4. Metodología vs Ciclo de Vida5. Evolución Histórica de las Metodologías6. Impacto de las Metodologías en el Entorno de Desarrollo7. Clasificación de las Metodologías8. Ejemplos de Metodologías de Desarrollo
Metodologías de Desarrollo de Software 3
Definiciones
• Metodología de Desarrollo:
1) Conjunto de pasos y procedimientos que deben seguirse para el desarrollo de software.
2) Conjunto de filosofías, fases, procedimientos, reglas, técnicas, herramientas, documentación y aspectos de formación para los desarrolladores de SI [Maddison, 1983]
3) Conjunto de procedimientos, técnicas, herramientas y soporte documental que ayuda a los desarrolladores a realizar nuevo software
Metodologías de Desarrollo de Software 4
Objetivos
• Un metodología de desarrollo por lo tanto representa el camino a seguir para desarrollar software de manera sistemática.
• Objetivos:– Mejores Aplicaciones– Un mejor Proceso de Desarrollo que identifique salidas (o
productos intermedios) de cada fase de forma que se pueda planificar y controlar el proyecto
– Un Proceso Estándar en la organización
Metodologías de Desarrollo de Software 5
Conceptos Generales (i)
• Actividades y Tareas – El Proceso se descompone hasta el nivel de Actividades y
Tareas (actividades elementales)
• Procedimientos– Define la forma de llevar a cabo las Tareas – Vínculo de Comunicación entre Usuarios y Desarrolladores
• Productos– Obtenidos como resultado de seguir un Procedimiento– Pueden ser Intermedios o Finales
Metodologías de Desarrollo de Software 6
Conceptos Generales (ii)
• Técnicas– Se utilizan para aplicar un Procedimiento– Pueden ser Gráficas y/o Textuales– Determinan el formato de los Productos resultantes en cada
Tarea
• Herramientas Software– Proporcionan soporte a la aplicación de las Técnicas
Metodologías de Desarrollo de Software 7
Metodología vs Ciclo de Vida
• Diferencias entre Metodología, Ciclo de Vida y Método
– Una Metodología puede seguir uno o varios modelos de Ciclo de Vida
– Un Ciclo de Vida indica qué obtener, pero no cómo
– Una Metodología es un concepto más amplio que MétodoSe puede considerar como un conjunto de métodos. Una metodología puede englobar un conjunto de métodos (de análisis, diseño, programación, etc.) para abarcar el ciclo de vida completo
Metodologías de Desarrollo de Software 8
Evolución Histórica Metodologías (i)
1. Desarrollo Convencional:Años 50Desarrollo artesanal y ausencia de Metodología Enfocado en la Tarea de ProgramaciónInconvenientes:
Los resultados finales son impredeciblesNo hay forma de controlar lo que está sucediendo en el Proyecto Los cambios organizativos afectan negativamente al proceso de desarrollo
Metodologías de Desarrollo de Software 9
Evolución Histórica Metodologías (ii)
2. Desarrollo Estructurado:Años 60 (entorno académico), mediados 70 (industria)
Evolución:i. Programación Estructurada:
Facilitar comprensión de ProgramasNormas para la aplicación de estructuras de datos y de control
ii. Diseño EstructuradoMayor nivel abstracción (independencia del lenguaje programación)Elemento básico de diseño: MóduloModularidad. Medidas de Calidad de Programas
Metodologías de Desarrollo de Software 10
Evolución Histórica Metodologías (iii)
2. Desarrollo Estructurado:Evolución:iii. Análisis Estructurado
Previamente: Descripción Narrativa Requisitos Especificaciones: MonolíticasRedundantesAmbiguasImposibles de Mantener
Se obtienen Especificaciones Funcionales:GráficasParticionadasMínimamente redundantes
Metodologías de Desarrollo de Software 11
Evolución Histórica Metodologías (iv)
3. Desarrollo Orientado a Objetos:Años 80Trata Procesos y Datos de forma conjunta.Principios:
AbstracciónOcultación InformaciónModularidad
Las técnicas estructuradas han influido en estas metodologías.
Metodologías de Desarrollo de Software 12
Relación Histórica Metodologías
AÑO METODOLOGÍA 1968 Conceptos sobre la programación estructurada de DIJKSTRA 1974 Técnicas de programación estructurada de WARNIER y JACKSON 1975 Primeros conceptos sobre diseño estructurado de MYERS y YOURDON 1977 Primeros conceptos sobre análisis estructurado GANE y SARSON 1978 Análisis estructurado: DEMARCO y WEINBERG
Nace MERISE 1981 SSADM (versión inicial)
Information Engineering (versión inicial) 1985 Análisis y Diseño estructurado para sistemas de tiempo real de
WARD y MELLOR 1986 SSADM Versión 3 1987 Análisis y Diseño estructurado para sistemas de tiempo real de
HATLEY y PIRHBAY 1989 METRICA (versión inicial) 1990 SSADM Versión 4 1993 METRICA Versión 2 1995 METRICA Versión 2.1 1998 MÉTRICA Versión 3
Metodologías de Desarrollo de Software 13
Impacto de las Metodologías en el Entorno de Desarrollo (i)
METODOLOGIADE
DESARROLLO
PROCEDIMIENTOSDE GESTION
TECNICASSOPORTEAUTOMATIZADO
soportanmétodos
determinanlas herramientas
necesarias
Coordinany guían
Dan una estructura visible
Seleccionan lasherramientas
Da informesa la dirección
ENTORNO DE DESARROLLO DE SOFTWARE
ORGANIZACION DE DESARROLLO DE SOFTWARE
EQUIPO DE DESARROLLO DE SOFTWARE
• Metodología: Núcleo del Entorno de Desarrollo
• Entorno Desarrollo:– La organización mantiene un
Equipo de Desarrollo– Procedimientos de Gestión
Influyen y determinan el soporte automatizado (HW y SW)Coordinan y Guían a los Desarrolladores en el uso de las Técnicas
– Soporte AutomatizadoMejora la Productividad
Metodologías de Desarrollo de Software 14
Impacto de las Metodologías en el Entorno de Desarrollo (ii)
• Implantación de Metodologías en los Entornos de Desarrollo. Opciones: – Seleccionar entre un gran número de posibilidades y
combinaciones de métodos de gestión, técnicas de desarrollo y soporte automatizado, para crear y desarrollar una Metodología de Desarrollo Software más apropiada.
– Analizar y evaluar las metodologías existentes y seleccionar la que más se adapte a las necesidades.
• Factores que influyen en las metodologías:– Tamaño y estructura de la organización – Tipo de aplicaciones a desarrollar
Metodologías de Desarrollo de Software 15
Características Deseables de una Metodología
Existencia de reglas predefinidasCobertura total del ciclo de desarrolloVerificaciones intermediasPlanificación y controlComunicación efectivaUtilización sobre un abanico amplio de proyectosFácil formaciónHerramientas CASEActividades que mejoren el proceso de desarrolloSoporte al mantenimientoSoporte de la reutilización de software
Metodologías de Desarrollo de Software 16
Clasificación de las Metodologías
ESTRUCTURADAS
* Orientadas a Procesos* Orientadas a Datos
- Jerárquicos- No jerárquicos
GESTIÓN NO FORMAL
ORIENTADAS A OBJETOS TIEMPO REAL FORMAL
* Mixtas
ENFOQUETIPO DE SISTEMA FORMALIDAD
Metodologías de Desarrollo de Software 17
Metodologías Estructuradas (i)
• Proponen la creación de modelos del sistema que representan:– Los procesos – Los flujos
– La estructura de los Datos
• Enfoque Top-Down– De visión general a nivel de abstracción más sencillo
• Tipos:– Orientadas a Procesos – Orientadas a Datos
Estructuras de Datos JerárquicasEstructuras de Datos no Jerárquicas
– Mixtas
Metodologías de Desarrollo de Software 18
Metodologías Estructuradas (ii)
• Metodologías Orientadas a Procesos
– Se apoyan en técnicas gráficas para obtener:ESPECIFICACIÓN ESTRUCTURADA
Modelo gráfico, particionado, descendente y jerárquico de los procesos del sistema y de los datos utilizados por éstos.Componentes:
Diagrama de Flujo de DatosDiccionario de DatosEspecificaciones de Procesos
ENTRADAENTRADA SALIDASALIDAPROCESOPROCESO
Metodologías de Desarrollo de Software 19
Metodologías Estructuradas (iii)
• Metodologías Orientadas a Procesos
FASES DEL ANALISIS ESTRUCTURADO
Método de DeMarco Método de Gane y Sarson
1. Construir el modelo físico actual (DFD físico actual)
2. Construir el modelo lógico actual (DFD lógico actual)
3. Crear un conjunto de modelos físicos alternativos
4. Estimar los costes y tiempos de cada opción
5. Seleccionar un modelo6. Empaquetar la especificación
1. Construir el modelo lógico actual (DFD lógico actual)2. Construir el modelo del nuevo sistema: elaborar una especificación estructurada y construir un modelo lógico de datos en tercera forma normal que exprese el contenido de los almacenes de datos.3. Seleccionar un modelo lógico4. Crear el nuevo modelo físico del sistema5. Empaquetar la especificación
Metodologías de Desarrollo de Software 20
Metodologías Estructuradas (iv)
• Metodologías Orientadas a Procesos
– Metodología de Yourdon/ConstantineRealizar los DFD del sistemaRealizar el diagrama de estructurasEvaluar el diseñoPreparar el diseño para la implantación
Metodologías de Desarrollo de Software 21
Metodologías Estructuradas (v)
• Metodologías Orientadas a Datos Jerárquicos
– La estructura de control del programa debe ser jerárquica y se debe derivar de la estructura de datos del programa
– El proceso de diseño consiste en definir primero las estructuras de los datos de entrada y salida, mezclarlas todas en una estructura jerárquica de programa y después ordenar detalladamente la lógica procedimentalpara que se ajuste a esta estructura
– El diseño lógico debe preceder y estar separado del diseño físico
ENTRADAENTRADA SALIDASALIDAPROCESOPROCESO
Metodologías de Desarrollo de Software 22
Metodologías Estructuradas (vi)
• Metodologías Orientadas a Datos No Jerárquicos
– Metodología “Ingeniería de la Información”Planificación: construir una arquitectura de la Información y una estrategia que soporte los objetivos de la organizaciónAnálisis: comprender las áreas del negocio y determinar los
requisitos del sistemaDiseño: establecer el comportamiento del sistema deseado por el usuario y que sea alcanzable por la tecnologíaConstrucción: construir sistemas que cumplan los tres niveles anteriores
ENTRADAENTRADA SALIDASALIDAPROCESOPROCESO
Metodologías de Desarrollo de Software 23
Metodologías Orientadas a Objetos
• Cambio en los principios de las metodologías estructuradas:– Estructurado: Examinar el sistema desde las funciones y tareas– OO: Modelado del Sistema examinando el dominio del problema como
un conjunto de objetos que interactúan entre sí – Objetos: Encapsulan Funciones + Datos
• Enfoques:– “Revolucionarios” o “Puros”
La OO se entiende como un cambio profundo de las metodologías estructuradas que se ven como obsoletasOOD (Booch), CRC/RDD (Wirfs-Brock)
– “Sintetistas” o “Evolutivos”Ánalisis y Diseño Estructurado se consideran como la base para el desarrollo OOOMT, UML
Metodologías de Desarrollo de Software 24
Metodologías Sistemas Tiempo Real
• Sistemas que controlan un ambiente recibiendo datos, procesándolos y devolviéndolos con la suficiente rapidez como para influir en dicho ambiente en ese momento
• Características:– Gestión de procesos concurrentes– Manejo de interrupciones y prioridades – Comunicación y sincronización entre tareas– Respuesta oportuna ante eventos externos– Datos continuos o discretos
• Metodologías:– Ampliaciones a la notación del análisis estructurado– Metodologías OO para Sistemas Tiempo Real
Metodologías de Desarrollo de Software 25
Ejemplos de Metodologías de Desarrollo (i)
• Metodología MERISE:– Administración Pública Francia
NIVELES DATOS TRATAMIENTOS
CONCEPTUAL Modelo Conceptual de Datos Modelo Conceptual de Tratamientos
ORGANIZATIVOModelo Lógico de Datos Modelo Organizativo de Tratamientos
FÍSICO Modelo Físico de Datos Modelo Operativo de Tratamientos
Metodologías de Desarrollo de Software 26
Ejemplos de Metodologías de Desarrollo (ii)
• Metodología SSADM:– Administración Pública Reino Unido
Administración y Control
PlanificaciónEstratégica
Estu
dio
de V
iabi
lidad
Aná
lisis
de
Req
uisi
tos
Espe
cific
ació
n de
Req
uisi
tos
Espe
cific
ació
n Ló
gica
del
Sist
emaEstudio completo
Dis
eño
Físi
co
Con
stru
cció
n y
Prue
bas
Producción
SSADM
Desarrollo
Metodologías de Desarrollo de Software 27
Ejemplos de Metodologías de Desarrollo (iii)
• METRICA v.3– Administración Pública España
1. Planificación de Sistemas de Información – (PSI)2. Desarrollo de Sistemas de Información:
a. Estudio de Viabilidad del Sistema (EVS)b. Análisis del Sistema de Información (ASI)c. Diseño del Sistema de Información (DSI)d. Construcción del Sistema de Información (CSI)e. Implantación y Aceptación del Sistema (IAS)
3. Mantenimiento de Sistemas de Información (MSI)