UNIDAD 4: CALIDAD ENFOCADA AL DESARROLLO DE SOFTWARE.


4.1 QUÉ ES LA CALIDAD DEL SOFTWARE.




Es el conjunto de cualidades que lo caracterizan y determinan su utilidad y existencia. Es sinónimo de eficiencia, flexibilidad, corrección, confiabilidad, mantenibilidad, portabilidad, usabilidad, seguridad e integridad.

Son características propias del software, aquellas que tú quieres controlar y asegurar. El software es un producto inmaterial que no se fabrica, tampoco se degrada físicamente, pero sí se desarrolla. El software puede tener errores e incidencias, pero no son similares a las de cualquier equipo de carácter físico.

La calidad del software se encuentra casi a la par de la calidad tradicional, ligeramente detrás, debido a que la calidad tradicional tiene varias décadas de historia, mientras que la calidad de software tiene entre 50 y 30 años de haber surgido.
El software necesita ser actualizado. (Wikipedia, 2001)



4.2 CÓMO OBTENER CALIDAD DE SOFTWARE.



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, en aras de lograr una mayor confiabilidad, mantenibilidad, facilidad de prueba, a la vez que elevan la productividad tanto para la labor de desarrollo como para el control de la calidad del software.  (Gómez, 2012)



4.3 CÓMO CONTROLAR LA CALIDAD DEL SOFTWARE.


Para controlar la calidad del software es necesario definir los parámetros, indicadores o criterios:

"No se puede controlar lo que no se puede medir."

A partir de la metodología para la evaluación de la calidad se definen los indicadores de calidad en cuatro niveles jerárquicos = Factor, criterio, métrica, elemento de evaluación, una vez seleccionados los índices de calidad se requieren los siguientes pasos:

  • Definir el software que va a ser controlado o clasificación por tipo, esfera de aplicación, complejidad, etc.
  •  Seleccionar una medida que pueda ser aplicada al objeto de controlar para cada clase de software es necesario definir los indicadores y sus magnitudes.
  • Crear o determinar los métodos de valoración, métodos manuales como cuestionarios o encuestas estándares para la medición de criterios. (Anónimo, 2015)





4.4 COSTO DE LA CALIDAD DEL SOFTWARE.


Son todos aquellos costos destinado por la empresa para alcanzar la calidad requerida en un producto o servicio, previniendo, evitando o detectando errores, para alcanzar parámetros de excelencia.

Implica la utilización de técnicas administrativas, encaminadas a la utilización adecuada de los recursos disponibles, la cuantificación de esfuerzos y el aprovechamiento de las áreas de oportunidad.

Los costos de calidad, surgen debido a la baja calidad que pudiera existir, por lo que se encuentran ligados a la identificación, creación, prevención y reparación de defectos. (Anónimo, Webyempresas, 2011)



4.5 NOMENCLATURA Y CERTIFICACIÓN ISO 9001:2000.


Esta Norma Internacional especifica los requisitos para un sistema de gestión de la calidad, cuando una organización.

Necesita demostrar su capacidad para proporcionar de forma coherente productos que satisfagan los requisitos del cliente y los reglamentarios aplicables.

Aspira a aumentar la satisfacción del cliente a través de la aplicación eficaz del sistema, incluidos los procesos para la mejora continua del sistema y el aseguramiento de la conformidad con los requisitos del cliente y los reglamentarios aplicables.

Aplicación
Todos los requisitos de esta Norma Internacional son genéricos y se pretende que sean aplicables a todas las organizaciones, sin importar su tipo, tamaño y producto suministrado.
Cuando uno o varios requisitos de esta Norma Internacional no se puedan aplicar debido a la naturaleza de la organización y de su producto, pueden considerarse para su exclusión. 

Cuando se realicen exclusiones, no se podrá alegar conformidad con esta Norma Internacional a menos que dichas exclusiones queden restringidas a los requisitos expresados en el capítulo 7 y que tales exclusiones no afecten a la capacidad o responsabilidad de la organización para proporcionar productos que cumplir con los requisitos del cliente y los reglamentarios aplicables. (Carmona, 2012)



4.6 LA NORMA ISO/IEC 9126.


ISO 9126 es un estándar internacional para la evaluación de la calidad del software. Está reemplazado por el proyecto SQUARE, ISO 25000:2005, el cual sigue los mismos conceptos.

El estándar está dividido en cuatro partes las cuales dirigen, realidad, métricas externas, métricas internas y calidad en las métricas de uso y expendido. El modelo de calidad establecido en la primera parte del estándar, ISO 9126-1, clasifica la calidad del software en un conjunto estructurado de características y subcaracterísticas de la siguiente manera:

  • Funcionalidad - Un conjunto de atributos que se relacionan con la existencia de un conjunto de funciones y sus propiedades específicas. Las funciones son aquellas que satisfacen las necesidades implícitas o explícitas.
  • Adecuación - Atributos del software relacionados con la presencia y aptitud de un conjunto de funciones para tareas especificadas.
  • Exactitud - Atributos del software relacionados con la disposición de resultados o efectos correctos o acordados.
  • Interoperabilidad - Atributos del software que se relacionan con su habilidad para la interacción con sistemas especificados.
  • Seguridad - Atributos del software relacionados con su habilidad para prevenir acceso no autorizado ya sea accidental o deliberado, a programas y datos.
  • Fiabilidad - Un conjunto de atributos relacionados con la capacidad del software de mantener su nivel de prestación bajo condiciones establecidas durante un período establecido.
  • Madurez - Atributos del software que se relacionan con la frecuencia de falla por fallas en el software.
  • Recuperabilidad - Atributos del software que se relacionan con la capacidad para restablecer su nivel de desempeño y recuperar los datos directamente afectos en caso de falla y en el tiempo y esfuerzo relacionado para ello.
  • Tolerancia a fallos - Atributos del software que se relacionan con su habilidad para mantener un nivel especificado de desempeño en casos de fallas de software o de una infracción a su interfaz especificada.
  • Cumplimiento de Fiabilidad - La capacidad del producto software para adherirse a normas, convenciones o legislación relacionadas con la fiabilidad.
  •  Usabilidad - Un conjunto de atributos relacionados con el esfuerzo necesario para su uso, y en la valoración individual de tal uso, por un establecido o implicado conjunto de usuarios.
  • Aprendizaje- Atributos del software que se relacionan al esfuerzo de los usuarios para reconocer el concepto lógico y sus aplicaciones.
  • Comprensión - Atributos del software que se relacionan al esfuerzo de los usuarios para reconocer el concepto lógico y sus aplicaciones.
  •  Operatividad - Atributos del software que se relacionan con el esfuerzo del usuario para la operación y control del software.
  • Eficiencia - Conjunto de atributos relacionados con la relación entre el nivel de desempeño del software y la cantidad de recursos necesitados bajo condiciones establecidas.
  • Comportamiento en el tiempo - Atributos del software que se relacionan con los tiempos de respuesta y procesamiento y en las tasas de rendimientos en desempeñar su función.
  • Comportamiento de recursos - Usar las cantidades y tipos de recursos adecuados cuando el software lleva a cabo su función bajo condiciones determinadas.
  • Mantenibilidad - Conjunto de atributos relacionados con la facilidad de extender, modificar o corregir errores en un sistema software.
  • Estabilidad - Atributos del software relacionados con el riesgo de efectos inesperados por modificaciones.
  • Facilidad de análisis - Atributos del software relacionados con el esfuerzo necesario para el diagnóstico de deficiencias o causas de fallos, o identificaciones de partes a modificar.
  • Facilidad de cambio - Atributos del software relacionados con el esfuerzo necesario para la modificación, corrección de falla, o cambio de ambiente.
  •  Facilidad de pruebas - Atributos del software relacionados con el esfuerzo necesario para validar el software modificado.
  •  Portabilidad - Conjunto de atributos relacionados con la capacidad de un sistema de software para ser transferido y adaptado desde una plataforma a otra.
  •  Capacidad de instalación - Atributos del software relacionados con el esfuerzo necesario para instalar el software en un ambiente especificado.
  • Capacidad de reemplazamiento - Atributos del software relacionados con la oportunidad y esfuerzo de usar el software en lugar de otro software especificado en el ambiente de dicho software especificado.
  • Calidad en uso - Conjunto de atributos relacionados con la aceptación por parte del usuario final y Seguridad.
  • Eficacia - Atributos relacionados con la eficacia del software cuando el usuario final realiza los procesos.
  • Productividad - Atributos relacionados con el rendimiento en las tareas cotidiana realizadas por el usuario final.
  • Seguridad - Atributos para medir los niveles de riesgo.
  • Satisfacción - Atributos relacionados con la satisfacción de uso del software.
  • La subcaracterística Conformidad no está listada arriba ya que se aplica a todas las características. Ejemplos son conformidad a la legislación referente a usabilidad y fiabilidad. Cada subcaracterística (como adaptabilidad) está dividida en atributos. Un atributo es una entidad la cual puede ser verificada o medida en el producto software. Los atributos no están definidos en el estándar, ya que varían entre diferentes productos software. (autor, 2015)




4.7 ANÁLISIS DE FACTORES QUE DETERMINAN LA CALIDAD DEL SOFTWARE.

Calidad del Software: Es el grado con el que un sistema, componente o proceso cumple los requerimientos especificados y las necesidades o expectativas del cliente o usuario.
Factores que determinan la calidad del software: Se pueden clasificar en dos grandes grupos (Pressman):

  • Medidas Directas: La medida o medición decimos que es directa, cuando disponemos de un instrumento de medida que nos muestra un resultado (generalmente numérico).
  • Medidas Indirectas: Cuando hablamos de sistemas informáticos no siempre es posible realizar una medida directa, porque no disponemos del instrumento adecuado que nos permita realizar esa medición


Métricas del software.
Son las que están relacionadas con el desarrollo del software como funcionalidad, complejidad, eficiencia.
Entre las métricas del software tenemos las siguientes:

  1. Métricas técnicas: Se centran en las características del software. Aquí medimos la complejidad lógica y el grado de modularidad del sistema. Mide la estructura del sistema, el cómo está hecho.

  2. Métricas de calidad: Son todas las métricas de software que definen de una u otra forma la calidad del software; tales como corrección, exactitud, integridad, facilidad de uso, estructuración o modularidad, pruebas, facilidad de mantenimiento, reusabilidad, cohesión del módulo, acoplamiento del módulo, etc. Estas son los puntos críticos en el diseño, codificación, pruebas y mantenimiento. 
Proporcionan una indicación de cómo se ajusta el software a los requisitos implícitos y explícitos del cliente. Es decir, cómo voy a medir para que mi sistema se adapte a los requisitos que me pide el cliente. 

Corrección: es el grado en que el software desempeña la función para la que fue creado y se mide en defectos por KLDC. 

Facilidad de Mantenimiento: es la sencillez con que un programa puede corregirse si se encuentra un error, al adaptarse si su entorno cambio o mejorar si el cliente cambia los requisitos y se mide en forma indirecta en TMC (Tiempo Medio de Cambio) 

Integridad: es la habilidad de un sistema para resistir ataques que requiere la definición de amenaza y seguridad.

  1. Métricas de Productividad: Se centran en el rendimiento del proceso de la ingeniería del software. Es decir, qué tan productivo va a ser el software que voy a diseñar. Se refiere a las características del software.
  2. Métricas de costo: se centra en el costo total del sistema informático.
  3. Métricas orientadas al tamaño: Esta nos permite conocer el tiempo en el que se terminará el software y cuántas personas se necesitan para su desarrollo, aquí medimos las variables con las que desarrollamos el software.
  4. Métricas orientadas a la función o puntos de función: Son medidas indirectas del software y del proceso por el cual se desarrolla. En lugar de calcular las líneas de código LDC, las métricas de función se centran en la funcionalidad o utilidad del programa. Los puntos de función nos indican la medida de la productividad. Los puntos de función se obtienen utilizando una función empírica basado en medidas cuantitativas del dominio de información del software y valoraciones subjetivas de la complejidad del software. (Virtualedu, 2016)



4.8 ANÁLISIS DEL PROCESO DEL CICLO DE VIDA DEL SOFTWARE.


  1. La fase de planificación y análisis: El proceso del desarrollo de software comienza con una fase inicial de planificación, que incluye un análisis de requisitos. Los clientes pueden tener una idea general del tipo de producto que necesitan, pero esta información no nos aporta nada de cómo debe ser la aplicación en realidad. Por ello los profesionales del software se fijan en los requisitos que piden los clientes para estudiar qué requisitos están incompletos, cuales son ambiguos y cuales son simplemente contradictorios. Para prevenir que los requisitos que sean incorrectos, es útil hacer demostraciones prácticas de cómo funcionaría la aplicación con frecuencia. La siguiente fase sería fijar el alcance del proyecto de desarrollo y ponerlo por escrito en un documento de forma clara y concisa.
  2. Fases de implementación, pruebas y documentación del código: Tras lo expuesto arriba, vendrían las fases de implementación, pruebas y documentación. La implementación consiste en el desarrollo y programación del código. Esto lo hacen los ingenieros del software. La prueba o testeo del software es una parte fundamental en el proceso de desarrollo del software, porque asegura que los errores sean detectados en fases muy tempranas y sobre todo que puedan ser corregidos lo antes posible. La documentación interna del diseño del software se realiza durante todo el proceso de programación del código de la aplicación. Esto ayudará mucho a mantener y mejorar el programa en el futuro. El desarrollo de un interfaz de programación de la aplicación o una API también puede formar parte del proceso de documentación. El equipo de desarrollo elige el proceso de ingeniería del software y sus fases. También acordarán cuanta documentación interna se necesita.
  3. Fases de despliegue y mantenimiento del software: Las siguientes fases son la de despliegue y mantenimiento. Despliegue implica instalación, personalización, testeo y en ocasiones un periodo de evaluación del rendimiento del mismo. Estas fases solo se dan cuando el software ya ha sido testado internamente de manera exhaustiva y esté ya disponible en el mercado. A mayores, es recomendable incluir formación y soporte, porque el software es efectivo cuando se usa de forma apropiada. El mantenimiento y mejora de los productos de software es crucial para poder corregir defectos que vayan surgiendo o para poder atender a los requisitos del software. Esto podría tomar siglos, ya que en ocasiones hay que volver a empezar a diseñar y programar el software desde cero. (Velne, 2015)




4.9 FUNCIONES DE EVALUACIÓN DEL SOFTWARE.



Función de Evaluación: Las primeras propuestas de función de evaluación estaban orientadas a tener una evaluación estática de la posición basada fundamentalmente en el concepto de material. Rápidamente se captó que esta evaluación no era suficiente, considerando que en el ajedrez existen factores estructurales los cuales afectarán a largo plazo el curso de la partida, por lo cual es muy probable que el programa no encuentre las consecuencias de esta situación en su búsqueda en profundidad. Estos aspectos, denominados “Posicionales” debieron incluirse en la función de evaluación.

Los primeros programas incluyeron algunos parámetros posicionales básicos, los cuales tenían un peso importante en la evaluación de la posición, pero no igualable al peso que poseía el factor de material. El problema entonces de dar un adecuado “peso” a cada parámetro de la función de evaluación, y en qué momento de la partida darlo a uno u otro parámetro constituía un problema denominado carencia de “conocimiento ajedrecístico” cuya solución estaba en captar las impresiones de los jugadores humanos “expertos” y asimilarlas en el programa.

La inclusión de un mayor “conocimiento ajedrecístico” en los programas fue logrado mediante el trabajo conjunto entre programadores y maestros de ajedrez. Desafortunadamente, costó bastante el poder combinar de manera eficiente una idea de función de evaluación lo más completa posible con la mayor cantidad de parámetros de medición, pero a la vez muy rápida en su capacidad de cálculo.

Nuevamente acá los avances en hardware permitieron crear funciones de evaluación más poderosas y cuya utilización no significaba un alto costo de CPU. El problema entonces se redujo a cómo dar pesos adecuados a cada parámetro de la función con tal de que la combinación de éstos entregue una evaluación al menos similar a la que concluiría un maestro de ajedrez.

A este respecto resulta destacable el trabajo realizado por Hsu, Campbell y Anantharaman, ¿quiénes testearon su programa Deep Blue? con cerca de 900 posiciones particulares de partidas de Grandes Maestros. Durante el análisis por parte de la máquina de estas posiciones, los programadores iban ajustando manualmente los pesos de cada parámetro de la función de evaluación con tal de que el programa encontrara el movimiento seleccionado. Este ajuste de “pesos” resultó ser un notorio avance en la performance de la función de evaluación del programa. Respecto de esto una cita de Anantharaman en el ICCA Journal describiendo esta metodología:

“La función de evaluación del software de Deep Thought es ajustada contra una base de datos de partidas de maestros de ajedrez. La diferencia de evaluación entre el movimiento elegido por el programa y el maestro es minimizada. La performance del programa de ajedrez con la función de evaluación ajustada fue medida en forma experimental. El programa jugó varios matchs de 500 partidas con diferentes ajustes contra un programa fijo. Los resultados mostraron que un 98% de la performance de la función de evaluación puede ser mejorada en aproximadamente una semana ajustándola a partir de la información de partidas de la base de datos”. (Anónimo, Calidad del software, 2011)


Bibliografía

Anónimo. (2011). Calidad del software. Obtenido de Calidad del software: https://itpnli.es.tl/Calidad-Unidad-4.htm
Anónimo. (2011). Webyempresas. Obtenido de Webyempresas: https://www.webyempresas.com/costos-de-calidad/#Costos
Anónimo. (2015). Slideshare. Obtenido de Slideshare: https://es.slideshare.net/jorx_25/como-obtener-software-de-calidad-1
autor, S. (2015). Blogspot. Obtenido de Blogspot: http://unidad4rociomp.blogspot.com/2017/07/46.html?m=1
Carmona, N. (Abril de 2012). ISO 9001. Obtenido de ISO 9001: http://abril1912.blogspot.com/2017/07/41-iso-nomenclatura-y-certificacion-iso.html?m=1
Gómez, C. (2012). Slideshare. Obtenido de Slideshare: https://es.slideshare.net/jorx_25/como-obtener-software-de-calidad-1
Velne. (2015). Ciclo de vida de software. Obtenido de Ciclo de vida de software: https://velneo.es/el-ciclo-de-vida-del-desarrollo-de-software/
Virtualedu. (2016). Factores de calidad. Obtenido de Factores de calidad: https://virtual.itca.edu.sv/Mediadores/stis/52___factores_de_calidad_del_software.html
Wikipedia. (2001). Calidad del Software. Obtenido de Calidad del Software: https://es.wikipedia.org/wiki/Calidad_de_software

 

Comentarios

Entradas populares