B3-T11: Metodologías de Desarrollo, Control de Versiones y Pruebas

Este tema combina metodologías de desarrollo (Scrum, cascada, Métrica v3), control de versiones (Git) y calidad del software (pruebas, CI/CD). Git aparece en TODOS los exámenes desde 2016. Scrum y Métrica v3 aparecen frecuentemente.

METODOLOGÍAS DE DESARROLLO

MetodologíaTipoCaracterísticas
Cascada (Waterfall)Predictiva / SecuencialFases secuenciales: Requisitos → Diseño → Implementación → Verificación → Mantenimiento. No se vuelve atrás
Modelo en VPredictivaCada fase de desarrollo tiene su fase de prueba simétrica. Verificación continua
Espiral (Boehm)Iterativa, basada en riesgoCiclos: Planificar → Análisis de riesgos → Desarrollar → Evaluar. Prototipado
Iterativo / IncrementalIterativaEntregas parciales funcionales. Cada iteración añade funcionalidad
ScrumÁgilSprints cortos, equipo autoorganizado, entrega continua de valor
KanbanÁgilFlujo continuo, tablero visual, límites WIP (Work In Progress)
XP (Extreme Programming)ÁgilPair programming, TDD, integración continua, refactoring constante
DevOpsCultura / PrácticaUnión Dev + Ops. CI/CD, automatización, monitorización. Cultura, no metodología

MANIFIESTO ÁGIL

Fuente: Manifesto for Agile Software Development (agilemanifesto.org) — 2001, documento público. 17 firmantes.
#Valoramos más......que
1Individuos e interaccionesProcesos y herramientas
2Software funcionandoDocumentación extensiva
3Colaboración con el clienteNegociación contractual
4Respuesta ante el cambioSeguir un plan
Tip examen: El manifiesto no dice que lo de la derecha no importe — dice que se valora más lo de la izquierda. Tiene además 12 principios ágiles.

SCRUM

Fuente: The Scrum Guide (scrumguides.org) — Ken Schwaber y Jeff Sutherland. Versión actual: noviembre 2020. Documento público.
RolResponsabilidadNO confundir con
Product OwnerMaximizar el valor del producto. Gestiona y prioriza el Product BacklogJefe de proyecto (no lo es)
Scrum MasterFacilita Scrum, elimina impedimentos, protege al equipoLíder técnico (no lo es)
DevelopersEquipo autoorganizado que crea el Incremento. Scrum Team completo: 10 o menos personas (Scrum Guide 2020)Solo programadores (incluye testers, diseñadores, etc.)
EventoTimeboxPropósito
Sprint1-4 semanas (fijo)Contenedor de todos los eventos. Produce un Incremento potencialmente entregable
Sprint Planning8h (Sprint de 1 mes)Qué se puede hacer en este Sprint + cómo (Sprint Backlog)
Daily Scrum15 minutosInspección del progreso hacia el Sprint Goal. Solo Developers
Sprint Review4h (Sprint de 1 mes)Inspeccionar el Incremento con stakeholders. Feedback y adaptación del backlog
Sprint Retrospective3h (Sprint de 1 mes)Cómo mejorar el proceso. Plan de mejoras para el siguiente Sprint
ArtefactoCompromiso asociadoDescripción
Product BacklogProduct GoalLista ordenada de todo lo necesario para el producto. Gestionado por el Product Owner
Sprint BacklogSprint GoalSubset del Product Backlog seleccionado para el Sprint + plan de trabajo
IncrementoDefinition of DoneSuma de todos los Product Backlog Items completados + valor de Incrementos anteriores
Pregunta clásica: Scrum tiene 3 roles, 5 eventos (Sprint + 4 ceremonias) y 3 artefactos. El Sprint Goal, Product Goal y Definition of Done son compromisos (Scrum Guide 2020).

SCRUM vs KANBAN

AspectoScrumKanban
IteracionesSprints fijos (1-4 semanas)Flujo continuo (sin iteraciones)
RolesPO, SM, Developers (obligatorios)No prescribe roles
PlanificaciónSprint Planning por SprintSegún capacidad (pull system)
Límite de trabajoSprint Backlog fijoWIP limits por columna
MétricasVelocity, BurndownLead Time, Cycle Time, Throughput
CambiosNo durante el SprintEn cualquier momento

MÉTRICA v3

Fuente: PAe — Portal de Administración Electrónica (administracionelectronica.gob.es). Métrica v3 es la metodología oficial de la AGE para desarrollo de sistemas de información.
ProcesoSiglaDescripción
Planificación de SIPSIPlan estratégico de SI de la organización. Catálogo de requisitos. Arquitectura tecnológica
Desarrollo de SISe divide en 5 subprocesos:
Estudio de ViabilidadEVS¿Es viable el sistema? Alternativas de solución, análisis coste-beneficio
Análisis del SIASIQué debe hacer el sistema: requisitos funcionales y no funcionales, modelo de datos
Diseño del SIDSICómo se construye: arquitectura, diseño detallado de módulos, pantallas, BD
Construcción del SICSICodificación, pruebas unitarias, integración de componentes
Implantación y AceptaciónIASInstalación, migración de datos, formación, pruebas de aceptación, paso a producción
Mantenimiento de SIMSIMantenimiento correctivo, evolutivo, adaptativo, perfectivo
InterfazSiglaFunción
Gestión de ProyectosGPPlanificación, seguimiento y control. Transversal a todo el desarrollo
SeguridadSEGAnálisis de riesgos, mecanismos de seguridad. Transversal
Gestión de la ConfiguraciónGCControl de versiones, gestión de cambios, líneas base
Aseguramiento de la CalidadCALRevisiones, auditorías, métricas de calidad
Tip examen: Métrica v3 tiene 3 procesos principales (PSI, Desarrollo con 5 subprocesos, MSI) y 4 interfaces (GP, SEG, GC, CAL). Los subprocesos de desarrollo son: EVS → ASI → DSI → CSI → IAS.

GIT — CONTROL DE VERSIONES

Fuente: Git Reference Manual (git-scm.com/docs) — Linus Torvalds, 2005. Licencia GPL v2. Documentación pública.
ConceptoDescripción
TipoDVCS — Sistema de control de versiones distribuido
SnapshotsGit almacena snapshots (instantáneas) del proyecto, no deltas/diferencias
IntegridadTodo identificado por hash SHA-1 (40 caracteres hexadecimales)
3 áreasWorking DirectoryStaging Area (index) → Repository (.git)
BranchPuntero ligero a un commit. Por defecto: main (antes master)
HEADPuntero al commit actual / branch activo
ComandoFunciónÁrea
git initInicializa repositorio localCrea .git/
git clone urlClona repositorio remotoCopia completa
git add archivoAñade al staging areaWorking → Staging
git commit -m "msg"Crea snapshot (commit)Staging → Repository
git statusEstado de archivos (modified, staged, untracked)Info
git logHistorial de commitsInfo
git diffDiferencias entre áreasInfo
git branch nombreCrea ramaRepository
git checkout ramaCambia a rama (o git switch)Working
git merge ramaFusiona rama en la actualRepository
git rebase ramaReaplica commits sobre otra base (historial lineal)Repository
git pullDescarga + merge del remotoRemote → Local
git pushSube commits al remotoLocal → Remote
git fetchDescarga del remoto sin mergeRemote → Local (sin aplicar)
git stashGuarda cambios temporalmenteWorking → Stash
git tag v1.0Etiqueta un commit (release)Repository
git resetMueve HEAD. --soft (staging), --mixed (working), --hard (borra todo)Repository
git revert commitCrea nuevo commit que deshace otro (seguro)Repository
Pregunta clave: git pull = git fetch + git merge. Git es distribuido (cada clon tiene el historial completo). Merge crea commit de fusión; rebase reescribe el historial.

ESTRATEGIAS DE RAMIFICACIÓN

EstrategiaRamas principalesCuándo usar
Git Flowmain, develop, feature/*, release/*, hotfix/*Releases planificadas, equipos grandes
GitHub Flowmain + feature branchesDeploy continuo, equipos ágiles
Trunk-Basedmain (todos integran directo)CI/CD maduro, feature flags

PLATAFORMAS GIT

PlataformaTipoDiferenciador
GitHubSaaS (Microsoft)Mayor comunidad open source. GitHub Actions (CI/CD)
GitLabSaaS + Self-hostedDevOps integrado (CI/CD, registry, monitoring)
BitbucketSaaS (Atlassian)Integración con Jira. Pipelines integrados

CI/CD (Integración Continua / Entrega Continua)

Fuente: Conceptos de CI/CD popularizados por Martin Fowler ("Continuous Integration", 2006) y Jez Humble ("Continuous Delivery", 2010). Documentos públicos.
PrácticaQué automatizaFrecuencia
CI (Continuous Integration)Build + tests automáticos en cada commit/pushCada commit
CD (Continuous Delivery)CI + artefacto listo para deploy (aprobación manual)Cada merge a main
CD (Continuous Deployment)CI + deploy automático a producción (sin intervención humana)Cada commit verde
HerramientaTipoUso
JenkinsServidor CI/CD (open source, Java)Pipelines declarativos/scripted. Plugins extensibles
GitHub ActionsCI/CD integrado en GitHubWorkflows en YAML. Runners hosted o self-hosted
GitLab CI/CDCI/CD integrado en GitLab.gitlab-ci.yml. Runners, stages, jobs
SonarQubeAnálisis estático de códigoCalidad: bugs, vulnerabilidades, code smells, cobertura, duplicación
Nexus / ArtifactoryRepositorio de artefactosAlmacén de binarios (JAR, Docker images, npm packages)
DockerContenedorizaciónEmpaqueta app + dependencias. Dockerfile → image → container
Tip examen: SonarQube mide calidad de código (no lo ejecuta). Sus métricas clave: bugs, vulnerabilities, code smells, coverage (%), duplications (%). Las Quality Gates definen umbrales mínimos.

TIPOS DE PRUEBAS SOFTWARE

Fuente: ISO/IEC 29119 — Software Testing. ISTQB Foundation Syllabus (istqb.org) — documentos públicos. IEEE 829 — Test Documentation.
NivelPruebaQué pruebaQuién
1UnitariasFunciones/métodos individuales aislados (con mocks)Desarrollador
2IntegraciónInteracción entre módulos/componentesDesarrollador / QA
3SistemaSistema completo contra requisitos funcionales y no funcionalesQA
4AceptaciónEl sistema cumple las necesidades del usuario/clienteCliente / Usuario
Tipo (por enfoque)Descripción
Caja negra (Black box)Se prueba sin conocer el código interno. Solo entradas y salidas esperadas
Caja blanca (White box)Se prueba conociendo la estructura interna: ramas, caminos, cobertura
Caja grisCombinación: se conoce parcialmente la estructura interna
Tipo (no funcional)Qué mide
RendimientoTiempo de respuesta, throughput bajo carga normal
Carga (Load)Comportamiento bajo carga esperada
Estrés (Stress)Comportamiento bajo carga extrema (más allá del límite)
SeguridadVulnerabilidades, inyecciones, autenticación, autorización
UsabilidadFacilidad de uso, eficiencia, satisfacción del usuario
RegresiónQue cambios nuevos no rompan funcionalidad existente
Humo (Smoke)Verificación rápida de que lo básico funciona (build verification test)

TDD Y BDD

PrácticaCicloDescripción
TDD (Test-Driven Development)Red → Green → RefactorEscribir test primero (falla), implementar mínimo para pasar, refactorizar
BDD (Behavior-Driven Development)Given → When → ThenEspecificaciones en lenguaje natural (Gherkin). Herramientas: Cucumber, SpecFlow

TIPOS DE MANTENIMIENTO

TipoMotivoEjemplo
CorrectivoCorregir defectosFix de un bug reportado
AdaptativoAdaptar a cambios de entornoMigrar a nuevo SO, nueva versión de BD
PerfectivoMejorar funcionalidad o rendimientoNueva feature solicitada, optimización
PreventivoPrevenir problemas futurosRefactoring, actualizar dependencias, documentar


FUENTES PÚBLICAS

Este resumen ha sido elaborado íntegramente a partir de fuentes de dominio público. No se ha utilizado material con copyright de terceros ni material de preparadores.
FuenteTipoReferencia
The Scrum Guide (2020)Guía oficialscrumguides.org (CC BY-SA)
Manifiesto Ágil (2001)Documento públicoagilemanifesto.org
Métrica v3Institucionaladministracionelectronica.gob.es (PAe)
Git Reference ManualDocumentación oficialgit-scm.com/docs (GPL v2)
ISTQB Foundation SyllabusCertificación públicaistqb.org
ISO/IEC 29119 — Software TestingEstándarISO

¿Quieres practicar este tema con tests?

MIMIR tiene más de 5.000 preguntas verificadas, simulacros con penalización real y chat IA que resuelve tus dudas sobre este tema.

Abrir MIMIR gratis →