martes, 14 de mayo de 2019

4 Calidad enfocada al desarrollo de software

4.1 Que es calidad de software

Desarrollar software de calidad que cumpla con estandares,funcionablidad,rendimiento ajustado a las necesidades y exigencial del cliente y con el menor costo posible.

4.2 Como obtener calidad de software (metodos, metodologias, estandares)

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.
El aseguramiento de la calidad
Ante todo se debe conocer:
·         Aseguramiento de la calidad: "Conjunto de acciones planificadas y sistemáticas necesarias para proporcionar la confianza adecuada de que un producto o servicio satisfará los requerimientos dados sobre calidad".
·         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.
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 herramientasde 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 auditorias 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.
Algunos métodos del aseguramiento:
·         Revisiones técnicas y de gestión (su objetivo es la evaluación).
·         Inspección (su objetivo es la verificación). ¿Estamos construyendo el producto correcto?.
·         Pruebas (su objetivo es la validación). ¿Estamos construyendo el producto correctamente?.
Auditorias (su objetivo es la confirmación del cumplimiento). 

4.3 Como controlar la calidad de software
El control de la calidad

Se debe conocer:

· Control de calidad: "Conjunto de técnicas y actividades de carácter operativo, utilizadas para verificar los requerimientos relativos a la calidad del producto o servicio".

· Control de la calidad del software: Técnicas y actividades de carácter operativo, utilizadas para verificar los requisitos relativos a la calidad, centradas en mantener bajo control el proceso de desarrollo y eliminar las causas de los defectos en las diferentes fases del ciclo de vida.

El control de la calidad del software está centrado en dos objetivos fundamentales:

Mantener bajo control un proceso.

Eliminar las causas de los defectos en las diferentes fases del ciclo de vida.

En general, se puede decir que el control de de la calidad del software son las actividades para evaluar la calidad de los productos desarrollados.

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.

4.4 Costo de calidad del software
Como una de las variables de la Triple Limitación, la Calidad es uno de los objetivo del proyecto. Los costos de la calidad son aquellos en que incurre el proyecto para mejorar los entregables prometidos. Estos costos pueden ser de dos tipos: Costos de Prevención y Costos de Evaluación.
*      Costos de Prevención: están causados por las medidas tomadas en el proyecto para prevenir defectos o problemas en los entregables, para evitar la aparición de errores. En un proyecto de software esto sería por ejemplo implementar una metodología de desarrollo consistente. En una obra en construcción esto sería por ejemplo cumplir con los estándares de tendido de líneas eléctricas para prevenir problemas posteriores.
*      Costos de Evaluación: están causados por las medidas tomadas para evaluar los entregables una vez producidos, y corregirlos si es necesario. En un proyecto de software esto sería por ejemplo dedicar recursos a las pruebas de integración del sistema una vez desarrollado. En una obra en construcción esto sería por ejemplo realizar inspecciones periódicas de la estructura.               

           Existen varias actividades típicas en un proyecto relacionadas la Costo de la Calidad:
*      Capacitación (este es un Costo de Prevención): capacitación en la construcción o entrega del producto o servicio. Sirve para insertar el proceso de administración de calidad dentro del proceso de elaboración. Sirve para implementar la calidad en términos técnicos, específicos a los entregables.
*      Mantenimiento (Costo de Prevención): definición de políticas de mantenimiento posteriores a la finalización del proyecto. Sirve para conservar el buen desempeño de los entregables una vez finalizado el proyecto.
*      Pruebas (Costo de Evaluación): especificación y ejecución de pruebas para verificar el cumplimiento de los requerimientos por parte de los entregables. Sirve para validar el funcionamiento normal de los entregables antes de que se usen en producción.
*      Auditorías (Costo de Evaluación): desarrollo de auditorías que inspeccionen el proceso de construcción de los entregables. Sirven para no cometer el mismo error dos veces.

4.5 Nomenclatura y certificación ISO 9001:2000

La norma ISO 9001, es un método de trabajo, que se considera tan bueno, Que es el mejor para mejorar la calidad y satisfacción de cara al consumidor. La versión actual, es del año 2000 ISO 9001:2000, que ha sido adoptada como modelo a seguir para obtener la certificación de calidad. Y es a lo que tiende, y debe de aspirar toda empresa competitiva, que quiera permanecer y sobrevivir en el exigente mercado actual.

Estos principios básicos de la gestión de la calidad, son reglas de carácter social encaminadas a mejorar la marcha y funcionamiento de una organización mediante la mejora de sus relaciones internas. Estas normas, han de combinarse con los principios técnicos para conseguir una mejora de la satisfacción del consumidor.

Los ocho principios de la gestión de la calidad identificados para lograr los objetivos de la calidad, según "ISO 9000:2000 Sistemas de Gestión de la Calidad. Fundamentos y vocabulario." son:

1. Enfoque al cliente. Las organizaciones dependen de sus clientes y por la tanto deberían comprender las necesidades actuales y futuras de los clientes, satisfacer los requisitos de los clientes y esforzarse en exceder las expectativas de los clientes.

2. Liderazgo. Los líderes establecen la unidad de propósito y la orientación de la organización. Ellos deberían crear y mantener un ambiente interno, en el cual el personal pueda llegar a involucrarse totalmente en el logro de los objetivos de la organización.

3. Participación del personal. El personal, a todos los niveles, es la esencia de una organización y su total compromiso posibilita que sus habilidades sean usadas para el beneficio de la organización.

4. Enfoque basado en procesos. Un resultado deseado se alcanza más eficientemente cuando las actividades y los recursos relacionados se gestionan como un proceso.

5. Enfoque de sistema hacia la gestión. Identificar, entender y gestionar los procesos interrelacionados como un sistema, contribuye a la eficacia y eficiencia de una organización en el logro de sus objetivos.

6. Mejora continua. La mejora continua del desempeño global de la organización debería ser un objetivo permanente de ésta.

7. Enfoque basado en hechos para la toma de decisiones. Las decisiones eficaces se basan en el análisis de los datos y la información.

8. Relación mutuamente beneficiosa con el proveedor . Una organización y sus proveedores son interdependientes, y una relación mutuamente beneficiosa aumenta la capacidad de ambos para crear valor.

Estos ocho principios de gestión de la calidad constituyen la base de las normas de sistemas de gestión de la calidad de la familia de Normas ISO 9000.

4.6 La norma ISO/IEC 9126
La Organización Internacional para la Estandarización (ISO) dispone de dos definiciones de usabilidad:
ISO /ICE 9126

“La usabilidad se refiere a la capacidad de un software de ser comprendido, aprendido, usado y ser atractivo para el usuario, en condiciones específicas de uso”
Esta definición hace énfasis en los atributos internos y externos del producto, los cuales contribuyen a su usabilidad, funcionalidad y eficiencia. 
La usabilidad depende no sólo del producto sino también del usuario. Por ello un producto no es en ningún caso intrínsecamente usable, sólo tendrá la capacidad de ser usado en un contexto particular y por usuarios particulares.
 La usabilidad no puede ser valorada estudiando un producto de manera aislada (Bevan, 1994).

La norma ISO/IEC 9126 está enfocada a la calidad de Producto y consta de las siguientes partes:
Parte 1: Modelo de Calidad

Parte 2: Métricas externas

Parte 3: Métricas internas

Parte 4: Calidad en el uso de métricas

La especificación y la evaluación de la calidad de producto de software se puede conseguir definiendo características de calidad apropiadas, tomando en cuenta el objetivo de uso del producto de software. 

4.7 Analisis de factores que determinan la calidad de software

Factores que determinan la calidad del software

• Se pueden clasificar en dos grandes grupos (Pressman):
  • Factores que pueden ser medidos directamente
  • Factores que solo pueden ser medidos indirectamente
• Se centran en tres aspectos importantes de un producto software (McCall):
  • Características operativas
  • Capacidad de soportar los cambios
  • Adaptabilidad a nuevos entornos
Características operativas
  • Corrección. ¿Hace lo que quiero?
  • Fiabilidad. ¿Lo hace de forma fiable todo el tiempo?
  • Eficiencia. ¿Se ejecutará en mi hardware lo mejor que pueda?
  • Seguridad (Integridad). ¿Es seguro?
  • Facilidad de uso. ¿Está diseñado para ser usado?
Capacidad de soportar los cambios
  • Facilidad de mantenimiento. ¿Puedo corregirlo?
  • Flexibilidad. ¿Puedo cambiarlo?
  • Facilidad de prueba. ¿Puedo probarlo?
Adaptabilidad a nuevos entornos
  • Portabilidad. ¿Podré usarlo en otra máquina?
  • Reusabilidad. ¿Podré reutilizar alguna parte del software?
  • Interoperabilidad. ¿Podré hacerlo interactuar con otro sistema?
4.8 Análisis del proceso del ciclo de vida del software
Definición de un Modelo de Ciclo de Vida
Un modelo de ciclo de vida de software es una vista de las actividades que ocurren durante el desarrollo de software, intenta determinar el orden de las etapas involucradas y los criterios de transición asociadas entre estas etapas.
Un modelo de ciclo de vida del software:
·         Describe las fases principales de desarrollo de software.
·         Define las fases primarias esperadas de ser ejecutadas durante esas fases.
·         Ayuda a administrar el progreso del desarrollo, y
·         Provee un espacio de trabajo para la definición de un detallado proceso de desarrollo de software.
Así, los modelos por una parte suministran una guía para los ingenieros de software con el fin de ordenar las diversas actividades técnicas en el proyecto, por otra parte suministran un marco para la administración del desarrollo y el mantenimiento, en el sentido en que permiten estimar recursos, definir puntos de control intermedios, monitorear el avance, etc.
Alternativas de Modelos de Ciclo de Vida
Modelo Cascada
Este es el más básico de todos los modelos, y sirve como bloque de construcción para los demás modelos de ciclo de vida. La visión del modelo cascada del desarrollo de software es muy simple; dice que el desarrollo de software puede ser a través de una secuencia simple de fases. Cada fase tiene un conjunto de metas bien definidas, y las actividades dentro de una fase contribuye a la satisfacción de metas de esa fase o quizás a una subsecuencia de metas de la fase. Las flechas muestran el flujo de información entre las fases. La flecha de avance muestra el flujo normal. Las flechas hacia atrás representan la retroalimentación.
El modelo de ciclo de vida cascada, captura algunos principios básicos:
·         Planear un proyecto antes de embarcarse en él.
·         Definir el comportamiento externo deseado del sistema antes de diseñar su arquitectura interna.
·         Documentar los resultados de cada actividad.
·         Diseñar un sistema antes de codificarlo.
·         Testear un sistema después de construirlo.
Una de las contribuciones más importantes del modelo cascada es para los administradores, posibilitándoles avanzar en el desarrollo, aunque en una escala muy bruta.
Modelo De Desarrollo Incremental
Los riesgos asociados con el desarrollo de sistemas largos y complejos son enormes. Una forma de reducir los riesgos es construir sólo una parte del sistema, reservando otros aspectos para niveles posteriores. El desarrollo incremental es el proceso de construcción siempre incrementando subconjuntos de requerimientos del sistema. Típicamente, un documento de requerimientos es escrito al capturar todos los requerimientos para el sistema completo.
Note que el desarrollo incremental es 100% compatible con el modelo cascada. El desarrollo incremental no demanda una forma específica de observar el desarrollo de algún otro incremento. Así, el modelo cascada puede ser usado para administrar cada esfuerzo de desarrollo, como se muestra en la figura.
El modelo de desarrollo incremental provee algunos beneficios significativos para los proyectos:
·         Construir un sistema pequeño es siempre menos riesgoso que construir un sistema grande.
·         Al ir desarrollando parte de las funcionalidades, es más fácil determinar si los requerimientos planeados para los niveles subsiguientes son correctos.
·         Si un error importante es realizado, sólo la última iteración necesita ser descartada.
·         Reduciendo el tiempo de desarrollo de un sistema (en este caso en incremento del sistema) decrecen las probabilidades que esos requerimientos de usuarios puedan cambiar durante el desarrollo.
·         Si un error importante es realizado, el incremento previo puede ser usado.
·         Los errores de desarrollo realizados en un incremento, pueden ser arreglados antes del comienzo del próximo incremento.
Modelo De Desarrollo Evolutivo
Como el modelo de desarrollo incremental, el modelo de desarrollo evolutivo (algunas veces denominado como prototipado evolutivo) construye una serie de grandes versiones sucesivas de un producto. Sin embargo, mientras que la aproximación incremental presupone que el conjunto completo de requerimientos es conocido al comenzar, el modelo evolutivo asume que los requerimientos no son completamente conocidos al inicio del proyecto.
En el modelo evolutivo, los requerimientos son cuidadosamente examinados, y sólo esos que son bien comprendidos son seleccionados para el primer incremento. Los desarrolladores construyen una implementación parcial del sistema que recibe sólo estos requerimientos.

El sistema es entonces desarrollado, los usuarios lo usan, y proveen retroalimentación a los desarrolladores.
 Basada en esta retroalimentación, la especificación de requerimientos es actualizada, y una segunda versión del producto es desarrollada y desplegada.

El modelo espiral de los procesos software es un modelo del ciclo de meta-vida. En este modelo, el esfuerzo de desarrollo es iterativo. Tan pronto como uno completa un esfuerzo de desarrollo, otro comienza. Además, en cada desarrollo ejecutado, puedes seguir estos cuatros pasos:
  Determinar qué quieres lograr.
  Determinar las rutas alternativas que puedes tomar para lograr estas metas. Por cada una, analizar los riesgos y resultados finales, y seleccionar la mejor.
  Seguir la alternativa seleccionada en el paso 2.
  Establecer qué tienes terminado.
 
La dimensión radial en la figura refleja costos acumulativos incurridos en el proyecto.

Modelo Concurrente
Como el modelo espiral, el modelo concurrente provee una meta-descripción del proceso software. Mientras que la contribución primaria del modelo espiral es en realidad que esas actividades del software ocurran repetidamente, la contribución del modelo concurrente es su capacidad de describir las múltiples actividades del software ocurriendo simultáneamente.
Esto no sorprende a nadie que ha estado involucrado con las diversas actividades que ocurren en algún tiempo del proceso de desarrollo de software. Discutamos un poco tales casos:
Los requerimientos son usualmente "líneas de base", cuando una mayoría de los requerimientos comienzan a ser bien entendidos, en este tiempo se dedica un esfuerzo considerable al diseño. Sin embargo, una vez que comienza el diseño, cambios a los requerimientos son comunes y frecuentes (d
espués de todo, los problemas reales cambian, y nuestro entendimiento de los problemas desarrollados también). Es desaconsejado detener el diseño en este camino cuando los requerimientos cambian; en su lugar, existe una necesidad de modificar y rehacer líneas de base de los requerimientos mientras progresa el diseño. Por supuesto, dependiendo del impacto de los cambios de los requerimientos el diseño puede no ser afectado, medianamente afectado o se requerirá comenzar todo de nuevo.
Durante el diseño de arquitectura, es posible que algunos componentes comiencen a ser bien definidos antes que la arquitectura completa sea estabilizada. En tales casos, puede ser posible comenzar el diseño detallado en esos componentes estables. 

4.9 Funciones de evaluación del software

1.Calidad en la operación del producto.Requiere que el software pueda ser entendido fácilmente, que opere eficientemente y que los resultados obtenidos sean los requeridos inicial-mente por el usuario.

2.Revisión de la calidad del producto de software.Tiene como objetivo realizar revisiones durante el proceso de desarrollo para detectar los errores que afecten a la operación del producto.

3.Calidad en el proceso.Requiere de la definición de estándares y procedimientos que sirvan como base para el desarrollo del software 

 

3 Estandares De Calidad Aplicados el Software

3.1 ISO
ISO es la Organización Internacional para la Estandarización, que regula una serie de normas para fabricación, comercio y comunicación, en todas las ramas industriales.

Se conoce por ISO tanto a la Organización como a las normas establecidas por la misma para estandarizar los procesos de producción y control en empresas y organizaciones internacionales.

La Organización Internacional para la Estandarización o ISO (que en griego significa “igual”) fue creada en 1947, luego de la Segunda Guerra Mundial y se convirtió en un organismo dedicado a promover el desarrollo de normas y regulaciones internacionales para la fabricación de todos los productos, exceptuando los que pertenecen a la rama de la eléctrica y la electrónica. Así, se garantiza calidad y seguridad en todos los productos, a la vez que se respetan criterios de protección ambiental.

Actualmente, se trata de una red de instituciones en 157 países, que funciona centralmente en Ginebra, Suiza. Esta sede de coordinación internacional tiene tanto delegaciones de gobierno como de otras entidades afines. A pesar de su alta incidencia a nivel mundial, la participación de estas normas es voluntaria, ya que la ISO no posee autoridad para imponer sus regulaciones.

Las normas ISO atienden a distintos aspectos de la producción y el comercio, pero entre algunas de ellas se encuentran las que regulan la medida del papel, el nombre de las lenguas, las citas bibliográficas, códigos de países y de divisas, representación del tiempo y la fecha, sistemas de gestión de calidad, lenguajes de programación C y BASIC, ciclo de vida del software, requisitos respecto de competencia en laboratorios de ensayo y calbración, documentos en .odf, documentos en .pdf, garantías de fallos en CD-ROMs, sistemas de gestión de seguridad de la información, y muchas otras.

Estas normas están tan difundidas que podemos hallarlas en prácticamente todos los aspectos de la vida cotidiana, protegiendo al consumidor y usuario de productos y servicios.



3.2 SPICE
El proyecto SPICE tienen sus orígenes en el creciente uso y dependencia de la Tecnología de Información que en consecuencia dió el incremento de frustración e incumplimiento de expectativas por parte de los desarrolladores y los usuarios de software.

Las conclusiones del estudio fueron las siguientes:
  • La mayoría de los compradores tiene necesidades similares.
  • La mayoría de los desarrolladores de software está interesada en automejora.
  • Existen ya varios métodos.
  • Existe la necesidad de tener un enfoque común sobre SPA
  • Debe ponerse énfasis en la auto-valuación.

 Otro problema encontrado fué la diversidad de exigencias sobre SPA por parte de compradores. Esto incrementa los costos de las empresas proveedoras por tratar de satisfacer las demandas de sus clientes. 


3.3 CMM
El CMM (Capability Maturity Model for Software), es decir, Modelo de Madurez de Capacidades. Fue creado por el Software Engineering Institute (SEI) y tiene como Meta el describir los elementos principales para llegar a cabo los procesos de software de una forma efectivos.
El CMM consiste en una serie de procedimientos destinados a evaluar y mejorar los procesos de desarrollo, implementación y mantenimiento del software. Aunque aún está en vías desarrollo, es un estándar que la industria acepta para evaluar y garantizar la calidad y madurez de sus aplicaciones.
Por otro lado, hay CMMs para procesos que no son estrictamente en el sector del software, como por ejemplo el BMP (Business Process Management).
CMM define cinco niveles de madurez para una organización y proporciona un marco para moverse a partir de un nivel al siguiente. Las guías CMM contienen actividades diseñadas para ayudar a una organización para mejorar sus procesos con la meta de alcanzar capacidad de repetición, y control de los mismos. El CMM ha ganado considerable credibilidad en las industrias intensivas en el uso de conocimientos. La implantación del CMM ha permitido mejoras considerables en la calidad de los productos y bajado perceptiblemente el costo del desarrollo dentro de grandes compañías.
Las organizaciones han probado que mejorando sus procesos de desarrollo, CMM del nivel 1 al nivel 3, puede bajar su costo por hasta 50-60%. Aún más, quienes han estado en el negocio de la productividad del desarrollo del software por años, sostienen que la rentabilidad resultada de mejoras en productividad y reducción en tiempo de llegada al mercado.

3.3.1 Definicion de modelo

El CMM (Capability Maturity Model for Software), es decir, Modelo de Madurez de Capacidades. Fue creado por el Software Engineering Institute (SEI) y tiene como Meta el describir los elementos principales para llegar a cabo los procesos de software de una forma efectivos.
El CMM consiste en una serie de procedimientos destinados a evaluar y mejorar los procesos de desarrollo, implementación y mantenimiento del software. Aunque aún está en vías desarrollo, es un estándar que la industria acepta para evaluar y garantizar la calidad y madurez de sus aplicaciones.
Por otro lado, hay CMMs para procesos que no son estrictamente en el sector del software, como por ejemplo el BMP (Business Process Management).
Niveles del CMM


3.3.2 Nivel inicial
Inicial:
 Las organizaciones en este nivel no disponen de un ambiente estable para el desarrollo y mantenimiento de software. Aunque se utilicen técnicas correctas de ingeniería, los esfuerzos se ven minados por falta de planificación. El éxito de los proyectos se basa la mayoría de las veces en el esfuerzo personal, aunque a menudo se producen fracasos y casi siempre retrasos y sobre costes. El resultado de los proyectos es impredecible.

3.3.3 Nivel repetido
En este nivel las organizaciones disponen de unas prácticas institucionalizadas de gestión de proyectos, existen unas métricas básicas y un razonable seguimiento de la calidad. La relación con subcontratistas y clientes está gestionada sistemáticamente.
Para el Nivel 2 al menos se deberá contar con las siguientes áreas clave de proceso:
  • Gestión de Requisitos
  • Planificación del proyecto de software
  • Seguimiento y Supervisión del proyecto
  • Gestión de subcontratos de software
  • Garantía de calidad de software
  • Gestión de la configuración del software 
3.3.4 Nivel definido
 Definido:
Además de una buena gestión de proyectos, a este nivel las organizaciones disponen de correctos procedimientos de coordinación entre grupos, formación del personal, técnicas de ingeniería más detalladas y un nivel más avanzado de métricas en los procesos. Se implementan técnicas de revisión por pares (peer reviews).

3.3.5 Nivel administrado

Se caracteriza por que las organizaciones disponen de un conjunto de métricas significativas de calidad y productividad, que se usan de modo sistemático para la toma de decisiones y la gestión de riesgos. El software resultante es de alta calidad

3.3.6 Nivel Optimizado 


Optimizado:
 La organización completa está volcada en la mejora continua de los procesos. Se hace uso intensivo de las métricas y se gestiona el proceso de innovación.

2 Aseguramiento de la calidad de software


2.1 Relación de la ingeniería del software SQA

Esta relación implica a varios responsables durante el proceso de la elaboración del software de calidad, estos son:
·    Ingenieros de software
·    Jefes de proyecto
·    Clientes
·    Vendedores
·    Quienes trabajan dentro de un grupo de la SQA
Estos últimos pueden ser independientes y tendrán las siguientes actividades para llegar al objetivo de la SQA:
  1. Establecimiento de  un plan de la SQA para un proyecto.
En este plan se identifica:
·    Evaluaciones a realizar
·    Auditorías y revisiones a realizar
·    Estándares que se pueden aplicar al proyecto
·    Procedimientos para información y seguimiento de errores
·    Documentos producidos por el grupo SQA
·    Realimentación de información proporcionada al equipo de proyecto del software
1. Participación en el desarrollo de la descripción del proceso de software del proyecto
2. Revisión de las actividades de ingeniería del software para verificar su ajuste al proceso de software definido
3. Auditoría de los productos de software designados para verificar el ajuste con los definidos como parte del proceso de software
4. Asegurar que las desviaciones del trabajo y los productos del software se documenten y se manejen de acuerdo con un procedimiento establecido
5. Registrar lo que no se ajuste a los requisitos e informar a sus superiores

2.2 Definición y propósito del SQA

SQA es un set de actividades sistemáticas que aseguran que el proceso del software y productos conformados por requerimientos, estándares, y procedimientos. Los procesos incluyen todas las actividades involucradas en el diseño, codificación, pruebas y mantenimiento; Los productos incluyen software, datos asociados, documentación, y toda la documentación para soporte y reportes.
El Rol:
El rol para SQA es brindar a la administración  la aseguranza de que procesos oficialmente establecidos están siendo implementados. Y asegura que:
1.-Una metodología de desarrollo apropiada este establecida
2.-Que los proyectos utilicen estándares y procedimientos en su trabajo
3.-Que la documentación sea creada para mantenimiento y mejoramiento
4.-La administración de configuración de software este adecuada para controlar cambios
5.-Se realicen pruebas y que se aprueben
6.-Cualquier deficiencia y desviaciones sean identificadas y llevadas con atención a la administración.
Propósito:
Proporcionar visibilidad sobre los procesos utilizados por el proyecto de software y sobre los productos que genera.
Objetivos:
1.-Planificar las actividades de aseguramiento de la calidad.
2.-Revisar y auditar objetivamente los productos y las actividades para verificar que están conformes con los procedimientos y estándares aplicables.
3.-Proporcionar los resultados de estas revisiones o auditorías informando a la dirección cuando sea necesaria su mediación.
2.3 Problemas que resuelve la SQA

La obtención de un software de calidad implica la utilización de metodologías o procedimientos estándares para el análisis, diseño, programación y prueba del SW que permitan uniformar la filosofía de trabajo.

La adopción de una buena política o metodología contribuye en gran medida a lograr la calidad del SW pero no la asegura.

Esta política debe estar sustentada en 3 principios básicos.

1) Tecnológico: Define las técnicas a utilizar en el proceso de desarrollo de SW.

2) Administrativo: Contempla las funciones de planificación y control del desarrollo de SW, así como la organización del ambiente o centro de ingeniería del SW.

3) Ergonómico: define la interfaz entre el usuario y el ambiente automatizado.

Para controlar la calidad del SW, es necesario definir los parámetros, indicadores o criterios de medición.

Las cualidades para medir la calidad del SW se definen en 2 categorías:

- Complejidad de programa o código.

- Complejidad de sistema o estructura.

Por lo tanto, SQA resuelve problemas como:

Aumentar las posibilidades de éxito del proyecto.
 

 Funcionalidad.

Cumplimiento.

Usable. 


2.4 Calidad del software en el ciclo de vida del mismo
Ciclo de vida del software
El término ciclo de vida del software describe el desarrollo de software, desde la fase inicial hasta la fase final. El propósito de este programa es definir las distintas fases intermedias que se requieren para validar el desarrollo de la aplicación, es decir, para garantizar que el software cumpla los requisitos para la aplicación y verificación de los procedimientos de desarrollo: se asegura de que los métodos utilizados son apropiados.
Estos programas se originan en el hecho de que es muy costoso rectificar los errores que se detectan tarde dentro de la fase de implementación. El ciclo de vida permite que los errores se detecten lo antes posible y por lo tanto, permite a los desarrolladores concentrarse en la calidad del software, en los plazos de implementación y en los costos asociados.
El ciclo de vida básico de un software consta de los siguientes procedimientos:
• Definición de objetivos: definir el resultado del proyecto y su papel en la estrategia global.
• Análisis de los requisitos y su viabilidad: recopilar, examinar y formular los requisitos del cliente y examinar cualquier restricción que se pueda aplicar.
• Diseño general: requisitos generales de la arquitectura de la aplicación.
• Diseño en detalle: definición precisa de cada subconjunto de la aplicación.
• Programación (programación e implementación): es la implementación de un lenguaje de programación para crear las funciones definidas durante la etapa de diseño.
• Prueba de unidad: prueba individual de cada subconjunto de la aplicación para garantizar que se implementaron de acuerdo con las especificaciones.
• Integración: para garantizar que los diferentes módulos se integren con la aplicación. Éste es el propósito de la prueba de integración que está cuidadosamente documentada.
• Prueba beta (o validación), para garantizar que el software cumple con las especificaciones originales.
• Documentación: sirve para documentar información necesaria para los usuarios del software y para desarrollos futuros.
• Implementación

• Mantenimiento: para todos los procedimientos correctivos (mantenimiento correctivo) y las actualizaciones secundarias del software (mantenimiento continuo).

2.5 Roles y responsabilidades de los equipos de desarrollo


TSP ayuda a la conformación de equipos de trabajo bien organizados a través de roles, cada rol está definido por un guión en el que se especifican su objetivo, sus responsabilidades en todo el ciclo de desarrollo y la forma en que se puede evaluar su trabajo.

Los roles propuestos son:

1) Líder de proyecto:

- Objetivo: Coordinar al equipo, asegurar que todos cumplan con su trabajo (reportes de datos).

- Responsabilidades: Metas, generar informes, dirigir reuniones, motivar al equipo.

2) Administrador de desarrollo

- Objetivo: controlar avance del proyecto (diseño, desarrollo).
- Responsabilidad: dirigir la realización de las fases siguiendo los estándares propuestos. Integrar el trabajo de todos.

3) Administrador de la planificación

- Objetivo: Establecer el plan de trabajo y verificar su cumplimiento.
- Responsabilidades: Efectuar la planificación, asegurarse que se cumplan con el plan, recabar mediciones, resolver riesgos.

4) Administrador de apoyo

- Objetivo: Ayudar al equipo a conseguir las herramientas necesarias para que pueda realizarel trabajo, Gestionar la configuración.
- Responsabilidad: Conseguir lo necesario para el desarrollo del proyecto, generar un plan de configuración, realizar la gestión de la configuración.

5) Administrador de calidad y proceso:

Objetivo: Proponer un plan de calidad, proceso, resultado.
- Responsabilidades: Apoyar al equipo en la definición, gestionar el plan de calidad (SQA), generar estándares para obtener un trabajo uniforme, moderar las revisiones de los productos
2.6 Habilidades y capacidades del personal del SQA

El equipo de SQA trabaja con la gerencia de proyectos durante los inicios del desarrollo para establecer los planes, estándares y los procedimientos que agregarán valor al proyecto de SW y satisfacer los problemas del proyecto y de las políticas de la organización.

Participa en establecer los planes, estándares y procedimientos.
El equipo ayuda a asegurar que se cumplan con las necesidades del proyecto y verifica que sean usables para realizar revisiones e intervenciones durante todo el ciclo de vida.
Las revisiones del grupo de SQA proyectan las actividades y revisan el producto de trabajo de SW, además de proveer a la gerencia la posibilidad de saber si el proyecto está de acuerdo a los planes estándares y procedimientos establecidos

EL GRUPO ENCARGADO DE SQA.- Trabaja con el equipo del proyecto desde el inicio.
-Debe ser objetivo e independiente.
- Ayuda al proyecto, más que controlar sus actividades. 
La actividad de SQA es el proceso de verificación de que los estándares sean aplicados correctamente. En los proyectos pequeños esto se puede realizar por el equipo de desarrollo, pero en proyectos grandes, un grupo específico se debe dedicar a este rol. 

2.7 Actividades del SQA

El plan de aseguramiento de la calidad del SW (SQAP) define las actividades específicas a llevar a cabo en un proyecto.

El SQAP contiene una lista de comprobación para las actividades que se deben llevar a cabo para asegurar la calidad del producto.

En el SQAP se recogen una serie de medidas que permiten establecer el nivel de calidad de los desarrollos en cualquier momento en relación a los parámetros de calidad establecidos en el mismo, de modo que los gestores de proyecto puedan dar respuesta adecuada a las acciones a tomar de acuerdo a las medidas que se recogen en el plan.

El SQAP CONTIENE:

- Propósito de plan.
- Documentación de referencia.
- Ciclo de vida.
- Gestión del proyecto.
- Documentación del proyecto.
- Estándares.
- Métricas.
- Mecanismos de revisión.
- Gestión de la configuración.
- Control de versiones.
- Entornos de desarrollo.
- Entornos de pruebas.
- Herramientas, técnicas y metodologías empleadas.

- Control de suministro de proveedores (si los hay).

- Políticas de almacenamiento, mantenimiento y conservación de documentación.

- Plan de pruebas 
2.8 Métodos y herramientas

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 product 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
AD
*       Herramientas básicas.
*     Diagrama de flujo.

Diagrama causa efecto.

Checklist.

Gráfica de control.

 Histograma.

 Diagrama de dispersión.

              Herramientas de gestión.
   Herramientas de creatividad.
   Herramientas estadísticas.
   Herramientas de diseño.
   Herramientas de medición. 
   Niveles de madurez.

 

4 Calidad enfocada al desarrollo de software

4.1 Que es calidad de software Desarrollar software de calidad que cumpla con estandares,funcionablidad,rendimiento ajustado a las nece...