Riusabilità del software - Catalogo delle applicazioni – Gestione ICT Applicazione: GAS - Gestione AcceSsi Amministrazione: Consiglio Nazionale delle Ricerche (CNR) Responsabile dei sistemi informativi Nome e cognome: ing. Maurizio Lancia Indirizzo: Piazzale Aldo Moro 7 00185 Roma Tel: 06-49931 e-mail: [email protected] Referente/i di progetto Nome e cognome: Aurelio D’Amico Indirizzo: Piazzale Aldo Moro 7 00185 Roma Tel: 06-49931 e-mail: [email protected] Referente/i amministrativo / Descrizione GAS è un server per la gestione centralizzata dei meccanismi di autorizzazione di applicazioni eterogenee. Il sistema permette di definire profili utente ai quali associare diritti di accesso alle funzionalità. L’interfaccia di amministrazione è di tipo web. Contesto L’Ufficio Sistemi Informativi del CNR sviluppa e gestisce diverse applicazioni con interfaccia web basate sulla piattaforma JEE. Per ciascuna di esse è stato necessario implementare meccanismi di profilazione degli utenti e di gestione dei diritti di accesso. In molti casi tali meccanismi rientrano nel paradigma alla base del design pattern “Role Based Access Control”. Per questo motivo si è pensato di sviluppare un server centralizzato, basato su tale design pattern, in grado di offrire a più applicazioni il servizio di gestione dei profili. Il sistema è basato sui concetti di • • • “risorsa”, ovvero una generica entità sulla quale si possono avere diritti di accesso, “ruolo”, ovvero un insieme di diritti di accesso a risorse, “gruppo”, ovvero un insieme di ruoli. Gli utenti sono associati ai gruppi e da questi ereditano i ruoli. Il sistema permette anche di gestire le informazioni necessarie per la composizione a run time dei menù utente. Data primo rilascio 20/maggio/2008 Data ultima modifica 09/luglio/2008 Parametri dimensionali Per lo sviluppo dell’applicazione Gestione AcceSsi sono stati utilizzati i seguenti linguaggi: • • Java, per la logica di business (EJB 3.0); JSP, HTML, CSS, Javascript ed XML per la parte di interfaccia web. Per l’accesso alla base dati sono stati utilizzati gli strumenti messi a disposizione da EJB3. Ciò ha permesso di limitare l’utilizzo di SQL ai soli script di creazione delle strutture di data base. Di seguito è riportato un riepilogo dei volumi, espressi in termini di function point. Volumi Linguaggio Volume applicativo (FP) css 59 htm 0 html 34 java 192 js 22 jsp 191 sql 29 xml 39 Totale 565 Realizzatore L’applicazione è stata realizzata interamente utilizzando personale dell’Ufficio Sistemi Informativi. Tipologia applicazione software Sviluppo custom in toto Documentazione disponibile • • Class diagram UML Data model Area applicativa Gestione ICT Procedure amministrative e/o servizi supportati Servizio di gestione centralizzata dei profili utente. Dominio applicativo Role Based Access Control Funzione applicativa • • • • Applicazioni Accessi o Risorse o Menu Permessi o Ruoli o Gruppi Utenti o gestione o ricerca Architettura software L’applicazione è basata sull’architettura a multi-livello ( vd. Figura 1), tipica dei sistemi enterprise. Al livello client è utilizzato un semplice web browser che renderizza pagine html generate dinamicamente nel sottostante livello web, basato su pagine JSP e servlet gestite da un web container. Al livello della logica di business sono utilizzati EJB session, per l’implementazione dei processi, e Java Data Object per l’accesso ai dati, il tutto gestito tramite Application Server JEE compliant. Il livello Enterprise Information Systems è basato su data base relazionale. Il sistema può utilizzare indifferentemente qualunque RDBMS server supportato dalla tecnologia JDO. L’architettura del sistema è basata su design pattern consolidati. L’interazione con l’utente, ad esempio, è basata sul pattern “Model View Controller”, implementato mediante il framework Stripes. Qualunque combinazione “Application Server/Web container” JEE compliant può essere utilizzata, così come qualunque RDBMS può gestire i dati dell’applicazione. L’infrastruttura di produzione del CNR utilizza i seguenti ambienti software: • • • Application server JEE: JBoss RDBMS: PostgreSQL Web container: Tomcat. Architettura hardware Il sistema può essere installato anche su una sola macchina ma si consiglia di avere uno o più server in configurazione a bilanciamento di carico che funzionino da front-end web, sui quali sia installato un’application server JEE compliant, e due o più macchine in configurazione “standard hardware fai lover” con funzione di data base server. I dati possono essere conservati su disk array condiviso dai DB server. Architettura TLC L’accesso alla sottorete cui sono collegati i server è protetto da un Firewall Stonegate, che effettua il bilanciamento di carico sugli application server in base al loro livello di utilizzo. Tutte le macchine sono collegate ad una LAN Gigabit Ethernet. I db server sono connessi al dispositivo di storage tramite collegamento ridondato in fibra ottica. La sede centrale del CNR, dove è gestito l’hosting dell’applicazione, dispone attualmente di un collegamento a 100 MB con GARR-G. Sistemi operativi Qualunque sistema operativo per il quale sia disponibile il JEE SDK può essere utilizzato. Nell’ambiente di hosting del CNR è utilizzato Red Hat Enterprise Linux 4.0. Middleware Qualunque application server/web container JEE compliant. Nell’ambiente di hosting del CNR sono utilizzati JBoss Application Server + Tomcat web container. Linguaggi Java per la logica di business (EJB 3.0) e l’accesso ai dati; JSP, HTML, Javascript ed XML per la parte di interfaccia web; SQL per la definizione delle strutture dati. Librerie esterne L’applicazione utilizza alcune librerie open source, tra cui quelle del frame work Stripes. Protocolli di comunicazione TCP/IP DBMS Qualunque RDBMS supportato dal frame work Hibernate. Nell’ambiente di produzione del CNR attualmente è utilizzato PostgreSQL ma l’applicazione non è vincolata ad una particolare marca di RDBMS. Case Poseidon UML, Eclipse. Standard utilizzati Sviluppo component-based aderente alla specifica JEE (JSP, EJB, servlet, etc.). Tipologia del ciclo di sviluppo Processo di sviluppo agile di tipo prototipale/iterativo (vd Figura 2). Portabilità Il sistema può essere eseguito su qualunque combinazione “Application Server JEE/Web Container JEE/RDBMS”. Conseguentemente non ci sono vincoli sul sistema operativo, se non la disponibilità di almeno una combinazione del tipo succitato. Affidabilità Sistema robusto con basso numero di segnalazioni per problemi tecnici. Manutenibilità La modularità dell’architettura e l’impiego diffuso di design pattern consente a risorse dotate di adeguate competenze di mantenere il sw con un basso livello di difficoltà. Funzionalità Piena rispondenza ai requisiti utente in tutte le condizioni di esercizio. Usabilità Il livello di usabilità è buono per le caratteristiche tecniche; l’interfaccia utente è stata progettata tenendo conto di tutti i suggerimenti e le richieste degli sviluppatori delle applicazioni candidate per l’uso di GAS come server centralizzato di autorizzazione. Livello di documentazione Documentazione finale in preparazione. Livello di modularizzazione Alto livello di modularizzazione. Iniziative di riuso in corso / Iniziative di riuso realizzate / Punti di forza • • • • • • Piena proprietà dei diritti sul codice da parte del CNR, adozione di standard aperti, architettura applicativa modulare, portabilità, utilizzo di design patterns, disponibilità di competenze all’interno del CNR. Elementi di criticità / Vincoli La personalizzazione dell’applicazione richiede competenze sulle tecnologie adottate per lo sviluppo. Modalità di riuso consigliate L’applicazione si presta ad un riuso tipo cessione semplice.