Desarrollando Software de Calidad Ernesto Quiñones A. ernestoq@apesol.org.pe
De que hablaremos Aseguramiento de la Calidad y Pruebas de Software Procesos de Pruebas de Software y de Sistema. Calidad del Producto Software. La seguridad en los procesos de desarrollo.
QA y Testing Aseguramiento de la Calidad <> Pruebas Se suele confundir mucho el tema de aseguramiento de calidad con solo ejecutar pruebas de software. Según NTP ISO/IEC 12207 (Procesos de Ciclo de vida de Software): proporciona la seguridad apropiada de que los productos y procesos software del ciclo de vida del proyecto son conforme con sus requerimientos especificados y se adhieren a los planes establecidos.
QA y Testing Verificación : Verificar si el producto software cumplió con los requerimientos y condiciones de las actividades. Contratos Procesos Requerimientos Diseño Código Integración Documentación Proceso de QA Debemos responder esto: En que parte de la ejecución de los procesos se esta llevando a cabo la verificación? hay un plan? Cual es el nivel de independencia de la verificación? Validación : Validar si el software con los requerimientos que implementa cumple con el uso previsto, esto se acerca más a una auditoría porque debemos reunir evidencia objetiva. Pruebas: Las convencionales y adicionalmente estrés, sobrecarga, capacidad ó habilidad de respuesta ante problemas, etc. Debemos responder esto: El proyecto requiere un esfuerzo de validación?
QA y Testing Proceso de QA Aseguramiento del Producto Verificación Como definimos la calidad del producto? NTP ISO/IEC 9126-1 Aseguramiento del Proceso Cumplimos con los contratos y planes, seguimos prácticas de ingeniería de software, personal, procesos y normas idóneos, etc. Validación Aseguramiento del Sistema de Calidad Contar con las actividades de gestión de la calidad de ISO 90003 Revisión Conjunta Proveedor-Cliente Auditoría
Procesos de Pruebas de Software y de Sistema Donde empiezan las pruebas? Gerencia T.I. Y Gerencias Involucradas Área De Pruebas Área de Desarrollo y Pruebas Área de Desarrollo
Procesos de Pruebas de Software y de Sistema TMMi http://www.tmmifoundation.org/html/tmmiorg.html Framework específico de un Modelo de Procesos de Pruebas de acceso libre, sigue el estilo de CMMi, diseñado para medir niveles de capacidad de procesos.
Procesos de Pruebas de Software y de Sistema ISO/IEC 29119 http://www.softwaretestingstandard.org/ Parte 1: Conceptos y Definiciones Parte 2 Procesos de Pruebas Parte 3 Documentación De Pruebas Parte 4 Técnicas de Pruebas Pruebas en la Organización Políticas Plan Técnicas de Pruebas Gestión de Pruebas Estrategia Estado Pruebas Dinámicas Pruebas Dinámicas Culminación Métricas de Pruebas
Calidad del Producto Software Como saber si nuestro producto es de calidad? Los criterios de calidad de un producto se fijan desde el momento de la concepción del mismo, la calidad debe poder ser medida objetivamente. NTP ISO/IEC 9126 Calidad del Producto Software (actualmente en ISO se esta creando la ISO/IEC 25000 que es mucho más ambiciosa)
Calidad del Producto Software
Calidad del Producto Software Parte 1: Modelo de Calidad Parte 2: Métricas Externas (se validan) Parte 3: Métricas Internas (se verifican) Parte 4: Métricas de Calidad En USO
Seguridad en los Procesos de Desarrollo Un software seguro requiere que los procesos de desarrollo sean seguros. Tanto en el software privativo como en el software libre se han encontrado diversos casos de infiltración de código malicioso no deseado por falta de control. El oficial de seguridad de la institución cumple un rol fundamental en la validación y generación de practicas seguras de desarrollo.
Seguridad en los Procesos de Desarrollo NTP ISO/IEC 17799 Código de Buenas Prácticas para la gestión de la información. Aplique los controles fundamentales: Activos identificados, asignados y bajo control con responsabilidad (y penas) por su uso (o mal uso). Acceso controlado a las instalaciones de desarrollo, físico y lógico, especialmente en entornos distribuidos de desarrollo, quien entra, quien sale, que hace, es fundamental para minimizar el riesgo de manipulaciones no autorizadas de aplicaciones en desarrollo.
Seguridad en los Procesos de Desarrollo Aplique los controles fundamentales: Control y monitoreo de proveedores y empleados Acuerdos de Confidencialidad, firmados, responsabilidad aceptada, asumida y sanciones claramente establecidas. Entrenamiento en las políticas de seguridad de la información. Fin de contratos: retorno de activos asignados, revocación de accesos. Aplicados directamente al desarrollo Políticas de gestión de cambios Segregación de tareas Planificación de infraestructura Aceptación de nuevos sistemas Documentación controlada, con accesos definidos
En Resumen No es necesario acceder a grandes y complejas herramientas para desarrollar software con calidad. No hay que reinventar la rueda, existen muchas normas, guías y estándares a las cuales recurrir. Se requiere un nivel de autonomía y autoridad razonable para ver que estos criterios se cumplan. Esto es igualmente válido tanto si adquirimos ó desarrollamos in-house, si el desarrollo es aislado ó colaboratívo, con herramientas libres ó privativas, bajo métodologías convencionales ó ágiles, etc. Formatos? En tiempos modernos hay herramientas como wikis, gestión de código, gestión documental, etc. Que nos pueden ayudar a no llenarnos de papeles.