MANTENIMIENTO DEL SOFTWARE

sábado, 2 de julio de 2011


ACTIVIDADES REALIZADAS

En esta sección el grupo de trabajo conformado por Pablo Barrera, Angela García y Leydi Cortés presentó en una conferencia y un panel sobre Manteniemiento del Software


ESTRATEGIAS UTILIZADAS

 Presentación de los siguientes contenidos académicos:

RALLY DEL CONOCIMIENTO

INTRODUCCIÓN
Aunque es una actividad que se puede aprovechar para reforzar algunos contenidos vistos en clase, la verdadera finalidad de esta actividad es la socialización y el trabajo en equipo.
Es una actividad tan variable que puede adaptarse a cualquier grado y situación determinada de cada grupo.

ORGANIZACIÓN
Esta actividad es forzosamente para realizar en equipo, y lo más recomendable es que, en caso de existir varias personas con Necesidades Especiales o con Problemas de Integración o socialización, se distribuyan en diferentes equipos, al igual que las personas más sobresalientes y los líderes sociales, con el fin de que los equipos queden lo más nivelados posibles.

MATERIAL
El material a emplear depende de las actividades que se vayan a realizar, lo que si se mantiene constante es una hoja para cada equipo, de preferencia de color diferente, donde estarán escritas las instrucciones a seguir por cada equipo.

PROCEDIMIENTO
Tomando como ejemplo un grupo de 30 alumnos, se forman 5 equipos de 6 niños cada uno, y es necesario que se realicen como mínimo 5 actividades diferentes dirigidas por un maestro cada una, aunque lo más recomendable es tener una actividad más para evitar que se junten 2 equipos en una sola área (se necesitarían 5 ó 6 maestros para dirigir las actividades).
Se puede asignar un color a cada equipo, o bien, dar la oportunidad de escoger un nombre, por ejemplo de algún animal para representarse ellos mismos.
Se les explican las instrucciones a los niños antes de que salgan a jugar:
  1. Es una actividad en equipo, así que todos tienen qué participar, nadie puede quedarse fuera; si el equipo no está completo, no pueden realizar las actividades hasta que se junten.
  2. Para pasar a la siguiente actividad, la persona que esté dirigiendo la actividad actual debe firmar la hoja para marcar que ya la terminaron.
  3. Una vez terminadas todas las actividades, deben entregar la hoja a determinado maestro, y conforme al orden en que se entregue, se designa qué equipo ganó, cuál fue segundo lugar, y así.
Una vez que hayan terminado todos de hacer los trabajos y entregar las hojas, los niños deben regresar a su aula para conocer los resultados.

Antes de hacerlo, es conveniente primero rescatar la importancia de haber trabajado en equipo y la participación de cada uno.
Se pueden hacer preguntas también sobre qué actividad fue la más difícil, cuál se les hizo más fácil, cuál les gustó más; y aquí se le puede dar preferencia a la participación de los alumnos de interés para el docente.
Una sugerencia que he manejado al realizar esta actividad es colocar letras en lugar de números, por ejemplo las cinco vocales, y utilizar las vocales como letras iníciales de palabras como A de Aplicado, E de Estudioso o I de Inteligente. Aunque no hay que olvidar que la letra también representa un lugar y que existe un equipo ganador.


MANTENIMIENTO DEL SOFTWARE
El mantenimiento de software de software es una de las actividades más comunes en la ingeniería de software, es el proceso de mejora y optimización del software después de su entrega al usuario final es decir revisión del programa, así como también corrección y prevención de los defectos.
El mantenimiento de software es también una de las fases en el ciclo de vida de desarrollo de sistemas, que se aplica al desarrollo de software. La fase de mantenimiento es la fase que viene después del despliegue (implementación) del software en el campo.
La fase de mantenimiento del producto se puede difundir por los involucrados del software e involucran cambios al software en orden de corregir defectos y dependencias encontradas durante su uso tanto como la adición de nueva funcionalidad para mejorar la usabilidad y aplicabilidad del software.
El mantenimiento del software involucra varias técnicas específicas. Una técnica es el rebanamiento  estático, la cual es usada para identificar todo el código de programa que puede modificar alguna variable. Es generalmente útil en la refabricación del código del programa y fue específicamente útil en asegurar conformidad para los distintos problemas del software.
La fase de mantenimiento de software es una parte explícita del modelo en cascada del proceso de desarrollo de software el cual fue desarrollado durante el movimiento de programación estructurada en computadores. El otro gran modelo, el Desarrollo en espiral desarrollado durante el movimiento de ingeniería de software orientada a objeto no hace una mención explícita de la fase de mantenimiento. Sin embargo, esta actividad es notable, considerando el hecho de que dos tercios del coste del tiempo de vida de un sistema de software involucran mantenimiento.
En un ambiente formal de desarrollo de software, la organización o equipo de desarrollo tendrán algún mecanismo para documentar y rastrear defectos y deficiencias. El Software tan igual como la mayoría de otros productos, es típicamente lanzado con un conjunto conocido de defectos y deficiencias. El software es lanzado con esos defectos conocidos porque la organización de desarrollo en las utilidades y el valor del software en un determinado nivel de calidad compensan el impacto de los defectos y deficiencias conocidas.
Las deficiencias conocidas son normalmente documentadas en una carta de consideraciones operacionales o notas de lanzamiento es así que los usuarios del software serán capaces de trabajar evitando las deficiencias conocidas y conocerán cuándo el uso del software sería inadecuado para tareas específicas.
Con el lanzamiento del software, otros defectos y deficiencias no documentados serán descubiertas por los usuarios del software. Tan pronto como estos defectos sean reportados a la organización de desarrollo, serán ingresados en el sistema de rastreo de defectos.
Las personas involucradas en la fase de mantenimiento de software esperan trabajar en estos defectos conocidos, ubicarlos y preparar un nuevo lanzamiento del software, conocido como un lanzamiento de mantenimiento, el cual resolverá los temas pendientes.

TIPOS DE MANTENIMIENTO
A continuación se señalan los tipos de mantenimientos existentes, definidos tal y como se especifican para la metodología de MÉTRICA:
Perfectivo: son las acciones llevadas a cabo para mejorar la calidad interna de los sistemas en cualquiera de sus aspectos: reestructuración del código, definición más clara del sistema y optimización del rendimiento y eficiencia.
Evolutivo: son las incorporaciones, modificaciones y eliminaciones necesarias en un producto software para cubrir la expansión o cambio en las necesidades del usuario.
Adaptativo: son las modificaciones que afectan a los entornos en los que el sistema opera, por ejemplo, cambios de configuración del hardware, software de base, gestores de base de datos, comunicaciones, etc.
Correctivo: son aquellos cambios precisos para corregir errores del producto software.
Cabe señalar que, de estos 4 tipos de mantenimiento, solamente el correctivo y el evolutivo entran en el ámbito de MÉTRICA, ya que los otros dos requieren actividades y perfiles distintos a los del proceso de desarrollo.
 
REINGENIERÍA DEL SOFTWARE
modificación de un producto software, o de ciertos componentes, usando para el análisis del sistema existente técnicas de Ingeniería Inversa y, para la etapa de reconstrucción, herramientas de Ingeniería Directa, de tal manera que se oriente este cambio hacia mayores niveles de facilidad en cuanto a mantenimiento, reutilización, comprensión o evaluación.
Cuando una aplicación lleva siendo usada años, es fácil que esta aplicación se vuelva inestable como fruto de las múltiples correcciones, adaptaciones o mejoras que han podido surgir a lo largo del tiempo. Esto deriva en que cada vez que se pretende realizar un cambio se producen efectos colaterales inesperados y hasta de gravedad, por lo que se hace necesario, si se prevé que la aplicación seguirá siendo de utilidad, aplicar reingeniería a la misma.
Entre los beneficios de aplicar reingeniería a un producto existente se puede incluir:
·         Pueden reducir los riegos evolutivos de una organización.
·         Puede ayudar a las organizaciones a recuperar sus inversiones en software.
·         Puede hacer el software más fácilmente modificable
·         Amplía las capacidades de las herramientas CASE
·         Es un catalizador para la automatización del mantenimiento del software
·         Puede actuar como catalizador para la aplicación de técnicas de inteligencia artificial para resolver problemas de reingeniería
La reingeniería del software involucra diferentes actividades como son:

·         análisis de inventarios
·         reestructuración de documentos
·         ingeniería inversa
·         reestructuración de programas y datos
·         ingeniería directa

Con la finalidad de crear versiones de programas ya existentes que sean de mejor calidad y los mismos tengan una mayor facilidad de mantenimiento.




LA IMPORTANCIA DE LA REINGENIERÍA DEL SOFTWARE

·         Puede reducir los riesgos evolutivos de una organización
·         Puede ayudar a las organizaciones a recuperar sus inversiones en software
·         Puede hacer el software más fácilmente modificable
·         Amplía las capacidades de las herramientas CASE
·         Es un catalizador para la automatización del mantenimiento del software
·         Puede actuar como catalizador para la aplicación de técnicas de inteligencia artificial (IA) para resolver problemas de reingeniería

INGENIERIA DIRECTA
«Corresponde al desarrollo de software tradicional»
REESTRUCTURACION
«Es la transformación de una forma de representación a otra en el mismo nivel de abstracción relativo, mientras se mantenga el comportamiento externo del sistema (funcionalidad y semántica)»
«Es la modificación del software para hacerlo más fácil de entender y cambiar»


INGENIERIA INVERSA
«Es el proceso de análisis de un sistema para identificar sus componentes e interrelaciones y crear representaciones del sistema en otra forma o a un nivel más alto de abstracción»

AREAS EN LA INGENIERÍA INVERSA
Redocumentación:
 «Es la creación o revisión de una representación equivalente semánticamente dentro del mismo nivel de abstracción relativo»
Recuperación de diseño:
 «Es un subconjunto de la ingeniería inversa, en el cual, aparte de las observaciones del sistema, se añaden conocimientos sobre su dominio de aplicación, información externa, y procesos deductivos con el objeto de identificar abstracciones significativas a un mayor nivel»
REDISEÑO
«Consiste en consolidar y modificar los modelos obtenidos, añadiendo nuevas funciones  requeridas por los usuarios»
REINGENIERÍA DEL SOFTWARE
«Es el examen y alteración de un sistema para reconstruirlo de una nueva forma y la subsiguiente implementación de esta nueva forma»


OTRAS TECNOLOGIAS
La remodularización. Consiste en cambiar la estructura modular de un sistema de forma que se obtenga una nueva estructura siguiendo los principios del diseño estructurado.
Análisis de la facilidad de mantenimiento. Normalmente la mayor parte del mantenimiento se centra relativamente en unos pocos módulos del sistema Visualización. El proceso más antiguo para la comprensión del software.
Análisis y mediciones. Son importantes tecnologías que estudian ciertas propiedades de los programas.

PROCESO DE REINGENIERIA DEL SOFTWARE
·         Mejorar su facilidad de mantenimiento futuro
·         Facilitar su migración, que el proceso de traducir un programa de un lenguaje a otro, moverlo  de un entorno operativo a otro o actualizar su tecnología
·         Aumentar su esperanza de vida
·         Capturar sus componentes en un repositorio que puede ser gestionado por herramientas CASE
·         Incrementar la productividad de mantenimiento
ANALISIS DE CÓDIGO FUENTE

Análisis estático
Consiste en una evaluación que estudia la estructura del código sin ejercitar o ejecutar dicho código.

·         Auditoría de código: revisión del código para identificar errores de sintaxis y para comprobar el seguimiento de los estándares de codificación.
·         Métricas de producto: permiten obtener un conjunto de métricas sobre distintos atributos del software
·         Análisis de flujo: identifica el flujo de control y de datos para determinar dónde están los errores





0 comentarios: