Mantenimiento de Software

52
Felipe Arancibia B. Taller de Mantención de Software

description

mantenimiento

Transcript of Mantenimiento de Software

Felipe Arancibia B. Taller de Mantencin de Software Es la intervencin del cdigo fuente que se le realiza a un sistema que estando en produccin, por algn motivo as lo requiera. Para asegurar la calidad de la mantencin, existen estndares que lo regularizan. Un estndar puede ser conceptualizado como la definicin clara de un modelo, criterio, regla de medida o de los requerimientos mnimos aceptables para la operacin de procesos especficos, con el fin de asegurar la calidad. Estos sealan claramente el comportamiento esperado y deseado, utilizndose como guas para evaluar y lograr el mejoramiento continuo. Los estndares requieren ser establecidos con el fin de contar con una referencia que permita identificar oportunamente las variaciones presentadas en el desarrollo de los procesos y aplicar las medidas correctivas necesarias. Estos toman una gran importancia en lo que es Ingeniera de Software en general, y la Mantencin de Software en particular, porque necesitamos mtricas para poder proyectar el tiempo y el costo que demoraremos para realizarla, adems nos proporciona un lenguaje comn para comunicarnos. Segn el IEEE, el Mantenimiento del Software es la modificacin de un producto despus de su entrega al cliente o usuario para corregir defectos, mejorar el rendimiento, o para adaptarlo a un cambio de entorno. En el estndar 1219: describe un proceso iterativo para la gestin y ejecucin de las actividades de Mantenimiento del Software. Los criterios establecidos se aplican tanto a la planificacin del Mantenimiento de Software, mientras este est en desarrollo, como a la organizacin y ejecucin de las actividades de mantenimiento para productos de software existentes. El proceso de mantenimiento de software comienza con las primeras fases del ciclo de vida, puesto que el costo est influenciado por las decisiones que se tomen en cada una de las etapas. Modificar una versin de un producto software dando como resultado una nueva, requiere una accin de gestin de configuracin. Se presentan los procesos del ciclo de vida que se pueden emplear para: adquirir, suministrar, desarrollar, operar y mantener productos software. El objetivo es proporcionar un mapa para que consigan orientarse en este y aplicarlo adecuadamente, agrupando las actividades que se pueden llevar a cabo durante el ciclo de vida del software en cinco procesos principales, ocho de apoyo y cuatro organizativos. Cada uno de ellos est dividido en un conjunto de actividades; cada una de ellas se sub-divide a su vez en un grupo de tareas. Los estndares nos permiten visualizar que el Mantenimiento de Software no es una tarea que deba tomarse a la ligera, sino una actividad que esta analizada por instituciones de prestigio, las que han desarrollado modelos para que podamos realizarla como un proyecto de Ingeniera. Reconoceremos como el ciclo de vida del producto de software como: Un marco de referencia que contiene: los procesos, las actividades y las tareas involucradas en el desarrollo, la explotacin y el mantenimiento de un producto de software, abarcando la vida del sistema desde la definicin de los requisitos hasta la finalizacin de su uso. Fuente: ISO 12207-1 Las fases del ciclo de vida mediante las que se dirige los estndares IEEE son: Dentro de cada una de estas fases, el estndar define una serie de procedimientos que se han de llevar a cabo y con los que se identifican la documentacin, personas y productos software que intervienen. Las etapas que se han de cubrir son: Entradas Procesos Controles Salidas En la medida que ms intervenciones se realicen a un sistema, ms fallas va a presentar este, generando un circulo vicioso que normalmente terminar con el cambio del software por uno desarrollado sin utilizar el cdigo antiguo. El conocimiento que se debe tener del sistema a desarrollar, no siempre es fcil de obtener. La falta de documentacin; el xodo de programadores, analistas, jefes de proyecto y usuarios expertos de la empresa, y el desarrollo de sistemas por empresas externas, dificulta el proceso, por lo que debemos preocuparnos de tener en los programas fuentes, la mayor cantidad de indicaciones de lo que realiza cada grupo de instrucciones, de forma de no depender de terceros y/o de documentacin que no existe o se perdi. El software, al ser parte de una organizacin considerada un sistema abierto, necesita ser participe de esos cambios, y se desarrolla de la misma forma que debe evolucionar la empresa, de lo contrario puede ocasionar un grave perjuicio econmico. Meir M. Lehman y Lszl Bldy nos presentan las leyes de la Evolucin del Software: 1) Cambio continuo: Un programa necesariamente debe cambiar o se volver progresivamente menos til y menos satisfactorio para el usuario. 2) Complejidad creciente: A medida que un programa cambia, su estructura tiende a ser cada vez ms compleja, por esto se deben dedicar recursos extras para preservar y simplificar su estructura. 3) Evolucin prolongada del programa: La evolucin de los programas es un proceso autoregulado. 4) Estabilidad Organizacional: Durante el tiempo de vida de un programa, su velocidad de desarrollo es aproximadamente constante e independiente de los recursos dedicados a las mejoras del sistema. 5) Conservacin de la familiaridad: A medida que un sistema evoluciona todos los involucrados, tales como: los desarrolladores, personal de ventas y usuarios, deben conocer el total de su contenido y su comportamiento para lograr un desarrollo satisfactorio. 6) Crecimiento continuado: Un desarrollo exagerado disminuye la familiaridad de los involucrados con el sistema. Por tanto, este incremento promedio debe permanecer continuo para mantener la satisfaccin de los usuarios. 7) Decremento de la calidad: Esta comenzar a disminuir a menos que dichos sistemas se adapten a los cambios de su entorno de funcionamiento. 8) Realimentacin del sistema: Los procesos de evolucin incorporan sistemas de realimentacin multiagente y multibucle. Estos deben ser tratados como sistemas de realimentacin para lograr una mejora significativa del producto. En las 8 leyes de la evolucin de Lehman, tambin tiene importancia los procesos de apoyo al ciclo de vida: 1) Documentacin: Define las actividades para el registro de la informacin producida por un proceso del ciclo de vida. 2) Gestin de la Configuracin: Define sus propias actividades. 3) Aseguramiento de la Calidad: Se trata de actividades para asegurar que los productos software y sus procesos son conformes a los requerimientos especificados. Revisin conjunta, auditora, verificacin y validacin pueden ser utilizadas como tcnicas de aseguramiento de la calidad. 4) Verificacin: Son actividades que se realizan para comprobar en detalle el nivel de los productos software (para el adquiriente, proveedor o una parte independiente). 5) Validacin: Define las actividades (para el adquiriente, proveedor o una parte independiente) para aprobar los productos software del proyecto. 6) Revisin conjunta: Son las tareas que se realizan para evaluar el estado y productos de una actividad. Este proceso puede ser empleado por cualquiera de las dos partes indistintamente. 7) Auditora: Se trata de las actividades para determinar la conformidad con los requerimientos, planes y contrato. En este proceso la parte auditora, revisa los productos software o actividades de la contraparte. 8) Solucin de problemas: Define las actividades para analizar y eliminar los problemas, (incluyendo las no conformidades) que sean descubiertos durante la ejecucin del proceso de desarrollo, operacin, mantenimiento, etc. Debemos tener presente que parte importante del xito en la Mantencin del Software, radica en el conocimiento que se tenga de este mismo, y de las modificaciones que se deba realizar, por lo tanto, cuando tenemos un equipo que lleva a cabo el desarrollo y otro que hace la mantencin, la comunicacin entre ambos, emerge como un punto muy relevante. Por esa razn, el primer punto que tenemos es la documentacin, la cual puede ser interna (efectuada en el mismo cdigo de la aplicacin), o en textos externos. La informtica es una ciencia bastante nueva, sin embargo, muchos de los nuevos profesionales que se integran a los equipos de desarrolladores y de mantenimiento, deben hacerse cargo de sistemas heredados. Un software, es la respuesta informtica a algn tipo de necesidad de las empresas. Estas, corresponden a sistemas abiertos, los que interactan con el medio y deben ir adecundose a los cambios que la empresa va sufriendo, por lo tanto los software deben ir a la par y de ah nace la necesidad de realizar las mantenciones. Como hemos visto en puntos anteriores, la necesidad de cambio en un software es porque a la organizacin ya no le es funcional, inicindose el proceso de mantencin con la identificacin del problema y sufriendo modificaciones en el cdigo y en la documentacin asociada debido a: 1) Correccin de fallas: Se considera que el software presenta una irregularidad, cuando presenta un problema generado por una mantencin anterior, por un dato mal ingresado, por una interfaz que cambi, etc. 2) Mejora en el diseo: Tenemos un software en produccin, sin embargo, debemos adaptarlo para que conviva de mejor manera con nuevas tecnologas. Por ejemplo, cuando modificamos: la versin del sistema operativo, el hardware que lo alberga, la base de datos, la interfaz de ingreso de datos de manual a automtica, etc. 3) Implementacin de nuevas funcionalidades: La organizacin, en su propio ciclo de vida debe ir adaptndose a nuevas condiciones, por ejemplo, si quiere comenzar a operar con nuevas sucursales, en otras reas geogrficas, debe contratar a mas personas, arrendar y/o comprar nuevos locales, aumentar la produccin, etc. De la misma manera, los diferentes sistemas que operan en la empresa, deben sufrir las modificaciones necesarias para ajustarse a lo que ahora requieren. 4) Desarrollo de interfaces con nuevos sistemas: La organizacin, en su necesidad de cambio, puede integrar nuevos sistemas. En algunos de estos casos, se requerir desarrollar una nueva interfaz que permita la comunicacin. 5) Adaptacin del software para que funcione con protocolos/equipos de comunicacin diferentes: Se basa en determinados protocolos de comunicacin, los cuales pueden cambiar y los sistemas deben adecuarse a este nuevo requerimiento. 6) Migracin de software a nuevas tecnologas: Esto se conoce como el proceso de transferencia de los programas desde un ambiente a otro, el que puede incluir un hardware distinto. Los equipos de alta tecnologa, tienen un ciclo de vida propio, para luego quedar obsoletos y la organizacin debe cambiarlos. Esa sustitucin de hardware no siempre va acompaado del cambio de software, por lo tanto debemos migrar el software a estos nuevos equipos y modificarlos para que funcionen lo mejor posible. 7) Retiro del Software: Los sistemas a veces dejan de tener utilidad para la organizacin, por lo cual se deben sacar de produccin para evitar que se estn realizando operaciones innecesarias en los equipos (por ejemplo, respaldos) y utilizacin del personal (operadores). Si ese sistema alimenta a uno de gestin o de BI (por ejemplo), el sacarlos del uso diario, nos trae consecuencias en sistemas que se alimentan de estos. Como vimos anteriormente, un problema no necesariamente implica un defecto del software. Estos aparecen simplemente porque el comportamiento esperado del sistema no coincide con el actual. Esto puede ser de un defecto del software, pero tambin puede ser fcilmente el resultado de: un desconocimiento de las capacidades del sistema, de la utilizacin incorrecta del flujo de trabajo, de una documentacin pobre de cambios en las directrices de la empresa, o de otras tantas razones. La gestin de respuestas a los problemas del sistema cubre muchas de las potenciales actividades. Algunas de las posibles soluciones a los problemas del sistema podran incluir: Liberacin de nuevas versiones Sesiones de planificacin Identificacin de la formacin necesaria Actualizacin de la documentacin, etc. La gran mayora de los estndares relacionados con el mantenimiento de software, definen las siguientes categoras: Es la modificacin de un software (despus de su puesta en produccin), para mantenerlo en funcionamiento en un ambiente que ha cambiado o que lo va a hacer. Tiene por objetivo la modificacin de un sistema debido a cambios en el entorno (sistema operativo, por ejemplo), o en el hardware (por ejemplo pasar de un sistema de 16 bits a uno de 32), o en el software (por ejemplo, los cambios de un cliente clsico desarrollado en Visual Basic, Delphi o C/C++ a uno ligero Thin Client para ejecutarse sobre un navegador de Internet; etc.) en el que se realiza. Este tipo de mantenimiento es el ms usual debido a los rpidos cambios que se producen en la tecnologa informtica, que en la mayora de las ocasiones dejan obsoletos los software desarrollados, no por su inoperancia, sino por la competitividad entre las empresas, en la que cada vez influye ms el software utilizado. Es la modificacin de un software, despus de su puesta en produccin, para corregir los fallos descubiertos. Tiene por objetivo localizar y eliminar los posibles defectos de los programas. A pesar de las pruebas y verificaciones que se deben realizar durante el Ciclo de Vida del software, los programas pueden tener desperfectos. Estos se producen cuando el comportamiento del sistema es diferente al esperado por su especificacin. Estos pueden ser de procesamiento, de rendimiento, de programacin, o de documentacin. La mayora de los defectos se originan en la etapa de especificacin de requerimientos, y en la de codificacin, por lo que tambin son importantes para las primeras fases del ciclo de vida para el mantenimiento preventivo. Es la modificacin de un Software, despus de su puesta en produccin y para mejorar el rendimiento. Estos cambios pueden ser: la inclusin de un monitor transaccional y su gestin, para mejorar los accesos a la base de datos, la utilizacin de cachs en los usuarios de un sistema cliente-servidor para liberar la carga de la red de comunicaciones, etc. El aumento del nmero de usuarios del sistema, como el incremento de las funcionalidades, puede repercutir en el rendimiento del este y requerir un mantenimiento perfectivo. Este mantenimiento es citado en algunos importantes textos de Ingeniera de Software, sin embargo, no se menciona como tal en el estndar IEEE 1219, sino que se incluye como parte del Mantenimiento Perfectivo. ste consiste en la modificacin del Software sin alterar las especificaciones del mismo. Es decir, no se quitan ni agregan funcionalidades ni propiedades, pero se cambian para mejorar los atributos del producto y facilitar as futuras tareas de mantenimiento. Los cambios que se llevan a cabo son en cuanto a los comentarios del cdigo, y la reestructuracin de los programas para mejorar su comprensin. Se debe realizar cuando sabemos que un sistema tiene un alto grado de probabilidad de que requiera modificaciones, de manera que sea ms fcil su mantencin. Como ejemplo, podemos citar el agregar comentarios en el cdigo, explicando lo que hace cada grupo de instrucciones. Para tener una estimacin de los costos de un mantenimiento en particular, podemos utilizar el modelo COCOMO 2, para calcular el esfuerzo de entender el cdigo existente y el de desarrollar un nuevo cdigo. En el modelo COCOMO 2 se calcula el nmero de lneas de cdigo que se van a realizar, dndoles un tiempo dependiendo del lenguaje utilizado. Los costos de mantencin van a depender del: 1) Tipo de Aplicacin: Si esta distribuida, si es Web, si es local o si es en red. Mientras ms compleja, mayor va a ser el costo. 2) Disponibilidad de Conocimientos y Recursos: Si es muy especifico (ejemplo, de carcter cientfico), o si esta escrito en un lenguaje poco comn, es posible que la contratacin de personal nos salga extremadamente cara. 3) Ciclo de vida de Producto de Software: El costo depender del ciclo, ya que si lo conocemos muy bien y sabemos la modificacin, es posible que tengamos menos tiempo en las primeras etapas. 4) Caractersticas de Hardware: Esto est referido a los requerimientos no funcionales, y si estos son pocos o bsicos, el tiempo y el costo, podran ser menores. 5) Calidad de diseo, construccin y la documentacin de software y pruebas: Tambin son factores incidentes. Mientras ms exigencias tengamos, ms costos tendremos involucrado en el proceso.Segn precisa Roger Pressman, en su libro Ingeniera de Software: Un Enfoque Prctico. Del tiempo utilizado para el desarrollo en una empresa, el 60% se destina a mantenimiento. De ese porcentaje, el 65% es mantenimiento adaptativo, 17% es correctivo y el 18% es perfectivo.