Obiettivo ultimo del progetto è la costituzione di una Fabbrica Intelligente del Software allo scopo di trasformare gradualmente AURIGA in una Lean Entreprise. Perciò, questa nuova unità deve fare da motore di sviluppo dei metodi, modelli, processi, e strumenti (generalmente, indicati come tecnologie) e fornire servizi a tutte le altre unità produttive per dar vita ad una manifattura sostenibile in termini di rapporto costi/ricavi secondo la metodologia Lean Thinking. Questa metodologia, orientata al valore, ha l’obiettivo di far evolvere il costo e la qualità del prodotto-servizio in direzione inversa: il costo di sviluppo tende a diminuire mentre la qualità del prodotto-servizio tende ad aumentare [J.P. Womack, D.T.Jones “Lean Thinking”, Free Press,1996].
Tra gli elementi che contraddistingue questa metodologia vi è la ricerca sistematica degli sprechi. Per spreco si intende un’attività, un prodotto o un semilavorato che non aggiunge valore al prodotto-servizio. Per valore si intende una qualsiasi caratteristica del prodotto-servizio che soddisfi una specifica richiesta del consumatore del prodotto. In sintesi, la filosofia Lean è tale solo se la riduzione degli sprechi è il mezzo per garantire al cliente un servizio migliore a prezzi più competitivi. La metodologia Lean è stata applicata negli anni in tutti i settori produttivi; in ognuno i principi e le tecniche, pur facendo riferimento alla stessa metodologia, sono stati modulati in modo diverso in corrispondenza delle caratteristiche del settore produttivo.
Nella produzione del software i principi applicabili sono descritti di seguito:
- Ottimizzare il tutto. Il software raramente ha valore in quanto tale ma ha valore perché rende più economico o efficace il lavoro dei suoi consumatori. Per ciò è opportuno individuare il valore che il software apporta quando si integra nei sistemi dei suoi utilizzatori. In ogni caso il valore complessivo del software è dato dalla capacità di essere modificato nel tempo per poter apportare sempre più valore al suo utente anche in diversi contesti d’uso.
- Eliminare gli sprechi. Come già spiegato per spreco si intende tutto ciò che non porta valore ai consumatori del software. Le più grandi sorgenti di sprechi nel software sono: caratteristiche non necessarie; perdita di conoscenza, semilavorati non più utilizzabili, rilavorazioni per difetti scoperti tardi, attese per difetti nella pianificazione dello sviluppo.
- Costruire con qualità. Curare la qualità del sistema software continuamente durante la sua produzione. Dopo aver prodotto una componente è necessario integrarla con il resto delle componenti già prodotte e verificare che sia mantenuta la qualità del sistema, invece che integrare tutte le componenti solo quando sono tutte prodotte e validate.
- Apprendere costantemente. Creare conoscenza scientifica circa l’efficacia di un linguaggio, di pattern architetturali, di modelli di interfaccia e così via; formalizzarla in modo da essere riusata quando è necessario. Analizzare continuamente i feedback delle esperienze degli utenti anche su prodotti o servizi ancora parziali, in modo da rilevare, il più presto possibile, eventuali difetti da ripristinare, sulla base della conoscenza raccolta oppure i bisogni dell’utente che se soddisfatti gli conferirebbero più valore.
- Rimandare le decisioni critiche il più tardi possibile, sia sui prodotti sia sui processi. Questo fa sì che si possa rendere più flessibile il prodotto o il processo; ad esempio se la decisione di quale Data Base Management System (DBMS) utilizzare può essere rimandata all’installazione dell’applicazione significherebbe che siamo riusciti a produrre un’applicazione che può utilizzare diversi DBMS .
- Consegnare rapidamente. Conviene pensare al software come a un flusso continuo di modifiche progettate, realizzate e consegnate. Questo consente di rilevare eventuali difetti rapidamente, quindi senza l’onere di notevoli regressioni, e soddisfare continuamente i clienti.
- Coinvolgere tutti. Il team di sviluppo software è responsabile della scoperta, creazione e conferimento del valore all’utente. Per raggiungere questi obiettivi, tutte le persone del team devono essere coinvolte e consapevoli delle decisioni. Perciò devono essere potenziate con la conoscenza scientifica e partecipare al processo di sviluppo per contribuire alla creazione di valore.
- Migliorare continuamente. Ogni sistema produttivo deve essere migliorato costantemente e continuamente ei miglioramenti devono essere diffusi su tutti i livelli gerarchici dell’impresa.
Una considerazione essenziale che nasce dall’analisi dei principi è che il metodo Lean mette al centro il consumatore del prodotto-servizio, perciò è necessario che l’impresa Lean sia sincronizzata con il mercato. Sincronizzazione significa che la produzione ed erogazione dei prodotti o dei servizi devono avvenire ad un ritmo in linea con le richieste del cliente (interno o esterno) di riferimento, evitando l’accumularsi di semilavorati nello stato di “work in progress”. Questo ha implicazioni che vanno dal processo di sviluppo all’organizzazione dell’impresa.
Sulla base di queste premesse, in contrasto con i processi di sviluppo caratteristici (waterfall, spirale, incrementale ecc.) utilizzati nel periodo in cui prendeva credito il Lean Thinking, sono stati proposti ed hanno avuto successo i processi agili. Questi, infatti, prevedono una stretta collaborazione con gli utenti e i cicli brevi di consegna. I due processi agili che hanno avuto più successo sono l’Extreme Programming Explained (XP) e lo SCRUM. L’XP si focalizza su molte pratiche tecniche che aiutano gli sviluppatori a produrre rilevando rapidamente i difetti così da ridurre i costi per la loro eliminazione. Lo SCRUM non è una metodologia completa, perché carente nelle pratiche tecniche, ma piuttosto uno schema per condurre un processo software sempre con l’obiettivo di frequenti interazioni con l’utente e consegna di semilavorati. Entrambi hanno lo scopo di ottimizzare lo sviluppo software come una delle componenti indipendenti del flusso del valore. Il flusso del valore è costituito dall’insieme delle attività richieste perché il prodotto-servizio acquisisca il valore da conferire ai suoi consumatori; le attività da considerare vanno dal concepimento alla consegna. Considerare lo sviluppo software come una delle componenti indipendenti del flusso del valore, significa che gli sviluppatori hanno la responsabilità di rendere il più efficiente possibile il processo di sviluppo, lasciando la responsabilità del valore all’utente o al responsabile del prodotto. Questa posizione viola diversi principi del Lean Thinking. Con gli anni l’epicentro della creazione del valore per un prodotto-servizio software è cambiato notevolmente: un’impresa Lean tende a creare un ecosistema che consente di rilevare il più presto possibile le necessità dell’utente e i loro cambiamenti nel tempo per poter offrire al mercato soluzioni a bisogni che la concorrenza non soddisfa ancora efficacemente; l’esperienza dell’utente è una componente basilare di questo ecosistema. Allo stesso tempo, questo sistema tende ad usare la continua consegna piuttosto che la consegna a fine progetto, ma ciò richiede che si faccia riferimento ad un’architettura del sistema per poter supportare la modifica dinamica ed il cambiamento continuo. Perciò le pratiche agili risultano essere insufficienti nell’indirizzare i problemi del progetto della soluzione, il progetto dell’interazione con l’utilizzatore, e l’architettura di alto livello del sistema. Essendo il progetto fondamentalmente iterativo così come lo sviluppo, le due discipline soffrono se non sono chiaramente integrate tra loro. E dal momento che i principi dello sviluppo lean si riferiscono a interi prodotti, a completi cicli di vita, esso è candidato a guidare la combinazione di progetto, produzione, consegna e validazione in un unico ciclo con retroazioni da tutte le parti interessate, dagli sviluppatori ai manager ed ai consumatori, per la scoperta e il conferimento del valore
Nel caso specifico di Auriga, essendo un’azienda con molti anni di esperienza, è necessario che anche i modelli di processi più vecchi siano compresi in quest’unico ciclo, per poter essere gradualmente sostituiti con quelli agili, e in particolare lo SCRUM, attraverso un adeguato processo di formazione degli sviluppatori. È comunque scontato che i nuovi progetti, nati secondo l’approccio Lean, siano sviluppati secondo il modello SCRUM, perché già in uso presso AURIGA.
In sintesi, l’organizzazione della Fabbrica Intelligente e la sua interazione con le altre unità organizzative di AURIGA è mostrata in figura, dove sono rappresentati i flussi principali di informazioni, tutti supportati da tecnologie ICT.
Innanzitutto va notato che le sollecitazioni all’innovazione dei prodotti possono provenire sia dai consumatori che rivelano nuovi bisogni o relativi cambiamenti, sia dai fornitori che propongono nuove macchine o strumenti o evoluzioni di macchine o strumenti già sul mercato con caratteristiche che possono migliorare le prestazioni dei software prodotti da AURIGA o estendere l’offerta di AURIGA. In ultima analisi, quindi, la qualità dei servizi. Le informazioni elicitate da entrambe le fonti generano necessità di cambiamenti per i sistemi, poi comunicate alla produzione. La rilevazione delle informazioni avviene attraverso sensori di vario tipo distribuiti sia sul mercato sia tra i fornitori. I sensori devono essere studiati adeguatamente perché devono essere quanto più possibile automatici, per rendere sia affidabili che economici i dati che rilevano Nonostante questo impegno, è facile prevedere che alcuni sensori debbano essere umano-centrici, come la rilevazione delle richieste di assistenza degli operatori bancari: in questo caso lo studio del sensore deve curare il processo con cui esso deve funzionare e comunicare i dati ai sistemi che li devono elaborare. La elaborazione dei dati e la loro trasformazione in specifiche dei cambiamenti da realizzare, è eseguita dalla Front Line in collaborazione con la Produzione. La Front Line è la esemplificazione di un insieme di attori che vanno dall’ assistenza al cliente, al marketing o all’amministrazione, e ha la missione di ricercare dei possibili valori, considerando non solo il software ma tutto il sistema (comprese le macchine su cui il software è in esercizio) che costituisce il prodotto-servizio per il cliente. In particolare gli attori che partecipano a questo ecosistema non devono avere competenze verticali per contribuire all’ eliminazione degli sprechi e alla sincronizzazione con il mercato. Per esempio l’assistenza nella front-line cerca di risolvere completamente il problema eventualmente posto da un consumatore senza passare all’assistenza di secondo livello. Le modifiche specificate passate alla produzione sono realizzate con piccoli cicli così da consegnare rapidamente le nuove versioni. La realizzazione è supporta dalla Fabbrica delle Conoscenze dove sono accumulate le conoscenze scientifiche derivate da progetti precedenti e dalla Ricerca e Sviluppo: queste servono a prendere decisioni su soluzioni alternative per scegliere quelle più efficaci qualitativamente. Lungo tutti i processi della Produzione sono distribuiti sensori che rilevano dati che sono elaborati e trasformati in conoscenza, a sua volta accumulata nella Fabbrica di Conoscenza. Pertanto l’ecosistema interaziendale si estende anche alla produzione e l’impresa apprende continuamente aumentando il suo patrimonio di conoscenza. La Front Line, con la sua capacità di elaborazione dei dati, è in grado di sincronizzarsi con il mercato anche rilevando nuove prospettive che generano valori non posseduti dai prodotti concorrenti. Queste nuove prospettive fanno partire progetti di Ricerca e Sviluppo dei Prodotti per innovazioni di prodotto. Lo sviluppo di questi prodotti avviene con processi diversi da quelli normalmente utilizzati dalla produzione perché, per esempio, non possono avere continue interazione con gli utilizzatori se non a prodotto concluso, per motivi di segretezza industriale. Ovviamente anche questa produzione, seppure sperimentale, interagisce con la Fabbrica della Conoscenza, per mantenere i livelli di ottimizzazione, eliminazione degli sprechi e tempestività nella consegna del resto dell’azienda. La Front Line rileva le prospettive di qualità dei prodotti che possono provenire o da proposte dei fornitori o da segnali rilevati dalle interazioni con i clienti: queste prospettive sono elaborate dalla Ricerca e Sviluppo Tecnologico che garantisce il continuo miglioramento della qualità dei processi e dei prodotti. Per quest’ultimo obiettivo la Front Line interagisce con la Ricerca e Sviluppo dei Prodotti per eventuali prodotti innovativi. È il caso di rilevare come l’ecosistema che si costituisce in AURIGA consente di coinvolgere tutti nella costruzione dell’offerta e del posizionamento competitivo di AURIGA.