In Informatica si parla spesso di Analisi e Programmazione, ma raramente di Architetture Software, eppure spesso è quest’ultima a fare la differenza tra un buon software e un software zoppicante.
Questa è la definizione da dizionario :
L’architettura software è l’organizzazione fondamentale di un sistema, definita dai suoi componenti, dalle relazioni reciproche tra i componenti e con l’ambiente, e i principi che ne governano la progettazione e l’evoluzione. Questa definizione deriva dallo standard IEEE 1471-2000.
Ma cosa è veramente ?
Se dobbiamo fare un programmino, innanzitutto pensiamo cosa deve fare, come deve farlo e quanto tempo si deve impiegare per crearlo, allora progettiamo l’interfaccia utente, facciamo una piccola analisi per i dati che dobbiamo utilizzare e poi cominciamo a realizzarlo.
Cosa diversa è se dobbiamo creare un applicativo più complesso, allora non basteranno più queste fasi, ma dobbiamo pensare a come far dialogare i vari programmi fra loro.
Poi se dobbiamo realizzare una piattaforma che possa ospitare svariati programmi, allora occorre pensare a qualcos’altro, poichè occorre pensare a una struttura decisamente più complessa.
Nella mia carriera ho dovuto realizzare alcune volte delle nuove Architetture Software, prima per un applicativo per Windows, poi di nuovo per Windows ed infine per il Web.
Cosa occorre a una piattaforma software che possa ospitare svariati programmi ?
- Gestione degli Utenti che possono accedere alla procedura.
- Gestione dei Programmi presenti nella procedura.
- Gestione del Menu ed assegnazione di questi agli utenti.
- Gestione dei Database della procedura.
- Se si tratta di software gestionale anche la Gestione delle Aziende.
- Se necessaria Gestione del Log di accessi alla procedura.
- Gestione della personalizzazione dell’interfaccia utente.
Occorre pensare, quindi, a tutte queste cose e devono interagire uno con l’altro.
Una piattaforma software deve durare parecchi anni e deve soddisfare tantissime esigenze ed una volta realizzata può essere integrata con nuove funzionalità, ma assolutamente non può essere rifatta in corso d’opera, altrimenti tutti i programmi che si appoggiano ad essa potrebbero non funzionare più.
Quindi l’analisi di questa struttura non deve essere assolutamente sbagliata, e deve essere molto solida e sicura.
Cominciamo a pensare agli Utenti finali della procedura, oltre a dati relativi al profilo (Nome, Cognome, EMail, Indirizzo, Ecc.) occorre pensare come collegarli ai menu e come gestirli all’interno di un programma.
Tipicamente un Utente avrà dei privilegi a seconda delle responsabilità che gli sono state assegnate.
Facciamo un esempio, un impiegato dell’Ufficio Contabile (Impiegato1) dovrà essere abilitato alla registrazione della Prima Nota Contabile, mentre un impiegato del Magazzino (Impiegato2) addetto alla Spedizione dovrà essere abilitato alla Gestione delle Spedizioni del Magazzino.
Degli impiegati dell’Ufficio Contabile, ce ne sarà uno (Impiegato3) che dovrà gestire oltre alla Contabilità anche alla Gestione del Magazzino.
Come assegnare questi diritti e quali programmi potranno utilizzare ?
La risposta è la Gestione dei Ruoli.
Un Ruolo è una categoria con cui assegnare privilegi ad un determinato gruppo di Utenti.
Ogni Utente potrà appartenere a uno o più Ruoli, e la somma dei privilegi di ciascun ruolo assegnato determina l’operatività dell’Utente.
Nell’esempio precedente, si genereranno 2 Ruoli : Gestore Ufficio Contabile (Ruolo1) e Gestore Magazzino (Ruolo2).
L’Impiegato1 apparterrà al Ruolo Ruolo1, l’Impiegato2 al Ruolo Ruolo2, e l’Impiegato3 ai Ruoli Ruolo1 e Ruolo2.
Come assegnare a ciascun Utente quali programmi potrà utilizzare ?
Cominciamo a progettare come identificare i vari programmi della procedura e come saranno utilizzabili in un Menu Gerarchico.
Ogni Programma lo identifichiamo con ID, con una Descrizione, con una Immagine per il menu, con una Descrizione per il Tooltips, con una Categoria per rintracciarli velocemente.
Ogni Programma deve poter essere identificato anche come una Voce di Menu, che può contenere al suo interno altre voci di Menu o Programmi.
La Gestione dei Menu deve permettere la creazione della struttura di Menu e Programmi che possono essere utilizzati dagli Utenti.
Una volta creata la struttura dei Menu, è possibile assegnarli a ciascun Ruolo.
Attenzione ai Ruoli e non agli Utenti direttamente, proprio per assicurare questo grado di astrazione tra gli utenti e i menu.
Il vantaggio di questo collegamento è che è facile collegare le voci del menu ad un gruppo operativo.
Poi basterà aggiungere a ciascun Utente i vari Ruoli che competono loro.
A questo punto abbiamo gli Utenti che sono collegati a uno o più Ruoli che sono collegati alle varie voci del Menu.