Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Procesos de evolución
Sistemas heredados
Mantenimiento del software
Desarrollo de
Evolución del
software Mantenimiento
software
de software Software
Jubilación
Evolución
Etapa del ciclo de vida de un sistema informático en la que se
utiliza de forma operativa y evoluciona a medida que se
proponen e implementan nuevos requisitos en el sistema.
Mantenimiento
En esta etapa, el software sigue siendo útil, pero los únicos
cambios que se realizan son los necesarios para mantenerlo
operativo, es decir, correcciones de errores y cambios para
reflejar los cambios en el entorno del software. No se añaden
nuevas funcionalidades.
Retirada
El software puede seguir utilizándose, pero no se le hacen más
cambios.
30/10/2014 Chapter 9 Software Evolution 67
Evolution processes
Proceso de identificación
de cambios
Proceso de evolución
del software
Incorpora
conocimientos de
Software de Software de Políticas y normas
apoyo aplicación empresariales
Sistema sociotécnico
Procesos empresariales
Software de aplicación
Hardware
Factor Questions
Estabilidad de los ¿Sigue existiendo el proveedor? ¿Es estable desde el punto de vista
proveedores financiero y tiene posibilidades de seguir existiendo? Si el proveedor
ya no existe, ¿se encarga otra persona del mantenimiento de los
sistemas?
Tasa de fracaso ¿Tiene el hardware un alto índice de fallos notificados? ¿Se bloquea
el software de apoyo y obliga a reiniciar el sistema?
Edad ¿Qué antigüedad tienen el hardware y el software? Cuanto más
antiguos sean el hardware y el software de apoyo, más obsoletos
estarán. Puede que aún funcione correctamente, pero cambiar a un
sistema más moderno puede reportar importantes beneficios
económicos y empresariales.
Rendimiento ¿Es adecuado el rendimiento del sistema? Los problemas de
rendimiento, ¿tienen un efecto significativo en los usuarios del
sistema?
Factor Questions
Requisitos de apoyo ¿Qué soporte local requieren el hardware y el software? Si
los costes asociados a esta asistencia son elevados, puede
que merezca la pena plantearse la sustitución del sistema.
Gastos de mantenimiento ¿Cuáles son los costes de mantenimiento del hardware y
de las licencias de software de apoyo? El hardware antiguo
puede tener costes de mantenimiento más elevados que los
sistemas modernos. El software de soporte puede tener
unos costes de licencia anuales elevados.
Interoperabilidad ¿Hay problemas para interconectar el sistema con otros
sistemas? ¿Pueden utilizarse compiladores, por ejemplo,
con las versiones actuales del sistema operativo? ¿Es
necesaria la emulación de hardware?
Factor Questions
Comprensibilidad ¿Es difícil entender el código fuente del sistema actual? ¿Hasta
qué punto son complejas las estructuras de control que se
utilizan? ¿Las variables tienen nombres significativos que reflejen
su función?
Documentación ¿De qué documentación del sistema se dispone? ¿Es la
documentación completa, coherente y actual?
Datos ¿Existe un modelo de datos explícito para el sistema? ¿En qué
medida se duplican los datos en los distintos archivos? ¿Los
datos utilizados por el sistema están actualizados y son
coherentes?
Rendimiento ¿Es adecuado el rendimiento de la aplicación? ¿Los problemas
de rendimiento tienen un efecto significativo en los usuarios del
sistema?
Factor Questions
Lenguaje de programación ¿Existen compiladores modernos para el lenguaje de
programación utilizado para desarrollar el sistema? ¿Se
sigue utilizando el lenguaje de programación para el
desarrollo de nuevos sistemas?
Gestión de la ¿Se gestionan todas las versiones de todas las partes del
configuración sistema mediante un sistema de gestión de la configuración?
¿Existe una descripción explícita de las versiones de los
componentes que se utilizan en el sistema actual?
Datos de la prueba ¿Existen datos de prueba del sistema? ¿Existe un registro
de las pruebas de regresión realizadas cuando se han
añadido nuevas funciones al sistema?
Competencias del ¿Hay personas capacitadas para mantener la aplicación?
personal ¿Hay personas con experiencia en el sistema?
Reparación de fallos
Modificación de un sistema para arreglar fallos/vulnerabilidades
y corregir deficiencias en la forma de cumplir sus requisitos.
Adaptación al entorno
Mantenimiento para adaptar el software a un entorno operativo
diferente
Modificación de un sistema para que funcione en un entorno
(ordenador, sistema operativo, etc.) distinto al de su
implantación inicial.
Adición y modificación de funcionalidades
Modificación del sistema para satisfacer nuevos requisitos.
Reparación de
averías
Adaptación
medioambiental Adición o
modificación de
funciones
Riesgo reducido
El desarrollo de software nuevo conlleva un alto riesgo. Puede
haber problemas de desarrollo, de personal y de especificación.
Coste reducido
El coste de la reingeniería suele ser significativamente menor
que el del desarrollo de software nuevo.
Ingeniería
inversa
Ingeniería
Traducción del Modularización inversa
código fuente de programas
Mejora de la
estructura del
programa
Programa Reingeniería de
reestructurado datos
Reestructuración Reestructuración de
automatizada de programas programas y datos
Mayor coste
Código duplicado
El mismo código o uno muy similar puede incluirse en distintos
lugares de un programa. Esto puede eliminarse e implementarse
como un único método o función que se llame cuando sea
necesario.
Métodos largos
Si un método es demasiado largo, debe rediseñarse como varios
métodos más cortos.
Sentencias switch (case)
Suelen estar duplicadas, ya que el cambio depende del tipo de
valor. Las sentencias switch pueden estar dispersas por todo el
programa. En los lenguajes orientados a objetos, a menudo se
puede utilizar el polimorfismo para lograr lo mismo.
30/10/2014 Chapter 9 Software Evolution 117
‘Bad smells’ in program code
Agrupación de datos
La aglomeración de datos se produce cuando el mismo grupo
de datos (campos en clases, parámetros en métodos) se repite
en varios lugares de un programa. A menudo pueden sustituirse
por un objeto que encapsule todos los datos.
Generalidad especulativa
Se produce cuando los desarrolladores incluyen generalidades
en un programa por si son necesarias en el futuro. A menudo
puede eliminarse.