EGEL Plus Ingeniería de Software cheat sheet
EGEL Plus Ingeniería de Software · Keep the key ideas within reach.
Análisis y diseño de software
Requerimiento funcional: describe una acción que el sistema debe realizar; se verifica mediante pruebas de aceptación.
Requerimiento no funcional: restricción de calidad (rendimiento, seguridad, usabilidad); se mide con métricas cuantificables.
Caso de uso: actor + flujo principal + flujos alternativos; el flujo principal debe terminar en un resultado de valor para el actor.
Historia de usuario: formato 'Como [rol], quiero [acción] para [beneficio]'; criterios de aceptación en formato Given-When-Then.
Diagrama de clases UML: relación de herencia (triángulo hueco), composición (rombo relleno, ciclo de vida dependiente) y agregación (rombo hueco).
Principio de responsabilidad única (SRP): una clase debe tener una sola razón para cambiar; se detecta si la clase tiene más de un actor interesado.
Ley de Demeter: un objeto solo debe invocar métodos de sus colaboradores directos; evita cadenas como a.getB().getC().hacer().
Acoplamiento y cohesión: bajo acoplamiento entre módulos y alta cohesión dentro de cada módulo; la cohesión funcional es la más deseable.
Construcción y pruebas de software
Cobertura de sentencias: porcentaje de líneas ejecutadas por la suite; cobertura de ramas exige evaluar ambas salidas de cada decisión.
Prueba unitaria: aísla una unidad (método/clase) usando dobles de prueba (stub, mock) para dependencias externas.
Prueba de integración: verifica la interacción entre módulos o con recursos externos (BD, API); no aísla dependencias.
TDD ciclo rojo-verde-refactor: escribir primero una prueba que falle, luego el código mínimo para pasarla y después refactorizar.
Partición de equivalencia: divide las entradas en clases donde se espera el mismo comportamiento; se prueba un valor por clase.
Análisis de valores límite: para un rango [a,b] se prueban a-1, a, b, b+1; detecta errores en las fronteras de las condiciones.
Complejidad ciclomática de McCabe: V(G) = E - N + 2P; también V(G) = número de regiones del grafo o decisiones + 1.
Prueba de regresión: conjunto de casos que se reejecuta tras un cambio para asegurar que no se rompió funcionalidad existente.
Gestión de proyectos de software
Ruta crítica: secuencia de actividades con holgura cero; su duración determina la duración mínima del proyecto.
Holgura total de una actividad = LS - ES = LF - EF; si es cero, la actividad es crítica.
Valor ganado: PV (valor planificado), EV (valor ganado), AC (costo real); CV = EV - AC y SV = EV - PV.
Índices de desempeño: CPI = EV / AC (costo) y SPI = EV / PV (cronograma); valores < 1 indican desviación desfavorable.
Estimación por puntos de historia: velocidad = puntos completados por iteración; duración estimada = backlog total / velocidad promedio.
Scrum: roles Product Owner, Scrum Master y equipo; eventos Sprint Planning, Daily, Review y Retrospective; artefactos Product Backlog, Sprint Backlog e Incremento.
Gestión de riesgos: probabilidad × impacto para priorizar; estrategias de respuesta: evitar, mitigar, transferir, aceptar.
Ley de Brooks: añadir personal a un proyecto tardío lo retrasa aún más por el costo de comunicación y rampa de aprendizaje.
Arquitectura, calidad y procesos de software
Atributo de calidad: propiedad medible del sistema (disponibilidad, modificabilidad, rendimiento); se documenta con escenarios de calidad de seis partes.
Estilo arquitectónico en capas: cada capa solo depende de la inmediata inferior; facilita sustitución pero puede añadir latencia.
Patrón MVC: separa Modelo (datos y lógica), Vista (presentación) y Controlador (entrada); reduce acoplamiento entre UI y negocio.
ISO/IEC 25010 define ocho características de calidad: adecuación funcional, eficiencia de desempeño, compatibilidad, usabilidad, fiabilidad, seguridad, mantenibilidad y portabilidad.
CMMI niveles de madurez: 1 Inicial, 2 Gestionado, 3 Definido, 4 Gestionado cuantitativamente, 5 En optimización.
Modelo en V: cada fase de desarrollo tiene una fase de prueba correspondiente (requisitos ↔ aceptación, diseño ↔ integración).
Deuda técnica: costo futuro de mantener una solución rápida; se hace explícita en el backlog y se prioriza su pago.
Revisión de código: inspección formal con roles (moderador, autor, revisores) y lista de verificación; detecta defectos antes de las pruebas.