Anexo A
La norma ISO9001
El siguiente extracto del ISO9001 fue sacado de una prestigiada revista nacional. Ver abajo la ficha bibliográfica de la misma.
Ficha bibliográfica: Soluciones Avanzadas; año 6, número 59 (Julio de 1998). La norma ISO9001 en una fábrica de software a la medida, Guillermo Rodríguez Ortiz, Jorge González Sustaeta y Gládys Dávila Núñez, página 26.
Una fábrica de software a la medida es aquella que reúne un grupo de profesionales que desarrollan software en forma autónoma o perteneciente a alguna empresa o institución. A diferencia del software de mostrador - off the shell - que persigue el objetivo de ventas múltiples, ésta, desarrollo a la medida, es elaborado para un sólo cliente.
ISO (International Standards Organization) define un sistema de calidad consistente de la estructura organizacional, las responsabilidades, los procedimientos, los procesos y los recursos necesarios para implantar la administración de la calidad.
La norma hace explícitamente mención al software como un producto resultado de actividades o procesos pero puede aplicarse a fábricas o procesos de manufactura de bienes tangibles materiales.
El proyecto como fábrica de software
A grandes rasgos un proyecto es un documento dividido en secciones que contiene, por ejemplo, los antecedentes y motivaciones para la construcción de software, especificación del producto, beneficios esperados, programa de trabajo y recursos humanos y materiales necesarios para la ejecución del proyecto.
El modelo es Total, es decir, se aplica se aplica a la totalidad y las partes que la componen: una persona, un grupo, una empresa, una institución, una ciudad, un estado o una nación.
La cadena de procesos que se forma con respecto a que un producto de un proceso es insumo de otro proceso y éste de otro sucesivamente. También llamadas cadena de valor porque cada proceso añade valor a sus insumos al transformarse en nuevos productos.
En una fábrica de software un producto es el software: conjunto de programas de computadora, datos, reglas y documentos usados para describirlo y definirlo (manuales de usuario, listados, diagramas, especificaciones, planes de prueba, resultados de la prueba, etc.
Los procesos son: analizar, especificar, revisar, probar, diseñar, inspeccionar y codificar.
Los insumos son: papel, disquetes y el software de trabajo (lenguajes y herramientas de apoyo).
Comentarios a los Requisitos de la norma ISO9001
"...identificar y planear... procesos... para que se lleven a cabo en condiciones controladas".
Estas condiciones controladas deben incluir:
La sección anterior de Control y proceso nos dice que antes de hacer una cosa (proceso) debemos contar con un procedimiento. En esta sección de Inspección y prueba nos dice que al finalizar un proceso debemos tener un procedimiento (escrito) para saber si el producto o resultado del proceso se realizó correctamente exigiendo, además, un registro de calidad como evidencia de que la actividad de inspección y prueba se llevó a cabo.
En una fábrica de software usamos otras palabras, en consideración semántica con la palabra inspección, como revisión y caminata estructurada (walkthroughs), que para ciertos procesos podrían parecer sinónimos.
Las pruebas de software son inevitables, sólo de no olvidar de generar los registros de calidad correspondientes.
Para una fábrica de software, esta sección prácticamente no se aplica... Los trabajadores del conocimiento pueden utilizar herramientas de apoyo, como son las computadoras y programas especializados, pero estas herramientas no necesitan de calibración aunque si de configuración.
Los procesos y productos de software son susceptibles de medirse... Esto se verá abajo en Técnicas estadísticas.
Se exige que el resultados de las inspecciones y pruebas se identifiquen como conforme o no conforme, es decir, si los productos de los procesos de recibo (intermedios y finales) pasaron o no las inspecciones y/o las pruebas a los que fueron sujetos. Además de requerir el registro de calidad como evidencia de que estas actividades se realizaron.
El resultado de una inspección o prueba de un producto terminado (un diseño, un módulo, una rutina, etc.) se identifica como conforme o no conforme. Si es éste último la norma nos exige definir lo que se debe hacer con estos productos: se puede retrabajar, aceptar, reclasificar, rechazar o desechar. Se recomienda llevar registro de calidad de estas actividades para mejorar los procesos posteriormente.
La norma pide que el contrato debe revisarse para que los requisitos estén definidos adecuadamente. éste puede ser con un cliente interno o con uno externo. Para cualquiera de los dos tipos es necesario registrar o evidenciar de que se revisan estos contratos. En el caso de un cliente externo la evidencia puede ser la hoja donde aparecen las firmas.
Tambien para ambos clientes lo importante es que existan unos requisitos o especificaciones y que se revisen. Además de establecer la manera de realizar modificaciones a los contratos y contar con registros de calidad de que se sigue el procedimiento.
En la fabricación de software a la medida, el diseño se realiza una vez y tambien los otros procesos de fabricación se realizan una sola vez.
Un sistema de calidad debe incluir un manual de calidad, procedimientos de cómo hacer las cosas y planes de calidad.
Al elaborarse un contrato (interno o externo) se incluye la descripción de un proyecto que contiene, además de la especificación de los productos a entregar, un plan de actividades o calendario.
El plan de calidad del proyecto es el plan de actividades complementado con una lista de los procedimientos necesarios para realizar cada actividad del proyecto.
En la siguiente figura se describe el sistema de calidad de una fábrica de software. El sistema genera registros de calidad que son la evidencia de que el sistema funciona y no solamente está en papel.
En la fábrica de software se llama control de la configuración. Cuando el proyecto está en desarrollo se debe cuidar que la documentación producida se identifique apropiadamente para que los desarrolladores localicen fácilmente cualquier conocimiento producido en actividades anteriores a la actividad que están desarrollando.
Cuando el proyecto ha terminado y el cliente emite un reclamo o requiere un cambio a los productos, también se debe recuperar rápidamente todo lo relativo al proyecto para atender las necesidades del cliente.
La manera mínima de identificar los productos de software es etiquetarlos con el nombre del grupo de desarrollo (la fábrica) y un número de proyecto.
Acción correctiva: hay que tomarlas cuando viene un reclamo o no conformidad del cliente, quien detecta un error en el software. Se deben investigar las causas del reclamo, determinar las acciones correctivas pertinentes, asegurar que se lleven a cabo y registrar la realización de estas actividades.
Acciones preventivas: todo tipo de acción que prevenga no conformidades. La norma da lugar para la mejora continua de la fábrica de software que por su naturaleza debe estar permanentemente en transformación. Sólo se deberá recordar de contar con los procedimientos y registros de la calidad que hagan evidencia de las actividades que se realizan.
En una fábrica de desarrollo de software a la medida los productos son conocimientos en forma de programas de computadora y documentos asociados, el manejo, empaque y entrega no representa mayor problema, se debe enviar al cliente en discos o por correo electrónico y posiblemente también se le entregue el producto en papel. Es conveniente que esto se especifique en el contrato.
El servicio generalmente es parte del contrato, incluye capacitación de los usuarios del software, atención a llamadas de consulta y garantía del funcionamiento con respecto a las especificaciones incluidas en el contrato.
Se debe tener cuidado de no confundir garantía con mantenimiento. El mantenimiento del software generalmente tiene que ver con modificaciones o nuevas funciones que se le tienen que incorporar al producto en respuesta a cambios en el entorno o forma de operar de los usuarios y estas nuevas funciones o cambios deberán ser motivo de un nuevo contrato (interno o externo).
El software que se adquiere para trabajar, como son lenguajes de programación y herramientas de apoyo al desarrollo se puede ver desde dos puntos de vista: uno, el software se compra y por lo tanto es una adquisición. Otro punto de vista es que el software adquirido también representa adquisición de conocimiento.
Por lo tanto, los procesos de adquisición en una fábrica de software están estrechamente ligados con la capacitación ya que el cerebro de los que van a usar el software es el que va a recibir el conocimiento adquirido.
Establecer procedimientos y registros de calidad para el control de verificación, almacenamiento y mantenimiento de los productos proporcionados por el cliente. Esto es, cuando los productos proporcionados así lo requieran, porque cuando lo que proporciona el cliente son datos para pruebas u otro tipo de intangible que no puede perderse o dañarse, entonces, la norma no se aplica.
Cada proyecto involucra capacitación implícita o explícitamente. Los participantes en el proyecto deberán de aprender las peculiaridades del dominio de loa aplicación y adistrarse en los lenguajes y herramientas de apoyo al desarrollo, y conocer las novedades de hardware relativas al proyecto.
Adicionalmente se puede tener planes de capacitación en áreas generales de apoyo a los proyectos, por ejemplo, en la planeación y estimación del costo de poryectos, liderazgo, planeación estratégica, ventas, mercadotecnia y trabajo en equipo.
Establecer y mantener procedimientos documentados para identificar, compilar codificar, acceder, archivar, almacenar, conservar y disponer de los registros de calidad.
Un registro de calidad es la evidencia de que una actividad de calidad requerida por la norma se ha realizado, por ejemplo, una revisión, inspección, prueba, verificación, validación o auditoría. Un registro, en su forma mínima, debe incluir la identificación y autentificación del autor del producto y del revisor.
Planear, programar, efectuar y registrar auditorías internas de calidad donde se determine la efectividad del sistema de calidad. En una auditoría se analiza cada uno de los 20 requisitos de la norma y cómo se cumple con ellos.
Identificar muchos tipos de estadísticas para el establecimiento, control y verificación de la capacidad de los procesos y características de los productos. en la literatura de ingeniería de software se proponen decenas de métricas para los diversos aspectos de la calidad del software, por ejemplo, densidad de fallas, tiempo medio entre fallas, complejidad ciclomática, número de líneas de código, total de módulos, número de elementos en la base de datos, etc.
Se podrán establecer métricas que se aplique a todos los proyectos (índices de avances físicos y financieros de los proyectos, eficiencia en costo, valor ganado, número de cambios a las especificaciones durante el desarrollo, número de reclamos después de entregado el software y opinión de satisfacción del cliente) y métricas que se aplique a un proyecto.
Establecer la diferencia entre los procedimientos que se aplican a todos los proyectos y los que se aplican a proyectos en particular.
Para todos los proyectos se puede considerar los soguientes: cómo elaborar una propuesta, un contrato, un plan de calidad y cómo revisarlos. También se incluyen procedimientos de adquisiciones, control de productos suministrados por el cliente, identificación y rastreo de productos, identificación del estado de inspecciones y pruebas, control de acciones correctivas y preventivas y técnicas estadísticas generales.
Los procedimientos a un proyecto podrían ser los relacionados con el lenguaje de programación, las herramientas de apoyo y los métodos de diseño, programación y pruebas.
Tambien se tendrían procedimientos que se aplican al sistema de calidad como un todo, por ejemplo, el control de los registros de calidad, las auditorías internas y la revisión del sistema de calidad.
Se requiere de una política de calidad que defina su organización y haga revisiones del sistema de calidad. Ejemplos: aumentar el grado de satisfacción de los clientes, reducir el número de reclamaciones por proyecto, entregar a tiempo el software de acuerdo al plan de trabajo acordado con el cliente, etc.
Si se ve en la necesidad de implantar un sistema de calidad siga los siguientes pasos: