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

  • 2,753 views
Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
2,753
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
149
Comments
0
Likes
3

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Ingeniería de Software Unidad I El proceso de Software 13 de abr de 2011 Sergio Sánchez Rios Sergio Sánchez Rios. Ingeniero en Informática – Licenciado en Informática
  • 2. ¿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]
    13 de abr de 2011 Sergio Sánchez Rios 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.
  • 3. Actividades comunes a todos los procesos de software
    • Aunque existen muchos procesos diferentes de software, tienen actividades fundamentales que son comunes para todos ellos
    13 de abr de 2011 Sergio Sánchez Rios
    • 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.
  • 4. 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
    13 de abr de 2011 Sergio Sánchez Rios
  • 5. 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
    13 de abr de 2011 Sergio Sánchez Rios
  • 6. Planificación
    • Es proporcionar un marco de trabajo que permita al gestor hacer estimaciones razonables de recursos, costos y planificación temporal.
    13 de abr de 2011 Sergio Sánchez Rios 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 trabajo Plan del proyecto : deja por escrito las necesidades del cliente, así como lo que se espera hacer para satisfacerlas.
  • 7. 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.
    13 de abr de 2011 Sergio Sánchez Rios Objetivo Producto de trabajo Documento de Requerimientos Definición de requerimientos (clientes) Especificación de requerimientos (diseñadores)
  • 8. Diseño
    • Transformar el problema en una solución, es decir realizar un diseño del sistema que satisfaga las necesidades de los clientes.
    13 de abr de 2011 Sergio Sánchez Rios 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.
  • 9. Diseño 13 de abr de 2011 Sergio Sánchez Rios 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.
  • 10. Codificación
    • Proceso creativo que traduce el diseño a un lenguaje de programación.
    13 de abr de 2011 Sergio Sánchez Rios 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.
  • 11. Prueba
    • Demoler el producto de software con el propósito de detectar defectos.
    13 de abr de 2011 Sergio Sánchez Rios 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.
  • 12. Prueba 13 de abr de 2011 Sergio Sánchez Rios 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.
  • 13. 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.
    13 de abr de 2011 Sergio Sánchez Rios Objetivo Producto de trabajo Manuales de usuario, Manuales del operador, guía general del sistema, etc.. Producto operando
  • 14. Mantenimiento
    • Mantener un sistema que evoluciona constantemente.
    13 de abr de 2011 Sergio Sánchez Rios Objetivo Producto de trabajo Nuevo código fuente Cambios en los documentos
  • 15. PLANEACION: ¿QUE SE QUIERE? 13 de abr de 2011 Sergio Sánchez Rios Resumen 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
  • 16. DESARROLLO ¿ CÓMO SE LOGRARÁ ? 13 de abr de 2011 Sergio Sánchez Rios Resumen 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
  • 17. MANTENIMIENTO: COMO SE CONTROLARÁ EL CAMBIO 13 de abr de 2011 Sergio Sánchez Rios Resumen Pruebas unitarias y validación Plan, procedimientos y resultados de pruebas Manual del usuario Operación del programa Liberación y Distribución Mantenimiento Código del programa fuente modificado Revisión Depuración Revisión Documento modificado Se puede regresar a etapas previas debido a los errores
  • 18. Roles de los desarrolladores 13 de abr de 2011 Sergio Sánchez Rios Programador Roles de los Desarrolladores Análisis y Definición de Requerimientos Paso en el Desarrollo de Software 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
  • 19. 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”.
    13 de abr de 2011 Sergio Sánchez Rios
  • 20. Modelos del Proceso de Software
    • Paradigmas:
      • Modelo clásico.
      • Modelo incremental.
      • Modelo iterativo.
      • Prototipos.
      • Modelo espiral.
    13 de abr de 2011 Sergio Sánchez Rios
  • 21. Modelos del Proceso de Software Modelo Clásico 13 de abr de 2011 Sergio Sánchez Rios Modelo Cascada 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
  • 22.
    • 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 Software Modelo Clásico 13 de abr de 2011 Sergio Sánchez Rios
  • 23.
    • 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 Software Modelo Clásico 13 de abr de 2011 Sergio Sánchez Rios
    • Este modelo sólo se debe utilizar cuando los requerimientos se comprendan del todo.
  • 24. Modelos del Proceso de Software Modelo V 13 de abr de 2011 Sergio Sánchez Rios
  • 25. Modelos del Proceso de Software Modelo V 13 de abr de 2011 Sergio Sánchez Rios
    • 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...
  • 26.
    • 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 Software Desarrollo por fases incrementos e iteraciones 13 de abr de 2011 Sergio Sánchez Rios Sistemas en Desarrollo Sistemas en Producción DESARROLLADORES USUARIOS Construir liberación 1 Usar Lib. 1 Construir liberación 2 Usar Lib. 2 Construir liberación 3 Usar Lib. 3 Tiempo
  • 27.
    • Existen varias maneras para que los desarrolladores decidan como organizar el desarrollo en versiones.
    Modelos del Proceso de Software Desarrollo por fases incrementos e iteraciones 13 de abr de 2011 Sergio Sánchez Rios
    • 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.
  • 28. Modelos del Proceso de Software Desarrollo por fases incrementos e iteraciones 13 de abr de 2011 Sergio Sánchez Rios 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 .
  • 29. Modelos del Proceso de Software Desarrollo por fases incrementos e iteraciones 13 de abr de 2011 Sergio Sánchez Rios 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.
  • 30. Modelos del Proceso de Software Desarrollo por fases incrementos e iteraciones 13 de abr de 2011 Sergio Sánchez Rios Modelo iterativo. Entrega un sistema completo desde el principio, y luego cambia la funcionalidad de cada subsistema con cada nueva versión.
  • 31. Modelos del Proceso de Software Desarrollo por fases incrementos e iteraciones 13 de abr de 2011 Sergio Sánchez Rios 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.
  • 32. Modelos del Proceso de Software Prototipos 13 de abr de 2011 Sergio Sánchez Rios
  • 33. Modelos del Proceso de Software Prototipos 13 de abr de 2011 Sergio Sánchez Rios
    • 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.
  • 34. Modelos del Proceso de Software Modelo espiral 13 de abr de 2011 Sergio Sánchez Rios 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.
  • 35. Modelos del Proceso de Software Modelo espiral 13 de abr de 2011 Sergio Sánchez Rios
  • 36. Modelos del Proceso de Software Modelo espiral 13 de abr de 2011 Sergio Sánchez Rios
    • 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.
  • 37. Modelos del Proceso de Software Modelo espiral 13 de abr de 2011 Sergio Sánchez Rios
    • 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.
  • 38. Modelos del Proceso de Software RUP – Rational Unified Process 13 de abr de 2011 Sergio Sánchez Rios
  • 39. Modelos del Proceso de Software RUP – Rational Unified Process 13 de abr de 2011 Sergio Sánchez Rios 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
  • 40. Modelos del Proceso de Software Métodos Agiles 13 de abr de 2011 Sergio Sánchez Rios
    • Interés creciente en los métodos ágiles (inicialmente llamados ligeros, lightweight) en los últimos años.
      • Enfrentamiento de requerimientos cambiantes.
      • T iempos de desarrollo escasos.
      • C lientes y usuarios cada vez más exigentes.
    • Caracterizados alternativamente como: un antídoto a la burocracia (métodos planificados, pesados, heavyweight).
  • 41. Modelos del Proceso de Software Métodos Agiles 13 de abr de 2011 Sergio Sánchez Rios
    • 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
  • 42. Modelos del Proceso de Software Métodos Agiles – Principios Agiles 13 de abr de 2011 Sergio Sánchez Rios 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.
  • 43. Modelos del Proceso de Software Métodos Agiles – Principios Agiles 13 de abr de 2011 Sergio Sánchez Rios 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.
  • 44. Modelos del Proceso de Software Métodos Agiles – Principios Agiles 13 de abr de 2011 Sergio Sánchez Rios 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.
  • 45. Modelos del Proceso de Software Métodos Agiles – Principales Modelos 13 de abr de 2011 Sergio Sánchez Rios
    • 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)
  • 46. Modelos del Proceso de Software Métodos Agiles – Extreme Programming (XP) 13 de abr de 2011 Sergio Sánchez Rios -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 Planeación Diseño Prueba Codificación
  • 47. Modelos del Proceso de Software Métodos Agiles – Extreme Programming (XP)
  • 48. Modelos del Proceso de Software Métodos Agiles – Scrum
  • 49. Modelos del Proceso de Software Seleccionar un Modelo 13 de abr de 2011 Sergio Sánchez Rios
  • 50. Bibliografía 13 de abr de 2011 Sergio Sánchez Rios
    • 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)