TAREA 2 - Calidad de Software - RUBEN REGALADO
TAREA 2 - Calidad de Software - RUBEN REGALADO
TAREA 2 - Calidad de Software - RUBEN REGALADO
1
1 ISO/IEC 25010
La ISO/IEC 25010 es una norma internacional que proporciona un modelo exhaustivo para evaluar
la calidad de un producto de software. Esta norma es fundamental para asegurar que los productos
de software cumplan con las expectativas de los usuarios y otros interesados, aportando un valor
significativo y reduciendo riesgos asociados con la implementación y operación del software. El
modelo de calidad de la ISO/IEC 25010 categoriza la calidad del producto en características y
subcaracterísticas específicas, que se detallan a continuación.
1
• Comportamiento temporal: Mide el tiempo de respuesta y el ratio de rendimiento.
• Utilización de recursos: Evalúa la cantidad y tipo de recursos utilizados.
• Capacidad: Determina si el software cumple con los requisitos relativos a límites máximos
para parámetros como ítems almacenados, usuarios concurrentes, etc.
1.1.3 Compatibilidad
La compatibilidad se refiere a la capacidad del software para intercambiar información y operar
en conjunto con otros sistemas en un entorno compartido. Se divide en:
Ejemplo de aplicación: Un sistema de gestión de inventarios debe ser compatible con sistemas de
contabilidad para intercambiar datos sobre ventas y compras sin problemas.
2
• Asistencia al usuario: Evalúa si el software ayuda a los usuarios a alcanzar sus objetivos
específicos.
• Auto-descriptividad: Mide la capacidad del software para presentar información adecuada de
forma inmediata.
Ejemplo de aplicación: En un sistema educativo en línea, la interfaz debe ser intuitiva, fácil de
aprender, y ofrecer asistencia clara para estudiantes con diferentes niveles de habilidad.
1.1.5 Fiabilidad
La fiabilidad mide la capacidad del software para desempeñar sus funciones especificadas sin
fallos bajo condiciones y períodos de tiempo determinados. Incluye:
Ejemplo de aplicación: Un sistema de control de tráfico aéreo debe ser altamente fiable, con una
disponibilidad cercana al 100% y capacidad para recuperarse rápidamente de cualquier fallo.
1.1.6 Seguridad
La seguridad mide la capacidad del software para proteger la información y los datos. Incluye:
• Confidencialidad: Asegura que los datos son accesibles solo para aquellos con autorización.
• Integridad: Protege los datos contra modificaciones o eliminaciones no autorizadas.
• No repudio: Garantiza que las acciones o eventos no puedan ser repudiados.
• Responsabilidad: Permite rastrear las acciones de una entidad.
• Autenticidad: Verifica la identidad de sujetos o recursos.
• Resistencia: Mantiene la operación bajo condiciones de ataque.
3
Ejemplo de aplicación: En un sistema de comercio electrónico, la seguridad debe garantizar la
protección de los datos personales y financieros de los usuarios contra accesos no autorizados y
fraudes.
1.1.7 Mantenibilidad
La mantenibilidad mide la capacidad del software para ser modificado efectivamente. Incluye:
Ejemplo de aplicación: En una plataforma de redes sociales, la mantenibilidad asegura que nuevas
funciones pueden ser añadidas y errores corregidos sin interrumpir el servicio.
1.1.8 Flexibilidad
La flexibilidad mide la capacidad del software para adaptarse a cambios en sus requisitos,
contextos de uso o entorno del sistema. Incluye:
Ejemplo de aplicación: Un sistema de gestión de contenidos debe ser adaptable para diferentes
industrias y escalable para manejar un crecimiento en la cantidad de usuarios y datos.
4
1.1.9 Protección
La protección evalúa la capacidad del software para evitar poner en peligro la vida humana, la
salud, la propiedad o el medio ambiente. Incluye:
Ejemplo de aplicación: En un sistema de control industrial, la protección asegura que los procesos
operan dentro de límites seguros y alertan sobre condiciones peligrosas.
2. CERTIFICADOS DE CALIDAD:
2.1.CMMI
El CMMI comenzó en 1987 como el Modelo de Madurez y Capacidad (CMM), un proyecto del
Instituto de Ingeniería de Software (SEI) de la Universidad Carnegie Mellon, financiado por el
Departamento de Defensa de Estados Unidos. Publicado por primera vez en 1991, el CMM para
software surgió como una lista de comprobación de factores críticos de éxito, basada en
investigaciones de IBM y líderes en garantía de calidad como Philip Crosby y W. Edwards
Deming. Debido a su éxito, se desarrollaron modelos CMM para diversos ámbitos más allá del
software. Para consolidar estos modelos, se creó el CMMI, que integró la ingeniería de sistemas,
la ingeniería de software y el desarrollo de productos.
5
2.1.1. Niveles de Madurez del Modelo CMMI
6
- Evaluación Inicial
Realizar una evaluación interna o con consultores certificados para determinar el estado
actual de los procesos y el nivel de madurez.
- Formación y Capacitación
Proporcionar formación a los empleados sobre las mejores prácticas de CMMI.
- Implementación de Prácticas
Documentar y estandarizar los procesos y establecer métricas y mecanismos de control.
- Monitoreo y Control
Realizar auditorías y revisiones regulares, además de analizar los datos para medir el
desempeño y ajustar los procesos.
- Corrección de Deficiencias
Corregir cualquier deficiencia identificada durante la evaluación.
- Obtención de la Certificación
Tras una evaluación exitosa, la organización recibe la certificación CMMI correspondiente
a su nivel de madurez, válida por tres años.
7
2.1.3 Beneficios de la Certificación CMMI para una Organización de Desarrollo de Software
- Aumento de la Eficiencia
Optimización de procesos y mejora de la productividad, además de mejorar la gestión de
proyectos con planificación y ejecución precisas.
- Reducción de Costos
Menor retrabajo y costos operativos haciendo uso eficiente de recursos humanos y técnicos.
- Ventaja Competitiva
Reconocimiento del mercado y diferenciación de competidores para mayor confianza de
los clientes en la capacidad de entrega.
- Mejora Continua
Promoción de una cultura de mejora continua fomentando la innovación y adopción de
nuevas tecnologías.
La certificación CMMI es un proceso detallado y riguroso, pero los beneficios que aporta en
términos de calidad del producto, eficiencia operativa, satisfacción del cliente, reducción de
costos y ventaja competitiva justifican el esfuerzo. CMMI no solo proporciona un marco para
la mejora continua, sino que también ayuda a las organizaciones a adaptarse y prosperar en un
entorno de negocios en constante cambio.
8
2.2 CSQE (Certified Software Quality Engineer)
La certificación CSQE, ofrecida por la American Society for Quality (ASQ), está diseñada para
validar el conocimiento y habilidades de los profesionales en el campo de la ingeniería de calidad
de software. Un Ingeniero Certificado en Calidad de Software (CSQE) es experto en la aplicación
de principios y prácticas de calidad en el desarrollo y mantenimiento de software, asegurando que
los productos de software cumplen con los estándares y requisitos de calidad.
La certificación CSQE cubre una amplia gama de temas relacionados con la calidad de software,
organizados en áreas clave. A continuación, se describen las principales áreas de conocimiento y
competencias que se evalúan en el examen CSQE.
9
• Revisiones Técnicas: Planificar y conducir revisiones técnicas, inspecciones y revisiones
por pares.
D. Control de Calidad del Software:
• Pruebas de Software: Desarrollar y ejecutar planes de prueba, definir criterios de
aceptación.
• Gestión de Defectos: Identificar, registrar, analizar y resolver defectos de software.
• Verificación y Validación (V&V): Asegurar que el software cumple con los requisitos
especificados y satisface las necesidades del usuario.
E. Ingeniería de Procesos de Software:
• Modelos de Procesos: Conocimiento de modelos de procesos de software (Waterfall,
Agile, V-Model).
• Mejora de Procesos: Aplicar métodos y técnicas para la mejora continua de procesos.
F. Gestión de Configuración:
• Control de Versiones: Implementar sistemas de control de versiones para gestionar
cambios en el software.
• Baselines: Definir y mantener baselines de configuración, asegurar la integridad de los
productos de software.
G. Calidad del Producto:
• Atributos de Calidad: Identificar y medir atributos de calidad del software (usabilidad,
fiabilidad, mantenibilidad).
• Evaluación de Calidad: Utilizar técnicas de evaluación y análisis para asegurar la calidad
del producto final.
10
• Estudiar el Cuerpo de Conocimientos (BoK): Familiarizarse con los temas y áreas de
conocimiento cubiertos en el BoK de la ASQ.
• Cursos y Materiales de Estudio: Participar en cursos de preparación, utilizar guías de
estudio, libros y otros recursos.
A. Reconocimiento Profesional:
• La certificación CSQE es un reconocimiento internacionalmente reconocido de la
competencia en calidad de software.
B. Mejora de la Carrera:
• Los profesionales certificados en CSQE son vistos como expertos en su campo, lo que
puede conducir a mejores oportunidades de empleo y promoción.
C. Contribución a la Calidad del Software:
• Los CSQE pueden implementar y mejorar prácticas de calidad en sus organizaciones,
resultando en productos de software más fiables y de mayor calidad.
D. Desarrollo de Habilidades:
• La preparación para el CSQE ayuda a los profesionales a desarrollar una comprensión
profunda de los principios y prácticas de calidad en el software.
E. Ventaja Competitiva:
11
• La certificación CSQE proporciona una ventaja competitiva tanto a los individuos como a
las organizaciones al demostrar un compromiso con la calidad.
La certificación CSQE es una credencial valiosa para los profesionales de calidad de software,
validando su conocimiento y habilidades en la implementación de principios y prácticas de calidad.
A través de una preparación rigurosa y el cumplimiento de los requisitos de elegibilidad, los
ingenieros de calidad de software pueden obtener esta certificación y aportar significativos
beneficios a sus organizaciones y carreras.
12
3. Análisis de Caso de Estudio: “El apagón de Amazon Web Services (AWS) de 2017”
El apagón de Amazon Web Services (AWS) en 2017 fue uno de los eventos más notables en la
industria de la nube, que afectó a una gran cantidad de servicios web y aplicaciones que dependían
de AWS. Para comprender mejor el panaroma ahondaremos en entender el servicio que fue
interrumpido y ubicarnos en la gravedad del fallo ocurrido.
13
D. Integración con Otros Servicios de AWS: S3 se integra con otros servicios de AWS,
como EC2 (Elastic Compute Cloud), RDS (Relational Database Service), Lambda, y más,
facilitando la creación de aplicaciones complejas y flujos de trabajo de datos.
E. Gestión del Ciclo de Vida: Permite la gestión del ciclo de vida de los datos, incluyendo
la transición automática de objetos a diferentes clases de almacenamiento y la eliminación
de datos según políticas predefinidas.
14
Slack: La plataforma de colaboración Slack también se vio afectada, con problemas en la
carga de archivos y en la sincronización de mensajes.
Netflix: Aunque Netflix utiliza una infraestructura distribuida y redundante, algunos de sus
servicios de soporte y backend que dependían de S3 experimentaron interrupciones.
15
E. Interrupción en Servicios de Comercio Electrónico:
El apagón fue causado por un error humano durante una actividad de mantenimiento rutinaria.
Aquí está el detalle del incidente según el informe post-mortem de AWS:
16
D. Problemas de Recuperación: Los subsistemas afectados tuvieron dificultades para
recuperarse debido a la carga de tráfico y a la interdependencia entre los diferentes
componentes del servicio S3. Esto prolongó el tiempo de inactividad hasta que se pudo
restaurar completamente el servicio.
3.4 Recomendaciones
El apagón de AWS podría haberse evitado con una serie de medidas preventivas y mejores
prácticas en la gestión y operación de servicios en la nube:
A. Validación de Comandos:
• Implementar validaciones y verificaciones adicionales para comandos críticos,
especialmente aquellos que pueden afectar a una gran cantidad de servidores. Esto incluye
límites estrictos sobre el número de servidores que se pueden eliminar en una sola
operación.
B. Automatización y Simulación de Fallos:
• Utilizar herramientas de automatización para gestionar tareas de mantenimiento y
depuración. Las simulaciones de fallos, como las proporcionadas por herramientas de chaos
engineering (por ejemplo, Chaos Monkey de Netflix), pueden ayudar a identificar puntos
débiles y mejorar la resiliencia de los sistemas.
C. Procedimientos de Recuperación Mejorados:
• Desarrollar y probar procedimientos de recuperación y reinicio de servicios de manera
regular. Esto incluye tener planes de contingencia para manejar escenarios en los que
múltiples componentes críticos fallan simultáneamente.
D. Segmentación y Aislamiento de Servicios:
• Mejorar la segmentación y el aislamiento de los servicios para que el fallo de un
componente crítico no tenga un impacto tan amplio en el sistema. Esto podría incluir la
implementación de subsistemas redundantes y la distribución de servicios críticos en
múltiples regiones.
E. Formación y Capacitación:
17
• Proporcionar formación y capacitación continua a los equipos de operaciones para manejar
adecuadamente los procedimientos de mantenimiento y respuesta a incidentes.
18
4. Bibliografías
ISO. (s. f.). ISO/IEC 25010. Recuperado el 26 de julio de 2024, de
https://iso25000.com/index.php/normas-iso-25000/iso-25010
19
CIqcVytCAEbhoC5NoQAvD_BwE:G:s&s_kwcid=AL!4422!3!648114154064!e!!g!!amazon%2
0s3!19685311841!149715855527
20