Alternativas para mejorar la Calidad del Software Como es bien sabido por las profesionales de la industria del software, la calidad del software se define como el grado en que un producto de software satisface las necesidades explícitamente solicitadas (requerimientos explícitos) y las necesidades implícitas esperadas por el cliente (requerimientos implícitos). En este sentido esta década ha contribuido a mejorar la calidad de los sistemas informáticos al considerar, dentro de la especificación de requisitos del software a las características de calidad “no funcionales”, como ser la facilidad de uso conocida como usabilidad, la eficiencia o performance, interoperabilidad con otros sistemas, portabilidad a otros entornos. Aún falta un camino por recorrer en lo que hace a la identificación temprana de requisitos de confiabilidad (tolerancia a fallas, capacidad de recuperación), y a la facilidad del mantenimiento, las cuales son características importantes a considerar, teniendo en cuenta los problemas que evitarían en el futuro uso del sistema. Para mejorar en estos aspectos debemos utilizar como herramientas los estándares internacionales, de manera de mejorar nuestra industria. Para mejorar la calidad de las aplicaciones de software no sólo basta con alinearnos a estándares de calidad de producto, sino que es necesario mejorar los procesos de desarrollo y mantenimiento. Como indica la norma ISO/IEC 9126-1, mejorando la calidad del proceso se mejoran los atributos internos del software, lo que mejora sus atributos externos impactando en la calidad en el uso. La norma también explica que, conocer las características y sub-características de calidad de nuestro producto es necesario para alinear nuestro proceso de manera que el producto resultante conlleve esas características deseadas. El primer problema que se presenta al emprender un proyecto de mejora que persigue una adecuada calidad del software, es elegir la o las normas directrices para implementar esa mejora, las cuales nos guían en el proceso y, en el caso de las normas certificables, nos permiten alcanzar el reconocimiento a través de la certificación. Hoy en día existen más de 400 normas internacionales (ISO/IEC) relacionadas con la ingeniería de software y sistemas. Las normas usualmente se orientan a los procesos o a los productos. En lo que respecta a la calidad del software y para facilitar su comprensión, las he clasificado en 3 conjuntos solapados: normas orientadas a productos, normas orientadas a procesos, y normas orientadas a la gestión, las cuales para muchos autores están incluidas dentro del conjunto de normas orientadas a procesos. Esta separación la he realizado viendo al conjunto de normas de procesos con una especialización en TI, mientras que las normas de gestión son más amplias, incluyendo no sólo los sistemas de gestión del software sino otros como ser gestión ambiental, gestión energética, gestión de riesgos, etc. Esta posición ha sido adoptada por IRAM, el Instituto Argentino de Normalización y Certificación que representa al país en la Organización Internacional de Estandarización conocida como ISO. A su vez hemos realizado una sub-clasificación en lo que respecta a las normas de procesos TI, en las cuales se ha incluido a las normas del ciclo de vida, como hilo conductor de los procesos, y a las normas de servicios de TI, que especifican buenas prácticas para la gestión de los servicios. A continuación se detallan las principales normas de cada grupo: CALIDAD DEL PRODUCTO IRAM-ISO/IEC 14598 – Tecnología de la Información – Ingeniería de software - Evaluación del producto de software. NM-IRAM-ISO/IEC 9126 - Ingeniería de software – Calidad del producto. NOTA: Actualmente el JTC1/ SC7 de la ISO está elaborando una serie de normas para la evaluación del producto bajo el título general de SQuaRE (Software Quality Requirements and Evaluation) que abarcará a las normas ISO/IEC 14598 e ISO/IEC 9126. La serie de normas IRAM-ISO/IEC 14598 proporciona un marco de trabajo para evaluar la calidad de todos los tipos de productos de software e indica los requisitos de los métodos de medición y del proceso de evaluación. La serie consta de seis partes, tres generales y tres que describen los requisitos del proceso de evaluación en situaciones diferentes: requisitos para desarrolladores (parte 3); requisitos para compradores (parte 4); requisitos para evaluadores (parte 5). Esta serie se está terminando de publicar como serie de normas argentina (a la fecha se han publicado las primeras cuatro partes y están en estudio las dos faltantes). A nivel MERCOSUR se mantiene el mismo estado de publicación. La serie de normas ISO/IEC 9126-1:2009 define las características de calidad del producto de software (parte 1), las métricas internas y externas (partes 2 y 3), y la calidad en uso, que explica cómo la calidad del producto está sujeta a las condiciones particulares de uso (parte 4). De esta serie sólo se ha publicado como norma argentina IRAM-NM-ISO/IEC la parte 1, como adopción directa de la norma MERCOSUR (NM). Uruguay ha publicado la parte 2 como norma UNIT-ISO/IEC. GESTIÓN DE LA CALIDAD IRAM-ISO 9001:2008 – Sistemas de gestión de la calidad – Requisitos. IRAM-ISO/IEC 90003: 2006 Tecnología de la Información - Ingeniería de software – Directrices para la aplicación de la norma IRAM-ISO 9001 al software. Estas dos normas forman un conjunto. La IRAM-ISO 9001 especifica los requisitos para un sistema de gestión de la calidad, es la norma que se certifica, y la IRAM-ISO/IEC 90003 es su guía de aplicación para la industria del software. El foco de estas normas es lograr la satisfacción del cliente a través de la aplicación eficaz de un sistema de gestión de la calidad que incluya los procesos para asegurar la mejora continua. CALIDAD DEL PROCESO ISO/IEC 15504 – Tecnología de la Información – Evaluación de procesos. CMMI - Modelo de madurez de las capacidades, integración de disciplinas: ingeniería de sistemas, ingeniería de software, desarrollo de productos y procesos, y gestión de proveedores. NMX-059/01-NYCE-2005 TI-Software-Modelos de procesos y evaluación para el desarrollo y mantenimiento de software. La serie de normas ISO/IEC 15504 hoy en día evalúa no sólo la capacidad de los procesos, sino también la madurez. Esta serie de normas ha sido estudiada por el Subcomité 7 Software and Systems Engineering del JTC1, Comité Técnico Conjunto de ISO (Internacional Standardization Organization) e IEC (International Electro technical Commission). El CMMI es un modelo desarrollado por el SEI (Software Engineering Institute) de Carnegie Mellon University (USA), que tomó como antecedente a las partes de la norma ISO/IEC 15504 referidas a la evaluación por niveles de capacidad, y fue el precursor en lo que respecta a la madurez. Otra norma a destacar hoy en día es la NMX-59/01: la norma mexicana referente a MoProSoft (Modelo de Procesos para la industria de Software), cuya importancia radica no sólo en que está siendo bien adoptada en México, sino que ha sido considerada como antecedente de la norma peruana NTP 291100, y como antecedente del modelo Iberoamericano COMPETISOFT (disponible en Internet) y como antecedente de la futura norma ISO/IEC para PyMEs: la ISO/IEC 29110, en cuyo estudio estoy participando como delegada argentina. El propósito de utilizar una o más de estas normas puede ser: entender el estado actual de los procesos, en pro de mejorar su eficacia y eficiencia, teniendo en cuenta las necesidades del negocio; identificar las fortalezas y debilidades de los procesos, para evaluar si se puede cumplir con uno o más requerimientos particulares; determinar la capacidad de los procesos de la propia o de otra empresa, antes de firmar un contrato. CICLO DE VIDA ISO/IEC 12207:2008 – Tecnología de la Información – Procesos del ciclo de vida del software. ISO/IEC 15288:2008 – Systems and software engineering -- System life cycle processes. NOTA 1: Estas normas fueron revisadas y vueltas a publicar en el año 2008. NOTA 2: Existen guías sobre estas normas como ser la ISO/IEC 15271 y la ISO/IEC19760 respectivamente. La norma ISO/IEC 12207 describe los procesos del ciclo de vida del software. Su versión anterior clasificaba los procesos en los siguientes 3 grupos: los procesos principales del ciclo de vida (adquisición, suministro, desarrollo, operación y mantenimiento), los procesos de apoyo (documentación, administración de la configuración, aseguramiento de la calidad, verificación, validación, revisión conjunta, auditoría y solución de problemas), y los procesos organizativos del ciclo de vida (gestión, mejora, infraestructura y recursos humanos). La nueva versión ha incorporado procesos de ingeniería de sistemas, aumentando su complejidad. CALIDAD DEL SERVICIO IRAM-ISO/IEC 20000-1: 2008 – Tecnología de la Inf. – Gestión de los servicios – Parte 1: Especificación. NM-ISO/IEC 20000-2: 2009 – Tecnología de la Inf. – Gestión de los servicios – Parte 2: Código de práctica. La serie de normas ISO/IEC 20000 proporciona un marco para ofrecer servicios bien administrados que sean a un mismo tiempo eficientes y económicos. Incluye las mejores prácticas de procesos, y se utiliza para satisfacer tanto a los clientes externos como a los internos. Es especialmente útil para homogeneizar los servicios en una cadena de abastecimiento. La parte 2 de la norma ISO/IEC 20000 proporciona lineamientos que sirven de guía a los responsables de implementarlos el proceso de mejora de los servicios. Se puede utilizar en cualquier tipo de organización, independientemente de su estructura. La subcategoría de Gestión de los servicios de TI se incluye tanto en el conjunto de normas de procesos de TI, como en el de Gestión. Certificación de la calidad del Software Una vez lograda la implementación de las normas es importante lograr que una parte independiente certifique que los sistemas estén correctamente aplicados y efectúe su seguimiento en el tiempo. Lo mismo ocurre con la certificación de la calidad de los productos. Esta certificación tiene como beneficios: alinear la gestión y el desarrollo de los sistemas de información a los objetivos de la actividad, brindar una mayor visibilidad a los proyectos de sistemas para facilitar su seguimiento, permitiendo alcanzar las metas con éxito, incorporar las mejores prácticas en todas las áreas de proceso relacionadas con el desarrollo, mantenimiento e integración de los sistemas informáticos, implantar una cultura de la Calidad que permita mantener los procesos en un círculo de mejora continua, demostrar la capacidad de la empresa para elaborar y entregar productos que satisfagan los requerimientos de sus clientes, respetando las reglamentaciones aplicables, mejorar la imagen de la compañía en pro de las crecientes posibilidades de exportación del software, incrementar la competitividad de las empresas del sector. Percibiendo la importancia que tiene la calidad en el desarrollo, adquisición, operación y mantenimiento del software, el Instituto Argentino de Normalización y Certificación (IRAM) firmó un convenio de cooperación técnica regional con el Banco Interamericano de Desarrollo (BID), con el propósito de elaborar normas técnicas que faciliten el acceso de las empresas a la exportación con calidad certificada, con especial atención a la problemática particular de las PyMEs. En este convenio, BID-FOMIN ATM/ME 8532 – RG, participan: el IRAM, el Instituto Uruguayo de Normas Técnicas (UNIT), la Asociación Brasilera de Normas Técnicas (ABNT), el Instituto Nacional de Normalización de Chile (INN) y la Asociación MERCOSUR de Normalización (AMN). El convenio no sólo contempla la elaboración de normas, sino la sensibilización y capacitación de las empresas del sector, para que comprendan las ventajas de mejorar sus procesos de producción de software y los beneficios que brinda la certificación. Mg. Paula María Angeleri Profesora de Diseño de sistemas, Ingeniería de software y Métricas de Software – Facultad de Tecnología Informática – UB Responsable técnico del programa Calidad de software del proyecto BID-FOMIN ATN-ME-8532-RG Delegada argentina ante el ISO/IEC JTC1/SC7 Software and systems engineering