Unidad 1.2 A IntroduccióN A Los Proceso De Software Modelos Tradicionales

50
6 de jun de 2022 Sergio Sánchez Rios Ingeniería de Software Unidad I El proceso de Software Sergio Sánchez Rios. Ingeniero en Informática – Licenciado en Informática

description

 

Transcript of Unidad 1.2 A IntroduccióN A Los Proceso De Software Modelos Tradicionales

Page 1: Unidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos Tradicionales

8 de abr de 2023 Sergio Sánchez Rios

Ingeniería de SoftwareUnidad I

El proceso de Software

Sergio Sánchez Rios.

Ingeniero en Informática – Licenciado en Informática

Page 2: Unidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos Tradicionales

8 de abr de 2023 Sergio Sánchez Rios

¿Qué es un proceso de software?

“ El proceso de software es un conjunto de actividades y resultados asociados que conducen a la creación de un producto de software”. [Sommerville 2002]

Cuando el proceso implica la construcción de algún producto, solemos referirnos al proceso como Ciclo de Vida.

El proceso de desarrollo de software suele denominarse ciclo de vida del software, porque describe la vida de un producto de software desde su concepción hasta su implementación, entrega, utilización y mantenimiento.

Page 3: Unidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos Tradicionales

8 de abr de 2023 Sergio Sánchez Rios

Actividades comunes a todos los procesos de software

Aunque existen muchos procesos diferentes de software, tienen actividades fundamentales que son comunes para todos ellos Especificación del software: se debe definir la funcionalidad del software y las restricciones en sus operaciones.

Diseño e implementación del software: se debe producir un software que cumpla su especificación.

Validación del software: se debe validar el software para asegurar que hace lo que el cliente desea.

Evolución del software: el software debe evolucionar para cumplir con los cambios en las necesidades del usuario.

Page 4: Unidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos Tradicionales

8 de abr de 2023 Sergio Sánchez Rios

Documentación de software

“Lo que no está escrito no existe...”

Algunos tipos de documentos:

Plan de software Especificación de Requerimientos Especificación de Diseño Plan de Pruebas Resultados de Revisiones Bitácoras

Page 5: Unidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos Tradicionales

8 de abr de 2023 Sergio Sánchez Rios

Etapas generales en el desarrollo de software

Planificación Definición y análisis de requerimientos Diseño del sistema Codificación Pruebas unitarias Pruebas de integración Pruebas del sistema Liberación del producto Mantenimiento

Page 6: Unidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos Tradicionales

8 de abr de 2023 Sergio Sánchez Rios

Planificación

Es proporcionar un marco de trabajo que permita al gestor hacer estimaciones razonables de recursos, costos y planificación temporal.

Objetivo

Antes de comprometer los fondos para el desarrollo de un software o el mantenimiento de un proyecto por lo general el cliente quiere una estimación de cuánto costará el proyecto y cuánto durará.

Producto de trabajoPlan del proyecto: deja por escrito las necesidades del cliente, así como lo que se espera hacer para satisfacerlas.

Page 7: Unidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos Tradicionales

8 de abr de 2023 Sergio Sánchez Rios

Análisis y definición de requerimientos

Reunirse con los clientes para definir los requerimientos: son lo que los clientes y usuarios quieren que haga el sistema. Los requerimientos definen el sistema.

Objetivo

Producto de trabajo

Documento de Requerimientos

Definición de requerimientos (clientes)

Especificación de requerimientos (diseñadores)

Page 8: Unidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos Tradicionales

8 de abr de 2023 Sergio Sánchez Rios

Diseño

Transformar el problema en una solución, es decir realizar un diseño del sistema que satisfaga las necesidades de los clientes.

Objetivo

El diseño consta de dos partes:

Diseño del sistema o conceptual: Se presenta el sistema desde la visión del Cliente, solo se describen apariencia y funcionalidad.

Diseño técnico: el objetivo, es que los constructores comprendan el hardware y el software concretos que se necesitarán para resolver el problema del cliente. Se utiliza el diseño global para generar los diseños de los programas.

Page 9: Unidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos Tradicionales

8 de abr de 2023 Sergio Sánchez Rios

Diseño

Producto de trabajo

Especificación de Diseño

Documentación dirigida al cliente (lenguaje natural)

Terminología técnica para describir la estructura del sistema, datos y funciones.

Page 10: Unidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos Tradicionales

8 de abr de 2023 Sergio Sánchez Rios

Codificación

Proceso creativo que traduce el diseño a un lenguaje de programación.

Objetivo

Producto de trabajo

Escribir los programas que implementen el diseño.

Código Fuente.

Documentación del programa.

Documentación interna.

Documentación externa.

Page 11: Unidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos Tradicionales

8 de abr de 2023 Sergio Sánchez Rios

Prueba

Demoler el producto de software con el propósito de detectar defectos.

Objetivo

La etapa de Prueba consta de tres partes:

Prueba unitaria: prueba de los módulos por separado.

Prueba de integración: se reúnen piezas y se prueban.

Prueba del sistema: se prueba el sistema completo, para probar que las funciones y relaciones estén bien.

Page 12: Unidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos Tradicionales

8 de abr de 2023 Sergio Sánchez Rios

Prueba

Producto de trabajo

Plan de Prueba

Objetivos de las pruebas.

Diseño de los casos de prueba.

Preparación escrita de los casos de prueba

Verificación casos de prueba.

Ejecución en las pruebas.

Evaluación de los resultados.

Page 13: Unidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos Tradicionales

8 de abr de 2023 Sergio Sánchez Rios

Liberación del producto

Es más que solo la entrega del producto, sino que es el momento del desarrollo en que se ayuda a los usuarios a comprender el producto entregado y a sentirse cómodos con él.

Objetivo

Producto de trabajo

Manuales de usuario, Manuales del operador, guía general del sistema, etc..

Producto operando

Page 14: Unidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos Tradicionales

8 de abr de 2023 Sergio Sánchez Rios

Mantenimiento

Mantener un sistema que evoluciona constantemente.

Objetivo

Producto de trabajo

Nuevo código fuente

Cambios en los documentos

Page 15: Unidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos Tradicionales

8 de abr de 2023 Sergio Sánchez Rios

PLANEACION: ¿QUE SE QUIERE?

Planeación del Proyecto de Software

Análisis de requerimientos

Funciones de Software

Ing. en Sistemas

Revisión

Revisión

Plan de proyecto

Especificación de requerimientos

Prototipo

Resumen

Page 16: Unidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos Tradicionales

8 de abr de 2023 Sergio Sánchez Rios

ResumenDESARROLLO ¿ CÓMO SE LOGRARÁ ?

Prototipo

Diseño de Sistema

Revisión

Diseño técnico

Codificación

Revisión

Revisión

Especificaciones del diseño preliminar

Especificación de Diseño detallado

Código del programa fuente

Page 17: Unidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos Tradicionales

8 de abr de 2023 Sergio Sánchez Rios

Resumen MANTENIMIENTO: COMO SE CONTROLARÁ

EL CAMBIOPruebas unitarias

y validaciónPlan, procedimientos

y resultados de pruebas

Manual del usuario

Operación del programa

Liberación y

Distribución

MantenimientoCódigo del

programa fuentemodificado

Revisión

Depuración

RevisiónDocumento modificado

Se puede regresar a etapas previas debido a los errores

Page 18: Unidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos Tradicionales

8 de abr de 2023 Sergio Sánchez Rios

Programador

Role

s d

e lo

s D

esarro

llad

ore

s

Análisis y Definición de

Requerimientos

Paso e

n e

l D

esarr

ollo d

e S

oft

ware

Analista

Diseñador

Tester

Diseño del sistema

Diseño técnico

Codificación

Prueba Unitaria

Prueba de integración

Prueba del sistema

Liberación del producto

Mantenimiento

Entrenador

Roles de los desarrolladores

Page 19: Unidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos Tradicionales

8 de abr de 2023 Sergio Sánchez Rios

Modelos del Proceso de Software

“Es una representación abstracta de un proceso de software. Cada modelo de proceso representa un proceso desde una perspectiva particular por lo que sólo provee información parcial acerca de ese proceso”.

Page 20: Unidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos Tradicionales

8 de abr de 2023 Sergio Sánchez Rios

Modelos del Proceso de Software

Paradigmas:

Modelo clásico. Modelo incremental. Modelo iterativo. Prototipos. Modelo espiral.

Page 21: Unidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos Tradicionales

8 de abr de 2023 Sergio Sánchez Rios

Modelos del Proceso de SoftwareModelo Clásico

DISEÑO DEL SISTEMA

DISEÑO DE PROGRAMAS

IMPLEMENTACION DE PROGRAMAS

PRUEBA UNITARIA Y DE INTEGRACION

PRUEBA DEL SISTEMA

PRUEBA DE ACEPTACION

OPERACION Y MANTENIMIENTO

ANALISIS DE REQUERIMIENTOS

Modelo Cascada

Page 22: Unidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos Tradicionales

8 de abr de 2023 Sergio Sánchez Rios

Es el modelo más antiguo y el más usado (1970 por Royce).

Asume secuencialidad y linealidad. En principio el resultado de cada fase es uno o más documentos aprobados (“firmados”). La siguiente fase comienza hasta que las otras hayan finalizado.

Captura preceptos básicos:

Planificar el proyecto antes de embarcarse en él. Definir el comportamiento externo de un sistema antes

que definir su arquitectura. Documentar los resultados de cada actividad. Diseñar antes de codificar. Probar después de la implementación.

Modelos del Proceso de SoftwareModelo Clásico

Page 23: Unidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos Tradicionales

8 de abr de 2023 Sergio Sánchez Rios

El problema con el modelo cascada es su inflexibilidad al dividir el proyecto en estas etapas.

Requiere establecimiento explícito de los requerimientos desde el comienzo.

Exige al cliente/usuario gran paciencia. Dificulta la incorporación de modificaciones durante el

desarrollo.

Modelos del Proceso de SoftwareModelo Clásico

Este modelo sólo se debe utilizar cuando los requerimientos se comprendan del todo.

Page 24: Unidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos Tradicionales

8 de abr de 2023 Sergio Sánchez Rios

Modelos del Proceso de SoftwareModelo V

Page 25: Unidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos Tradicionales

8 de abr de 2023 Sergio Sánchez Rios

Modelos del Proceso de SoftwareModelo V

Fue creado en Alemania 1992.

Es una variación del modelo en cascada.

Su “ángulo” es la codificación.

Los sucesivos testing proceden como contraparte de las actividades de desarrollo.

Se forman “ciclos” desarrollo-verificación-desarrollo...

Page 26: Unidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos Tradicionales

8 de abr de 2023 Sergio Sánchez Rios

Una manera para reducir el tiempo en el ciclo (desde la especificación de requerimientos al momento de la entrega) es la utilización del desarrollo por fases.

Modelos del Proceso de SoftwareDesarrollo por fases incrementos e iteraciones

Sistemas en Desarrollo

Sistemas en Producción

DES

AR

RO

LLA

DO

RE

SU

SU

AR

IOS

Construir liberación 1

Usar Lib. 1

Construir liberación 2

Usar Lib. 2

Construir liberación 3

Usar Lib. 3

Tiempo

Page 27: Unidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos Tradicionales

8 de abr de 2023 Sergio Sánchez Rios

Existen varias maneras para que los desarrolladores decidan como organizar el desarrollo en versiones.

Modelos del Proceso de SoftwareDesarrollo por fases incrementos e iteraciones

Modelo incremental.

El sistema, tal como está especificado en los documentos de requerimientos, es particionado en subsistemas de acuerdo con sus funcionalidades.

Las versiones se definen comenzando con un subsistema funcional pequeño y agregando funcionalidad con cada nueva versión.

Page 28: Unidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos Tradicionales

8 de abr de 2023 Sergio Sánchez Rios

Modelos del Proceso de SoftwareDesarrollo por fases incrementos e iteraciones

Modelo incremental.

Tan pronto como se completan los nuevos incrementos, se integran a los existentes de tal forma que la funcionalidad del sistema mejora con cada incremento.

Page 29: Unidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos Tradicionales

8 de abr de 2023 Sergio Sánchez Rios

Modelos del Proceso de SoftwareDesarrollo por fases incrementos e iteraciones

Modelo incremental.

No es necesario utilizar el mismo proceso de desarrollo para cada incremento. Es compatible con el método clásico.

El modelo incremental disminuye los riesgos y permite manejar mejor los errores.

Es un modelo útil en proyectos críticos a gran escala.

Permite entregar un subproducto útil más tempranamente.

Permite evaluar la aceptación usuaria del producto.

Problemas: el tamaño de los incrementos y los recursos asignados a los incrementos.

Page 30: Unidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos Tradicionales

8 de abr de 2023 Sergio Sánchez Rios

Modelos del Proceso de SoftwareDesarrollo por fases incrementos e iteraciones

Modelo iterativo.

Entrega un sistema completo desde el principio, y luego cambia la funcionalidad de cada subsistema con cada nueva versión.

Page 31: Unidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos Tradicionales

8 de abr de 2023 Sergio Sánchez Rios

Modelos del Proceso de SoftwareDesarrollo por fases incrementos e iteraciones

Modelo iterativo.

El modelo solo trabaja con los requerimientos que se comprenden cabalmente.

Compatible con el modelo clásico.

Permite obtener feedback de los clientes y los usuarios.

Page 32: Unidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos Tradicionales

8 de abr de 2023 Sergio Sánchez Rios

Modelos del Proceso de SoftwarePrototipos

Page 33: Unidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos Tradicionales

8 de abr de 2023 Sergio Sánchez Rios

Modelos del Proceso de SoftwarePrototipos

Consiste en desarrollar rápidamente un modelo a escala.

Especialmente útil con herramientas de explicitación de requerimientos para cliente/usuario.

Idealmente los prototipos se desechan.

El cliente percibe resultados más tempranamente y se reducen los riesgos de incerteza en el desarrollo.

Prototipo Producto final diferencias funcionales, desempeño, calidad y en los acuerdos de desarrollo.

Page 34: Unidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos Tradicionales

8 de abr de 2023 Sergio Sánchez Rios

Modelos del Proceso de SoftwareModelo espiral

Boehm (1988) examinó el proceso de desarrollo del software a la luz de los riesgos involucrados, sugiriendo que un modelo en espiral podría combinar las actividades del desarrollo con la gestión de riesgos, para minimizar y controlar el riesgo.

Más que representar el proceso del software como una sucesión de actividades con retrospectivas de una actividad a otra, se representa como un espiral.

Page 35: Unidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos Tradicionales

8 de abr de 2023 Sergio Sánchez Rios

Modelos del Proceso de SoftwareModelo espiral

Page 36: Unidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos Tradicionales

8 de abr de 2023 Sergio Sánchez Rios

Modelos del Proceso de SoftwareModelo espiral

En el modelo en espiral, las primeras iteraciones son las menos costosas. Es un modelo Iterativo: Planificación Análisis de Riesgo Ingeniería Evaluación Planificación …

El modelo es compatible con otros modelos de ciclo de vida.

Ventajas

Mientras los costos suben, los riegos disminuyen.

Proporciona al menos tanto control de gestión como el modelo en cascada, ya que tiene los punto de verificación al final de cada iteración.

Como el modelo esta orientado al riesgo, le proporciona con anterioridad indicaciones de cualquier riesgo insuperable.

Page 37: Unidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos Tradicionales

8 de abr de 2023 Sergio Sánchez Rios

Modelos del Proceso de SoftwareModelo espiral

Desventajas

La única desventaja del modelo en espiral es que se trata de un modelo complicado. Requiere de una gestión concienzuda, atenta y que exige conocimientos profundos.

En algunos casos, el desarrollo del producto es suficientemente lineal, y los riegos del proyecto son tan pocos que no se necesita la flexibilidad y la gestión de riegos que ofrece este modelo.

Page 38: Unidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos Tradicionales

8 de abr de 2023 Sergio Sánchez Rios

Modelos del Proceso de SoftwareRUP – Rational Unified Process

Page 39: Unidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos Tradicionales

8 de abr de 2023 Sergio Sánchez Rios

Modelos del Proceso de SoftwareRUP – Rational Unified Process

Corresponde a un framework que puede ser usado para describir procesos de desarrollo específicos

Cada ciclo de vida del software abarca 4 fases en el siguiente orden: concepción/planificación, elaboración, construcción y transición.

La esencia de RUP es la iteración, y cada iteración resulta en un entregable preferentemente ejecutable

Page 40: Unidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos Tradicionales

8 de abr de 2023 Sergio Sánchez Rios

Modelos del Proceso de SoftwareMétodos Agiles

Interés creciente en los métodos ágiles (inicialmente llamados ligeros, lightweight) en los últimos años.

Enfrentamiento de requerimientos cambiantes.

Tiempos de desarrollo escasos.

Clientes y usuarios cada vez más exigentes.

Caracterizados alternativamente como: un antídoto a la burocracia (métodos planificados, pesados, heavyweight).

Page 41: Unidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos Tradicionales

8 de abr de 2023 Sergio Sánchez Rios

Modelos del Proceso de SoftwareMétodos Agiles

Algunas características de los métodos ágiles

Documentación mínima

Ciclos iterativos breves

Reacción rápida ante los cambios

Estrecha relación con el cliente

Diseño simple

Satisfacción de necesidades inmediatas

Foco en las personas

Organización libre

Procesos adaptables, no predictivos

Page 42: Unidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos Tradicionales

8 de abr de 2023 Sergio Sánchez Rios

Modelos del Proceso de SoftwareMétodos Agiles – Principios Agiles

La alianza ágil definió 12 principios para quienes quieren alcanzar la agilidad:

1.- Nuestra mayor prioridad es satisfacer al cliente mediante la entrega temprana y continua de software valioso.

2.- BIENVENIDOS los requisitos cambiantes, incluso en fases tardías del desarrollo.

3.- Entregar con frecuencia software en funcionamiento, desde un par de semanas hasta un par de meses, con preferencia en las escalas de tiempo más cortas.

4.- La gente de negocio y los desarrolladores deben trabajar juntos a diario a lo largo del proyecto.

Page 43: Unidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos Tradicionales

8 de abr de 2023 Sergio Sánchez Rios

Modelos del Proceso de SoftwareMétodos Agiles – Principios Agiles

5.- Construir proyectos alrededor de individuos motivados. Darles el ambiente y el soporte que necesitan, y confiar en ellos para obtener el trabajo realizado.

6.- El método más eficiente y efectivo de transmitir información hacia y dentro de un equipo de desarrollo es la conversación cara a cara.

7.- El software en funcionamiento es la medida primaría de progreso.

8.- Los procesos ágiles promueven el desarrollo sustentable. Los patrocinadores, desarrolladores y usuarios deben ser capaces de mantener un paso constante de manera indefinida.

9.- La atención continua a la excelencia técnica y al buen diseño mejora la agilidad.

Page 44: Unidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos Tradicionales

8 de abr de 2023 Sergio Sánchez Rios

Modelos del Proceso de SoftwareMétodos Agiles – Principios Agiles

10.- La simplicidad – el arte de maximizar la cantidad de trabajo no realizado – es esencial.

11.- Las mejores arquitecturas, los mejores requisitos, y los mejores diseños emergen de equipos autoorganizados.

12.- A intervalos regulares el equipo refleja la forma en que se puede volver más efectivo; entonces su comportamiento se ajusta y adecua en concordancia.

Page 45: Unidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos Tradicionales

8 de abr de 2023 Sergio Sánchez Rios

Modelos del Proceso de SoftwareMétodos Agiles – Principales Modelos

Algunos de los modelos ágiles más connotados son:

Programación Extrema (PE) – Extreme Programming (XP)

Desarrollo Adaptativo de Software (DAS)

Método de desarrollo de sistemas dinámicos (MDSD)

Scrum

Crystal Family

Desarrollo conducido por características (DCC)

Page 46: Unidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos Tradicionales

8 de abr de 2023 Sergio Sánchez Rios

Modelos del Proceso de SoftwareMétodos Agiles – Extreme Programming (XP)

Planeación

Planeación DiseñoDiseño

PruebaPrueba Codificación

Codificación

-Historias del Usuario

Valores

Criterios de las pruebas de iteración

-plan de iteración

-Diseño simple cartas CRC

-Soluciones prototipos

-Programación en Parejas

-Integración Continua

-Refactoring

-Prueba de Unidad

-Pruebas de Aceptación

Page 47: Unidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos Tradicionales

Modelos del Proceso de SoftwareMétodos Agiles – Extreme Programming (XP)

Page 48: Unidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos Tradicionales

Modelos del Proceso de SoftwareMétodos Agiles – Scrum

Page 49: Unidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos Tradicionales

8 de abr de 2023 Sergio Sánchez Rios

Modelos del Proceso de SoftwareSeleccionar un Modelo

Page 50: Unidad 1.2 A IntroduccióN A Los Proceso De Software   Modelos Tradicionales

8 de abr de 2023 Sergio Sánchez Rios

Bibliografía

Guía del Tópico:

Software Engineering 6a. ed.– Ian Sommerville – Pearson Education – 2000. (Cap. 3)Ingeniería de Software Teoría y Práctica – Shari Lawrence Pfleeger – Pearson Education – 2002.(Cap. 2)

Solo referencial:

Desarrollo y gestión de proyectos de software – Steven McConnell - Mc Graw Hill – 1996. (Cap. 7)