{"id":342,"date":"2026-05-21T11:58:53","date_gmt":"2026-05-21T11:58:53","guid":{"rendered":"https:\/\/shahed.org\/news\/?p=342"},"modified":"2026-05-21T12:12:03","modified_gmt":"2026-05-21T12:12:03","slug":"agile-project-planning","status":"publish","type":"post","link":"https:\/\/shahed.org\/news\/2026\/05\/21\/agile-project-planning\/","title":{"rendered":"AGILE &#8211; Project planning"},"content":{"rendered":"<section id=\"mwAQ\" data-mw-section-id=\"0\">\n<p id=\"mwAg\">Con\u00a0<b id=\"mwAw\">metodologia agile<\/b>\u00a0(o\u00a0<b id=\"mwBA\">sviluppo agile del software<\/b>, in\u00a0<a id=\"mwBQ\" title=\"Lingua inglese\" href=\"https:\/\/it.wikipedia.org\/wiki\/Lingua_inglese\" rel=\"mw:WikiLink\">inglese<\/a>\u00a0<i id=\"mwBg\">agile software development<\/i>, abbreviato in\u00a0<b id=\"mwBw\">ASD<\/b>), nell&#8217;<a id=\"mwCA\" title=\"Ingegneria del software\" href=\"https:\/\/it.wikipedia.org\/wiki\/Ingegneria_del_software\" rel=\"mw:WikiLink\">ingegneria del software<\/a>, si indica un insieme di\u00a0<a id=\"mwCQ\" title=\"Metodologia di sviluppo del software\" href=\"https:\/\/it.wikipedia.org\/wiki\/Metodologia_di_sviluppo_del_software\" rel=\"mw:WikiLink\">metodi di sviluppo del software<\/a>\u00a0emersi a partire dai primi\u00a0<a id=\"mwCg\" title=\"Anni 2000\" href=\"https:\/\/it.wikipedia.org\/wiki\/Anni_2000\" rel=\"mw:WikiLink\">anni 2000<\/a>\u00a0e fondati su un insieme di principi comuni, direttamente o indirettamente derivati dai principi del &#8220;Manifesto per lo sviluppo agile del software&#8221; (<i id=\"mwCw\">Manifesto for Agile Software Development<\/i>, impropriamente<sup id=\"cite_ref-1\" class=\"mw-ref reference\" data-mw=\"{&quot;name&quot;:&quot;ref&quot;,&quot;attrs&quot;:{},&quot;body&quot;:{&quot;id&quot;:&quot;mw-reference-text-cite_note-1&quot;}}\"><a id=\"mwDA\" href=\"https:\/\/it.wikipedia.org\/wiki\/Metodologia_agile#cite_note-1\"><span id=\"mwDQ\" class=\"mw-reflink-text\"><span id=\"mwDg\" class=\"cite-bracket\">[<\/span>1<span id=\"mwDw\" class=\"cite-bracket\">]<\/span><\/span><\/a><\/sup>\u00a0chiamato anche &#8220;Manifesto Agile&#8221;) pubblicato nel\u00a0<a id=\"mwEA\" title=\"2001\" href=\"https:\/\/it.wikipedia.org\/wiki\/2001\" rel=\"mw:WikiLink\">2001<\/a>\u00a0da\u00a0<a id=\"mwEQ\" title=\"Kent Beck\" href=\"https:\/\/it.wikipedia.org\/wiki\/Kent_Beck\" rel=\"mw:WikiLink\">Kent Beck<\/a>,\u00a0<a id=\"mwEg\" title=\"Robert Cecil Martin\" href=\"https:\/\/it.wikipedia.org\/wiki\/Robert_Cecil_Martin\" rel=\"mw:WikiLink\">Robert C. Martin<\/a>,\u00a0<a id=\"mwEw\" title=\"Martin Fowler\" href=\"https:\/\/it.wikipedia.org\/wiki\/Martin_Fowler\" rel=\"mw:WikiLink\">Martin Fowler<\/a>\u00a0e altri.<sup id=\"cite_ref-2\" class=\"mw-ref reference\" data-mw=\"{&quot;name&quot;:&quot;ref&quot;,&quot;attrs&quot;:{},&quot;body&quot;:{&quot;id&quot;:&quot;mw-reference-text-cite_note-2&quot;}}\"><a id=\"mwFA\" href=\"https:\/\/it.wikipedia.org\/wiki\/Metodologia_agile#cite_note-2\"><span id=\"mwFQ\" class=\"mw-reflink-text\"><span id=\"mwFg\" class=\"cite-bracket\">[<\/span>2<span id=\"mwFw\" class=\"cite-bracket\">]<\/span><\/span><\/a><\/sup><sup id=\"cite_ref-3\" class=\"mw-ref reference\" data-mw=\"{&quot;name&quot;:&quot;ref&quot;,&quot;attrs&quot;:{},&quot;body&quot;:{&quot;id&quot;:&quot;mw-reference-text-cite_note-3&quot;}}\"><a id=\"mwGA\" href=\"https:\/\/it.wikipedia.org\/wiki\/Metodologia_agile#cite_note-3\"><span id=\"mwGQ\" class=\"mw-reflink-text\"><span id=\"mwGg\" class=\"cite-bracket\">[<\/span>3<span id=\"mwGw\" class=\"cite-bracket\">]<\/span><\/span><\/a><\/sup><\/p>\n<p id=\"mwHA\">L&#8217;uso del termine\u00a0<i id=\"mwHQ\">agile<\/i><sup id=\"cite_ref-4\" class=\"mw-ref reference\" data-mw=\"{&quot;name&quot;:&quot;ref&quot;,&quot;attrs&quot;:{},&quot;body&quot;:{&quot;id&quot;:&quot;mw-reference-text-cite_note-4&quot;}}\"><a id=\"mwHg\" href=\"https:\/\/it.wikipedia.org\/wiki\/Metodologia_agile#cite_note-4\"><span id=\"mwHw\" class=\"mw-reflink-text\"><span id=\"mwIA\" class=\"cite-bracket\">[<\/span>4<span id=\"mwIQ\" class=\"cite-bracket\">]<\/span><\/span><\/a><\/sup>\u00a0per riferirsi a metodi di sviluppo software fu introdotto dal\u00a0<i id=\"mwIg\">Manifesto Agile<\/i>\u00a0pubblicato nel 2001.<sup id=\"cite_ref-Agile_Manifesto_5-0\" class=\"mw-ref reference\" data-mw=\"{&quot;name&quot;:&quot;ref&quot;,&quot;attrs&quot;:{&quot;name&quot;:&quot;Agile Manifesto&quot;},&quot;body&quot;:{&quot;id&quot;:&quot;mw-reference-text-cite_note-Agile_Manifesto-5&quot;}}\"><a id=\"mwIw\" href=\"https:\/\/it.wikipedia.org\/wiki\/Metodologia_agile#cite_note-Agile_Manifesto-5\"><span id=\"mwJA\" class=\"mw-reflink-text\"><span id=\"mwJQ\" class=\"cite-bracket\">[<\/span>5<span id=\"mwJg\" class=\"cite-bracket\">]<\/span><\/span><\/a><\/sup><\/p>\n<\/section>\n<section id=\"mwKA\" data-mw-section-id=\"1\" aria-labelledby=\"Riassunto_generale\">\n<div class=\"mw-heading mw-heading2\">\n<h2 id=\"Riassunto_generale\">Riassunto generale<\/h2>\n<\/div>\n<p id=\"mwKQ\">I metodi agili si contrappongono al\u00a0<a id=\"mwKg\" title=\"Modello a cascata\" href=\"https:\/\/it.wikipedia.org\/wiki\/Modello_a_cascata\" rel=\"mw:WikiLink\">modello a cascata<\/a>\u00a0(<i id=\"mwKw\">waterfall model<\/i>) e altri\u00a0<a id=\"mwLA\" title=\"Modello di sviluppo del software\" href=\"https:\/\/it.wikipedia.org\/wiki\/Modello_di_sviluppo_del_software\" rel=\"mw:WikiLink\">modelli di sviluppo<\/a>\u00a0tradizionali, proponendo un approccio meno strutturato e focalizzato sull&#8217;obiettivo di consegnare al cliente, in tempi brevi e frequentemente (<i id=\"mwLQ\">early delivery<\/i>\u00a0\/\u00a0<i id=\"mwLg\">frequent delivery<\/i>)<sup id=\"cite_ref-6\" class=\"mw-ref reference\" data-mw=\"{&quot;name&quot;:&quot;ref&quot;,&quot;attrs&quot;:{},&quot;body&quot;:{&quot;id&quot;:&quot;mw-reference-text-cite_note-6&quot;}}\"><a id=\"mwLw\" href=\"https:\/\/it.wikipedia.org\/wiki\/Metodologia_agile#cite_note-6\"><span id=\"mwMA\" class=\"mw-reflink-text\"><span id=\"mwMQ\" class=\"cite-bracket\">[<\/span>6<span id=\"mwMg\" class=\"cite-bracket\">]<\/span><\/span><\/a><\/sup>, software funzionante e di qualit\u00e0. Fra le pratiche promosse dai metodi agili ci sono la formazione di team di sviluppo piccoli, poli-funzionali e auto-organizzati, lo sviluppo\u00a0<a id=\"mwMw\" title=\"Modello incrementale\" href=\"https:\/\/it.wikipedia.org\/wiki\/Modello_incrementale\" rel=\"mw:WikiLink\">iterativo e incrementale<\/a>, la\u00a0<a id=\"mwNA\" class=\"new\" title=\"Pianificazione adattiva (la pagina non esiste)\" href=\"https:\/\/it.wikipedia.org\/wiki\/Pianificazione_adattiva?action=edit&amp;redlink=1\" rel=\"mw:WikiLink\" data-mw-i18n=\"{&quot;title&quot;:{&quot;lang&quot;:&quot;x-page&quot;,&quot;key&quot;:&quot;red-link-title&quot;,&quot;params&quot;:[&quot;Pianificazione adattiva&quot;]}}\">pianificazione adattiva<\/a>, e il coinvolgimento diretto e continuo del cliente nel processo di sviluppo.<\/p>\n<p id=\"mwNQ\">La gran parte dei\u00a0<i id=\"mwNg\">metodi agili<\/i>\u00a0tenta di ridurre il rischio di fallimento sviluppando il software in finestre di tempo limitate chiamate iterazioni che, in genere, durano qualche settimana. Ogni iterazione \u00e8 un piccolo progetto a s\u00e9 stante e deve contenere tutto ci\u00f2 che \u00e8 necessario per rilasciare un piccolo incremento nelle funzionalit\u00e0 del software: pianificazione (<i id=\"mwNw\">planning<\/i>),\u00a0<a id=\"mwOA\" title=\"Analisi dei requisiti\" href=\"https:\/\/it.wikipedia.org\/wiki\/Analisi_dei_requisiti\" rel=\"mw:WikiLink\">analisi dei requisiti<\/a>, progettazione, implementazione, test e documentazione.<\/p>\n<p id=\"mwOQ\">Anche se il risultato di ogni singola iterazione non ha sufficienti funzionalit\u00e0 da essere considerato completo deve essere pubblicato e, nel susseguirsi delle iterazioni, deve avvicinarsi sempre di pi\u00f9 alle richieste del cliente. Alla fine di ogni iterazione il team deve rivalutare le priorit\u00e0 di progetto.<\/p>\n<p id=\"mwOg\">I metodi agili preferiscono la comunicazione in tempo reale, preferibilmente faccia a faccia, a quella scritta (documentazione). Il team agile \u00e8 composto da tutte le persone necessarie per terminare il progetto software. Come minimo il team deve includere i programmatori ed i loro clienti (con clienti si intendono le persone che definiscono come il prodotto dovr\u00e0 essere fatto: possono essere dei\u00a0<i id=\"mwOw\">product manager<\/i>, dei\u00a0<i id=\"mwPA\">business analysts<\/i>, o dei clienti veri e propri).<\/p>\n<\/section>\n<section id=\"mwPQ\" data-mw-section-id=\"2\" aria-labelledby=\"Il_manifesto\">\n<div class=\"mw-heading mw-heading2\">\n<h2 id=\"Il_manifesto\">Il manifesto<\/h2>\n<\/div>\n<p id=\"mwPg\">La formalizzazione dei principi su cui si basano le metodologie agili \u00e8 stata oggetto del lavoro di un gruppo di progettisti software e guru dell&#8217;informatica che si sono spontaneamente riuniti nell&#8217;<a id=\"mwPw\" class=\"new\" title=\"Agile Alliance (la pagina non esiste)\" href=\"https:\/\/it.wikipedia.org\/wiki\/Agile_Alliance?action=edit&amp;redlink=1\" rel=\"mw:WikiLink\" data-mw-i18n=\"{&quot;title&quot;:{&quot;lang&quot;:&quot;x-page&quot;,&quot;key&quot;:&quot;red-link-title&quot;,&quot;params&quot;:[&quot;Agile Alliance&quot;]}}\">Agile Alliance<\/a>. Il documento finale di questo lavoro \u00e8 stato poi sottoscritto da un nutrito gruppo di questi professionisti, molti dei quali hanno anche sviluppato alcune delle metodologie agili pi\u00f9 famose.<\/p>\n<p id=\"mwQA\">I firmatari del\u00a0<i id=\"mwQQ\">Manifesto Agile<\/i>\u00a0sono (in ordine alfabetico):\u00a0<a id=\"mwQg\" title=\"Kent Beck\" href=\"https:\/\/it.wikipedia.org\/wiki\/Kent_Beck\" rel=\"mw:WikiLink\">Kent Beck<\/a>, Mike Beedle, Arie van Bennekum, Alistair Cockburn,\u00a0<a id=\"mwQw\" title=\"Ward Cunningham\" href=\"https:\/\/it.wikipedia.org\/wiki\/Ward_Cunningham\" rel=\"mw:WikiLink\">Ward Cunningham<\/a>\u00a0(inventore di\u00a0<a id=\"mwRA\" title=\"Wiki\" href=\"https:\/\/it.wikipedia.org\/wiki\/Wiki\" rel=\"mw:WikiLink\">Wiki<\/a>), Martin Fowler, James Grenning, Jim Highsmith, Andrew Hunt, Ron Jeffries, Jon Kern, Brian Marick, Robert C. Martin, Steve Mellor, Ken Schwaber, Jeff Sutherland,\u00a0<a id=\"mwRQ\" class=\"new\" title=\"Dave Thomas (informatico) (la pagina non esiste)\" href=\"https:\/\/it.wikipedia.org\/wiki\/Dave_Thomas_(informatico)?action=edit&amp;redlink=1\" rel=\"mw:WikiLink\" data-mw-i18n=\"{&quot;title&quot;:{&quot;lang&quot;:&quot;x-page&quot;,&quot;key&quot;:&quot;red-link-title&quot;,&quot;params&quot;:[&quot;Dave Thomas (informatico)&quot;]}}\">Dave Thomas<\/a>.<\/p>\n<section id=\"mwRg\" data-mw-section-id=\"3\" aria-labelledby=\"Obiettivi\">\n<div class=\"mw-heading mw-heading3\">\n<h3 id=\"Obiettivi\">Obiettivi<\/h3>\n<\/div>\n<p id=\"mwRw\">L&#8217;obiettivo \u00e8 la piena\u00a0<a id=\"mwSA\" title=\"Soddisfazione del cliente\" href=\"https:\/\/it.wikipedia.org\/wiki\/Soddisfazione_del_cliente\" rel=\"mw:WikiLink\">soddisfazione del cliente<\/a>\u00a0e non solo l&#8217;adempimento di un contratto. Il corretto uso di queste metodologie, inoltre, pu\u00f2 consentire di abbattere i costi e i tempi di sviluppo del software, aumentandone la qualit\u00e0.<\/p>\n<p id=\"mwSQ\">Essa \u00e8 esplosa proprio in concomitanza con la crisi successiva al boom di Internet prendendo spunto dai metodi applicati in piccole\u00a0<a id=\"mwSg\" class=\"mw-redirect\" title=\"Software house\" href=\"https:\/\/it.wikipedia.org\/wiki\/Software_house\" rel=\"mw:WikiLink\">software house<\/a>.<\/p>\n<\/section>\n<section id=\"mwSw\" data-mw-section-id=\"4\" aria-labelledby=\"Valori\">\n<div class=\"mw-heading mw-heading3\">\n<h3 id=\"Valori\">Valori<\/h3>\n<\/div>\n<p id=\"mwTA\">I valori su cui si basa una metodologia agile che segua i punti indicati dal\u00a0<i id=\"mwTQ\">Manifesto Agile<\/i>\u00a0sono quattro.<\/p>\n<p id=\"mwTg\">Si ritengono importanti:<\/p>\n<ul id=\"mwTw\">\n<li id=\"mwUA\">Gli individui e le interazioni pi\u00f9 che i processi e gli strumenti<\/li>\n<li id=\"mwUQ\">Il software funzionante pi\u00f9 che la documentazione esaustiva<\/li>\n<li id=\"mwUg\">La collaborazione col cliente pi\u00f9 che la negoziazione dei contratti<\/li>\n<li id=\"mwUw\">Rispondere al cambiamento pi\u00f9 che seguire un piano<\/li>\n<\/ul>\n<p id=\"mwVA\">Ovvero, fermo restando il valore delle voci a destra, si considerano pi\u00f9 importanti le voci a sinistra.<sup id=\"cite_ref-Agile_Manifesto_5-1\" class=\"mw-ref reference\" data-mw=\"{&quot;name&quot;:&quot;ref&quot;,&quot;attrs&quot;:{&quot;name&quot;:&quot;Agile Manifesto&quot;}}\"><a id=\"mwVQ\" href=\"https:\/\/it.wikipedia.org\/wiki\/Metodologia_agile#cite_note-Agile_Manifesto-5\"><span id=\"mwVg\" class=\"mw-reflink-text\"><span id=\"mwVw\" class=\"cite-bracket\">[<\/span>5<span id=\"mwWA\" class=\"cite-bracket\">]<\/span><\/span><\/a><\/sup><\/p>\n<\/section>\n<section id=\"mwWQ\" data-mw-section-id=\"5\" aria-labelledby=\"Pratiche\">\n<div class=\"mw-heading mw-heading3\">\n<h3 id=\"Pratiche\">Pratiche<\/h3>\n<\/div>\n<p id=\"mwWg\">Le singole pratiche applicabili all&#8217;interno di una metodologia agile sono decine e dipendono essenzialmente dalle necessit\u00e0 dell&#8217;azienda e dall&#8217;approccio del\u00a0<a id=\"mwWw\" title=\"Project manager\" href=\"https:\/\/it.wikipedia.org\/wiki\/Project_manager\" rel=\"mw:WikiLink\">project manager<\/a>. Nella scelta per\u00f2 bisogna tenere conto delle caratteristiche di ogni pratica per i benefici che apporta e le conseguenze che comporta. Ad esempio, in\u00a0<a id=\"mwXA\" class=\"mw-redirect\" title=\"Extreme Programming\" href=\"https:\/\/it.wikipedia.org\/wiki\/Extreme_Programming\" rel=\"mw:WikiLink\">Extreme Programming<\/a>, si supplisce alla mancanza assoluta di qualsiasi forma di progettazione e documentazione con lo strettissimo coinvolgimento del cliente nello sviluppo e con la programmazione in coppia.<\/p>\n<p id=\"mwXQ\">Le pratiche pi\u00f9 diffuse tra cui scegliere sono simili fra di loro e possono essere raggruppate in categorie:<\/p>\n<ul id=\"mwXg\">\n<li id=\"mwXw\"><b id=\"mwYA\">Automazione<\/b>\u00a0&#8211; Se l&#8217;obiettivo delle metodologie agili \u00e8 concentrarsi sulla programmazione senza dedicarsi alle attivit\u00e0 collaterali, allora queste ultime possono essere eliminate o automatizzate; la seconda soluzione \u00e8 migliore perch\u00e9 si pu\u00f2, ad esempio, eliminare la documentazione aumentando il testing, ma non si possono eliminare entrambe; quindi si sceglie che strada si vuole percorrere e si fa in modo di utilizzare strumenti per automatizzare il maggior numero possibile di attivit\u00e0 collaterali;<\/li>\n<li id=\"mwYQ\"><b id=\"mwYg\">Coinvolgimento del cliente<\/b>\u00a0&#8211; Il coinvolgimento del cliente \u00e8 qui indicato singolarmente perch\u00e9 ci sono differenti gradi di coinvolgimento possibili; ad esempio in\u00a0<a id=\"mwYw\" class=\"mw-redirect\" title=\"Extreme Programming\" href=\"https:\/\/it.wikipedia.org\/wiki\/Extreme_Programming\" rel=\"mw:WikiLink\">Extreme Programming<\/a>\u00a0il coinvolgimento \u00e8 totale, il cliente partecipa persino alle riunioni settimanali dei programmatori; in altri casi, il cliente \u00e8 coinvolto in una prima fase di progettazione e poi non pi\u00f9; in altri ancora il cliente partecipa indirettamente e viene usato come tester della versione rilasciata;<\/li>\n<li id=\"mwZA\"><b id=\"mwZQ\">Comunicazione stretta<\/b>\u00a0&#8211; Secondo Alistair Cockburn, probabilmente il primo teorico delle metodologie agili, questo \u00e8 l&#8217;unico vero aspetto nodale che rende\u00a0<i id=\"mwZg\">agile<\/i>\u00a0una metodologia. Per comunicazione stretta si intende la comunicazione interpersonale, fra tutti gli attori del progetto, cliente compreso. Ci\u00f2 serve ad avere una buona analisi dei requisiti ed una proficua collaborazione fra programmatori anche in un ambito di quasi totale assenza di documentazione;<\/li>\n<li id=\"mwZw\"><b id=\"mwaA\">Consegne frequenti<\/b>\u00a0&#8211; Effettuare rilasci frequenti di versioni intermedie del software permette di ottenere pi\u00f9 risultati contemporaneamente: si ricomincia l&#8217;iterazione avendo gi\u00e0 a disposizione un blocco di codice funzionante in tutti i suoi aspetti, si offre al cliente &#8220;qualcosa con cui lavorare&#8221; e lo si distrae cos\u00ec da eventuali ritardi nella consegna del progetto completo, si usa il cliente come se fosse un test visto che utilizzer\u00e0 il software e riscontrer\u00e0 eventuali anomalie, si ottengono dal cliente informazioni pi\u00f9 precise sui requisiti che probabilmente non sarebbe riuscito ad esprimere senza avere a disposizione utilit\u00e0 e carenze del progetto;<\/li>\n<li id=\"mwaQ\"><b id=\"mwag\">Cultura di Team<\/b>\u00a0(One-team culture) &#8211; Fondamentale nel seguire approcci Agili \u00e8 la collaborazione e l&#8217;approccio mentale e pratico del team di sviluppo stesso. Il criterio di lavoro pi\u00f9 adatto sarebbe quello di abbandonare la tradizionale\u00a0<i id=\"mwaw\">blaming culture<\/i>\u00a0(che prevede la penalizzazione o la premiazione del singolo individuo che commetta un errore, oppure che si distinguesse dagli altri per meriti) orientandosi invece verso un\u00a0<a id=\"mwbA\" title=\"Modus operandi\" href=\"https:\/\/it.wikipedia.org\/wiki\/Modus_operandi\" rel=\"mw:WikiLink\">modus operandi<\/a>\u00a0&#8216;di gruppo&#8217;, in trasparenza ed onest\u00e0, che andr\u00e0 a premiare (o viceversa) il gruppo stesso unicamente sulla base del raggiungimento degli obiettivi di team (previsti per quell&#8217;intervallo temporale);<\/li>\n<li id=\"mwbQ\"><b id=\"mwbg\">Facilitated Workshop<\/b>\u00a0&#8211; Una pratica a supporto dei principi di comunicazione e collaborazione, unitamente al mantenimento del focus sugli obiettivi di business. Questa tecnica consiste nel prevedere incontri (workshop)\u00a0<u id=\"mwbw\">facilitati<\/u>\u00a0durante il progetto: la presenza di un facilitatore neutrale (facilitator) garantir\u00e0 il successo del meeting, mantenendo costantemente l&#8217;incontro in linea con i suoi obiettivi, mantenendo il contesto adatto (libert\u00e0 di parola, assenza di pressioni tra i partecipanti, decisioni non forzate, ecc.), e garantendo che vengano trasmesse a tutte le parti interessate tutte le informazioni necessarie sia precedenti che derivanti (follow-up) dal workshop stesso;<\/li>\n<li id=\"mwcA\"><b id=\"mwcQ\">Formazione di una squadra e Propriet\u00e0 del codice<\/b>\u00a0&#8211; La formazione del team di sviluppo \u00e8 condizionata dalla scelta sulla gerarchia interna, ma segue regole precise che permettono di ottenere un team produttivo nell&#8217;ambito della metodologia scelta; la scelta dei membri del team \u00e8 condizionata anche alla scelta della propriet\u00e0 del codice, che pu\u00f2 essere individuale o collettiva; nel primo caso la responsabilit\u00e0 sullo sviluppo \u00e8 individuale, nel secondo dipende da tutto il team e quindi dal project manager;<\/li>\n<li id=\"mwcg\"><b id=\"mwcw\">Gerarchia<\/b>\u00a0&#8211; La scelta di creare una struttura gerarchica all&#8217;interno del team di sviluppo dipende molto dall&#8217;approccio del project manager, in ogni caso si ha una conseguenza non secondaria facendo questa scelta; se si decide per una struttura gerarchica ad albero e frammentata si ottiene la possibilit\u00e0 di gestire un numero molto alto di programmatori e di lavorare a diversi aspetti del progetto parallelamente; se si decide per una totale assenza di gerarchia si avr\u00e0 un team di sviluppo molto compatto e motivato, ma necessariamente piccolo in termini di numero di programmatori;<\/li>\n<li id=\"mwdA\"><b id=\"mwdQ\">Iterative development<\/b>\u00a0&#8211; Un&#8217;importante pratica attraverso la quale la soluzione da consegnare si evolve da quella che era soltanto &#8220;un&#8217;idea&#8221; (un concetto, una proposta, un insieme di esigenze) fino a divenire un prodotto di valore per il cliente. L&#8217;Iterative development funziona attraverso cicli di azioni\/attivit\u00e0 che non cambiano, ma che ripetendosi ciclicamente portano la soluzione &#8216;grezza&#8217; a raffinarsi fino a diventare il prodotto finale;<\/li>\n<li id=\"mwdg\"><b id=\"mwdw\">Miglioramento della conoscenza<\/b>\u00a0&#8211; Nata con l&#8217;avvento della programmazione Object-Oriented, non \u00e8 altro che la presa di coscienza della produzione di conoscenza che si fa in un&#8217;azienda man mano che si produce codice; questa conoscenza prodotta non deve andare perduta ed \u00e8 per far ci\u00f2 che si sfruttano spesso le altre pratiche, come la comunicazione stretta o la condivisione della propriet\u00e0 del codice;<\/li>\n<li id=\"mweA\"><b id=\"mweQ\">Modellizzazione<\/b>\u00a0&#8211; L&#8217;utilizzo di modelli, rappresentazioni visuali di problemi o soluzioni, tracciati, prototipi o modelli in scala (in generale) supporta le metodologie agili;<\/li>\n<li id=\"mweg\"><b id=\"mwew\"><a id=\"mwfA\" title=\"Pair programming\" href=\"https:\/\/it.wikipedia.org\/wiki\/Pair_programming\" rel=\"mw:WikiLink\">Pair programming<\/a><\/b>\u00a0&#8211; Lo sviluppo viene fatto da coppie di programmatori che si alternano alla tastiera;<\/li>\n<li id=\"mwfQ\"><b id=\"mwfg\">Prioritization<\/b>\u00a0&#8211; Lo sviluppo della soluzione pu\u00f2 cominciare solo dopo aver messo in priorit\u00e0 gli obiettivi, dai quali deriveranno i requirements e le features (caratteristiche o funzionalit\u00e0 del prodotto) da consegnare per mezzo del progetto; una pratica ben nota \u00e8 la tecnica\u00a0<a id=\"mwfw\" title=\"Metodo MoSCoW\" href=\"https:\/\/it.wikipedia.org\/wiki\/Metodo_MoSCoW\" rel=\"mw:WikiLink\">MoSCoW<\/a>\u00a0(Must &#8211; Should &#8211; Could &#8211; Won&#8217;t have);<\/li>\n<li id=\"mwgA\"><b id=\"mwgQ\">Progettazione e documentazione<\/b>\u00a0&#8211; Pensare che le metodologie leggere\u00a0<i id=\"mwgg\">eliminino<\/i>\u00a0la progettazione e la documentazione \u00e8 un errore, in effetti non \u00e8 cos\u00ec, le metodologie leggere introducono un&#8217;iterazione nel ciclo di vita del progetto; quanta progettazione fare e quanta documentazione produrre, escludendo i casi estremi, \u00e8 una scelta lasciata a chi gestisce il progetto e spesso i teorici dell&#8217;Agile Alliance avvisano che \u00e8 un errore trascurare o addirittura omettere queste due fasi;<\/li>\n<li id=\"mwgw\"><b id=\"mwhA\"><a id=\"mwhQ\" title=\"Refactoring\" href=\"https:\/\/it.wikipedia.org\/wiki\/Refactoring\" rel=\"mw:WikiLink\">Refactoring<\/a><\/b>\u00a0&#8211; La ristrutturazione di parti di codice mantenendone invariato l&#8217;aspetto e il comportamento esterno;<\/li>\n<li id=\"mwhg\"><b id=\"mwhw\">Retroingegneria<\/b>\u00a0&#8211; Ossia ottenere, spesso in maniera automatica, la documentazione a partire dal codice gi\u00e0 prodotto; \u00e8 una delle pratiche pi\u00f9 diffuse e pi\u00f9 controverse, diffusa perch\u00e9 permette un guadagno enorme in termini di tempo, ma controversa perch\u00e9 spesso la documentazione prodotta \u00e8 inutilizzabile oppure \u00e8 prodotta solo per una richiesta burocratica del cliente e non verr\u00e0 mai realmente utilizzata;<\/li>\n<li id=\"mwiA\"><b id=\"mwiQ\">Semplicit\u00e0<\/b>\u00a0&#8211; Uno dei punti chiave delle metodologie leggere, direttamente mutuato dalla programmazione Object-Oriented, \u00e8 la semplicit\u00e0; semplicit\u00e0 nel codice, semplicit\u00e0 nella documentazione, semplicit\u00e0 nella progettazione, semplicit\u00e0 nella modellazione; i risultati cos\u00ec ottenuti sono una migliore leggibilit\u00e0 dell&#8217;intero progetto ed una conseguente facilitazione nelle fasi di correzione e modifica;<\/li>\n<li id=\"mwig\"><b id=\"mwiw\">Test<\/b>\u00a0&#8211; Pratica diffusissima anche prima della nascita delle metodologie leggere, ha prodotto una letteratura vastissima ed una serie di approcci differenti come il\u00a0<i id=\"mwjA\">Rapid Testing<\/i>\u00a0o il\u00a0<i id=\"mwjQ\">Pair Testing<\/i>; nell&#8217;ambito delle metodologie leggere vengono spesso utilizzati insieme tre tipi di test differenti: i\u00a0<i id=\"mwjg\">test funzionali<\/i>, utilizzati per verificare che il software faccia effettivamente ci\u00f2 che \u00e8 previsto debba fare, i\u00a0<i id=\"mwjw\">test unitari<\/i>, utilizzati per verificare che ogni pezzo di codice funzioni correttamente, e i\u00a0<i id=\"mwkA\">test indiretti<\/i>\u00a0effettuati inconsciamente dal cliente ogni volta che gli si consegna una versione;<\/li>\n<li id=\"mwkQ\"><b id=\"mwkg\"><a id=\"mwkw\" title=\"Test driven development\" href=\"https:\/\/it.wikipedia.org\/wiki\/Test_driven_development\" rel=\"mw:WikiLink\">Test Driven Development<\/a><\/b>\u00a0&#8211; Una tipologia di approccio al Testing da eseguire durante il nostro progetto, che prevede la scelta e definizione dei veri e propri test che dovranno essere superati dal prodotto (cio\u00e8 dalla soluzione e dalle sue features)\u00a0<u id=\"mwlA\">prima<\/u>\u00a0di andare a sviluppare la soluzione stessa. Il concetto, in poche parole, \u00e8 molto semplice: si vuole evitare il rischio di andare a sviluppare qualcosa che poi non si riesce a testare;<\/li>\n<li id=\"mwlQ\"><b id=\"mwlg\">Timeboxing<\/b>\u00a0&#8211; Pratica fondamentale dei metodi Agile che consiste nel suddividere il progetto in intervalli temporali ben precisi, della durata di pochi giorni o settimane -ad esempio gli Sprint (<a id=\"mwlw\" title=\"Scrum (informatica)\" href=\"https:\/\/it.wikipedia.org\/wiki\/Scrum_(informatica)\" rel=\"mw:WikiLink\">SCRUM<\/a>) o le Structured Timebox (<a id=\"mwmA\" class=\"external text\" href=\"https:\/\/www.qrpinternational.it\/corsi\/agile-project-management\/\" rel=\"mw:ExtLink nofollow\">AGILEPM<\/a>)- entro i quali consegnare delle features, parallelamente ad intervalli temporali di durata superiore (settimane o mesi) chiamati Incrementi, alla fine dei quali avviene la vera e propria consegna della soluzione finale, o di una parte della stessa, utilizzabile effettivamente dal cliente (che ne trarr\u00e0 il valore aspettato);<\/li>\n<li id=\"mwmQ\"><b id=\"mwmg\">Versioning (Controllo della versione)<\/b>\u00a0&#8211; Una delle conseguenze dirette dell&#8217;iterazione nella produzione \u00e8 la necessit\u00e0 di introdurre un modello, un metodo, uno strumento, per il controllo delle versioni del software prodotto e rilasciato; uno degli strumenti pi\u00f9 diffusi e maggiormente suggeriti per ottemperare automaticamente a questa pratica \u00e8 il\u00a0<i id=\"mwmw\"><a id=\"mwnA\" title=\"Concurrent Versions System\" href=\"https:\/\/it.wikipedia.org\/wiki\/Concurrent_Versions_System\" rel=\"mw:WikiLink\">CVS<\/a><\/i>.<\/li>\n<\/ul>\n<\/section>\n<\/section>\n<section id=\"mwnQ\" data-mw-section-id=\"6\" aria-labelledby=\"Metodologie\">\n<div class=\"mw-heading mw-heading2\">\n<h2 id=\"Metodologie\">Metodologie<\/h2>\n<\/div>\n<p id=\"mwng\">In senso lato il termine &#8220;agile&#8221; indica tutte quelle metodologie di sviluppo leggere e flessibili, che rompono con la precedente tradizione di\u00a0<a id=\"mwnw\" title=\"Ingegneria del software\" href=\"https:\/\/it.wikipedia.org\/wiki\/Ingegneria_del_software\" rel=\"mw:WikiLink\">ingegneria del software<\/a>\u00a0(<a id=\"mwoA\" title=\"Modello a cascata\" href=\"https:\/\/it.wikipedia.org\/wiki\/Modello_a_cascata\" rel=\"mw:WikiLink\">modello a cascata<\/a>,\u00a0<a id=\"mwoQ\" title=\"Modello a spirale\" href=\"https:\/\/it.wikipedia.org\/wiki\/Modello_a_spirale\" rel=\"mw:WikiLink\">modello a spirale<\/a>, etc.) basata su una raccolta delle specifiche e su una strutturazione sequenziale dello sviluppo software. Le metodologie agili consentono invece di rivedere di continuo le specifiche adeguandole durante l&#8217;avanzamento dello sviluppo del software, mediante un\u00a0<a id=\"mwog\" title=\"Framework\" href=\"https:\/\/it.wikipedia.org\/wiki\/Framework\" rel=\"mw:WikiLink\">framework<\/a>\u00a0iterativo e incrementale, e un forte scambio di informazioni e di pareri tra gli sviluppatori e con il committente. Esempi di metodologie e framework agili:<\/p>\n<ul id=\"mwow\">\n<li id=\"mwpA\"><a id=\"mwpQ\" title=\"Agile Unified Process\" href=\"https:\/\/it.wikipedia.org\/wiki\/Agile_Unified_Process\" rel=\"mw:WikiLink\">Agile Unified Process<\/a>,<\/li>\n<li id=\"mwpg\"><a id=\"mwpw\" title=\"Adaptive Software Development\" href=\"https:\/\/it.wikipedia.org\/wiki\/Adaptive_Software_Development\" rel=\"mw:WikiLink\">Adaptive Software Development<\/a>,<\/li>\n<li id=\"mwqA\"><a id=\"mwqQ\" title=\"Crystal (informatica)\" href=\"https:\/\/it.wikipedia.org\/wiki\/Crystal_(informatica)\" rel=\"mw:WikiLink\">Crystal<\/a>\u00a0(famiglia),<\/li>\n<li id=\"mwqg\"><a id=\"mwqw\" title=\"Dynamic Systems Development Method\" href=\"https:\/\/it.wikipedia.org\/wiki\/Dynamic_Systems_Development_Method\" rel=\"mw:WikiLink\">Dynamic Systems Development Method<\/a>,<\/li>\n<li id=\"mwrA\"><a id=\"mwrQ\" title=\"Extreme programming\" href=\"https:\/\/it.wikipedia.org\/wiki\/Extreme_programming\" rel=\"mw:WikiLink\">Extreme programming<\/a>,<\/li>\n<li id=\"mwrg\"><a id=\"mwrw\" title=\"Feature Driven Development\" href=\"https:\/\/it.wikipedia.org\/wiki\/Feature_Driven_Development\" rel=\"mw:WikiLink\">Feature Driven Development<\/a>,<\/li>\n<li id=\"mwsA\"><a id=\"mwsQ\" title=\"Lean software development\" href=\"https:\/\/it.wikipedia.org\/wiki\/Lean_software_development\" rel=\"mw:WikiLink\">Lean software development<\/a>,<\/li>\n<li id=\"mwsg\"><a id=\"mwsw\" title=\"Scrum (informatica)\" href=\"https:\/\/it.wikipedia.org\/wiki\/Scrum_(informatica)\" rel=\"mw:WikiLink\">Scrum<\/a>.<\/li>\n<\/ul>\n<\/section>\n","protected":false},"excerpt":{"rendered":"<p>Con\u00a0metodologia agile\u00a0(o\u00a0sviluppo agile del software, in\u00a0inglese\u00a0agile software development, abbreviato in\u00a0ASD), nell&#8217;ingegneria del software, si indica un insieme di\u00a0metodi di sviluppo del software\u00a0emersi a partire dai primi\u00a0anni 2000\u00a0e fondati su un&hellip;<\/p>\n","protected":false},"author":1,"featured_media":235,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[4,8,1],"tags":[],"_links":{"self":[{"href":"https:\/\/shahed.org\/news\/wp-json\/wp\/v2\/posts\/342"}],"collection":[{"href":"https:\/\/shahed.org\/news\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/shahed.org\/news\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/shahed.org\/news\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/shahed.org\/news\/wp-json\/wp\/v2\/comments?post=342"}],"version-history":[{"count":1,"href":"https:\/\/shahed.org\/news\/wp-json\/wp\/v2\/posts\/342\/revisions"}],"predecessor-version":[{"id":343,"href":"https:\/\/shahed.org\/news\/wp-json\/wp\/v2\/posts\/342\/revisions\/343"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/shahed.org\/news\/wp-json\/wp\/v2\/media\/235"}],"wp:attachment":[{"href":"https:\/\/shahed.org\/news\/wp-json\/wp\/v2\/media?parent=342"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/shahed.org\/news\/wp-json\/wp\/v2\/categories?post=342"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/shahed.org\/news\/wp-json\/wp\/v2\/tags?post=342"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}