9
Evolucion del software
Objetivos
Los objetivos de este capitulo son explicar por qué
la evolucién del software forma parte importante de la
ingenierfa de software, asf como describir los procesos
de evolucién del software. Al estudiar este capitulo:
= comprendera que el cambio es inevitable silos sistemas de
software deben mantener su utilidad, y que el desarrollo
y la evolucién del software pueden integrarse en un
modelo espiral;
= entenderd los procesos de evolucién del software y
las influencias sobre dichos procesos;
= aprenderé sobre los diferentes tipos de mantenimiento
de software y los factores que afectan los costos de
mantenimiento; y
= conocerd cémo pueden valorarse los sistemas heredados
para decidir si se deben descartar, mantener, someter
areingenieria o sustituir.
Contenido
9.1 Procesos de evolucién
9.2 Evolucién dindmica del programa
9.3 Mantenimiento del software
9.4 Administracién de sistemas heredadosCapitulo 9 = Evolucién del software 235
Fl desarrollo del software nose deticne cuando un sistema se entrega, sino que continia a
lo largo dea vida de éste. Después de distribuir un sistema, inevitablemente debe modi-
ficarse, con la finalidad de mantenerlo dil. Tanto los cambios empresariales como los de
1as expectativas del usuario gensran nuevos requerimientes para el software existente. Es
posite que tengan que modificarse partes del software para corregir errores encontrados
durante su operaciéa, para adaptarto a los cambios en su plataforma de software y hard
ware, y para mejorar su rendimiento w otras earacteisticas no funcionales.
La crolucin del software es importante porque las organizaciones invierten grandes
‘antidades de dinero en él y en la actualidad son completamente dependienies de dichos
sistemas, Sus sistemas se consideran actives empresiriales crtios, por lo que tienen que
invent en el cambio del sistema para mantener el valor de estos activos. En consecuen~
a, las compatiias mas grandes gastan mds en consecvar Ios sistemas existentes que en el
‘esarollo de sistemas nuevos, Con base en una encuesta industrial informal, Eikh (2000)
sugiere que entre el 85 y 90% de los costos del sofware organizacional son costos de
cevolucién; mientras que otros estudios sugicren que étos conforman alrededor de dos
tercios de los costos del software, Desde luego, los costos del cambio del software repre-
sentan una gran parte del presupuesto de TI de todas las compaiias.
La evolucién del software puede potenciarse al cambiar los requerimientos empre-
sariales, con reportes de defectos del software 0 por cambios a otros sistemas en un
certorno del sistema de software. Hopkins y Jenkins (2008) acuaron el térmiro desarrollo
e software abardonaco”(subutilizado) para descriir situaciones en que los sistemas de
software tienen que desarollarse y gestionarse en un ambiente donde dependen de muchos
‘otros sistemas de software,
or consiguiente. la evolucién de un sistema rara vez puede eonsiderarse en aisla-
‘iento, Los cambics al entorno conducen a cambios en el sistema que. a la ver, pueden
‘generar més cambics en el entomo. Desde luego. el hecho de que les sistemas tengan que
cevolucionar en un ambiente “rico en sistemas” con frecuencia aumenta las dificultades
‘ylos costos de la evolucién, Ademés de comprender y analizar el impacto de un cambio
‘ropuesto sobre el sistema en si, también es probsble que se dcba valorar cémoesto afec-
tarfa a otros sistemas en el entorno operacional.
or lo general, los sistemas de software stiles tienen una vida may larga. Por ejemplo,
Jos grandes sistemas militares o de infraestructura, como los de control de téfico aéreo,
egan a durar 30 afios o més; en tanto que los sistemas empreseriales eon frecuencia
‘supernlos 10 afos, Pucsto qucel costo del software es elevado, una compadia debe user
un sistema de software durante muchos aflos para recuperar su inversién, Evidentemente,
Jos requerimientos de ls sisicmas instalados cambian conforme lo hacen el negocio y su
centomo, Por consiguicnte, se erean a iniervalos regulares nuevas versiones de los siste-
‘mas, las cuales incorporan cambios y acualizactones.
PPor enge, la ingenierfa de software se debe considerar como un proceso en espiral,
‘con requerimientos, disefio, implementacién y pructas cortinuas, alo largo de la vida del
sistema (Figura 9.1). Esto comienza por creer la versin I del sistema, Una vez entregads,
‘8 proponen cambios y casi de inmediato comienca el desarrollo de la versiGn 2, De
hecho, la necesicad de evolucin puede volverse evidente incluso antes de que el sistema
se distribuya, de manera que las Futuras versiones del software estarfan en desarrollo
antes de que se libere la versi6n actual.
Este modelo de evolucién de softwareimplica que una sola orgarizaciGn es responsable
tanto del desarrollo del software inicial como de la evolucién del software. La mayorta
de los productos de software empacados se desarrollan siguiendo este enfogue. Para el
software personalizado, por lo general se uiliza un enfoque diferente. Una compafia de236 Capitulo 9 m Evolucién del software
Version 1
Operacién Validacién
Version 2
Version 5
en espiral de desarrollo
yevolucién
software lo desarrolla para un cliente y, luego, el personal de desarrollo de! propio clien-
te se hace cargo del sistema, Ellos son 10s responsables de la evolucion det software.
De forma alternativa, el cliente del software puede oforgar por separado un contrato a
‘na compaiiia diferente, con la finalicad de que dé soporte al sistema y continuar su
evolucién,
En este caso, es probable que existan discontinuidades en cl proceso espiral. Los docu
‘mentos de requerimientos y disco quiz4 no se comparan entre una compatife y otra.
stas podrfan fusionarse 0 worganizarse y heredar el software de otras compafifas, para
lego descubrir que este dtimo tiene que cambiarse. Cuando le transicién del desarrollo
ala evoluciGn no es uniforme, el proceso de cambiar el software después de la entrega se
‘conoce como"*martenimienio de software”, Como se analizaré més adelante en este capi-
tulo, el mantenimiento incluye actividades de proceso adicicnales, como la comprensién
«el programa, ademés de las actividades normales de deserrollo del software
Raich y Bennett (2000) propusieron ura visi altemativa del ciclo de vida de la evo-
Incién del software, como se indica en lafigara 9.2. En ese modelo, ditinguen entre evol-
Giny servicio. La evolucién es la fase donde es posible hacer cambios significativos ala
sxquitectura y lafuncionalidad del software, Durante el servicio, los tinicos cambios que se
realizan son relativamente pequefios.
Durante la evolucién, el software se usa con éxito y hay ua flujo constante de propues~
tas de cambios a los equerimientos. Sia embargo, conforme el software se modifica, su
cstructura iende a degradarse y les cambios so vuelven més y mis costosos. Esto sucede
«on frecuencia después de algunos aos de uso, cuando tambiéa se requieren otros cam-
bios ambicntales como el hardware y los sistemas operativos, Ea alguna ctapa desu ciclo
6 vida, el software alcanza un punto de transicién donde los cambios significativos que
iimplemenian nuevos requerimienios se vuelven cada vez menos rentables.
es
+ Bolucin = Sevicio | = tro gradual
Desarrollo
Figura 9.2 Brolucion iniial
ysevico