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:
- 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.
- 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.
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.
- 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.
- Métricas de costo: se centra en el costo total del sistema informático.
- 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.
- 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.
- 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.
- 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.
- 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
Publicar un comentario