Sviluppo di software adattivo - Evoluzione

I primi modelli SDLC sono più orientati alle pratiche di stabilità, prevedibilità e rendimenti decrescenti. Il settore, come le piattaforme Internet, si è mosso per aumentare gli ambienti di ritorno, approcci imprevedibili, non lineari e rapidi.

Adaptive Software Development (ASD) si è evoluto per affrontare questi problemi. Si concentra sull'emergenza come fattore più importante dal punto di vista del management, per migliorare la capacità di gestire lo sviluppo del prodotto.

Nelle parole di Jim Highsmith, "Il framework di sviluppo software adattivo si basa su anni di esperienza con metodologie di sviluppo software tradizionali, consulenza, pratica e scrittura di tecniche di sviluppo rapido di applicazioni (RAD) e collaborazione con società di software ad alta tecnologia per la gestione dello sviluppo del prodotto pratiche ”.

Il modello a cascata è caratterizzato da linearità e prevedibilità, con scarso feedback. Può essere visto come una sequenza diPlan → Build → Implement.

I modelli Evolutionary Lifecycle come il modello Spiral hanno spostato l'approccio deterministico a quello adattivo, con Plan → Build → Revise Cycles.

Tuttavia, la mentalità dei professionisti è rimasta deterministica con la prevedibilità a lungo termine che si rivolge alla prevedibilità a breve termine. Le pratiche dei modelli del ciclo di vita evolutivo come RAD si sono rivelate meno deterministiche.

Il ciclo di vita adattivo

Il modello Adaptive è costruito da un diverso punto di vista. Sebbene ciclici come il modello evolutivo, i nomi della fase riflettono la natura imprevedibile di sistemi sempre più complessi.

Lo sviluppo adattivo va oltre la sua eredità evolutiva in due modi chiave:

  • Sostituisce esplicitamente il determinismo con l'emergenza.

  • Va oltre un cambiamento nel ciclo di vita per un cambiamento più profondo nello stile di gestione.

Le tre fasi del ciclo di vita dello sviluppo software adattivo sono:

  • Speculate - Speculare sostituisce la parola deterministica pianificazione, pianificazione delle specifiche del prodotto o pianificazione delle attività di gestione del progetto.

  • Collaborate - Collaborare rappresenta il tracciamento di un equilibrio tra

    • Gestione nel senso tradizionale della gestione del progetto, e

    • Creare e mantenere l'ambiente collaborativo necessario per l'emergenza.

  • Le attività di collaborazione costruiscono prodotti, al passo con i cambiamenti nell'ambiente.

  • Learn - Learn mira sia agli sviluppatori che ai clienti a utilizzare i risultati di ogni ciclo di sviluppo per apprendere la direzione del successivo.