SlideShare una empresa de Scribd logo
1 de 30
Descargar para leer sin conexión
Instituto Tecnológico de Tuxtepec



Reingeniería del software

          UNIDAD 1
Introducción a la reingeniería
      del software
 Presentadora: M.C. María Luisa Acosta
               Sanjuán

      Introducción a la reingeniería del software   D.R.©
Instituto Tecnológico de Tuxtepec


       Objetivo general de la asignatura

• Reflexionar sobre situaciones reales en torno a
  la construcción de software y cómo afrontarlas
  para garantizar la calidad del software
  desarrollado, entendiendo que un software de
  calidad, no tan sólo hace lo que tiene que
  hacer, sino que también se tiene que
  desarrollar en el tiempo y presupuesto
  establecidos, dando total satisfacción al cliente.

             Introducción a la reingeniería del software   D.R.©
Instituto Tecnológico de Tuxtepec


UNIDAD 1. Introducción a la Reingeniería del
                software.
• OBJETIVO EDUCACIONAL
• El estudiante Identificará la función de la
  reingeniería del software y ¿el porqué de su
  utilización?, sus costos y beneficios.




           Introducción a la reingeniería del software   D.R.©
Instituto Tecnológico de Tuxtepec


 UNIDAD 1. Introducción a la Reingeniería del
                 software.
1.1 Definición de reingeniería del software.
    1.1.1 Crisis del software
1.2 Sistemas de información heredados
    1.2.1 ¿Por qué aplicar la reingeniería del software?
    1.2.2 ¿Qué implica la reingeniería?
    1.2.3 Herramienta que utiliza la reingeniería
    1.2.4 ¿Cómo se hace una reingeniería?
1.3 Costes y beneficios de la reingeniería
    1.3.1 Justificación del proyecto de reingeniería.
    1.3.2 Análisis de la cartera de aplicaciones.
    1.3.3 Estimación de costes.
    1.3.4 Análisis de costos/beneficios.

                     Introducción a la reingeniería del software   D.R.©
Instituto Tecnológico de Tuxtepec



             Criterios de Evaluación
                             CRITERIOS                              VALOR
Asistencia                                                           5%
Ensayo sobre la reingeniería del software: función y beneficio de   25%
la reingeniería del software
Video sobre los mitos del software                                  15%
Anteproyecto de reingeniería                                        25%
Elaboración del blog                                                10%
Examen escrito                                                      20%



                   Introducción a la reingeniería del software        D.R.©
Instituto Tecnológico de Tuxtepec


    1.1 Definición de reingeniería del
                software.
• La reingeniería del software es la tecnología
  que surge de aplicar las técnicas de Ciencias
  de la computación y matemática sofisticada al
  análisis automatizado y modificación del
  código fuente de programas, para abreviarlo
  y hacerlo más eficiente.


            Introducción a la reingeniería del software   D.R.©
Instituto Tecnológico de Tuxtepec


      1.1 Definición de reingeniería del
                  software.
• La Reingeniería consiste            en     la     automatización   del
  mantenimiento del software.

• Es el proceso de examinar sistemas de software existentes y/o
  modificarlos con ayuda de herramientas de forma automática
  o semi-automática.

• Analiza sistemas existentes para entender su diseño y
  desarrollar estrategias para extraer y reutilizar componentes.
  Implica la rehabilitación y modernización de los componentes.


                Introducción a la reingeniería del software          D.R.©
Instituto Tecnológico de Tuxtepec


      1.1 Definición de reingeniería del
                  software.
• La reingeniería del software se refiere a la
  reimplementación de los sistemas heredados para
  hacerlos más mantenibles.

• La reingeniería puede implicar redocumentar el
  sistema, organizar y reestructurar el sistema, traducir
  el sistema a un lenguaje de programación más
  moderno, y modificar y actualizar la estructura y
  valores de los datos del sistema. (Sommerville)

              Introducción a la reingeniería del software   D.R.©
Instituto Tecnológico de Tuxtepec


     1.1 Definición de reingeniería del
                 software.
• Hacer reingeniería de un sistema de software tiene
  dos ventajas clave sobre aproximaciones más
  radicales a la evolución del sistema:


• Riesgo reducido.
• Coste reducido.


             Introducción a la reingeniería del software   D.R.©
Instituto Tecnológico de Tuxtepec


     1.1 Definición de reingeniería del
                 software.
Riesgo reducido.

• Existe un alto riesgo en volver a desarrollar
  software crítico para los negocios.
• Pueden cometerse errores en la especificación, o
  puede haber problemas en el desarrollo.
• Los retrasos en la introducción del nuevo software
  pueden significar pérdidas en el negocio e incurrir
  en costes adicionales.
             Introducción a la reingeniería del software   D.R.©
Instituto Tecnológico de Tuxtepec


     1.1 Definición de reingeniería del
                 software.
Coste reducido.

• El coste de hacer reingeniería es
  significativamente menor que el coste de
  desarrollar nuevo software



            Introducción a la reingeniería del software   D.R.©
Instituto Tecnológico de Tuxtepec


                   ACTIVIDAD 1

• Ensayo sobre la reingeniería del software:
  función y beneficio de la reingeniería del
  software.
                 Valor 25%




           Introducción a la reingeniería del software   D.R.©
Instituto Tecnológico de Tuxtepec



1.1.1 Crisis del software.
                     • El término “crisis del
                       software” se acuñó en
                       1968, en la primera
                       conferencia organizada
                       por la OTAN sobre
                       desarrollo de software y
                       con él se etiquetaron los
                       problemas que surgían
                       en el desarrollo de
                       sistemas de software.
  Introducción a la reingeniería del software   D.R.©
Instituto Tecnológico de Tuxtepec



          1.1.1 Crisis del software.

• El término se adjudica a F. L. Bauer, aunque
  previamente había sido utilizado por Edsger
  Dijkstra en su obra The Humble Programmer.

• Básicamente, la crisis del software se refiere a
  la dificultad para escribir programas libres de
  defectos, fácilmente comprensibles, y que sean
  verificables.
            Introducción a la reingeniería del software   D.R.©
Instituto Tecnológico de Tuxtepec


             1.1.1. Crisis del software

Algunos “síntomas” que indican que el software se
encuentra en un periodo de crisis son:

•   Baja calidad del software.
•   Tiempo y presupuesto excedido.
•   Confiabilidad cuestionable.
•   Altos requerimientos de personal para desarrollo
    y mantenimiento.

              Introducción a la reingeniería del software   D.R.©
Instituto Tecnológico de Tuxtepec


           1.1.1. Crisis del software

… Síntomas:

• A menudo el software es imposible de mantener,
  carece de trasparencia y no se puede modificar ni
  mejorar.
• Falta de adaptabilidad
• Escasa portabilidad
• Carencia de documentación.

              Introducción a la reingeniería del software   D.R.©
Instituto Tecnológico de Tuxtepec


             1.1.1. Crisis del software

Posibles causas de la crisis del software:

• Proyectos gestionados con un sobre-presupuesto.
• Proyectos gestionados con sobre tiempo.
• Software de baja calidad.
• El software a menudo no satisfacía los requerimientos
  deseados.
• Los proyectos fueron inmanejables, con un código difícil
  de mantener

              Introducción a la reingeniería del software   D.R.©
Instituto Tecnológico de Tuxtepec


           1.1.1. Crisis del software

Mitos del software

• Los de gestión
• Los del cliente, y
• Los del desarrollador


            Introducción a la reingeniería del software   D.R.©
Instituto Tecnológico de Tuxtepec


MITOS DE GESTION:

MITO:
• Tenemos ya un libro de estándares y
  procedimientos el cual proporciona todo
  lo que mi gente necesita saber.

REALIDAD:
• Existe pero ¿Se Usa?
• ¿Conocen los trabajadores su existencia?
• ¿Refleja lo actual en desarrollo de
  software? ¿Es completo?


                  Introducción a la reingeniería del software   D.R.©
Instituto Tecnológico de Tuxtepec


MITO:
• Mi gente dispone de las
  herramientas de desarrollo de
  software más avanzadas, después
  de todo, les compramos las
  computadoras más modernas.
REALIDAD:
• No solo la PC más grande y mejor
  te determina el software a realizar.
• Es más importante las herramientas
  de Software (CASE) que el
  hardware en sí para calidad y
  productividad de Software.

               Introducción a la reingeniería del software   D.R.©
Instituto Tecnológico de Tuxtepec

MITO:
• Si fallamos en la planificación,
  podemos        añadir          más
  programadores y adelantar el
  tiempo perdidos (Efecto de Horda
  Mongolia).
REALIDAD:
• El proceso de desarrollo no es una
  actividad mecánica.
• Tardará más la gente nueva en
  comunicarse     y    adaptarse  al
  proyecto.
• Se puede añadir gente de manera
  planificada y coordinada.

                 Introducción a la reingeniería del software   D.R.©
Instituto Tecnológico de Tuxtepec

MITOS DEL CLIENTE:
MITO:
• Una declaración general de los objetivos es
   suficiente para comenzar a escribir los
   programas- podemos dar los detalles más
   adelante.

REALIDAD:
• Una mala definición al inicio es la principal
  causa de trabajar en balde en software.
• Es esencial una descripción formal y detallada
  del ambiente de la información, funciones,
  comportamiento,       rendimiento,       interfaces,
  ligaduras del diseño y criterios de validación.


                      Introducción a la reingeniería del software   D.R.©
Instituto Tecnológico de Tuxtepec

MITO:
• Los requisitos del proyecto cambian
  continuamente, pero los cambios
  pueden acomodarse fácilmente, ya
  que el SW es flexible.

REALIDAD:
• Los requisitos cambian y el impacto
  del cambio varía según el momento
  del cambio:

   – Impacto 1x en Definición, 1.5 a 6x
     en desarrollo, 60 a 100x después
     de la entrega

                  Introducción a la reingeniería del software   D.R.©
Instituto Tecnológico de Tuxtepec


MITOS DEL DESARROLLADOR:

MITO:
• Una vez que escribimos el programa
  y hacemos que funcione, nuestro
  trabajo ha terminado.

REALIDAD:
• 60 a 80% de dedicación a un
  programa se realiza después de
  entregado al cliente.


                 Introducción a la reingeniería del software   D.R.©
Instituto Tecnológico de Tuxtepec

                                 MITO:
                                 • Hasta que no tenga el
                                   programa ejecutándose,
                                   realmente no tengo
                                   forma de comprobar su
                                   calidad.

                                 REALIDAD:
                                 • Desde el principio debe
                                   aplicarse la REVISIÓN
                                   técnica formal; con ella
                                   se     encuentran    los
                                   defectos / errores.


  Introducción a la reingeniería del software         D.R.©
Instituto Tecnológico de Tuxtepec

MITO:
• Lo único que se entrega al terminar
  el proyecto es el programa
  funcionando.

REALIDAD:
• El programa es sólo una parte de los
  elementos del software.
• La documentación proporciona el
  fundamento para un buen desarrollo.
• Proporcionar guías para la tarea de
  mantenimiento.

                  Introducción a la reingeniería del software   D.R.©
Instituto Tecnológico de Tuxtepec


De forma general, estos mitos son:

• Ya tenemos el mejor libro para construir
  software,
• Lo ultimo en computadora para
  desarrollar,
• Poco importa la planificación,
• Sólo basta conocer el problema de
  forma general,
• Si requiere un cambio el sistema el
  software fácilmente lo hará,
• Hasta que se ponga en uso el programa
  se ve la calidad de este,
• Sólo es necesario entregar el programa
  funcionando.


                    Introducción a la reingeniería del software   D.R.©
Instituto Tecnológico de Tuxtepec


                1.1.1. Crisis del software
          No hay crisis pero es un problema crónico
• Después de 35 años la llamada “crisis” del software persiste.
• Los problemas mas importantes siguen siendo los mismos.

   – Baja calidad (correcciones, usabilidad, mantenimiento, etc)
   – Sobre costos
   – Entregas tardías

• Las cosas no se entregan completamente terminadas
• No es una crisis pero es un problema crónico, con la cual la
  Ingeniería de Software tiene que lidiar.

                  Introducción a la reingeniería del software      D.R.©
Instituto Tecnológico de Tuxtepec

               Actividad 2
Video sobre los mitos del software.
           Valor 15%




     Introducción a la reingeniería del software   D.R.©
Instituto Tecnológico de Tuxtepec


                 Fuentes consultadas

1. http://www.angelfire.com/scifi/jzavalar/apuntes/IngSoftw
   are.html
2. http://eclases.tripod.com/id11.html
3. http://www.itlalaguna.edu.mx/academico/carreras/sistem
   as/ingsofware1/Unidad1.pdf
4. Dr. Francisco José García Peñalvo. Ingeniería del Software.
   http://ocw.usal.es/ensenanzas-tecnicas/ingenieria-del-
   software/contenidos/Tema1-IntroduccionalaIS-1pp.pdf
5. Sommerville, I. “Ingeniería del Software”. 7ª Edición,
   Addison-Wesley. 2005


               Introducción a la reingeniería del software   D.R.©

Más contenido relacionado

La actualidad más candente (16)

INFOSAN Tutorial python3 (1)
INFOSAN Tutorial python3 (1)INFOSAN Tutorial python3 (1)
INFOSAN Tutorial python3 (1)
 
Introducción a Phyton
Introducción a PhytonIntroducción a Phyton
Introducción a Phyton
 
El tutorial de pythonnnn
El tutorial de pythonnnnEl tutorial de pythonnnn
El tutorial de pythonnnn
 
Lenguaje phython
Lenguaje phythonLenguaje phython
Lenguaje phython
 
Python gui-mvc-pyqt
Python gui-mvc-pyqtPython gui-mvc-pyqt
Python gui-mvc-pyqt
 
FUNDAMENTOS DE PROGRAMACIÓN
FUNDAMENTOS DE PROGRAMACIÓNFUNDAMENTOS DE PROGRAMACIÓN
FUNDAMENTOS DE PROGRAMACIÓN
 
Eventos intropython
Eventos intropythonEventos intropython
Eventos intropython
 
Unidad 5
Unidad 5Unidad 5
Unidad 5
 
Tarea3
Tarea3 Tarea3
Tarea3
 
Lenguaje de programación
Lenguaje de programación Lenguaje de programación
Lenguaje de programación
 
Mini clase Intro Programación Python UTN Profesorado 2015
Mini clase Intro Programación Python UTN Profesorado 2015Mini clase Intro Programación Python UTN Profesorado 2015
Mini clase Intro Programación Python UTN Profesorado 2015
 
1 introduccion a_java_1er_parte
1 introduccion a_java_1er_parte1 introduccion a_java_1er_parte
1 introduccion a_java_1er_parte
 
Java Ago Dic07
Java Ago Dic07Java Ago Dic07
Java Ago Dic07
 
¿MATLAB? Yo uso Octave UPM
¿MATLAB? Yo uso Octave UPM¿MATLAB? Yo uso Octave UPM
¿MATLAB? Yo uso Octave UPM
 
Programac io n pdf
Programac io n pdfProgramac io n pdf
Programac io n pdf
 
Call ensamblador
Call ensamblador Call ensamblador
Call ensamblador
 

Destacado

Evidencia Sesión 5: Python
Evidencia Sesión 5: PythonEvidencia Sesión 5: Python
Evidencia Sesión 5: Pythonmaluacsa
 
Evidencias de sesión 4 Curso Python
Evidencias de  sesión 4 Curso PythonEvidencias de  sesión 4 Curso Python
Evidencias de sesión 4 Curso Pythonmaluacsa
 
Sesión 2: Ejemplos y prácticas en Python
Sesión 2: Ejemplos y prácticas en PythonSesión 2: Ejemplos y prácticas en Python
Sesión 2: Ejemplos y prácticas en Pythonmaluacsa
 
Tipos de datos numéricos en Python
Tipos de datos numéricos en PythonTipos de datos numéricos en Python
Tipos de datos numéricos en Pythonmaluacsa
 
Evidencias de la tercera sesión: Programación en Python
Evidencias de la tercera sesión: Programación en PythonEvidencias de la tercera sesión: Programación en Python
Evidencias de la tercera sesión: Programación en Pythonmaluacsa
 
Ingeniería inversa y reingeniería de software
Ingeniería inversa y reingeniería de softwareIngeniería inversa y reingeniería de software
Ingeniería inversa y reingeniería de softwareMoises Medina
 
Tarea 1 metodos y modelos de la reingenieria
Tarea 1 metodos y modelos de la reingenieriaTarea 1 metodos y modelos de la reingenieria
Tarea 1 metodos y modelos de la reingenieriaElizabeth Juarez
 
Evidencia2ml
Evidencia2mlEvidencia2ml
Evidencia2mlmaluacsa
 
Evidencia1ml
Evidencia1mlEvidencia1ml
Evidencia1mlmaluacsa
 
Evidencia1ml
Evidencia1mlEvidencia1ml
Evidencia1mlmaluacsa
 
Python ¿2 vs 3?
Python ¿2 vs 3?Python ¿2 vs 3?
Python ¿2 vs 3?Joel Rivera
 
Programación de Videojuegos con Python y Pilas (IX)
Programación de Videojuegos con Python y Pilas (IX)Programación de Videojuegos con Python y Pilas (IX)
Programación de Videojuegos con Python y Pilas (IX)Fernando Salamero
 

Destacado (20)

Web 2.0
Web 2.0Web 2.0
Web 2.0
 
Evidencia Sesión 5: Python
Evidencia Sesión 5: PythonEvidencia Sesión 5: Python
Evidencia Sesión 5: Python
 
Evidencias de sesión 4 Curso Python
Evidencias de  sesión 4 Curso PythonEvidencias de  sesión 4 Curso Python
Evidencias de sesión 4 Curso Python
 
Sesión 2: Ejemplos y prácticas en Python
Sesión 2: Ejemplos y prácticas en PythonSesión 2: Ejemplos y prácticas en Python
Sesión 2: Ejemplos y prácticas en Python
 
Tipos de datos numéricos en Python
Tipos de datos numéricos en PythonTipos de datos numéricos en Python
Tipos de datos numéricos en Python
 
Evidencias de la tercera sesión: Programación en Python
Evidencias de la tercera sesión: Programación en PythonEvidencias de la tercera sesión: Programación en Python
Evidencias de la tercera sesión: Programación en Python
 
Ingeniería inversa y reingeniería de software
Ingeniería inversa y reingeniería de softwareIngeniería inversa y reingeniería de software
Ingeniería inversa y reingeniería de software
 
Python para principiantes
Python para principiantesPython para principiantes
Python para principiantes
 
Swreng
SwrengSwreng
Swreng
 
Tarea 1 metodos y modelos de la reingenieria
Tarea 1 metodos y modelos de la reingenieriaTarea 1 metodos y modelos de la reingenieria
Tarea 1 metodos y modelos de la reingenieria
 
Tablacqa2
Tablacqa2Tablacqa2
Tablacqa2
 
Evidencia2ml
Evidencia2mlEvidencia2ml
Evidencia2ml
 
Evidencia1ml
Evidencia1mlEvidencia1ml
Evidencia1ml
 
Evidencia1ml
Evidencia1mlEvidencia1ml
Evidencia1ml
 
Tabla cqa
Tabla cqaTabla cqa
Tabla cqa
 
Tablacqa3
Tablacqa3Tablacqa3
Tablacqa3
 
Python + Ciencia = ♥
Python + Ciencia = ♥Python + Ciencia = ♥
Python + Ciencia = ♥
 
Python ¿2 vs 3?
Python ¿2 vs 3?Python ¿2 vs 3?
Python ¿2 vs 3?
 
Introducción a Python
Introducción a PythonIntroducción a Python
Introducción a Python
 
Programación de Videojuegos con Python y Pilas (IX)
Programación de Videojuegos con Python y Pilas (IX)Programación de Videojuegos con Python y Pilas (IX)
Programación de Videojuegos con Python y Pilas (IX)
 

Similar a Unidad 1

Trabajo diapositiva Software por Jhonatan Ruiz
Trabajo diapositiva  Software por Jhonatan RuizTrabajo diapositiva  Software por Jhonatan Ruiz
Trabajo diapositiva Software por Jhonatan Ruizjhonatanalex
 
Trabajo diapositiva modulo 3 de jhonatan
Trabajo diapositiva modulo 3 de jhonatanTrabajo diapositiva modulo 3 de jhonatan
Trabajo diapositiva modulo 3 de jhonatanjhonatanalex
 
Trabajo diapositiva modulo 3 de josue
Trabajo diapositiva modulo 3 de josueTrabajo diapositiva modulo 3 de josue
Trabajo diapositiva modulo 3 de josueJosue Zelaya
 
SeccióN De TéCnicas De IngenieríA De Software(2007)
SeccióN De TéCnicas  De IngenieríA De Software(2007)SeccióN De TéCnicas  De IngenieríA De Software(2007)
SeccióN De TéCnicas De IngenieríA De Software(2007)denny osael lopez medina
 
Trabajo de analisis y diseño
Trabajo de analisis y diseñoTrabajo de analisis y diseño
Trabajo de analisis y diseñomary taipe
 
Diapositivas guia 1 de software.melissa burgos
Diapositivas guia 1 de software.melissa burgosDiapositivas guia 1 de software.melissa burgos
Diapositivas guia 1 de software.melissa burgosMelissa Burgos
 
Tarea(1)
Tarea(1)Tarea(1)
Tarea(1)daniel
 
Evolucion de la Ingenieria de Software
Evolucion de la Ingenieria de SoftwareEvolucion de la Ingenieria de Software
Evolucion de la Ingenieria de SoftwareMarvin Romero
 
Frankestaba.ing (2)
Frankestaba.ing (2)Frankestaba.ing (2)
Frankestaba.ing (2)ID Z
 
ing. de software
ing. de softwareing. de software
ing. de softwareellizabp_22
 
Tecnicas en ing.de software
Tecnicas en ing.de softwareTecnicas en ing.de software
Tecnicas en ing.de softwarestephanierivas
 

Similar a Unidad 1 (20)

Introducción de Ingeniería de Software
Introducción de Ingeniería de SoftwareIntroducción de Ingeniería de Software
Introducción de Ingeniería de Software
 
Trabajo diapositiva Software por Jhonatan Ruiz
Trabajo diapositiva  Software por Jhonatan RuizTrabajo diapositiva  Software por Jhonatan Ruiz
Trabajo diapositiva Software por Jhonatan Ruiz
 
Trabajo diapositiva modulo 3 de jhonatan
Trabajo diapositiva modulo 3 de jhonatanTrabajo diapositiva modulo 3 de jhonatan
Trabajo diapositiva modulo 3 de jhonatan
 
Trabajo diapositiva modulo 3 de josue
Trabajo diapositiva modulo 3 de josueTrabajo diapositiva modulo 3 de josue
Trabajo diapositiva modulo 3 de josue
 
SeccióN De TéCnicas De IngenieríA De Software(2007)
SeccióN De TéCnicas  De IngenieríA De Software(2007)SeccióN De TéCnicas  De IngenieríA De Software(2007)
SeccióN De TéCnicas De IngenieríA De Software(2007)
 
Trabajo de analisis y diseño
Trabajo de analisis y diseñoTrabajo de analisis y diseño
Trabajo de analisis y diseño
 
Diapositivas guia 1 de software.melissa burgos
Diapositivas guia 1 de software.melissa burgosDiapositivas guia 1 de software.melissa burgos
Diapositivas guia 1 de software.melissa burgos
 
Tarea(1)
Tarea(1)Tarea(1)
Tarea(1)
 
Evolucion de la Ingenieria de Software
Evolucion de la Ingenieria de SoftwareEvolucion de la Ingenieria de Software
Evolucion de la Ingenieria de Software
 
1. curso unal cap1
1. curso unal cap11. curso unal cap1
1. curso unal cap1
 
1. curso unal cap1
1. curso unal cap11. curso unal cap1
1. curso unal cap1
 
Proceso desarrollo software
Proceso desarrollo softwareProceso desarrollo software
Proceso desarrollo software
 
Trabajo de desarrollo desoftware
Trabajo de desarrollo desoftwareTrabajo de desarrollo desoftware
Trabajo de desarrollo desoftware
 
Frankestaba.ing (2)
Frankestaba.ing (2)Frankestaba.ing (2)
Frankestaba.ing (2)
 
Ingenieria del software pfd
Ingenieria del software pfdIngenieria del software pfd
Ingenieria del software pfd
 
Diapox
DiapoxDiapox
Diapox
 
Diapox
DiapoxDiapox
Diapox
 
Exposicion 3
Exposicion 3Exposicion 3
Exposicion 3
 
ing. de software
ing. de softwareing. de software
ing. de software
 
Tecnicas en ing.de software
Tecnicas en ing.de softwareTecnicas en ing.de software
Tecnicas en ing.de software
 

Unidad 1

  • 1. Instituto Tecnológico de Tuxtepec Reingeniería del software UNIDAD 1 Introducción a la reingeniería del software Presentadora: M.C. María Luisa Acosta Sanjuán Introducción a la reingeniería del software D.R.©
  • 2. Instituto Tecnológico de Tuxtepec Objetivo general de la asignatura • Reflexionar sobre situaciones reales en torno a la construcción de software y cómo afrontarlas para garantizar la calidad del software desarrollado, entendiendo que un software de calidad, no tan sólo hace lo que tiene que hacer, sino que también se tiene que desarrollar en el tiempo y presupuesto establecidos, dando total satisfacción al cliente. Introducción a la reingeniería del software D.R.©
  • 3. Instituto Tecnológico de Tuxtepec UNIDAD 1. Introducción a la Reingeniería del software. • OBJETIVO EDUCACIONAL • El estudiante Identificará la función de la reingeniería del software y ¿el porqué de su utilización?, sus costos y beneficios. Introducción a la reingeniería del software D.R.©
  • 4. Instituto Tecnológico de Tuxtepec UNIDAD 1. Introducción a la Reingeniería del software. 1.1 Definición de reingeniería del software. 1.1.1 Crisis del software 1.2 Sistemas de información heredados 1.2.1 ¿Por qué aplicar la reingeniería del software? 1.2.2 ¿Qué implica la reingeniería? 1.2.3 Herramienta que utiliza la reingeniería 1.2.4 ¿Cómo se hace una reingeniería? 1.3 Costes y beneficios de la reingeniería 1.3.1 Justificación del proyecto de reingeniería. 1.3.2 Análisis de la cartera de aplicaciones. 1.3.3 Estimación de costes. 1.3.4 Análisis de costos/beneficios. Introducción a la reingeniería del software D.R.©
  • 5. Instituto Tecnológico de Tuxtepec Criterios de Evaluación CRITERIOS VALOR Asistencia 5% Ensayo sobre la reingeniería del software: función y beneficio de 25% la reingeniería del software Video sobre los mitos del software 15% Anteproyecto de reingeniería 25% Elaboración del blog 10% Examen escrito 20% Introducción a la reingeniería del software D.R.©
  • 6. Instituto Tecnológico de Tuxtepec 1.1 Definición de reingeniería del software. • La reingeniería del software es la tecnología que surge de aplicar las técnicas de Ciencias de la computación y matemática sofisticada al análisis automatizado y modificación del código fuente de programas, para abreviarlo y hacerlo más eficiente. Introducción a la reingeniería del software D.R.©
  • 7. Instituto Tecnológico de Tuxtepec 1.1 Definición de reingeniería del software. • La Reingeniería consiste en la automatización del mantenimiento del software. • Es el proceso de examinar sistemas de software existentes y/o modificarlos con ayuda de herramientas de forma automática o semi-automática. • Analiza sistemas existentes para entender su diseño y desarrollar estrategias para extraer y reutilizar componentes. Implica la rehabilitación y modernización de los componentes. Introducción a la reingeniería del software D.R.©
  • 8. Instituto Tecnológico de Tuxtepec 1.1 Definición de reingeniería del software. • La reingeniería del software se refiere a la reimplementación de los sistemas heredados para hacerlos más mantenibles. • La reingeniería puede implicar redocumentar el sistema, organizar y reestructurar el sistema, traducir el sistema a un lenguaje de programación más moderno, y modificar y actualizar la estructura y valores de los datos del sistema. (Sommerville) Introducción a la reingeniería del software D.R.©
  • 9. Instituto Tecnológico de Tuxtepec 1.1 Definición de reingeniería del software. • Hacer reingeniería de un sistema de software tiene dos ventajas clave sobre aproximaciones más radicales a la evolución del sistema: • Riesgo reducido. • Coste reducido. Introducción a la reingeniería del software D.R.©
  • 10. Instituto Tecnológico de Tuxtepec 1.1 Definición de reingeniería del software. Riesgo reducido. • Existe un alto riesgo en volver a desarrollar software crítico para los negocios. • Pueden cometerse errores en la especificación, o puede haber problemas en el desarrollo. • Los retrasos en la introducción del nuevo software pueden significar pérdidas en el negocio e incurrir en costes adicionales. Introducción a la reingeniería del software D.R.©
  • 11. Instituto Tecnológico de Tuxtepec 1.1 Definición de reingeniería del software. Coste reducido. • El coste de hacer reingeniería es significativamente menor que el coste de desarrollar nuevo software Introducción a la reingeniería del software D.R.©
  • 12. Instituto Tecnológico de Tuxtepec ACTIVIDAD 1 • Ensayo sobre la reingeniería del software: función y beneficio de la reingeniería del software. Valor 25% Introducción a la reingeniería del software D.R.©
  • 13. Instituto Tecnológico de Tuxtepec 1.1.1 Crisis del software. • El término “crisis del software” se acuñó en 1968, en la primera conferencia organizada por la OTAN sobre desarrollo de software y con él se etiquetaron los problemas que surgían en el desarrollo de sistemas de software. Introducción a la reingeniería del software D.R.©
  • 14. Instituto Tecnológico de Tuxtepec 1.1.1 Crisis del software. • El término se adjudica a F. L. Bauer, aunque previamente había sido utilizado por Edsger Dijkstra en su obra The Humble Programmer. • Básicamente, la crisis del software se refiere a la dificultad para escribir programas libres de defectos, fácilmente comprensibles, y que sean verificables. Introducción a la reingeniería del software D.R.©
  • 15. Instituto Tecnológico de Tuxtepec 1.1.1. Crisis del software Algunos “síntomas” que indican que el software se encuentra en un periodo de crisis son: • Baja calidad del software. • Tiempo y presupuesto excedido. • Confiabilidad cuestionable. • Altos requerimientos de personal para desarrollo y mantenimiento. Introducción a la reingeniería del software D.R.©
  • 16. Instituto Tecnológico de Tuxtepec 1.1.1. Crisis del software … Síntomas: • A menudo el software es imposible de mantener, carece de trasparencia y no se puede modificar ni mejorar. • Falta de adaptabilidad • Escasa portabilidad • Carencia de documentación. Introducción a la reingeniería del software D.R.©
  • 17. Instituto Tecnológico de Tuxtepec 1.1.1. Crisis del software Posibles causas de la crisis del software: • Proyectos gestionados con un sobre-presupuesto. • Proyectos gestionados con sobre tiempo. • Software de baja calidad. • El software a menudo no satisfacía los requerimientos deseados. • Los proyectos fueron inmanejables, con un código difícil de mantener Introducción a la reingeniería del software D.R.©
  • 18. Instituto Tecnológico de Tuxtepec 1.1.1. Crisis del software Mitos del software • Los de gestión • Los del cliente, y • Los del desarrollador Introducción a la reingeniería del software D.R.©
  • 19. Instituto Tecnológico de Tuxtepec MITOS DE GESTION: MITO: • Tenemos ya un libro de estándares y procedimientos el cual proporciona todo lo que mi gente necesita saber. REALIDAD: • Existe pero ¿Se Usa? • ¿Conocen los trabajadores su existencia? • ¿Refleja lo actual en desarrollo de software? ¿Es completo? Introducción a la reingeniería del software D.R.©
  • 20. Instituto Tecnológico de Tuxtepec MITO: • Mi gente dispone de las herramientas de desarrollo de software más avanzadas, después de todo, les compramos las computadoras más modernas. REALIDAD: • No solo la PC más grande y mejor te determina el software a realizar. • Es más importante las herramientas de Software (CASE) que el hardware en sí para calidad y productividad de Software. Introducción a la reingeniería del software D.R.©
  • 21. Instituto Tecnológico de Tuxtepec MITO: • Si fallamos en la planificación, podemos añadir más programadores y adelantar el tiempo perdidos (Efecto de Horda Mongolia). REALIDAD: • El proceso de desarrollo no es una actividad mecánica. • Tardará más la gente nueva en comunicarse y adaptarse al proyecto. • Se puede añadir gente de manera planificada y coordinada. Introducción a la reingeniería del software D.R.©
  • 22. Instituto Tecnológico de Tuxtepec MITOS DEL CLIENTE: MITO: • Una declaración general de los objetivos es suficiente para comenzar a escribir los programas- podemos dar los detalles más adelante. REALIDAD: • Una mala definición al inicio es la principal causa de trabajar en balde en software. • Es esencial una descripción formal y detallada del ambiente de la información, funciones, comportamiento, rendimiento, interfaces, ligaduras del diseño y criterios de validación. Introducción a la reingeniería del software D.R.©
  • 23. Instituto Tecnológico de Tuxtepec MITO: • Los requisitos del proyecto cambian continuamente, pero los cambios pueden acomodarse fácilmente, ya que el SW es flexible. REALIDAD: • Los requisitos cambian y el impacto del cambio varía según el momento del cambio: – Impacto 1x en Definición, 1.5 a 6x en desarrollo, 60 a 100x después de la entrega Introducción a la reingeniería del software D.R.©
  • 24. Instituto Tecnológico de Tuxtepec MITOS DEL DESARROLLADOR: MITO: • Una vez que escribimos el programa y hacemos que funcione, nuestro trabajo ha terminado. REALIDAD: • 60 a 80% de dedicación a un programa se realiza después de entregado al cliente. Introducción a la reingeniería del software D.R.©
  • 25. Instituto Tecnológico de Tuxtepec MITO: • Hasta que no tenga el programa ejecutándose, realmente no tengo forma de comprobar su calidad. REALIDAD: • Desde el principio debe aplicarse la REVISIÓN técnica formal; con ella se encuentran los defectos / errores. Introducción a la reingeniería del software D.R.©
  • 26. Instituto Tecnológico de Tuxtepec MITO: • Lo único que se entrega al terminar el proyecto es el programa funcionando. REALIDAD: • El programa es sólo una parte de los elementos del software. • La documentación proporciona el fundamento para un buen desarrollo. • Proporcionar guías para la tarea de mantenimiento. Introducción a la reingeniería del software D.R.©
  • 27. Instituto Tecnológico de Tuxtepec De forma general, estos mitos son: • Ya tenemos el mejor libro para construir software, • Lo ultimo en computadora para desarrollar, • Poco importa la planificación, • Sólo basta conocer el problema de forma general, • Si requiere un cambio el sistema el software fácilmente lo hará, • Hasta que se ponga en uso el programa se ve la calidad de este, • Sólo es necesario entregar el programa funcionando. Introducción a la reingeniería del software D.R.©
  • 28. Instituto Tecnológico de Tuxtepec 1.1.1. Crisis del software No hay crisis pero es un problema crónico • Después de 35 años la llamada “crisis” del software persiste. • Los problemas mas importantes siguen siendo los mismos. – Baja calidad (correcciones, usabilidad, mantenimiento, etc) – Sobre costos – Entregas tardías • Las cosas no se entregan completamente terminadas • No es una crisis pero es un problema crónico, con la cual la Ingeniería de Software tiene que lidiar. Introducción a la reingeniería del software D.R.©
  • 29. Instituto Tecnológico de Tuxtepec Actividad 2 Video sobre los mitos del software. Valor 15% Introducción a la reingeniería del software D.R.©
  • 30. Instituto Tecnológico de Tuxtepec Fuentes consultadas 1. http://www.angelfire.com/scifi/jzavalar/apuntes/IngSoftw are.html 2. http://eclases.tripod.com/id11.html 3. http://www.itlalaguna.edu.mx/academico/carreras/sistem as/ingsofware1/Unidad1.pdf 4. Dr. Francisco José García Peñalvo. Ingeniería del Software. http://ocw.usal.es/ensenanzas-tecnicas/ingenieria-del- software/contenidos/Tema1-IntroduccionalaIS-1pp.pdf 5. Sommerville, I. “Ingeniería del Software”. 7ª Edición, Addison-Wesley. 2005 Introducción a la reingeniería del software D.R.©