jueves, 26 de mayo de 2016

¿QUE ES LA CALIDAD DEL SOFTWARE?

La calidad del software es el conjunto de cualidades que lo caracterizan y que determinan su utilidad y existencia. La calidad es sinónimo de eficiencia, flexibilidad, corrección, confiabilidad, mantenibilidad, portabilidad, usabilidad, seguridad e integridad.
La calidad del software es medible y varía de un sistema a otro o de un programa a otro. Un software elaborado para el control de naves espaciales debe ser confiable al nivel de "cero fallas"; un software hecho para ejecutarse una sola vez no requiere el mismo nivel de calidad; mientras que un producto de software para ser explotado durante un largo período (10 años o más), necesita ser confiable, mantenible y flexible para disminuir los costos de mantenimiento y perfeccionamiento durante el tiempo de explotación.

La calidad del software puede medirse después de elaborado el producto. Pero esto puede resultar muy costoso si se detectan problemas deriva dos de imperfecciones en el diseño, por lo que es imprescindible tener en cuenta tanto la obtención de la calidad como su control durante todas las etapas del ciclo de vida del software.



¿COMO OBTENER UN SOFTWARE DE CALIDAD?

La obtención de un software con calidad implica la utilización de metodologías o procedimientos estándares para el análisis, diseño, programación y prueba del software que permitan uniformar la filosofía de trabajo, en aras de lograr una mayor confiabilidad, mantenibilidad y facilidad de prueba, a la vez que eleven la productividad, tanto para la labor de desarrollo como para el control de la calidad del software.
La política establecida debe estar sustentada sobre tres principios básicos: tecnológico, administrativo y ergonómico.

El principio tecnológico define las técnicas a utilizar en el proceso de desarrollo del software.

El principio administrativo contempla las funciones de planificación y control del desarrollo del software, así como la organización del ambiente o centro de ingeniería de software.

El principio ergonómico define la interfaz entre el usuario y el ambiente automatizado.

La adopción de una buena política contribuye en gran medida a lograr la calidad del software, pero no la asegura. Para el aseguramiento de la calidad es necesario su control o evaluación.

¿COMO CONTROLAR LA CALIDAD DEL SOFTWARE?

Para controlar la calidad del software es necesario, ante todo, definir los parámetros, indicadores o criterios de medición, ya que, como bien plantea Tom De Marco, "usted no puede controlar lo que no se puede medir".

Las cualidades para medir la calidad del software son definidas por innumerables autores, los cuales las denominan y agrupan de formas diferentes. Por ejemplo, John Wiley define métricas de calidad y criterios, donde cada métrica se obtiene a partir de combinaciones de los diferentes criterios. La Metodología para la evaluación de la calidad de los medios de programas de la CIC, de Rusia, define indicadores de calidad estructurados en cuatro niveles jerárquicos: factor, criterio, métrica, elemento de evaluación, donde cada nivel inferior contiene los indicadores que conforman el nivel precedente. Otros autores identifican la calidad con el nivel de complejidad del software y definen dos categorías de métricas: de complejidad de programa o código, y de complejidad de sistema o estructura.

Todos los autores coinciden en que el software posee determinados índices medibles que son las bases para la calidad, el control y el perfeccionamiento de la productividad.

Una vez seleccionados los índices de calidad, se debe establecer el proceso de control, que requiere los siguientes pasos:

Definir el software que va a ser controlado: clasificación por tipo, esfera de aplicación, complejidad, etc., de acuerdo con los estándares establecidos para el desarrollo del software.
Seleccionar una medida que pueda ser aplicada al objeto de control. Para cada clase de software es necesario definir los indicadores y sus magnitudes.
Crear o determinar los métodos de valoración de los indicadores: métodos manuales como cuestionarios o encuestas estándares para la medición de criterios periciales y herramientas automatizadas para medir los criterios de cálculo.
Definir las regulaciones organizativas para realizar el control: quiénes participan en el control de la calidad, cuándo se realiza, qué documentos deben ser revisados y elaborados, etc.
A partir del análisis de todo lo anterior, nuestro Centro se encuentra enfrascado en un proyecto para el Aseguramiento de la Calidad del Software (ACS), válido para cualquier entidad que se dedique a la investigación, producción y comercialización del software, el cual incluye la elaboración de un Sistema de Indicadores de la Calidad del Software, la confección de una Metodología para el Aseguramiento de la Calidad del Software y el desarrollo de herramientas manuales y automatizadas de apoyo para la aplicación de las técnicas y procedimientos del ACS, de forma tal que se conforme un Sistema de Aseguramiento de la Calidad del Software.

CONCLUSIONES


Lograr el éxito en la producción de software es hacerlo con calidad y demostrar su buena calidad. Esto sólo es posible con la implantación de un Sistema para el Aseguramiento de la Calidad del Software directamente relacionado con la política establecida para su elaboración y que esté en correspondencia con la definición internacional ISO de calidad, amplia mente aceptada, y por los estándares del grupo ISO 9000.



Mantenimiento de Software


El Servicio de mantenimiento de software es una de las actividades en la Ingeniería de Software y es el proceso de mejorar y optimizar el software desplegado (revisión del programa), así como también remediar los defectos.

El mantenimiento de software es también una de las fases en el Ciclo de Vida de Desarrollo de Sistemas (SDLC ó System Development Life Cycle), 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 de software involucra 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






Tipos de mantenimiento

A continuación se señalan los tipos servicio de mantenimientos existentes, y entre paréntesis el porcentaje aproximado respecto al total de operaciones de mantenimiento:

Perfectivo (60%): Mejora del software ( rendimiento , flexibilidad , reusabilidad ..) o implementación de nuevos requisitos. También se conoce como mantenimiento evolutivo .

Adaptativo (18%): Adaptación del software a cambios en su entorno tecnológico (nuevo hardware, otro sistema de gestión de bases de datos , otro sistema operativo ...)

Correctivo (17%): Corrección de fallos detectados durante la explotación.


Preventivo (5%): Facilitar el mantenimiento futuro del sistema (verificar precondiciones, mejorar legibilidad.)

miércoles, 11 de mayo de 2016

MANTENIMIENTO Y REINGENIERIA

Mantenimiento y reingenieria de software.


El mantenimiento del software es una actividad que permite extender la vida utili del software y adaptarlo a las necesidades cambiantes de la organización.
El mantenimiento del software es un proceso natural del desarrollo de software, y puede ser clasificado según algunos autores en 4 clases de mantenimiento de acuerdo a la función u objetivo que persiga dicho mantenimiento:
1.- Mantenimiento correctivo
En este tipo de mantenimiento buscamos eliminar errores que no fueron detectados durante las pruebas al sistema, no porque no se hicieran las pruebas correctas, sino porque es imposible prever todas aquellas situaciones a las que nuestro software se enfrentara una vez que este en funcionamiento.
El problema con este tipo de mantenimiento es que podemos estar tratando con problemas de muy variados orígenes, siendo los mas problemáticos, aquellos que ocurren de forma esporádica, ya que resulta difícil encontrar las causas, dado que no siguen un patrón de causa-consecuencia.
Dentro de este tipo de mantenimiento tendremos actividades como:
  • Depuración del código
  • Corrección de mensajes y de interfaz
  • Ajustes para adaptar el software a hardware de uso especifico.
  • Corrección de vulnerabilidades.
2.- Mantenimiento adaptativo.
En este mantenimiento, el objetivo es como su nombre lo indica, adaptar el software a los cambios que ha sufrido la empresa desde que se le desarrollo el software.
Uno de los mayores peligros de este mantenimiento es el retraso, ya que si las actividades del mantenimiento adaptativo no se realización en el momento adecuado, puede llevarnos a hacer cambios mayores en la arquitectura del software.
Las actividades de este mantenimiento pueden incluir
  • Agregar nuevos módulos al sistema
  • Agregar nuevos reportes
  • Agregar nuevas funciones
  • Escalar las capacidades del sistema para el manejo de un mayor volumen de datos.
  • Agregar el manejo de nuevos datos en la base de datos.
3.- Mantenimiento de perfeccionamiento o mejoras.
En este, el objetivo es mejorar el sistema, es decir, el software no presenta fallas criticas y sigue vigente en la organización , con este mantenimiento nos referimos a ajustes menores que pueden incluir.
  • Agregar atajos
  • Nuevas funciones que no fueron solicitadas por el usuario, pero que generan una plusvalía en el software.
4.- Mantenimiento preventivo
Este mantenimiento tiene como objetivo, mantener el software funcionando en optimas condiciones, y es una actividad muy absorbente en sistemas de tipo gerencial y en sistemas empresariales para grandes organizaciones.
Entre las actividades del mantenimiento preventivo tendremos
  • Compactación de la base de datos.
  • Respaldo de la base de datos.
  • Eliminación de datos innecesarios u obsoletos.
  • Eliminación de claves y usuarios que ya no son parte de la organización
  • Mejoras en la seguridad para impedir ataques al sistema y/o robo de información.
Como vemos todas estas actividades pueden llegar a consumir demasiado tiempo.
Estas actividades pueden ser muy difíciles, sobre todo, si en el desarrollo del software no se aplicaron correctamente  los principios el diseño.
Ahora bien, sabemos que no se puede dar mantenimiento de forma eterna, no es técnica, ni económicamente viable, y es en este punto donde entra la ingeniería de software.
La reingeniería es un proceso de reconstrucción del software en el que aplicamos los procesos de ingeniería de software a un sistema que nos servirá de base o punto de partida, y del cual deberemos:
  • reestructurar los documentos
  • reestructurar los datos.
  • reestructurar el código.
Es decir descomponemos el software en sus partes fundamentales y comenzamos un  proceso de reconstrucción del mismo, dejando aquellas partes que se consideren  esenciales preservar de esa forma.
En muchos casos el proceso se lleva a cabo tantos años después que o bien ya no trabajan con nosotros los programadores originales o si somos nosotros mismos, ya no nos acordamos de los detalles y las especificaciones de nuestro trabajo.
Ante esta situación muchas veces se requiere recurrir a la ingeniería inversa, en la que tratamos de recuperar las especificaciones del diseño arquitectónico, de datos y de procesos de un software ya existente.

miércoles, 4 de mayo de 2016

ADMINISTRACION DE LA CONFIGURACION DEL SOFTWARE

Administración de la configuración del software

La Administración de la Configuración del Software (SCM) es la disciplina de identificar la configuración de un sistema en distintos puntos en el tiempo, con el propósito de controlar sistemáticamente cambios en la configuración del software y mantener la integridad y la rastreabilidad de la configuración a través del ciclo de vida del sistema. Esta área del conocimiento incluye seis subáreas.

La primera subárea es la administración del proceso de SCM. Cubre los tópicos del contexto de la organización para SCM, las restricciones y las guías para SCM, planeando para SCM, el plan mismo del SCM y la vigilancia del SCM.

La segunda subárea es la identificación de la configuración del software, la cual identifica los elementos que se controlarán, establece esquemas de identificación para los elementos y sus versiones, y establece las herramientas y las técnicas que se utilizarán en la adquisición y manejo de los artículos controlados. Los tópicos en esta subárea son, primero la identificación de los artículos que se controlarán y la biblioteca del software.
La tercera subárea es el control de la configuración del software, que es la administración de cambios durante el ciclo de vida del software. Los asuntos son, primero, solicitando, evaluando y aprobando los cambios al software, y segundo, implementar los cambios al software, y tercero, desviaciones y renuncias.

La cuarta subárea es contabilización del estado de la configuración del software. Sus tópicos son información de estado de la configuración del software y reportes de estado.

La quinta subárea es la revisión de la configuración del software. Que consiste en revisión de la configuración funcional del software, revisión de la configuración física del software y de revisiones en proceso de una línea base del software.

La última subárea es la administración de versiones y entrega, que cubre la construcción de software y la administración de versiones.

Los cambios dentro del desarrollo del software pueden ocurrir en cualquier momento por lo tanto debemos estar preparados, las actividades de CGS sirven para:
  • Identificar el cambio de nuestro software.
  • Controlar ese cambio.
  • Garantizar que el cambio quede bien implantado.
  • Informar el cambio.
La gestión de configuración del software no es un mantenimiento del software, el mantenimiento es la etapa final de la ingeniería hasta que se retire el producto del equipo, la CGS es un conjunto de actividades de seguimiento y control que comienzan cuando se inicia el proyecto de desarrollo del software y termina sólo una vez que el software queda fuera de circulación.

Desgraciadamente, en el proceso de ingeniería del software existe una variable importantísima que entra en juego,el cambio.

La primera Ley de la ingeniería de sistemas establece: “Sin importar en que momento del ciclo de vida del sistema nos encontremos, el sistema cambiará y el deseo de cambiarlo persistirá a lo largo de todo el ciclo de vida”.

Entonces nos hacemos diferentes preguntas: ¿Por qué cambiar el sistema? ¿Que produce los en el sistema cambios? La respuesta a estas interrogantes se puede encontrar en cuatro aspectos fundamentales y a menudo muy tradicionales dentro del desarrollo del software:
  • Nuevos requisitos del negocio o condiciones que dictan los cambios en las condiciones del producto o en las normas comerciales.
  • Nuevas necesidades del los clientes que demandan la modificación de los datos producidos por un sistema basado en computadora.
  • Reorganización y/o reducción del volumen comercial que provoca cambios en las prioridades del proyecto o en la estructura del equipo de ingeniería del software.
  • Restricciones presupuestarias o de planificaciones que provocan una redefinición del sistema o del producto.
La gestión de configuración del software realiza un conjunto de actividades desarrolladas para gestionar y registrar los cambios a lo largo del ciclo de vida del software de computadora.

La GCS es una actividad de garantía de calidad del software que se aplica en todas las fases del proceso de ingeniería del software.