Sviluppo di software adattivo - Concetti

In questo capitolo, comprenderemo i vari concetti di Adaptive Software Development.

Teoria dei sistemi adattivi complessi (CAS)

Brian Arthur e i suoi colleghi, presso l'istituto di Santa Fe, hanno utilizzato la teoria dei sistemi adattivi complessi (CAS) per rivoluzionare la comprensione di fisica, biologia, evoluzione ed economia.

Brian Arthur ha culminato i suoi oltre due decenni di tentativi di convincere gli economisti tradizionali che la loro visione, dominata da presupposti fondamentali di rendimenti decrescenti, equilibrio e dinamiche deterministiche, non era più sufficiente per comprendere la realtà. Il nuovo mondo è caratterizzato da rendimenti crescenti, instabilità e incapacità di determinare causa ed effetto.

I due mondi differiscono per comportamento, stile e cultura. Chiedono -

  • Diverse tecniche di gestione
  • Strategie diverse
  • Comprensione diversa

Sviluppo di software complesso

Con l'esplosione della portata delle applicazioni software, anche le organizzazioni di sviluppo software stanno accumulando contraddizioni simili a quelle menzionate sopra.

  • One World è rappresentato dallo sviluppo deterministico, derivato da pratiche di gestione che affondano le proprie radici nelle basi della stabilità e della prevedibilità (che in termini di Arthur significa rendimenti decrescenti)

  • Il secondo mondo è rappresentato dalle industrie che passano da ambienti in diminuzione a rendimenti crescenti che sono imprevedibili, non lineari e veloci.

Per affrontare i problemi di questo secondo mondo, Jig Highsmith ha offerto un framework, Adaptive Software Development, diverso dal Deterministic Software Development.

Lo sviluppo di software adattivo si concentra sull'affrontare i sistemi complessi:

  • Sviluppo software adattivo per il ciclo di vita dello sviluppo.

  • Tecniche di gestione adattiva che richiedono una mentalità diversa da quella delle pratiche di gestione dei progetti tradizionali.

In questo tutorial, puoi comprendere entrambe queste implementazioni.

Adaptive Software Development (ASD) si basa su due prospettive:

  • Prospettiva concettuale basata sulla teoria dei sistemi adattivi complessi (CAS), come data nella prima sezione di questo capitolo.

  • Prospettiva pratica basata su

    • Anni di esperienza con metodologie di sviluppo software deterministiche.

    • Consulenza, pratica e scrittura di tecniche RAD (Rapid Application Development); e collaborando con società di software ad alta tecnologia per la gestione dello sviluppo del prodotto.

In questo capitolo capirete la prospettiva concettuale dello sviluppo di software adattivo.

Concetti di sistemi adattivi complessi (CAS)

La teoria dei sistemi adattivi complessi (CAS) ha molti concetti. Lo sviluppo di software adattivo si basa su due di questi concetti:

  • Emergence
  • Complexity

Emergenza

In progetti di sviluppo di prodotti software complessi, i risultati sono intrinsecamente imprevedibili. Tuttavia, prodotti di successo emergono continuamente da tali ambienti.

Ciò può accadere tramite Emergence, come illustrato nella teoria CAS (Complex Adaptive Systems). Può essere compreso con un semplice esempio, il comportamento di floccaggio degli uccelli.

Quando osservi uno stormo di uccelli, noti che:

  • Ogni uccello ci prova

    • Mantenere una distanza minima da altri oggetti nell'ambiente, inclusi altri uccelli.

    • Abbina le velocità con gli uccelli nelle vicinanze.

    • Spostati verso il centro di massa percepito degli uccelli nelle vicinanze.

  • Non ci sono regole di comportamento per il gruppo. Le uniche regole riguardano il comportamento dei singoli uccelli.

  • Tuttavia, esiste un comportamento emergente, lo stormo di uccelli. Quando gli uccelli erranti si precipitano a raggiungere, lo stormo si divide intorno agli ostacoli e si riforma dall'altra parte.

Ciò mostra i requisiti dei più difficili cambiamenti del modello mentale nello sviluppo adattivo: dai modi di gestire e organizzare quella libertà individuale alla nozione che un nuovo ordine creativo emerge imprevedibilmente dall'autoorganizzazione spontanea.

Oltre allo sviluppo, l'emergenza è il concetto più importante anche dal punto di vista del management.

Complessità

Nel contesto dello sviluppo software, la complessità riguarda:

  • Gli individui di un team come gli sviluppatori, i clienti, i fornitori, i concorrenti e gli azionisti, i loro numeri e la loro velocità.

  • Dimensioni e complessità tecnologica.

Pratiche di sviluppo software adattivo

Adaptive Software Development offre una prospettiva diversa sulle pratiche di gestione del software. Nelle sezioni seguenti, è possibile comprendere le due pratiche importanti: Qualità e RAD, entrambe con ramificazioni per la raccolta dei requisiti.

Puoi trovare i dettagli di tutte le pratiche nel capitolo Pratiche di sviluppo di software adattivo in questo tutorial.

Qualità

In un ambiente complesso, l'antica pratica del "Fallo bene la prima volta" non funziona poiché non puoi prevedere cosa è giusto all'inizio. Devi avere l'obiettivo di produrre il giusto valore. Tuttavia, in un ambiente complesso, le combinazioni e le permutazioni di componenti di valore come l'ambito (caratteristiche, prestazioni, livelli di difetto), la pianificazione e le risorse sono così vaste che non può mai esserci un valore ottimale. Pertanto, l'obiettivo è quello di spostarsi per offrire il miglior valore nel mercato competitivo.

Pratiche RAD

Le pratiche RAD generalmente comportano una combinazione di quanto segue:

  • Ciclo di vita evolutivo
  • Focus group dei clienti, sessioni JAD, revisioni tecniche
  • Gestione dei progetti con tempistiche
  • Ingegneria del software continua
  • Squadre dedicate con stanze di guerra

I progetti RAD hanno un innato sapore adattivo ed emergente. Molte organizzazioni IT sono contrarie a RAD. Tuttavia, Microsoft e altri hanno prodotto software incredibilmente ampio e complesso utilizzando tecniche paragonabili a RAD perché solleva interrogativi sulla loro visione fondamentale del mondo.

Le pratiche RAD e il processo Microsoft sono entrambi esempi di sviluppo adattivo in azione. Dare loro un'etichetta (cioè, Sviluppo adattivo) e rendersi conto che c'è un crescente corpo di conoscenza scientifica (cioè, teoria CAS) spiega perché funzionano. Ciò dovrebbe fornire una base per un uso più ampio di queste pratiche.