1.
Explique el concepto de calidad de software
Calidad de software. es el desarrollo de software basado en estándares con la funcionalidad y rendimiento total
que satisfacen los requerimientos del cliente. Son características propias del software, aquellas que tú quieres
controlar y asegurar
La calidad del software es el grado con el que un sistema, componente o proceso cumple los requerimientos
especificacados y las necesidades o expectativas del cliente o usuario”. (IEEE, Std. 610-1990) .“Concordancia
del software producido con los requerimientos explícitamente establecidos, con los estándaresd e desarrollo
prefijados y con los requerimientos implícitos no establecidos formalmente, que desea el usuario”
(Pressman, 1998) 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.
¿Qué es CALIDAD? Conjunto de cualidades que constituyen la manera de ser de una persona o cosa. Conjunto
de características de un producto o servicio, que lo convierte en satisfactorio para el cliente o consumidor.
Trabajar en calidad significa diseñar, producir y servir un producto o servicio que sea útil, lo más económico
posible y siempre satisfactorio para el usuario. (Kaoru Isikawa)
“No me preocupo si el producto es caro o barato. Solo me preocupa si es lo suficientemente bueno, así el
público pagará por él. Walt Disney
Una idea general sobre un software de calidad es aquel que debiera cumplir con los requerimientos funcionales
y de performance además de ser mantenible, confiable y aceptable.
Principales características para un software de calidad.
Mantenibilidad: el software debe ser diseñado de tal manera, que permita ajustarlo a los cambios en los
requerimientos del cliente. Esta característica es crucial, debido al inevitable cambio del contexto en el que se
desempeña un software.
Confiabilidad: incluye varias características además de la confiabilidad, como la seguridad, control de fallos,
etc.
Eficiencia: tiene que ver con el uso eficiente de los recursos que necesita un sistema para su funcionamiento.
Usabilidad: el software debiera ser utilizado sin un gran esfuerzo por los usuarios para los que fue diseñado,
documentado, etc.
Como puede observarse, las diversas características con las que se desea que cumpla un software de calidad
varían ampliamente. Algunas tienen que ver con el usuario que interactúa con el sistema, otras con el líder de
proyecto y diseñadores, otras características parecen muy abstractas y hasta indefinidas, etc.
En 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.
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
2. ¿Cómo gestionar la calidad de conformidad en la elaboración de software?
El término gestión de calidad tiene significados específicos dentro de cada sector del negocio. Esta definición,
que no apunta al aseguramiento de la buena calidad por la definición más general sino a garantizar que una
organización o un producto sea consistente, tiene cuatro componentes:
1. Planeamiento de la calidad
2. Control de la calidad
3. Aseguramiento de la calidad
4. Mejoras en la calidad.
La gestión de calidad se centra no solo en la calidad de un producto , servicio o la satisfacción de sus clientes,
sino en los medios para obtenerla.2 Por lo tanto, la gestión de calidad utiliza al aseguramiento de la calidad y
el control de los procesos para obtener una calidad más consistente.
El sistema de calidad se debe adecuar a los objetivos de la calidad de la empresa. La dirección de la empresa
es la responsable de fijar la política de calidad y las decisiones relativas a iniciar, desarrollar, implantar y
actualizar el sistema de calidad.
Un sistema de calidad consta de varias partes:
Documentación : Manual de calidad. Es el documento principal para establecer e implantar un
sistema de calidad. Puede haber manuales a nivel de empresa, departamento, producto, específicos
(compras, proyectos,…).
Parte física: locales, herramientas ordenadores, etc.
Aspectos humanos: Formación de personal. Creación y coordinación de equipos de trabajo.
Para medir la calidad se necesitan métricas, no puede hacerse directamente. Al conjunto de técnicas para
conseguir esta calidad se le llama Control de la Calidad del Sofware
Sistema de control de calidad de software. Es la estructura que organiza evaluaciones, inspecciones, auditorias
y revisiones que aseguren que se cumplan las responsabilidades asignadas, se utilicen eficientemente los
recursos y se logre el cumplimiento de los objetivos del producto. Tiene la intención de mantener bajo control
un proceso y eliminar las causas de los defectos en las diferentes fases del ciclo de vida de un producto.
Ventajas de implantar un sistema de gestión de la calidad
Aumento de beneficios.
Aumento del número de clientes.
Motivación del personal.
Fidelidad de los clientes.
Organización del trabajo.
Mejora de las relaciones con los clientes.
Reducción de costes debidos a la mala calidad.
3. ¿Cuál cree usted que es la fase más importante en el desarrollo de software?
El primer paso es reunir los requisitos necesarios en detalles suficientes. Es importante comprender
que cualquier requisito que no se encuentre en esta etapa estará en la implementación.
Un análisis exhaustivo de requisitos conlleva tiempo y dinero, pero ayuda a una organización a entender
verdaderamente lo que necesitan y quieren. Ese entendimiento es una parte crítica del éxito definitivo del
nuevo software.
En el centro de datos, pocas organizaciones se dan cuenta de lo crítico que es el paso del desarrollo de requisitos
para el éxito definitivo de una compra de software importante. Al comienzo del proceso de selección de este,
la mayoría de las personas solo tienen una idea de sus necesidades de alto nivel. Es el acto de buscar productos
potenciales y ver lo que hacen para ayudarlos a desarrollar esas necesidades con mayor detalle.
Esos requisitos son la base sobre la que se construye el éxito. Al igual que un edificio, si las bases no son las
adecuadas, cualquier cosa que se construya encima de ellas sufrirá serios problemas o una falla total. Elaborar
requisitos con suficientes detalles toma tiempo, esfuerzo, y un proceso robusto. Si una organización no desea
invertir directamente el tiempo y dinero para obtener un desarrollo de software de calidad, el proyecto estará
condenado desde el comienzo.
¿Qué son Requerimientos?
Se presenta a continuación la definición existente en el glosario de la IEEE de lo que es un
“Requerimiento”:
“Una condición o necesidad de un usuario para resolver un problema o alcanzar un
objetivo”.
(Std 610.12-1900, IEEE: 62)
“Una condición o capacidad que debe estar presente en un sistema o componentes de
sistema para satisfacer un contrato, estándar, especificación u otro documento formal”.
(Std 610.12-1900, IEEE: 62)
También, Ian Sommerville presenta una definición acerca de lo que es un “Requerimiento”:
“Un requerimiento es simplemente una declaración abstracta de alto nivel de un servicio que debe
proporcionar el sistema o una restricción de éste”. (Sommerville, 2005: 108)
Analizando las definiciones anteriores, un requerimiento es una descripción de una condición o capacidad
que debe cumplir un sistema, ya sea derivada de una necesidad de usuario identificada, o bien,
estipulada en un contrato, estándar, especificación u otro documento formalmente impuesto al inicio del
proceso
los principales beneficios que se obtienen de la Ingeniería de Requerimientos son (2003: 3):
Permite gestionar las necesidades del proyecto en forma estructurada: Cada actividad de la IR consiste de
una serie de pasos organizados y bien definidos.
Mejora la capacidad de predecir cronogramas de proyectos, así como sus resultados
: La IR proporciona un punto de partida para controles subsecuentes y actividades de mantenimiento, tales como
estimación de costos, tiempo y recursos necesarios.
Disminuye los costos y retrasos del proyecto
: es sabido que reparar errores por un mal desarrollo no descubierto a tiempo, es sumamente caro; especialmente
aquellas decisiones tomadas durante la IR, ya que es una de las etapas de mayor importancia en el ciclo de
desarrollo de software y de las primeras en llevarse a cabo.
Mejora la calidad del software
: La calidad en el software tiene que ver con cumplir un conjunto de requerimientos (funcionalidad, facilidad
de uso, confiabilidad, desempeño, etc.)
Mejora la comunicación entre equipos
: La especificación de requerimientos representa una forma de consenso entre clientes y desarrolladores. Si este
consenso no ocurre, el proyecto no será exitoso.
Evita rechazos de usuarios finales
: La ingeniería de requerimientos obliga al cliente a considerar sus requerimientos cuidadosamente y revisarlos
dentro del marco del problema, por lo que se le involucra durante todo el desarrollo del proyecto
4. ¿Explique usted por qué es importante una metodología de gestión de proyectos en la
elaboración de software?
¿Por qué son necesarias las metodologías de gestión de
proyectos? ¿Qué beneficios puede aportar trabajar en base a
sus recomendaciones?
El objetivo general de la metodología de gestión de proyectos
es ser capaces de estandarizar, estructurar y organizar la
manera de trabajar. Así se ayuda a enfocar todos los proyectos
de la misma forma y nos permite ser capaces de repetir los
éxitos y aprender de los errores, por lo que hay un proceso de
mejora continua. Es decir, una metodología es una gran
herramienta para generar eficiencia a medida que se va
utilizando.
El uso de una metodología en la gestión de un proyecto persigue unos beneficios específicos:
Organizar los tiempos de proyecto
Proporcionar herramientas para estimar de forma correcta tiempos y costes
Ayudar a gestionar y minimizar los riesgos del proyecto
Mejorar la relación entre coste y beneficio de los recursos
Desarrollar las habilidades del equipo
Desde el punto de vista de los recursos, contar con una metodología ayuda a acortar la curva de aprendizaje
del equipo, y a medida que se utiliza en proyectos, se pule y transforma según el estilo personal de la
compañía. Con un enfoque adaptado y homogéneo se reduce el riesgo de implementación y se obtiene una
mejora en el trabajo. Un factor decisivo al aplicar metodologías de gestión es que no todas sirven para
cualquier proyecto, por lo que es fundamental conocer los puntos fuertes de cada una de ellas para saber
aplicarlos en el momento que sea necesario. En esta tabla podemos comparar los rasgos que distinguen a las
metodologías tradicionales de las más ágiles:
Las diferentes metodologías no dejan de ser un marco de referencia que se adapta mejor a unos casos que a
otros. Lo realmente importante es dotar a la persona y la compañía del método de trabajo que mejor se
adapte al proyecto para conseguir la máxima eficiencia y los logros esperados.
5. Explique un modelo de aseguramiento de la calidad de software.
Aseguramiento de la calidad de software: Conjunto de actividades planificadas y sistemáticas necesarias para
aportar la confianza en que el producto (software) satisfará los requisitos dados de calidad. MARCO DE
REFERENCIA, ESTRATEGIA DE MEJORA. El aseguramiento de calidad del software se diseña para cada
aplicación antes de comenzar a desarrollarla. Hay quienes prefieren decir garantía de calidad en vez de
aseguramiento. La garantía, puede confundir con garantía de productos, mientras que el aseguramiento
pretende dar confianza en que el producto tiene calidad.
El aseguramiento de calidad del software está presente en:
Métodos y herramientas de análisis, diseño, programación y prueba.
Inspecciones técnicas formales en todos los pasos del proceso de desarrollo del software.
Estrategias de prueba multiescala.
Control de la documentación del software y de los cambios realizados.
Procedimientos para ajustarse a los estándares (y dejar claro cuando se está fuera de ellos).
Mecanismos de medida (métricas).
Registro de auditorías y realización de informes.
Las actividades para el aseguramiento de calidad del software se detallan en:
Métricas de software para el control del proyecto.
Verificación y validación del software a lo largo del ciclo de vida (Incluye las pruebas y los procesos de
revisión e inspección).
La gestión de la configuración del software.
Los métodos más comunes para el aseguramiento de la calidad son los siguientes:
1) Auditorías PPQA (Process and Product Quality Assurance) Es la actividad de garantizar que el proceso y
el producto de trabajo se ajustan al plan acordado.
2) Pruebas de Validación: Es el acto de introducir datos, los cuales el tester sabe que son erróneos en la
aplicación.
3) Comparación de datos: Técnica que se realiza comparando los resultados de una aplicación con
parámetros específicos con los resultados de otra aplicación previamente creada, introduciendo los mismos
parámetros de manera que se obtenga un resultado exacto.
4) Prueba de esfuerzo (Stress Testing) Se realiza cuando el SW es utilizado de la manera más “ruda” posible
en un período de tiempo para ver si trabaja con altos niveles de carga.
5) Pruebas de Uso: A veces conseguir usuarios que no estén familiarizados con el SW para probarlo por un
tiempo determinado, ofrece retroalimentación a los desarrolladores acerca de las dificultades que
encontraron. Esta es la mejor maneta de realizar mejoras a la interfaz.
6) Revisiones por Pares (Peer Reviews): Son actividades efectivas para el control de la calidad. Pueden
aplicarse al análisis, diseño y codificación.
7) Revisión Técnica formal (RTF): Es una actividad de garantía de calidad de SW. Es una revisión que incluye
recorridos, inspecciones y revisiones cíclicas
Modelo CMMI
modelo de aseguramiento de la calidad en el proceso de desarrollo de software con un enfoque orientado al
factor humano; factor que es responsable de introducir y gestionar la calidad en el proceso de desarrollo de
software. El modelo propuesto se basa en tres modelos “Modelos de Madurez de Capacidades Integrado,
Proceso de Software para Equipos y Proceso de Software para Personas. El CMMI es un modelo de calidad
del software que clasifica las empresas en niveles de madurez. Estos niveles sirven para conocer la madurez
de los procesos que se realizan para producir software.
Niveles
Los niveles CMMI son 5:
Inicial o Nivel 1 CMMI. Este es el nivel en donde están todas las empresas que no tienen procesos. Los
presupuestos se disparan, no es posible entregar el proyecto en fechas, los empleados si tienen que quedar
durante noches y fines de semana para terminar un proyecto. No hay control sobre el estado del proyecto,
el desarrollo del proyecto es completamente opaco, no se sabe que pasara con el.
Nivel 2 CMMI. Quiere decir que el éxito de los resultados obtenidos se pueden repetir. La principal
diferencia entre este nivel y el anterior es que el proyecto es gestionado y controlado durante el desarrollo
del mismo. El desarrollo no es opaco y se puede saber el estado del proyecto en todo momento.
Los procesos que hay que implantar para alcanzar este nivel son:
Gestión de requisitos
Planificación de proyectos
Seguimiento y control de proyectos
Gestión de proveedores
Aseguramiento de la calidad
Gestión de la configuración
Nivel 3 CMMI. alcanzar este nivel significa que la forma de desarrollar proyectos (gestión e ingeniería) esta
definida, por definida quiere decir que esta establecida, documentada y que existen métricas (obtención
de datos objetivos) para la consecución de objetivos concretos.
Los procesos que hay que implantar para alcanzar este nivel son:
Desarrollo de requisitos
Solución Técnica
Integración del producto
Verificación
Validación
Desarrollo y mejora de los procesos de la organización
Definición de los procesos de la organización
Planificación de la formación
Gestión de riesgos
Análisis y resolución de toma de decisiones
La mayoría de las empresas que llegan al nivel 3 paran aquí, ya que es un nivel que proporciona muchos
beneficios y no ven la necesidad de ir más allá porque tienen cubiertas la mayoría de sus necesidades.
Nivel 4 CMMI. Los proyectos usan objetivos medibles para alcanzar las necesidades de los clientes y la
organización. Se usan métricas para gestionar la organización.
Los procesos que hay que implantar para alcanzar este nivel son:
Gestión cuantitativa de proyectos
Mejora de los procesos de la organización
Nivel 5 CMMI. Los procesos de los proyectos y de la organización están orientados a la mejora de las
actividades. Mejoras incrementales e innovadoras de los procesos que mediante métricas son
identificadas, evaluadas y puestas en práctica.
Los procesos que hay que implantar para alcanzar este nivel son:
Innovación organizacional
Análisis y resolución de las causas
Normalmente las empresas que intentan alcanzar los niveles 4 y 5 lo realizan simultáneamente ya que están
muy relacionados.
La implantación de un modelo de estas características es un proceso largo y costoso que puede costar varios
años de esfuerzo. Aun así el beneficio obtenido para la empresa es mucho mayor que lo invertido