(System) Integration
Per parlare di System Integration, proviamo intanto a darne una definizione che delimiti il campo di applicazione. Chiamiamo System Integration quell’attività che consiste nel progettare e realizzare un sistema informatico a partire da componenti già esistenti. Il concetto di “componente” è peraltro molto generico: può essere un prodotto già esistente, un sottosistema già completo, una libreria già scritta.
Chiamiamo dunque sistema informatico integrato un sistema in cui i diversi componenti dialogano tra loro e che visto dall’esterno viene percepito come unitario.
Non ci sarebbe neppure bisogno di esplicitare il concetto di System Integration se si trattasse di ingegneria meccanica anziché di ingegneria del software. Nessuno immagina di progettare un’automobile senza conoscere prima i componenti già disponibili e senza utilizzare poi quelli più adeguati agli obiettivi del progetto. Nell’industria automobilistica e nell’uso corrente si parla proprio di “componentistica”.
Nell’industria del software le cose si complicano, intanto proprio perché non c’è la consapevolezza di considerare il software (anche) industria. Prevale il mito del garage, del programmatore geniale e solitario, dell’applicazione dirompente.
Eppure quando si elabora un progetto ci si pongono (e ci si debbono porre) sempre le stesse domande: per caso quello che occorre
- già esiste? E quanto costa?
- può essere adattato da qualcosa che già esiste? E quando costa questo adattamento?
- può essere ottenuto mettendo insieme pezzi che già esistono? E quanto costa questa integrazione?
- può essere ottenuto mettendo insieme pezzi che già esistono e pezzi realizzati “ad hoc”? E quanto costa questa diversa integrazione?
- deve essere realizzato integralmente? E quanto costa questa realizzazione?
Nell’informatica attuale l’ultimo caso (con gran dispiacere del mito) è molto raro. Ma ciò che si deve intendere per “progettare” è proprio scegliere tra le molte soluzioni possibili quella che meglio risponde ai vincoli funzionali, di risorse, di costi e di tempi.
Ma quando si lavora ad un progetto informatico non c’è solo la materia prima, più o meno elaborata, non c’è solo il software; ci sono soprattutto committenti, fornitori, collaboratori, utenti, tutte persone con una loro prospettiva e con un ruolo fondamentale nella realizzazione e nel successo del progetto. Avere la responsabilità di un progetto (essere un “project manager”) significa (oltre gli obiettivi, i costi, le scadenze) porsi in ascolto ed in dialogo con tutti, fare sistema con tutti.
Allora occorre forse modificare la definizione di System Integration per allargarne il campo di applicazione. Chiamiamo (System) Integration quell’attività che consiste nel realizzare una comunità d’intenti tra i diversi attori del progetto per ottenere un sistema informatico che sia soddisfacente per tutti.