Salta el contingut

Waterfall vs Àgil

El model en cascada (Waterfall)

El model en cascada, formalitzat per Winston Royce el 1970, organitza el projecte en fases seqüencials i estrictament ordenades: cada fase ha de completar-se completament abans que comenci la següent.

flowchart TD
    R["Requisits\n(Que ha de fer el sistema?)"]
    D["Disseny\n(Com ho construirem?)"]
    I["Implementacio\n(Codificacio i configuracio)"]
    T["Proves\n(Verificacio del resultat)"]
    E["Entrega\n(Desplegament al client)"]
    M["Manteniment\n(Correccio de defectes)"]

    R --> D --> I --> T --> E --> M

    style R fill:#1565c0,stroke:#0d47a1,color:#fff
    style D fill:#0288d1,stroke:#01579b,color:#fff
    style I fill:#00695c,stroke:#004d40,color:#fff
    style T fill:#558b2f,stroke:#33691e,color:#fff
    style E fill:#e65100,stroke:#bf360c,color:#fff
    style M fill:#6a1b9a,stroke:#4a148c,color:#fff

Per que va tenir sentit en el seu moment

El waterfall va ser dissenyat per a projectes d'enginyeria civil i manufactura, on canviar els plànols a mig construir un pont és extremadament car. En aquell context, definir tot al principi i executar sense desviacions era la millor estratègia.

En els primers anys de la informàtica, els projectes eren relativament estables: sistemes de nòmines, controls d'inventari, càlculs científics. Els requisits canviaven poc i els equips eren petits. El waterfall funcionava prou bé.

El problema: el món canvia

A mesura que el programari va créixer en complexitat i els negocis van accelerar el seu ritme de canvi, el waterfall va mostrar les seves limitacions:

1. Els requisits mai estan clars al principi

El client sovint no sap exactament el que vol fins que veu el producte funcionant. Quan li preguntes "que ha de fer el sistema?", descriu el problema actual, no la solució òptima. Descobreix els requisits reals en usar el sistema.

2. L'error es descobreix massa tard

Si un requisit es malentén a la fase inicial, l'error no es detecta fins a la fase de proves — mesos o anys després. En aquell moment, refer el disseny i la implementació és molt car.

flowchart LR
    subgraph WF["Waterfall: cost de corregir un error"]
        C1["Detectat\na Requisits\ncost: 1x"]
        C2["Detectat\na Disseny\ncost: 5x"]
        C3["Detectat\na Implementacio\ncost: 10x"]
        C4["Detectat\na Proves\ncost: 25x"]
        C5["Detectat\nen Produccio\ncost: 100x"]
    end

    C1 -.-> C2 -.-> C3 -.-> C4 -.-> C5

    style C1 fill:#e8f5e9,stroke:#388e3c,color:#1b5e20
    style C2 fill:#fff9c4,stroke:#f9a825,color:#5d4037
    style C3 fill:#ffe0b2,stroke:#e65100,color:#5d4037
    style C4 fill:#ffcdd2,stroke:#c62828,color:#7f0000
    style C5 fill:#b71c1c,stroke:#7f0000,color:#fff

3. El client no veu res fins al final

En un projecte waterfall de 18 mesos, el client no veu cap resultat fins al mes 18. Si aleshores descobreix que el sistema no s'adapta a com treballen realment, tot el treball queda obsolet.

4. Els equips treballen en silos

Analistes, dissenyadors, programadors i testers treballen en fases separades i rarament interactuen. Quan arriba la fase de proves, l'equip de disseny ja ha passat a un altre projecte i no hi ha ningú disponible per aclarir decisions anteriors.


El context ASIX: on falla el waterfall a sistemes?

En administració de sistemes, el waterfall apareix sovint disfressat:

  • "Primer fem el document d'arquitectura, el valida el responsable, i després instal·lem."
  • "No podem fer el deploy fins que totes les proves estiguin documentades i signades."
  • "Necessitem els requisits complets del projecte de migració abans de demanar les llicències."

El resultat: el document d'arquitectura queda obsolet el primer dia, el deploy es retarda setmanes per burocràcia, i les llicències arriben quan els requisits han canviat.


La resposta àgil

Les metodologies àgils responen a aquests problemes amb un canvi radical de perspectiva:

Principi waterfall Principi àgil
Definir-ho tot al principi Acceptar el canvi com a part del procés
Lliurar al final Lliurar valor de forma incremental i freqüent
Seguir el pla Adaptar el pla a la realitat
Documentació exhaustiva Programari/sistema funcionant com a mesura de progrés
Contracte tancat Col·laboració contínua amb el client

El cicle incremental

En comptes d'una única entrega al final, les metodologies àgils divideixen el treball en increments curts (sprints d'1-4 setmanes). Cada increment lliura una part funcional del sistema.

flowchart LR
    subgraph S1["Sprint 1 (2 setmanes)"]
        direction TB
        P1["Planificacio"] --> D1["Disseny i impl."] --> R1["Revisio + Retrosp."]
    end

    subgraph S2["Sprint 2 (2 setmanes)"]
        direction TB
        P2["Planificacio"] --> D2["Disseny i impl."] --> R2["Revisio + Retrosp."]
    end

    subgraph S3["Sprint 3 (2 setmanes)"]
        direction TB
        P3["Planificacio"] --> D3["Disseny i impl."] --> R3["Revisio + Retrosp."]
    end

    I1["Increment 1\nfuncional"] --> I2["Increment 2\nfuncional"] --> I3["Increment 3\nfuncional"]

    S1 --> I1 --> S2 --> I2 --> S3 --> I3

Cada sprint produeix un increment potencialment lliurable: algo que el client pot veure, provar i sobre el que pot donar feedback. Aixo permet detectar errors i canvis de requisits molt abans — quan el cost de corregir-los és mínim.

La metàfora del cotxe

El waterfall construeix el cotxe complet abans de mostrar-lo: primer el xassís, després el motor, després la carrosseria. Si el client volia una furgoneta i no un turisme, ho descobreix al final.

L'àgil construeix el vehicle de forma incremental però sempre funcional: primer un patinet (s'hi pot anar a peu), després una bicicleta, després una moto, finalment el cotxe. En cada pas el client pot usar el producte i confirmar si va en la direcció correcta.

Activitat AC-RA1-01

Penseu en un projecte de sistemes que hagueu vist o viscut (una migració, una instal·lació, una actualització):

  1. Identifiqueu quines fases del waterfall hi havia implícitament.
  2. En quin moment es van descobrir els problemes o canvis de requisits?
  3. Quin hauria estat el cost de detectar-los abans?
  4. Com podria un cicle incremental d'1-2 setmanes haver millorat el resultat?