{"id":3916,"date":"2023-08-19T11:01:50","date_gmt":"2023-08-19T10:01:50","guid":{"rendered":"https:\/\/www.gcportal.com\/wordpress\/?p=3916"},"modified":"2023-08-28T19:25:45","modified_gmt":"2023-08-28T18:25:45","slug":"progetti-greenfield-vs-brownfield-nellit","status":"publish","type":"post","link":"https:\/\/www.gcportal.com\/wordpress\/archives\/3916","title":{"rendered":"Progetti Greenfield vs Brownfield nell&#8217;IT"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">In informatica, i termini &#8220;greenfield&#8221; e &#8220;brownfield&#8221; si riferiscono a due approcci diversi per la realizzazione di nuovi progetti o lo sviluppo di software.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un progetto &#8220;greenfield&#8221; \u00e8 un progetto completamente nuovo, che parte da zero. In altre parole, non ci sono precedenti, niente codice esistente e nessun sistema preesistente da integrare. Si parte con una tela bianca e si sviluppa tutto da zero. Questo tipo di progetto offre la massima flessibilit\u00e0, ma richiede anche un grande impegno in termini di tempo e risorse.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un progetto &#8220;brownfield&#8221;, invece, parte da un sistema esistente. Ci\u00f2 significa che si dovr\u00e0 lavorare su una base preesistente, utilizzando un codice gi\u00e0 presente e magari integrandolo con nuove funzionalit\u00e0 o tecnologie. Questo tipo di progetto \u00e8 pi\u00f9 rapido da sviluppare rispetto ad un progetto &#8220;greenfield&#8221;, in quanto non richiede la creazione di tutto da zero. Tuttavia, pu\u00f2 essere pi\u00f9 complesso da gestire e ci sono maggiori rischi di errori e problemi di integrazione. Entrambi gli approcci possono riguardare molti tipi di progetti IT, come uno strumento software, un&#8217;app, un sito Web, una rete o una struttura IT.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In uno sviluppo <strong>brownfield<\/strong>&nbsp;, l&#8217;attivit\u00e0 potrebbe essere l&#8217;aggiunta di un nuovo modulo di gestione all&#8217;attuale CRM, l&#8217;integrazione di nuove funzionalit\u00e0 in un&nbsp;CMS di Collaborazione&nbsp;o l&#8217;aumento delle prestazioni di un&#8217;app esistente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I progetti <strong>greenfield<\/strong>&nbsp;di solito consentono maggiore flessibilit\u00e0 e innovazione, il che, d&#8217;altra parte, significa che devi comprendere a fondo i tuoi obiettivi di business e impostare un chiaro percorso di sviluppo per non perdere la portata.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Per gestire questo rischio, \u00e8 meglio utilizzare la metodologia <strong>AGILE<\/strong>, perch\u00e9 consente una comunicazione costante e la capacit\u00e0 di cogliere i piccoli errori prima che si trasformino in grandi errori. I progetti <strong>Brownfield <\/strong>di solito presentano alcuni vincoli e limitazioni, ma in questo caso gran parte del lavoro \u00e8 gi\u00e0 stato svolto. In questo articolo apriamo un focus sui pro e i contro di entrambi gli approcci.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"whats-good-about-greenfield-projects\">Vantaggi e Svantaggi dei progetti Greenfield<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">I vantaggi dei progetti greenfield derivano direttamente dalla loro natura.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Il primo \u00e8&nbsp;<strong>la flessibilit\u00e0<\/strong>&nbsp;.&nbsp;Possono adattarsi alle esigenze aziendali come un guanto, perch\u00e9 sono costruiti esattamente per soddisfare tali esigenze e fornire tutte le&nbsp;soluzioni personalizzate&nbsp;che si possano immaginare. Per gli stessi motivi, le soluzioni software costruite in modo greenfield possono essere&nbsp;<strong>altamente scalabili<\/strong>&nbsp;. La maggiore flessibilit\u00e0 significa anche&nbsp;<strong>minori costi di manutenzione<\/strong>, poich\u00e9 non ci sono funzioni inutilizzate o duplicate ereditate dal vecchio software. I progetti IT greenfield&nbsp;possono essere pi\u00f9 a prova di futuro&nbsp;, perch\u00e9 non sono limitati dai vincoli di tecnologie obsolete e&nbsp;sono privi di dipendenze ridondanti&nbsp;di vecchi sistemi. Tutto \u00e8 allo stato dell&#8217;arte e appena implementato, quindi nessun applicativo o infrastruttura Legacy \u00e8 coinvolta.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-are-the-risks-in-greenfield-development\">Rischi nello sviluppo Greenfield<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Costruire tutto da zero significa che il&nbsp;time-to-market \u00e8 pi\u00f9 lungo&nbsp;e&nbsp;il rischio aziendale \u00e8 maggiore&nbsp;perch\u00e9 non c&#8217;\u00e8 un percorso precostituito da seguire. Va pianificato tutto partendo dalle esigenze aziendali alla scelta della tecnologia, dell&#8217;architettura del sistema, dell&#8217;interfaccia utente e cos\u00ec via.&nbsp;Ci sono molte decisioni da prendere lungo il percorso, che possono rallentare o addirittura fermare il processo di sviluppo. Non c&#8217;\u00e8 da stupirsi, quindi, che&nbsp;il costo sia solitamente anche pi\u00f9 alto.&nbsp;I progetti greenfield richiedono nuove competenze tecnologiche che potrebbero essere scarse sul mercato e anche gli utenti finali avranno la loro&nbsp;giusta quota di apprendimento&nbsp;, spesso con l&#8217;aiuto di consulenti esterni.<br><div class=\"su-box su-box-style-soft\" id=\"\" style=\"border-color:#104700;border-radius:3px;max-width:none\"><div class=\"su-box-title\" style=\"background-color:#437a1a;color:#FFFFFF;border-top-left-radius:1px;border-top-right-radius:1px\">Vantaggi<\/div><div class=\"su-box-content su-u-clearfix su-u-trim\" style=\"border-bottom-left-radius:1px;border-bottom-right-radius:1px\"><br>Massima flessibilit\u00e0 nel Design e Sviluppo <br>Maggiore Customizzazione <br>Opportunit\u00e0 di utilizzare le tecnologie pi\u00f9 recenti e avanzate<br>Alta Scalabilit\u00e0 <br>Minori Costi di manutenzione<\/div><\/div><br><div class=\"su-box su-box-style-soft\" id=\"\" style=\"border-color:#cc0000;border-radius:3px;max-width:none\"><div class=\"su-box-title\" style=\"background-color:#FF0000;color:#FFFFFF;border-top-left-radius:1px;border-top-right-radius:1px\">Svantaggi<\/div><div class=\"su-box-content su-u-clearfix su-u-trim\" style=\"border-bottom-left-radius:1px;border-bottom-right-radius:1px\"><br>Un maggiore Time-To-Market<br>Alti rischi di business<br>Richiede un grande impegno in termini di tempo e risorse<br>Maggiori decisioni da prendere<br>Maggiori rischi di ritardi e costi elevati<br>Alti costi di sviluppo<br>Necessit\u00e0 di acquisire Know-How<\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-are-the-advantages-of-brownfield-projects\">Vantaggi e Svantaggi dei progetti Brownfield<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A differenza dei progetti greenfield, quelli brownfield hanno una&nbsp;<strong>d<\/strong>irezione di sviluppo gi\u00e0 predeterminata&nbsp;e il vecchio&nbsp;codice pu\u00f2 essere riutilizzato&nbsp;per rispondere a nuove esigenze. Comporta anche&nbsp;un tempo di commercializzazione pi\u00f9 breve&nbsp;e, in alcuni casi,&nbsp;costi inferiori&nbsp;(questi non sono sempre veri, come spiegheremo tra un momento). Il rischio aziendale \u00e8 mitigato&nbsp;perch\u00e9 il progetto iniziale \u00e8 solitamente gi\u00e0 stato provato sul mercato e utilizzato dai suoi utenti in molti modi diversi, quindi tutte le potenziali insidie sono gi\u00e0 note, analizzate e mitigate.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">D&#8217;altra parte, l&#8217;approccio brownfield pu\u00f2 essere molto limitante.&nbsp;Gli sviluppatori devono&nbsp;fare i conti con il vecchio codice&nbsp;e la funzionalit\u00e0&nbsp;non \u00e8 sempre adattata&nbsp;alle esigenze degli utenti. Un&#8217;altra cosa importante \u00e8 il fatto che&nbsp;gli sviluppatori devono conoscere il sistema attuale in ogni dettaglio&nbsp;.&nbsp;Se in effetti non fossero coinvolti nella sua costruzione, potrebbe essere molto difficile capire il vecchio codice, soprattutto se la sua qualit\u00e0 \u00e8 scadente e non c&#8217;\u00e8 (quasi) documentazione. E, in alcuni casi, il risultato finale non vale davvero lo sforzo di provare a riprogettare il vecchio software con nuove funzionalit\u00e0 e il progetto potrebbe alla fine richiedere molto&nbsp;tempo e risorse&nbsp;.<br><div class=\"su-box su-box-style-soft\" id=\"\" style=\"border-color:#104700;border-radius:3px;max-width:none\"><div class=\"su-box-title\" style=\"background-color:#437a1a;color:#FFFFFF;border-top-left-radius:1px;border-top-right-radius:1px\">Vantaggi<\/div><div class=\"su-box-content su-u-clearfix su-u-trim\" style=\"border-bottom-left-radius:1px;border-bottom-right-radius:1px\"><br>Risparmio di tempo e costi rispetto a un progetto greenfield<br>Maggiore stabilit\u00e0 e affidabilit\u00e0 grazie all&#8217;utilizzo di codice gi\u00e0 testato <br>Sviluppi in una determinata direzione<br>Minore Time-To-Market<br>Mitigati Rischi di Business<\/div><\/div><br><div class=\"su-box su-box-style-soft\" id=\"\" style=\"border-color:#cc0000;border-radius:3px;max-width:none\"><div class=\"su-box-title\" style=\"background-color:#FF0000;color:#FFFFFF;border-top-left-radius:1px;border-top-right-radius:1px\">Svantaggi<\/div><div class=\"su-box-content su-u-clearfix su-u-trim\" style=\"border-bottom-left-radius:1px;border-bottom-right-radius:1px\"><br>Limitazioni dovute alle tecnologie e ai sistemi preesistenti<br>Funzionalit\u00e0 datate<br>Rischi di una cattiva documentazione di progetto<br>Consumo di Risorse<br>Maggiore complessit\u00e0 e rischi di problemi di integrazione<br>Maggiore difficolt\u00e0 nel mantenere<\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"how-to-run-greenfield-software-development\">Lo sviluppo di un progetto Greenfield<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Un progetto greenfield ti offre il vantaggio di un nuovo inizio e di una creativit\u00e0 illimitata, che \u00e8 un&#8217;opportunit\u00e0 ma anche una sfida altrettanto grande.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un progetto greenfield presenta molte aree incognite, tutte le fasi preparatorie che precedono la fase di codifica sono cruciali.&nbsp;Che aspetto ha questo processo?&nbsp;Analizziamolo in diversi passaggi.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"business-analysis\">1 &#8211; Analisi<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">In questa fase, che pu\u00f2 anche essere definita&nbsp;<strong>fase di progettazione del prodotto<\/strong>&nbsp;, dobbiamo rispondere ad alcune importanti domande riguardanti il software progettato. Questi riguardano un problema che il prodotto risolver\u00e0, i personaggi dell&#8217;utente, gli obiettivi e le ragioni di esistenza del software in primo luogo. Questa \u00e8 pi\u00f9 un&#8217;analisi commerciale e di marketing, quindi questa fase deve coinvolgere specialisti di queste aree:&nbsp;<strong>workshop con sessioni di brainstorming<\/strong>&nbsp;con dipendenti dell&#8217;agenzia e del cliente sono molto utili in questa fase. Puoi anche fare qualche&nbsp;<strong>ricerca di mercato e sulla concorrenza<\/strong>&nbsp;se le risposte alle domande di cui sopra non sembrano facili.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"strategy\">2 &#8211; Strategia<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Dopo aver analizzato tutto, dovremmo decidere l&#8217;esatto modello di business (inclusi i metodi di monetizzazione e determinazione dei costi) e un modello di sviluppo per il software (inclusa la scelta dell&#8217;approccio giusto, come ad esempio Jamstack e uno specifico stack tecnologico)&nbsp;. La strategia collega questioni orientate al business e allo sviluppo, generando un&#8217;idea razionale per ogni aspetto del prodotto da sviluppare, insieme ai modi per implementarlo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><div class=\"su-box su-box-style-soft\" id=\"\" style=\"border-color:#000000;border-radius:3px;max-width:none\"><div class=\"su-box-title\" style=\"background-color:#333333;color:#FFFFFF;border-top-left-radius:1px;border-top-right-radius:1px\">Cosa \u00e8 l'approccio JamStack<\/div><div class=\"su-box-content su-u-clearfix su-u-trim\" style=\"border-bottom-left-radius:1px;border-bottom-right-radius:1px\">L&#8217;approccio Jamstack \u00e8 una metodologia di sviluppo web moderna che si basa su tre principali componenti: JavaScript, API e Markup (JAM). Questo approccio \u00e8 stato creato per sviluppare siti web statici, cio\u00e8 siti web che non richiedono una piattaforma di backend dinamica per funzionare. In questo modo, il sito web \u00e8 composto solo da file HTML, CSS e JavaScript che possono essere facilmente distribuiti tramite un CDN (Content Delivery Network) per una maggiore velocit\u00e0 di caricamento. L&#8217;idea principale di Jamstack \u00e8 quella di creare siti web scalabili e performanti che offrano una buona esperienza utente. In questo approccio, il frontend viene generato in fase di build, rendendo il sito web pronto all&#8217;uso, senza bisogno di elaborazioni al server in fase di esecuzione. La tecnologia dietro Jamstack \u00e8 principalmente basata su JavaScript e su framework come React o Vue. Inoltre, l&#8217;approccio sfrutta API esterne per il recupero di dati dinamici, come ad esempio i dati di un e-commerce. L&#8217;ultima componente, il Markup, rappresenta il contenuto del sito web, composto principalmente da HTML e CSS. Per implementare il Jamstack \u00e8 possibile utilizzare una vasta gamma di strumenti e tecnologie, tra cui framework come Gatsby, Next.js o Hugo, CMS come Netlify CMS o Contentful, servizi di hosting come Netlify o Vercel, e API esterne come Stripe o Shopify. In sintesi, l&#8217;approccio Jamstack offre numerosi vantaggi, tra cui una maggiore velocit\u00e0 di caricamento, una migliore sicurezza, una maggiore scalabilit\u00e0 e una facilit\u00e0 di implementazione grazie all&#8217;uso di strumenti e tecnologie gi\u00e0 consolidate e pronte all&#8217;uso.<\/div><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Come fa quindi l&#8217;approccio Jamstack a migliorare le performance? Semplicemente prende i contenuti dinamici del sito da delle API (es. WordPress) e li unisce a dei template, generando quindi dei file .html che contengono js e css. Tutto quello che deve essere dinamico all\u2019interno del sito e non influisce lato Seo pu\u00f2 essere ottenuto attraverso la chiamata di altre API.&nbsp; A questo punto, i nostri contenuti saranno disponibili all\u2019utente in tempi fino a 6 volte minori rispetto a un sito dinamico che interagisce in tempo reale con un database, come ad esempio succede in un sito sviluppato su WordPress. La buona notizia \u00e8 che, se abbiamo gi\u00e0 un sito web su WordPress, possiamo utilizzarlo in modalit\u00e0&nbsp;<strong>headless<\/strong>, ovvero raccogliendo i contenuti tramite le API. Quindi, se si ha intenzione di ottimizzare il proprio sito in quest\u2019ottica, gli interventi su WordPress saranno minimi: baster\u00e0 creare un template e utilizzare un framework che supporti l\u2019approccio&nbsp;<strong>Jamstack<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><div class=\"su-box su-box-style-soft\" id=\"\" style=\"border-color:#000000;border-radius:3px;max-width:none\"><div class=\"su-box-title\" style=\"background-color:#333333;color:#FFFFFF;border-top-left-radius:1px;border-top-right-radius:1px\">Esempio di Possibile Soluzione Sviluppo WordPress via JamStack<\/div><div class=\"su-box-content su-u-clearfix su-u-trim\" style=\"border-bottom-left-radius:1px;border-bottom-right-radius:1px\">L&#8217;approccio JAMstack si basa sulla separazione tra la gestione dei contenuti e la presentazione di questi ultimi sul sito web, utilizzando tecnologie come JavaScript, APIs e markup pre-generato. WordPress \u00e8 un CMS (Content Management System) popolare che offre funzionalit\u00e0 avanzate di gestione dei contenuti e una vasta gamma di plugin per personalizzare la presentazione del sito.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Per utilizzare WordPress con un approccio JAMstack, si possono utilizzare alcune soluzioni di terze parti, come ad esempio il plugin GatsbyWP. Questo plugin consente di utilizzare Gatsby, un generatore di siti statici basato su React, per generare il markup del sito a partire dai contenuti di WordPress.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In questo modo, WordPress viene utilizzato come CMS per la gestione dei contenuti, mentre Gatsby viene utilizzato per la generazione di pagine statiche basate sui contenuti di WordPress. Questo approccio pu\u00f2 migliorare le prestazioni del sito web, poich\u00e9 le pagine statiche sono pi\u00f9 veloci da caricare rispetto a quelle dinamiche generate al volo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Inoltre, utilizzando un approccio JAMstack con WordPress, si possono beneficiare di alcune delle funzionalit\u00e0 avanzate di WordPress, come ad esempio la gestione degli utenti, la gestione dei commenti, la gestione dei contenuti multilingue e molte altre, mentre si ottengono anche i vantaggi dell&#8217;approccio JAMstack, come ad esempio la scalabilit\u00e0 e la sicurezza.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/div><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"design\">3 &#8211; Progetto<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Una volta che abbiamo messo in atto una strategia, dobbiamo&nbsp;progettare il prodotto.&nbsp;Durante questa fase, la collaborazione tra il cliente e il team di sviluppo dovrebbe essere molto stretta. Il design collega i problemi logici, UX e grafici e&nbsp;<strong>tutte queste aree sono interconnesse<\/strong>&nbsp;, quindi lavorare su di esse pu\u00f2 essere simultaneo. Dovremmo pensare ai percorsi degli utenti e tradurli in passaggi successivi riflessi nel design finale. Un&#8217;altra parte vitale del processo di progettazione \u00e8&nbsp;<strong>la prototipazione<\/strong>&nbsp;, che pu\u00f2 aiutare a determinare l&#8217;esperienza utente ottimale e testare tutte le idee.&nbsp;Il prototipo creato dovrebbe essere rivisto, perfezionato e iterato in base alle esigenze.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"development-process\">4 &#8211; Sviluppo<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">La fase finale \u00e8 lo sviluppo.&nbsp;L&#8217;agenzia prepara un flusso di lavoro, crea&nbsp;un team IT di progetto&nbsp;composto da varie figure professionali e decide se impegnare anche un eventuale coinvolgimento di un fornitore esterno e stabilisce un&#8217;agenda. Il prodotto viene solitamente creato negli sprint, il che crea spazio per le iterazioni e il perfezionamento all&#8217;interno di questa fase. Una buona pratica qui \u00e8 creare un&nbsp;<strong>MVP (a minimum viable product)<\/strong>&nbsp;, ovvero una versione semplificata del software finale che presenta solo le funzioni pi\u00f9 basilari necessarie per immetterlo sul mercato.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ecco come appare approssimativamente il processo nel caso di un progetto greenfield:<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-orange-color\">Business Analysis<\/mark> <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">&#8211;>><\/mark><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-amber-color\">Strategy Definition<\/mark><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">&#8211;>><\/mark><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-green-cyan-color\">Project Design<\/mark><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">&#8211;>><\/mark><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-purple-color\">Development &amp; Test<\/mark><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"how-to-run-brownfield-software-development\">Lo sviluppo di un progetto Brownfield<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Nel caso dei progetti brownfield, il percorso \u00e8 leggermente diverso.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Il software su cui dobbiamo costruire&nbsp;<strong>pu\u00f2 essere abbandonato<\/strong>&nbsp;(creato qualche tempo fa e attualmente non utilizzato)&nbsp;<strong>o incompleto<\/strong>&nbsp;(sviluppato solo parzialmente e contenente software non finito). La prima cosa importante \u00e8 chiedersi perch\u00e9 il cliente vuole in primo luogo perseguire un progetto brownfield.&nbsp;Di solito pensano che il costo sar\u00e0 inferiore e il tempo pi\u00f9 breve, ma come abbiamo detto prima,&nbsp;<strong>non \u00e8 sempre cos\u00ec.<\/strong> Dopo un&#8217;analisi iniziale del codice esistente e dei requisiti del nuovo prodotto, potrebbe risultare che il prodotto richieder\u00e0 meno tempo e sar\u00e0 solo pi\u00f9 economico nell&#8217;approccio greenfield. Ma supponiamo di aver analizzato tutti i pro ei contro e di aver deciso che un progetto brownfield sar\u00e0 il modo pi\u00f9 ragionevole per raggiungere il nostro obiettivo.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"analysis-of-the-existing-project\">1 &#8211; Analisi del progetto esistente (AsIs Analysis)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Il codice esistente pu\u00f2 riservare molte sorprese, quindi deve essere analizzato a fondo, individuando tutti i punti deboli e gli elementi obsoleti.&nbsp;Potrebbe essere ragionevole riutilizzare solo una parte della soluzione esistente&nbsp;e buttare via il resto. Va anche analizzata la storia del progetto sulla base delle testimonianze e della documentazione degli sviluppatori originali,&nbsp;i fallimenti passati&nbsp;e i gli obiettivi iniziali, confrontandoli con quelli nuovi. Questa fase richiede molto tempo ed \u00e8 abbastanza noiosa.&nbsp;A volte pu\u00f2 anche sembrare un lavoro investigativo, ma&nbsp;se fatto bene rende le altre fasi pi\u00f9 brevi e pi\u00f9 facili. Il risultato dovrebbe essere un quadro completo di tutti i vincoli tecnici, umani e organizzativi del sistema che vi accingete ad implementare.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"gap-analysis\">2 &#8211; Analisi degli scostamenti (GAP Analysis)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">In questa fase, vanno definite le attivit\u00e0 per colmare il divario tra il software iniziale e finale, e quello desiderato.&nbsp;Le domande che dovremmo porci in questa fase ci permettono di definire meglio il problema.&nbsp;\u00c8 un problema con l&#8217;usabilit\u00e0, le prestazioni, la conformit\u00e0, la sicurezza o l&#8217;aspetto?<br>Vanno anche confrontati i requisiti nuovi a fronte degli originali e verificare quanto \u00e8 stato gi\u00e0 risolto.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3 &#8211; Definizione del piano di Progetto (Build Project RoadMap)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Dopo aver aggiornato i requisiti, va definita&nbsp;una tabella di marcia del progetto, che ci dice quali sono le caratteristiche pi\u00f9 importanti e dovrebbero essere implementate per prime e quali possono attendere di essere affrontate successivamente.&nbsp;Quindi, dovremmo suddividere l&#8217;ordine del giorno in compiti specifici. Non cadere nella trappola di riscrivere tutto per funzionare meglio: ricorda che hai scelto un progetto dismesso per un motivo in primo luogo. Inoltre, la riscrittura del codice pu\u00f2 portare a problemi tecnici, perch\u00e9 potrebbe non essere conforme alle parti precedenti. Alcune attivit\u00e0 potrebbero sembrare pi\u00f9 difficili di quanto sembravano inizialmente, quindi dovresti considerare un margine di tempo e budget nel tuo piano.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"brownfield-implementation\">4 &#8211; Implementazione del Piano di Sviluppo e Test<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">La fase finale, come nel caso di un progetto greenfield, \u00e8 lo sviluppo in accordo al piano prestabilito. E&#8217; mandatorio in questa fase sempre di&nbsp;<strong>coinvolgere tutte le parti interessate<\/strong>&nbsp;nel progetto, e questo vale anche per i progetti Greenfield, perch\u00e9 senza di loro, il piano potrebbe andare incontro a problemi importanti.&nbsp;Queste dovrebbero prendere parte a tutte le varie fasi del progetto dalla raccolta dei requisiti, alla prototipazione, alla definizione della Solution Design alle demo di fine sprint e alle fasi dei vari test da quelli di integrazione delle varie componenti ai test di modulo agli UAT (User Acceptance Test).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ecco come appare approssimativamente il processo nel caso di un progetto Brownfield:<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><mark><mark style=\"background-color:#ffffff\" class=\"has-inline-color has-luminous-vivid-orange-color\">AsIs Analysis<\/mark><\/mark><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">&#8211;&gt;&gt;<\/mark><mark><mark style=\"background-color:#ffffff\" class=\"has-inline-color has-luminous-vivid-amber-color\">Gap Analysis<\/mark><\/mark><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">&#8211;&gt;&gt;<\/mark><mark><mark style=\"background-color:#ffffff\" class=\"has-inline-color has-vivid-green-cyan-color\">Project RoadMap<\/mark><\/mark><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">&#8211;&gt;&gt;<\/mark><mark><mark style=\"background-color:#ffffff\" class=\"has-inline-color has-vivid-purple-color\">Development &amp; Test<\/mark><\/mark><\/h4>\n\n\n\n<h2 class=\"wp-block-heading\">C&#8217;\u00e8 un tema trasversale ai due approcci: La SICUREZZA<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Qualunque sia la scelta, sia essa Greenfield che Brownfield c&#8217;\u00e8 un grande tema che aleggia sempre piu importante, la sicurezza. Le infrastrutture siano esse On Cloud che On Premise sono sempre pi\u00f9 oggetto di attacchi ostili da parte di soggetti singoli che organizzazioni maleintenzionati le quali dispongono di competenze informatiche di altissimo livello dalle quali ci dobbiamo difendere predisponendo barriere semre pi\u00f9 sofisticate confrontandoci in una lotta senza fine e senza esclusione di colpi. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Al netto delle tipiche impostazioni dell&#8217;infrastruttura ancillare (VPN, SSH, Strong Authentication a doppio fattore, SSO, Firewall.) Anche la parte applicativa deve fare la sua parte.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un sito WordPress sviluppato con approccio JAMstack pu\u00f2 essere pi\u00f9 sicuro rispetto ad un sito WordPress tradizionale per diverse ragioni:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Nessun server-side rendering: In un sito JAMstack, le pagine vengono pre-generate come file HTML statici e poi serviti ai visitatori, senza eseguire codice server-side. Ci\u00f2 significa che non c&#8217;\u00e8 alcuna esecuzione di codice lato server, il che rende il sito meno vulnerabile agli attacchi hacker che sfruttano falle di sicurezza lato server.<\/li>\n\n\n\n<li>Sicurezza del server: Un sito JAMstack non richiede un server web tradizionale per eseguire codice PHP o altre tecnologie lato server, il che significa che il sito \u00e8 meno vulnerabile ad attacchi diretti al server web.<\/li>\n\n\n\n<li>Distribuzione tramite CDN: Un sito JAMstack pu\u00f2 essere distribuito tramite una CDN (Content Delivery Network), che consente di fornire i file del sito a una rete globale di server, rendendo il sito pi\u00f9 veloce e sicuro. Una CDN pu\u00f2 inoltre fornire protezione contro attacchi DDoS (Distributed Denial of Service).<\/li>\n\n\n\n<li>Meno dipendenze: Un sito JAMstack \u00e8 composto principalmente da file statici, che non richiedono molte dipendenze da software terzi. Ci\u00f2 significa che ci sono meno punti di ingresso per gli hacker per sfruttare le vulnerabilit\u00e0 del software di terze parti.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">In generale, un sito WordPress sviluppato con approccio JAMstack pu\u00f2 essere pi\u00f9 sicuro grazie alla separazione dei componenti, alla distribuzione su CDN e alla minore complessit\u00e0 delle dipendenze software. Tuttavia, \u00e8 importante sottolineare che la sicurezza di un sito dipende anche da molti altri fattori, come ad esempio l&#8217;attualit\u00e0 del software, l&#8217;utilizzo di password sicure, l&#8217;adozione di buone pratiche di sicurezza e l&#8217;implementazione di meccanismi di autenticazione e autorizzazione adeguati.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"should-i-choose-a-greenfield-or-brownfield\">Conclusione: Ergo <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-green-cyan-color\"><strong>Greenfield<\/strong><\/mark> o <strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-amber-color\">Brownfield<\/mark><\/strong> ?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Alla luce delle analisi fatte quanto, probabilmente sarai curioso di capire quando dovresti scegliere un approccio greenfield e quando un brownfield sar\u00e0 l&#8217;opzione migliore.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La risposta purtroppo non \u00e8 facile, perch\u00e9 tutto dipende dalla situazione specifica, e&nbsp;<strong>questo dovrebbe essere analizzato tra tutte le parti interessate fin dall&#8217;inizio \u2013 coinvolgendo il cliente e la componente IT sia essa interna (SW Factory) che esterna (Fornitore).<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Possiamo dire che: se vuoi solo aggiornare il tuo software con nuove funzioni e il vecchio sistema funziona generalmente bene, ha un codice pulito, ben documentato ed \u00e8 dotato di soluzioni a prova di futuro, opta per la soluzione brownfield.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Se desideri un software su misura che risponda alle esigenze specifiche dell&#8217;azienda e degli utenti, o se la tua soluzione esistente \u00e8 obsoleta e e sviluppata in modo disordinato, dovresti assolutamente prendere in considerazione l&#8217;approccio greenfield.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In informatica, i termini &#8220;greenfield&#8221; e &#8220;brownfield&#8221; si riferiscono a due approcci diversi per la realizzazione di nuovi progetti o lo sviluppo di software. Un progetto &#8220;greenfield&#8221; \u00e8 un progetto [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":3997,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_links_to":"","_links_to_target":""},"categories":[5,86,110],"tags":[163,162],"class_list":["post-3916","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-gcportal-links","category-guide-tutorial","category-informatica","tag-brownfield","tag-greenfield"],"_links":{"self":[{"href":"https:\/\/www.gcportal.com\/wordpress\/wp-json\/wp\/v2\/posts\/3916","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gcportal.com\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gcportal.com\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gcportal.com\/wordpress\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gcportal.com\/wordpress\/wp-json\/wp\/v2\/comments?post=3916"}],"version-history":[{"count":56,"href":"https:\/\/www.gcportal.com\/wordpress\/wp-json\/wp\/v2\/posts\/3916\/revisions"}],"predecessor-version":[{"id":6556,"href":"https:\/\/www.gcportal.com\/wordpress\/wp-json\/wp\/v2\/posts\/3916\/revisions\/6556"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gcportal.com\/wordpress\/wp-json\/wp\/v2\/media\/3997"}],"wp:attachment":[{"href":"https:\/\/www.gcportal.com\/wordpress\/wp-json\/wp\/v2\/media?parent=3916"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gcportal.com\/wordpress\/wp-json\/wp\/v2\/categories?post=3916"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gcportal.com\/wordpress\/wp-json\/wp\/v2\/tags?post=3916"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}