domingo, 19 de mayo de 2013

Apuntes Soporte de Software


Soporte de Software

El soporte es una actividad que se le brinda al cliente para tratar de solucionar un problema que se le haya presentado referente a un producto en especial, en general sirve para ayudar a resolver los problemas que puedan presentárseles al cliente, mientras hace uso del software.
Cuando el soporte está debidamente organizado, se pueden dar varios niveles de soporte:
  • Soporte de Nivel 1 
  •  Soporte de Nivel 2
  •  Soporte de Nivel 3
  • Soporte de Nivel 4

Soporte de Nivel 1
El principal trabajo de un especialista de Nivel I es reunir toda la información del usuario y determinar la incidencia mediante el análisis de los síntomas y la determinación del problema subyacente.
Soporte de Nivel 2
 Lo realizan personas especializadas en redes de comunicación, sistemas de información, sistemas operativos, bases de datos, entre otras.

Soporte de Nivel 3

Aquí el técnico trabajará junto con el usuario para resolver el problema, el técnico debe determinar primero, si puede o no resolver el problema y si para resolver el problema, necesita requerir información de contacto del usuario para que el técnico pueda disponer de tiempo suficiente para analizar el problema y encontrar una solución.

Soporte de Nivel 4

Es el nivel más avanzado que se tiene catalogado y debe contar con los conocimientos de niveles anteriores.



Mantenimiento de Software

Es una actividad que se le realiza al software con la finalidad de corregirlo o mejorarlo.
El mantenimiento del software existente puede dar cuenta de más del 60% de las inversiones efectuadas por una organización de desarrollo.

Se debe desarrollar mecanismos para evaluar, controlar y realizar modificaciones debido al inevitable cambio de sistemas basados en computadora, va mucho más allá de corregir errores.

Se puede definir describiendo 4 actividades: mantenimiento correctivo, mantenimiento adaptativo, mantenimiento de perfectivo y mantenimiento preventivo.

Mantenimiento preventivo: Se hace con la finalidad de anticipar fallos.

Mantenimiento correctivo: Su fin es buscar fallos para poder corregirlos.

Mantenimiento adaptativo: Se da cuando al software se le cambia de entorno (hardware o software).

Mantenimiento perfectivo: Es cuando se mejora una parte específica del software, aquí entra la reingeniería.

Tan sólo el 20% de los esfuerzos de mantenimiento se invierten corriendo errores. El 80% se dedica a adaptar los sistemas existentes a los cambios de su entorno externo, a efectuar mejoras solicitadas por los usuarios y a rehacer la ingeniería de las aplicaciones para su posterior utilización.





Reingeniería de software 


Reingeniería del software se puede definir como: “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.



Análisis de inventarios: Aquí es donde se recopilan cada uno de los elementos con los que se cuenta del proyecto.

Restructuración de documentos: En esta etapa se obtiene  de todos los documentos y datos sobre el proyecto.

Ingeniería inversa: Este es un proceso por el cual se obtiene información acerca del proceso.

Restructuración de código: Su fine  es generar un diseño que produzca la misma función que el programa original per con mayor calidad.

Restructuración de datos: Su principal función es extraer elementos y objetos de datos para obtener información del flujo.

Ingeniería directa: La ingeniería directa, también llamada renovación no solo recupera la información del diseño a partir del software existente, si no también utiliza esta información para alterar o reconstruir el software existente.

Ingeniería Inversa

La ingeniería inversa tiene la misión de desentrañar los misterios y secretos de los  sistemas en uso. Consiste principalmente en recuperar el diseño de una aplicación a partir del código.

Esto se realiza principalmente mediante herramientas que extraen información de los datos, procedimientos y arquitectura del sistema existente. Es aplicable a sistemas con las siguientes características:

•Documentación inexistente o totalmente obsoleta.
•Programación en bloque de códigos muy grandes y/o sin estructurar.
•Inexistencia de documentación interna en los programas, o bien ésta es incomprensible o está desfasada.
•La aplicación cubre gran parte de los requisitos y del rendimiento esperado.
•La aplicación está sujeta a cambios frecuentes, que pueden afectar a parte del diseño.
•Se prevé que la aplicación pueda tener aún larga vida.

 La ingeniería inversa puede extraer información de diseño del código fuente, pero el nivel de abstracción, la completitud de la documentación, el grado con el cual trabajan al mismo tiempo las herramientas y el analista humano, y la direccionalidad del proceso son sumamente variables.



Gestión de cambio


La gestión de cambio, más usualmente llamada “gestion de configuración de software (GCS o GC)”.
La gestión de la configuración del software es un conjunto de actividades de seguimiento y control que inician cuando comienza un proyecto y terminan solo cuando este se retira de operación.
 El cambio puede ocurrir en cualquier momento, por cualquier razón. De hecho, la primera ley de la ingeniería de sistemas afirma “”No importa donde se encuentre el ciclo de vida del sistema, el sistema cambiara y el deseo de cambiarlo persistirá a lo largo de todo el ciclo de vida.
Los principales orígenes de los cambios son:

-Nuevas condiciones del negocio
-Nuevas necesidades del cliente
-Crecimiento del negocio
-Restricciones presupuestales

Por otro lado las metas del gestor de configuración de son garantizar que se siguen los procedimientos y políticas para crear, cambiar y poner a prueba el código, así como posibilitar el acceso a la información acerca del proyecto. Los 4 elementos de GC identificados por Susan Dart para cuando se desarrolla un sistema son:

-Elementos de componentes
-Elementos de proceso
-Elementos de construcción
-Elementos humanos.

La mayoría de los cambios están justificados, por eso se utiliza una Línea Base que es un concepto de GCS que ayuda a controlar el cambio sin impedir seriamente el cambio justificable. Se define a una línea base como una especificación o producto que se ha revisado formalmente y se está de acuerdo con los resultados y que a partir de ahí sirve como la base para el desarrollo ulterior y que puede cambiarse solo por medio de procedimientos formales de control de cambio.

 Elementos de configuración de software
Un  elemento de configuración de software es información que se crea como parte del proceso de ingeniería del software. De manera más realista, un ECS es un documento, un conjunto completo de casos de prueba o un componente de n programa dado.
En la actualidad los ECS se conservan en dase de datos o deposito del proyecto. El diccionario Webster define la palabra depósito como “cualquier cosa o persona que se considera como centro de acumulación o almacenamiento”.
El depósito de ECS es el conjunto de mecanismos y estructuras de daros que permite que un equipo de software maneje el cambio en una forma eficaz. El depósito proporciona las funciones obvias de un sistema de base de datos como son:

-Integridad de los datos
-Compartir Información
-La integración de herramientas
-La integración de los datos
-Estandarización de los documentos.

El apoyo a la GCS requiere que el almacén o depósito contengan un conjunto de herramientas que ofrezca soporte para las siguientes características:

---Versiones
Conforme un proyecto progrese se crearan muchas versiones de productos de trabajo individuales. El depósito debe ser capaz de guardar todas estas versiones para permitir la gestión eficaz de las liberaciones de producto y permitir que regresiones a versiones anteriores durante las pruebas y la depuración.
Cabe mencionar el control de la versión combina procedimientos y herramientas para la gestión de diferentes versiones por medio de un sistema de control de versiones, este está integrado por  grandes capacidades: Una base de datos del proyecto, Una capacidad de almacenamiento de todas las versión de un objeto de configuración y Facilidad de hechura que permite recopilar los objetos además del seguimiento de conflictos.

---Gestión del seguimiento de la independencia y del cambio
Seguimiento de requisitos: Esta función especial ofrece la habilidad de seguir todos los componentes y entregables de diseño y construcción que resulten de una determinación especifica de requisitos.
Gestión de la configuración: Facilita la conservación del rastro de una serie de configuración es que representan hitos específicos del proyecto o liberaciones de producción
Rutas de auditoría: Una ruta de auditoría establece información adicional acerca de cuanto, porque y por quien se hicieron los cambios

Control de Cambio
“El arte del progreso es preservar el orden entre el cambio, y preservar el cambio entre el orden”- Alfred North Whitehead
Para esto el control de cambio combina procedimientos humanos y herramientas automatizadas. Esto se hace mediante el siguiente proceso.
 


Gestión de Calidad
El enfoque de ingeniería del software descrito en este libro se dirige hacia una sola meta: producir software de alta calidad.
La gestión de calidad es una actividad protectora que se aplica a lo largo del proceso de software, esta barca: un proceso de garantía de la calidad del software, tareas especificas de aseguramiento  y control de calidad, practicas efectivas del software, control de todos los productos de trabajo,  un proceso para garantizar la concordancia con los estándares y mecanismos de medición e informe.

Calidad

Es una característica o atributo de algo, también se refiere a características mensurables es decir cosas que se pueden comparar para conocer estándares.
Garantía de la calidad
Esta consiste en un conjunto de funciones de auditoría e informacion que evalúan la efectividad y que tan completas son las actividades de control de calidad. Su meta es brindarle al gestor los datos necesarios para que este informado acerca de la calidad del producto

Costo de calidad

Incluye todos los costos que genera la búsqueda de calidad o demanda el desarrollo de las actividades relacionadas con la calidad.
Estos costos se dividen en costos asociados con prevención, evaluación y fallas por lo tanto los costos relativos aumentan sustancialmente conforme se pasa de la prevención a detección y de los de falla a los de falla externa.

Revisiones del software

Las revisiones del software son un filtro para el proceso del software. Estas se aplican en varios puntos durante la ingeniería del software y sirven para descubrir errores y defectos que luego pueden eliminarse además de purificar las actividades como análisis, diseño y codificación.
El objetivo principal de las revisiones técnicas formales es describir errores durante el proceso de modo que no se conviertan en defectos después de liberar el software.
Informe de la revisión y conservación de registros
El informe resumen de la revisión, es un formato de una sola página. Se vuelve registro histórico del proyecto y es posible distribuirlo en el producto, funciona como lista de verificación de elementos de acción que guían al productor conforme se hacen las correcciones. Normalmente al informe resumen se anexa una lista de problemas.







Los estándares de calidad ISO 90008

Es posible definir un sistema de garantía de la calidad como la estructura organizacional, responsabilidades, procedimientos y recursos para implementar la gestión de la calidad.
Este estándar describe un sistema de garantía de la calidad en términos genéricos que se aplican a cualquier negocio sin importar los productos o servicios ofrecidos.
Plan de SQA
Este proporciona un mapa para instituir la garantía de la calidad del software. El plan funciona como plantilla para las actividades de SQA que se instituyan para cada proyecto de software.
El estándar recomiendo una estructura que identifica : el propósito y el plan, una descripción de todos los productos de trabajo de ingeniería del software, todos los estándares y practicas aplicables que se aprovechan durante el proceso, acciones y tareas SQA, las herramientas y métodos que soporten las acciones y tareas, procedimientos de GCS, métodos para ensamblar y salva guardar los registros relacionados con el SQA y por ultimo papeles y responsabilidades en la organización relativas a la calidad del producto.







Bibliografía:

Roger S. Pressman, “INGENIERÍA DEL SOFTWARE UN ENFOQUE PRACTICO” 6ta Edición
McGrawhill.