Sobes.tech
Junior

¿De qué depende la graduación del nivel de gravedad de los errores (severidad)?

sobes.tech AI

Respuesta de la IA

La graduación del nivel de gravedad de los errores (severity) depende del impacto del defecto en la funcionalidad, estabilidad o seguridad del producto de software. Se evalúa el daño potencial para el usuario o el negocio.

Factores principales que afectan la gravedad:

  • Criticidad de la funcionalidad: Qué tan importante es la función afectada para el funcionamiento de la aplicación.
  • Impacto en operaciones principales: Si el defecto impide la realización de tareas clave.
  • Pérdida de datos o fondos: Si el defecto puede provocar fuga o pérdida de datos, así como pérdidas financieras.
  • Disponibilidad del sistema: Si el defecto bloquea total o parcialmente el uso de la aplicación.
  • Posibilidad de solución alternativa: Si existe una forma alternativa de realizar la acción.
  • Frecuencia de aparición: Con qué frecuencia se manifiesta el defecto (aunque esto es más un factor de prioridad, también puede influir en la gravedad si el defecto es crítico y constante).

Niveles típicos de gravedad (que pueden variar según el proyecto y la empresa):

  • Bloqueador: El producto es completamente inutilizable, funcionalidad críticamente importante bloqueada, no se puede continuar con el trabajo o las pruebas. Se garantizan pérdidas de datos o financieras.
  • Crítico: Funcionalidad críticamente importante no funciona o funciona incorrectamente. Las operaciones principales están seriamente afectadas, pero hay posibilidad de trabajo parcial. No hay solución alternativa.
  • Mayor: Funcionalidad importante pero no crítica no funciona o funciona incorrectamente. Puede haber interrupciones en operaciones principales, pero existe una solución alternativa. Pueden haber pérdidas de datos, pero no críticas.
  • Menor: Interrupciones menores en la funcionalidad o problemas de usabilidad. No afecta las operaciones principales. Hay una solución sencilla.
  • Trivial: Defectos cosméticos, errores en el texto, que no afectan la funcionalidad.
enum DefectSeverity {
    case blocker, critical, major, minor, trivial
}

func determineSeverity(defectFunctionality: FunctionalityLevel, impact: ImpactLevel) -> DefectSeverity {
    switch (defectFunctionality, impact) {
    case (.critical, .blocksAll): return .blocker // Función crítica, bloquea completamente el trabajo
    case (.critical, .majorIssue): return .critical // Función crítica, problemas graves
    case (.essential, .blocksAll): return .critical // Función principal, bloquea completamente el trabajo
    case (.essential, .majorIssue): return .major // Función principal, problemas graves
    case (_, .minorIssue): return .minor // Problemas menores
    case (_, .cosmetic): return .trivial // Problemas cosméticos
    default: return .minor // Valor por defecto
    }
}

enum FunctionalityLevel {
    case critical, essential, minor
}

enum ImpactLevel {
    case blocksAll, majorIssue, minorIssue, cosmetic
}

// Uso:
let severity = determineSeverity(defectFunctionality: .critical, impact: .blocksAll)
print(severity) // Mostrará: blocker