SlideShare una empresa de Scribd logo
1 de 29
EVOLUCIÓN DEL SOFTWARE



Carlos R. Adames B.
Programador HTML5
@crabalex
DINÁMICA DE EVOLUCIÓN
DE LOS PROGRAMAS
LAS LEYES DE LEHMAN


      Cambio continuado
      Un programa que se usa en un entorno real
      necesariamente debe cambiar o se volverá
      progresivamente menos útil en ese entorno.
Complejidad creciente
A medida que un programa en evolución
cambia, su estructura tiende a ser cada
vez más compleja.
Evolución prolongada del programa
Sugiere que los grandes sistemas tienen su
propia dinámica que se establece en una etapa
temprana en el proceso de desarrollo.
Estabilidad organizacional
Sugiere que la mayoría de los proyectos de
programación grandes trabajan en lo que se
denomina un estado saturado.
Conservación de la familiaridad
Durante el tiempo de vida de un sistema, el
cambio incremental en cada entrega es
aproximadamente constante.
Crecimiento continuado
La funcionalidad ofrecida por los sistemas
tiene que crecer continuamente para
mantener la satisfacción de los usuarios.
Decremento de la calidad
La calidad de los sistemas comenzara a
disminuir a menos que dichos sistemas se
adapten a los cambios en su entorno.
Realimentación del sistema
Es necesaria para lograr una mejora
significativa del producto.
MANTENIMIENTO DEL SOFTWARE
Es el proceso general de cambiar un sistema después
de que éste ha sido entregado.
TIPOS DE MANTENIMIENTO

• Correctivo: Se utiliza generalmente para referirse al
  mantenimiento para reparación de defectos.
• Adaptativo: Significa adaptar el software a nuevos
  requerimientos.
• Perfectivo: Significa mantener la funcionalidad del
  sistema, pero mejorando su estructura y su rendimiento.
Factores que conducen a costes de mantenimiento
más elevados:

1. Estabilidad del equipo. Después de entregar un
   sistema, es normal que el equipo de desarrollo se disuelva
   y la gente trabaje en nuevos proyectos.

2. Responsabilidad contractual. El contrato para mantener
   un sistema normalmente está separado del contrato para
   desarrollar el sistema.
3. Habilidades del personal. El personal de mantenimiento
   a menudo no tiene experiencia y no está familiarizado
   con el dominio de la aplicación.

4. Edad y estructura del programa. A medida que pasa el
   tiempo, la estructura de los programas tiende a
   degradarse con los cambios.
PREDICCIÓN DEL MANTENIMIENTO
Se debería intentar predecir qué cambios del sistema son probables
y qué partes del sistema son probablemente las más difíciles de
mantener.
PROCESOS DE EVOLUCIÓN
• Tipo de software a mantener
• Los procesos de desarrollo utilizados
• El personal implicado en el proceso
Propuestas de cambio:
• Requerimientos existentes que no han sido
  implementados en el sistema entregado.
• Peticiones para nuevos requerimientos y reparaciones de
  errores por parte de los stakeholders del sistema.
• Nuevas ideas y propuestas para mejoras en el software
  por parte del equipo de desarrollo del sistema.
PROCESO DE EVOLUCIÓN
                       Los procesos de identificación
                       de cambios y evolución del
                       sistema son cíclicos y continúan
                       durante toda la vida del sistema.
PROCESOS DE EVOLUCIÓN
Incluyen las actividades fundamentales de análisis de cambios,
planificación de entregas, implementación del sistema y entrega de
un sistema a los clientes.
IMPLEMENTACIÓN DE LOS CAMBIOS
1. Si ocurre un defecto serio en el sistema que tenga que ser
   reparado para permitir la continuación del funcionamiento
   normal.

2. Si los cambios en el entorno del sistema operativo tienen efectos
   inesperados que impiden el funcionamiento normal.

3. Si hay cambios no anticipados en las empresas que utilizan el
   sistema.
REINGENIERÍA DE SISTEMAS
La reingeniería del software se refiere a la reimplementación de los
sistemas heredados para hacerlos más mantenibles.
REINGENIERÍA DE SISTEMAS
Puede implicar:
• Redocumentar el sistema.
• Organizar y reestructurar el sistema.
• Traducir el sistema a un lenguaje de programación más
  moderno.
• Modificar y actualizar la estructura y valores de los datos
  del sistema.
REINGENIERÍA DE SISTEMAS
Ventajas:
• Riesgo reducido. Existe un alto riesgo en volver a
  desarrollar software crítico para los negocios.

• Coste reducido. El coste de hacer reingeniería es
  significativamente menor que el coste de desarrollar
  nuevo software.
REINGENIERÍA DE SISTEMAS
Desventajas:
• Existen límites prácticos a la extensión del sistema que
  puede ser mejorada mediante reingeniería.
• No es posible convertir un sistema diseñado utilizando una
  aproximación funcional en un sistema orientado a objetos.
• Los cambios arquitectónicos mayores no pueden
  realizarse de forma automática, implica costes adicionales.
REINGENIERÍA DE SISTEMAS




La distinción crítica entre reingeniería y nuevo desarrollo software
es el punto de partida del desarrollo.
EVOLUCIÓN DE SISTEMAS HEREDADOS
Opciones estratégicas:
1.Desechar completamente el sistema. Esta opción debería
elegirse cuando el sistema no constituye una contribución
efectiva para los procesos de negocio.

2.Dejar el sistema sin cambios y continuar con un
mantenimiento regular. Esta opción debería elegirse cuando
el sistema todavía es necesario.
3.Hacer reingeniería del sistema para mejorar su
mantenibilidad. Esta opción debería elegirse cuando la
calidad del sistema se ha degradado por los cambios
continuos .

4.Reemplazar todo o parte del sistema con un nuevo
sistema. Esta opción debería elegirse cuando otros
factores, como un nuevo hardware, implican que el sistema
antiguo no puede continuar en funcionamiento.
EVOLUCIÓN DEL SOFTWARE
             Espacio para: preguntas, dudas, aclarando,
                       aportaciones y plugins


Carlos R. Adames B.
Programador HTML5
@crabalex

Más contenido relacionado

La actualidad más candente

Refactorización (EN ESPANOL)
Refactorización (EN ESPANOL)Refactorización (EN ESPANOL)
Refactorización (EN ESPANOL)Rodrigo Branas
 
Agile software development and extreme Programming
Agile software development and extreme Programming  Agile software development and extreme Programming
Agile software development and extreme Programming Fatemeh Karimi
 
What is software engineering
What is software engineeringWhat is software engineering
What is software engineeringJennifer Polack
 
Planificacion de proyecto de software
Planificacion de proyecto de softwarePlanificacion de proyecto de software
Planificacion de proyecto de softwareGeorgy Jose Sanchez
 
Ch4-Software Engineering 9
Ch4-Software Engineering 9Ch4-Software Engineering 9
Ch4-Software Engineering 9Ian Sommerville
 
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
 
component based development model
component based development modelcomponent based development model
component based development modelMuneeba Qamar
 
Conceptos togaf
Conceptos togafConceptos togaf
Conceptos togafCarlos
 
MODELO DE PROCESOS DEL SOFTWARE
MODELO DE PROCESOS DEL SOFTWAREMODELO DE PROCESOS DEL SOFTWARE
MODELO DE PROCESOS DEL SOFTWAREMicky Jerzy
 
Software Engineering - Ch4
Software Engineering - Ch4Software Engineering - Ch4
Software Engineering - Ch4Siddharth Ayer
 

La actualidad más candente (20)

Refactorización (EN ESPANOL)
Refactorización (EN ESPANOL)Refactorización (EN ESPANOL)
Refactorización (EN ESPANOL)
 
Agile software development and extreme Programming
Agile software development and extreme Programming  Agile software development and extreme Programming
Agile software development and extreme Programming
 
What is software engineering
What is software engineeringWhat is software engineering
What is software engineering
 
Planificacion de proyecto de software
Planificacion de proyecto de softwarePlanificacion de proyecto de software
Planificacion de proyecto de software
 
Metodología agile scrum
Metodología agile scrum Metodología agile scrum
Metodología agile scrum
 
Proyecto de reingenieria de software
Proyecto de reingenieria  de softwareProyecto de reingenieria  de software
Proyecto de reingenieria de software
 
Metodología RUP
Metodología RUPMetodología RUP
Metodología RUP
 
Ch4-Software Engineering 9
Ch4-Software Engineering 9Ch4-Software Engineering 9
Ch4-Software Engineering 9
 
Factores de calidad del software
Factores de calidad del softwareFactores de calidad del software
Factores de calidad del software
 
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
 
Ingeniería de software modelo incremental
Ingeniería de software  modelo incrementalIngeniería de software  modelo incremental
Ingeniería de software modelo incremental
 
Ch23 project planning
Ch23 project planningCh23 project planning
Ch23 project planning
 
component based development model
component based development modelcomponent based development model
component based development model
 
Conceptos togaf
Conceptos togafConceptos togaf
Conceptos togaf
 
Software Evolution
Software EvolutionSoftware Evolution
Software Evolution
 
Programación Extrema (XP)
Programación Extrema (XP)Programación Extrema (XP)
Programación Extrema (XP)
 
MODELO DE PROCESOS DEL SOFTWARE
MODELO DE PROCESOS DEL SOFTWAREMODELO DE PROCESOS DEL SOFTWARE
MODELO DE PROCESOS DEL SOFTWARE
 
Requisitos no Funcionales
Requisitos no FuncionalesRequisitos no Funcionales
Requisitos no Funcionales
 
Cmmi y moprosoft
Cmmi y moprosoftCmmi y moprosoft
Cmmi y moprosoft
 
Software Engineering - Ch4
Software Engineering - Ch4Software Engineering - Ch4
Software Engineering - Ch4
 

Destacado

EvolucióN Del Software
EvolucióN Del SoftwareEvolucióN Del Software
EvolucióN Del Softwareadrianamoni
 
Historia y evolucion del software
Historia y evolucion del softwareHistoria y evolucion del software
Historia y evolucion del softwareMaura Jß
 
Las siete grandes categorias del software
Las siete grandes categorias del softwareLas siete grandes categorias del software
Las siete grandes categorias del softwareSandyCaceres
 
Categorías de software
Categorías de softwareCategorías de software
Categorías de softwarekitzia3
 
Mapa conceptual de Software
Mapa conceptual de SoftwareMapa conceptual de Software
Mapa conceptual de Softwareguestf8a5fa
 
Historia y evolucion del software clase 2
Historia y evolucion del software clase 2Historia y evolucion del software clase 2
Historia y evolucion del software clase 2Claudio Arriagada
 
como ha ido evolucionando el software...
como ha ido evolucionando el software... como ha ido evolucionando el software...
como ha ido evolucionando el software... anyermil
 
Sistemas socio – técnicos
Sistemas socio – técnicosSistemas socio – técnicos
Sistemas socio – técnicosjmpov441
 
Evolucion de la Ingenieria de Software
Evolucion de la Ingenieria de SoftwareEvolucion de la Ingenieria de Software
Evolucion de la Ingenieria de SoftwareMarvin Romero
 
Origen del software
Origen del softwareOrigen del software
Origen del softwareanthony1523
 

Destacado (13)

Evolucion del Software
Evolucion del SoftwareEvolucion del Software
Evolucion del Software
 
EvolucióN Del Software
EvolucióN Del SoftwareEvolucióN Del Software
EvolucióN Del Software
 
Evolucion software - Ing SW
Evolucion software - Ing SWEvolucion software - Ing SW
Evolucion software - Ing SW
 
Historia y evolucion del software
Historia y evolucion del softwareHistoria y evolucion del software
Historia y evolucion del software
 
Las siete grandes categorias del software
Las siete grandes categorias del softwareLas siete grandes categorias del software
Las siete grandes categorias del software
 
Categorías de software
Categorías de softwareCategorías de software
Categorías de software
 
Categorias del Software
Categorias del SoftwareCategorias del Software
Categorias del Software
 
Mapa conceptual de Software
Mapa conceptual de SoftwareMapa conceptual de Software
Mapa conceptual de Software
 
Historia y evolucion del software clase 2
Historia y evolucion del software clase 2Historia y evolucion del software clase 2
Historia y evolucion del software clase 2
 
como ha ido evolucionando el software...
como ha ido evolucionando el software... como ha ido evolucionando el software...
como ha ido evolucionando el software...
 
Sistemas socio – técnicos
Sistemas socio – técnicosSistemas socio – técnicos
Sistemas socio – técnicos
 
Evolucion de la Ingenieria de Software
Evolucion de la Ingenieria de SoftwareEvolucion de la Ingenieria de Software
Evolucion de la Ingenieria de Software
 
Origen del software
Origen del softwareOrigen del software
Origen del software
 

Similar a Evolución y mantenimiento del software

7. cambios en el software y mejora de procesos
7. cambios en el software y mejora de procesos7. cambios en el software y mejora de procesos
7. cambios en el software y mejora de procesossilviamap64
 
Mantenimieto de Software
Mantenimieto de SoftwareMantenimieto de Software
Mantenimieto de SoftwareJair Barzola
 
Mantenimiento de-software-v6 abad-esquenleyner
Mantenimiento de-software-v6 abad-esquenleynerMantenimiento de-software-v6 abad-esquenleyner
Mantenimiento de-software-v6 abad-esquenleynerLeyner Adan Abad Esquen
 
TECNICAS DE MANTENIMIENTO DE SW.pptx
TECNICAS DE MANTENIMIENTO DE SW.pptxTECNICAS DE MANTENIMIENTO DE SW.pptx
TECNICAS DE MANTENIMIENTO DE SW.pptxNestorBenitez22
 
Unidad 4 Gerencia
Unidad 4 GerenciaUnidad 4 Gerencia
Unidad 4 GerenciaEliana O.
 
Desarrollo ágil de software
Desarrollo ágil de softwareDesarrollo ágil de software
Desarrollo ágil de softwareAl Ex
 
Cuadro comparativo
Cuadro comparativoCuadro comparativo
Cuadro comparativojorge paez
 
T2 infoiii-s
T2 infoiii-sT2 infoiii-s
T2 infoiii-shome
 
Manteniminto correctivo de software
Manteniminto correctivo de softwareManteniminto correctivo de software
Manteniminto correctivo de softwareLalo Gomez
 
Desarrollo de aplicaciones web en el entorno servidor
Desarrollo de aplicaciones web en el entorno servidorDesarrollo de aplicaciones web en el entorno servidor
Desarrollo de aplicaciones web en el entorno servidorJomicast
 
Ciclo vida DESARROLLO DE SOFTWARE
Ciclo vida DESARROLLO DE SOFTWARECiclo vida DESARROLLO DE SOFTWARE
Ciclo vida DESARROLLO DE SOFTWAREJ Martin Luzon
 

Similar a Evolución y mantenimiento del software (20)

7. cambios en el software y mejora de procesos
7. cambios en el software y mejora de procesos7. cambios en el software y mejora de procesos
7. cambios en el software y mejora de procesos
 
7. Mantenimiento de Software
7. Mantenimiento de Software7. Mantenimiento de Software
7. Mantenimiento de Software
 
Mantenimieto de Software
Mantenimieto de SoftwareMantenimieto de Software
Mantenimieto de Software
 
Mantenimiento de-software-v6 abad-esquenleyner
Mantenimiento de-software-v6 abad-esquenleynerMantenimiento de-software-v6 abad-esquenleyner
Mantenimiento de-software-v6 abad-esquenleyner
 
manual de compra de motos
manual de compra de motos manual de compra de motos
manual de compra de motos
 
Modelos de desarrollo rápido de software
Modelos de desarrollo rápido de softwareModelos de desarrollo rápido de software
Modelos de desarrollo rápido de software
 
TECNICAS DE MANTENIMIENTO DE SW.pptx
TECNICAS DE MANTENIMIENTO DE SW.pptxTECNICAS DE MANTENIMIENTO DE SW.pptx
TECNICAS DE MANTENIMIENTO DE SW.pptx
 
Exposicion 3
Exposicion 3Exposicion 3
Exposicion 3
 
Unidad 4 Gerencia
Unidad 4 GerenciaUnidad 4 Gerencia
Unidad 4 Gerencia
 
Modelos evolutivos. incremental y espiral
Modelos evolutivos. incremental y espiralModelos evolutivos. incremental y espiral
Modelos evolutivos. incremental y espiral
 
Desarrollo ágil de software
Desarrollo ágil de softwareDesarrollo ágil de software
Desarrollo ágil de software
 
Cuadro comparativo
Cuadro comparativoCuadro comparativo
Cuadro comparativo
 
T2 infoiii-s
T2 infoiii-sT2 infoiii-s
T2 infoiii-s
 
T2 infoiii-s
T2 infoiii-sT2 infoiii-s
T2 infoiii-s
 
Manteniminto correctivo de software
Manteniminto correctivo de softwareManteniminto correctivo de software
Manteniminto correctivo de software
 
Continuous delivery
Continuous deliveryContinuous delivery
Continuous delivery
 
Mantenimiento de software (síntesis)
Mantenimiento de software (síntesis)Mantenimiento de software (síntesis)
Mantenimiento de software (síntesis)
 
Desarrollo de aplicaciones web en el entorno servidor
Desarrollo de aplicaciones web en el entorno servidorDesarrollo de aplicaciones web en el entorno servidor
Desarrollo de aplicaciones web en el entorno servidor
 
Mantenimiento y evolucion del software
Mantenimiento y evolucion del softwareMantenimiento y evolucion del software
Mantenimiento y evolucion del software
 
Ciclo vida DESARROLLO DE SOFTWARE
Ciclo vida DESARROLLO DE SOFTWARECiclo vida DESARROLLO DE SOFTWARE
Ciclo vida DESARROLLO DE SOFTWARE
 

Más de Carlos R. Adames B.

Más de Carlos R. Adames B. (7)

Practica - Motor de busqueda
Practica - Motor de busquedaPractica - Motor de busqueda
Practica - Motor de busqueda
 
Conceptos de internet
Conceptos de internetConceptos de internet
Conceptos de internet
 
Manejo de internet
Manejo de internetManejo de internet
Manejo de internet
 
ISO 20000 + ITIL
ISO 20000 + ITIL ISO 20000 + ITIL
ISO 20000 + ITIL
 
La Auditoría Física
La Auditoría FísicaLa Auditoría Física
La Auditoría Física
 
Metodologias de control interno, seguridad y auditoria informatica
Metodologias de control interno, seguridad y auditoria informaticaMetodologias de control interno, seguridad y auditoria informatica
Metodologias de control interno, seguridad y auditoria informatica
 
Adquisición de software y hardware
Adquisición de software y hardwareAdquisición de software y hardware
Adquisición de software y hardware
 

Evolución y mantenimiento del software

  • 1. EVOLUCIÓN DEL SOFTWARE Carlos R. Adames B. Programador HTML5 @crabalex
  • 3. LAS LEYES DE LEHMAN Cambio continuado Un programa que se usa en un entorno real necesariamente debe cambiar o se volverá progresivamente menos útil en ese entorno.
  • 4. Complejidad creciente A medida que un programa en evolución cambia, su estructura tiende a ser cada vez más compleja.
  • 5. Evolución prolongada del programa Sugiere que los grandes sistemas tienen su propia dinámica que se establece en una etapa temprana en el proceso de desarrollo.
  • 6. Estabilidad organizacional Sugiere que la mayoría de los proyectos de programación grandes trabajan en lo que se denomina un estado saturado.
  • 7. Conservación de la familiaridad Durante el tiempo de vida de un sistema, el cambio incremental en cada entrega es aproximadamente constante.
  • 8. Crecimiento continuado La funcionalidad ofrecida por los sistemas tiene que crecer continuamente para mantener la satisfacción de los usuarios.
  • 9. Decremento de la calidad La calidad de los sistemas comenzara a disminuir a menos que dichos sistemas se adapten a los cambios en su entorno.
  • 10. Realimentación del sistema Es necesaria para lograr una mejora significativa del producto.
  • 11. MANTENIMIENTO DEL SOFTWARE Es el proceso general de cambiar un sistema después de que éste ha sido entregado.
  • 12. TIPOS DE MANTENIMIENTO • Correctivo: Se utiliza generalmente para referirse al mantenimiento para reparación de defectos. • Adaptativo: Significa adaptar el software a nuevos requerimientos. • Perfectivo: Significa mantener la funcionalidad del sistema, pero mejorando su estructura y su rendimiento.
  • 13. Factores que conducen a costes de mantenimiento más elevados: 1. Estabilidad del equipo. Después de entregar un sistema, es normal que el equipo de desarrollo se disuelva y la gente trabaje en nuevos proyectos. 2. Responsabilidad contractual. El contrato para mantener un sistema normalmente está separado del contrato para desarrollar el sistema.
  • 14. 3. Habilidades del personal. El personal de mantenimiento a menudo no tiene experiencia y no está familiarizado con el dominio de la aplicación. 4. Edad y estructura del programa. A medida que pasa el tiempo, la estructura de los programas tiende a degradarse con los cambios.
  • 15. PREDICCIÓN DEL MANTENIMIENTO Se debería intentar predecir qué cambios del sistema son probables y qué partes del sistema son probablemente las más difíciles de mantener.
  • 16. PROCESOS DE EVOLUCIÓN • Tipo de software a mantener • Los procesos de desarrollo utilizados • El personal implicado en el proceso
  • 17. Propuestas de cambio: • Requerimientos existentes que no han sido implementados en el sistema entregado. • Peticiones para nuevos requerimientos y reparaciones de errores por parte de los stakeholders del sistema. • Nuevas ideas y propuestas para mejoras en el software por parte del equipo de desarrollo del sistema.
  • 18. PROCESO DE EVOLUCIÓN Los procesos de identificación de cambios y evolución del sistema son cíclicos y continúan durante toda la vida del sistema.
  • 19. PROCESOS DE EVOLUCIÓN Incluyen las actividades fundamentales de análisis de cambios, planificación de entregas, implementación del sistema y entrega de un sistema a los clientes.
  • 20. IMPLEMENTACIÓN DE LOS CAMBIOS 1. Si ocurre un defecto serio en el sistema que tenga que ser reparado para permitir la continuación del funcionamiento normal. 2. Si los cambios en el entorno del sistema operativo tienen efectos inesperados que impiden el funcionamiento normal. 3. Si hay cambios no anticipados en las empresas que utilizan el sistema.
  • 21. REINGENIERÍA DE SISTEMAS La reingeniería del software se refiere a la reimplementación de los sistemas heredados para hacerlos más mantenibles.
  • 22. REINGENIERÍA DE SISTEMAS Puede implicar: • Redocumentar el sistema. • Organizar y reestructurar el sistema. • Traducir el sistema a un lenguaje de programación más moderno. • Modificar y actualizar la estructura y valores de los datos del sistema.
  • 23. REINGENIERÍA DE SISTEMAS Ventajas: • Riesgo reducido. Existe un alto riesgo en volver a desarrollar software crítico para los negocios. • Coste reducido. El coste de hacer reingeniería es significativamente menor que el coste de desarrollar nuevo software.
  • 24. REINGENIERÍA DE SISTEMAS Desventajas: • Existen límites prácticos a la extensión del sistema que puede ser mejorada mediante reingeniería. • No es posible convertir un sistema diseñado utilizando una aproximación funcional en un sistema orientado a objetos. • Los cambios arquitectónicos mayores no pueden realizarse de forma automática, implica costes adicionales.
  • 25. REINGENIERÍA DE SISTEMAS La distinción crítica entre reingeniería y nuevo desarrollo software es el punto de partida del desarrollo.
  • 27. Opciones estratégicas: 1.Desechar completamente el sistema. Esta opción debería elegirse cuando el sistema no constituye una contribución efectiva para los procesos de negocio. 2.Dejar el sistema sin cambios y continuar con un mantenimiento regular. Esta opción debería elegirse cuando el sistema todavía es necesario.
  • 28. 3.Hacer reingeniería del sistema para mejorar su mantenibilidad. Esta opción debería elegirse cuando la calidad del sistema se ha degradado por los cambios continuos . 4.Reemplazar todo o parte del sistema con un nuevo sistema. Esta opción debería elegirse cuando otros factores, como un nuevo hardware, implican que el sistema antiguo no puede continuar en funcionamiento.
  • 29. EVOLUCIÓN DEL SOFTWARE Espacio para: preguntas, dudas, aclarando, aportaciones y plugins Carlos R. Adames B. Programador HTML5 @crabalex