Caratteristiche e funzionamento dei Legacy system e Applicazioni Legacy
Si definisce Legacy system un sistema informativo di valore ereditato dal passato. I concetti fondamentali sono appunto “di valore” (cioè critico per il business dell’organizzazione) e “ereditato dal passato” (generalmente 5 anni o più, ma comunque già operativo nel momento in cui lo si prende in considerazione).
Altre definizioni di sistema legacy sono le seguenti:
- “Grandi sistemi software con cui non si vorrebbe avere a che fare ma che sono vitali per l’organizzazione”,
- “Ogni applicazione in produzione”
- “Ogni sistema informativo che resiste alle modifiche ed evoluzioni necessarie per tener dietro ai nuovi e mutevoli requisisti di business dell’organizzazione”.
Le caratteristiche fondamentali di un Legacy System sono:
- È un sistema fondamentale per l’operatività dell’organizzazione; inoltre spesso è pesantemente utilizzato essendo mission-critical e dovendo quindi rimanere generalmente operativo al 100% e 24 ore su 24;
- Su di esso l’organizzazione ha pesantemente investito nel corso degli anni, e quindi non può essere semplicemente accantonato così com’è;
- È composto da moltissime righe di codice (anche centinaia di migliaia).
- Spesso il suo primo nucleo risale ad oltre un decennio fa ed è quindi progettato secondo vecchie concezioni;
- È scritto in linguaggio di vecchia generazione;
- È supportato da un DBMS obsoleto (ad es. database IMS Information Management System di IBM), sempre che esista un DBMS e non si faccia ricorso al file system (file VSAM Virtual Sequential Access Method);
- Le interfacce utente sono quelle a caratteri (terminali 3270 o 5250) e non grafiche,
- Le applicazioni che lo compongono sono prevalentemente monolitiche, ognuna è stato progettata e realizzata indipendentemente dal resto e quindi il sistema presenta un’integrazione prevalentemente verticale. Strutturalmente tale software applicativo è tipicamente suddiviso in transazioni (una funzione utente scritta in COBOL) usabili contemporaneamente da più utenti;
- Non è ben documentato ed è difficile da comprendere, in quanto, quasi sempre, la documentazione non è aggiornata con le modifiche che sono state via via apportate al software;
- Il sistema può essere considerato come un repository di anni di esperienza e pratiche aziendali non esplicitamente documentate, ma presenti e “immerse” nel codice stesso del legacy;
Dal punto di vista del trattamento, le applicazioni Legacy possono essere classificate come:
- Altamente decomponibili, sono ben strutturati e presentano alcune caratteristiche fondamentali:
- I componenti applicativi sono separabili in logica di presentazione, logica applicativa e logica d’accesso ai dati, cioè il software è decomposto in tre livelli logici.
- I moduli applicativi sono indipendenti tra di loro (non ci sono interdipendenze gerarchiche).
- I moduli applicativi hanno interfacce ben definite con i servizi di database, quelli di presentazione e le altre applicazioni.
- Data decomponibili, sono sistemi cosiddetti “semistrutturati” con le seguenti caratteri stiche fondamentali:
- I componenti applicativi sono separabili in due livelli: i servizi d’accesso ai dati e quelli di presentazione e logica applicativa (fusi in un unico blocco).
- I moduli applicativi hanno interfacce ben definite verso le altre applicazioni. In questi sistemi è possibile accedere direttamente ai dati, ma non alla logica applicativa.
- Program decomponibili, sono anch’essi “semistrutturati” con le seguenti caratteri stiche:
- I componenti applicativi sono separabili in due livelli: i servizi di presentazione e quelli d’accesso ai dati e logica applicativa (fusi in un unico blocco).
- I moduli applicativi hanno interfacce ben definite verso le altre applicazioni.
In questi sistemi non è possibile accedere direttamente ai dati, ma è necessario invocare delle funzioni predefinite (tipicamente una transazione). In questa categoria rientrano la maggior parte delle applicazioni legacy.
- Monolitici (non strutturati), sono sistemi in cui tutti i componenti appaiono come un unico blocco in cui tutti i tre livelli logici sono fusi insieme. Generalmente a questi sistemi si può accedere solo attraverso l’invocazione da terminale.
Molte applicazioni in realtà hanno un’architettura che è una combinazione di queste quattro. Dal punto di vista della facilità di trattamento, i Legacy System possono essere distinti in:
- Ostili: sono quelli che non permettono la possibilità di interfacciamento con l’esterno.
- Trattabili: l’interfacciamento con altri sistemi risulta possibile con un certo sforzo di programmazione e tecnologie ad hoc.
- Amichevoli: l’interfacciamento con l’esterno è facilmente attuabile.
È evidente che i sistemi del primo tipo sono amichevoli, quelli Data/Program decomponibili risultano trattabili, mentre quelli dell’ultimo tipo rimangono ostili.