EUCIP Core Build è una delle tre aree fondamentali di EUCIP Core, la certificazione di base che consente l'accesso alla certificazione di uno dei 21+1 profili professionali individuati nel campo dell'ICT. La certificazione delle conoscenze degli argomenti EUCIP Core si ottiene superando tre esami, uno per ogni area (Plan, Build, Operate), gestiti in Italia dall'Associazione italiana per l'informatica ed il calcolo automatico (AICA). I contenuti vengono individuati dal CEPIS (Council of European Professional Informatics Societies), organismo europeo senza fini di lucro che riunisce trentasei associazioni di informatica, tra cui AICA, in rappresentanza di trentuno paesi europei.

Gli argomenti sono raccolti nel syllabus che descrive in dettaglio ciò che il candidato deve sapere per conseguire la certificazione EUCIP Core. In particolare, nell'area Build vengono raccolti tutti gli aspetti relativi alla realizzazione e al miglioramento dei sistemi informativi: il processo di sviluppo dei sistemi, la gestione delle basi di dati, la progettazione software, la cura degli aspetti grafici.

Metodologie per lo sviluppo di sistemi In questa parte vengono descritti gli aspetti relativi allo sviluppo di sistemi informativi. Software applicativo e software di sistema Il software è l'insieme dei programmi che permettono ai componenti fisici del computer di svolgere determinati compiti. I programmi sono sequenze di istruzioni, eseguite dall'elaboratore secondo un ordine prestabilito, che producono soluzioni a determinati problemi. Si distinguono due categorie fondamentali di software: Software di sistema e Software applicativo.

Rifacendosi ad un'organizzazione a livelli, il software di sistema (software di base) si trova ad un livello basso, vicino alle risorse fisiche della macchina che li esegue, mentre il software applicativo sta ad un livello più alto, lontano dall'hardware e più vicino all'utilizzatore.

L'esempio più comune di software di sistema è il sistema operativo, che è un programma che fa funzionare i vari componenti del computer e permette all'utente di interagire con l'elaboratore.

I software applicativi realizzano funzionalità specifiche direttamente per l'utente:

applicativi d'uso generale: elaborazioni testi, fogli elettronici ecc. applicativi per lo sviluppo: assemblatori, compilatori, debugger, interpreti ecc. applicativi gestionali: contabilità, magazzino ecc. applicativi d'uso professionale: progettazione CAD ecc. editoria e multimedialità: elaborazioni di immagini, video, audio ecc. applicativi per intrattenimento: giochi, player audio/video ecc.

Principi e metodologie per lo sviluppo di sistemi Dal punto di vista produttivo il software, come ogni prodotto commerciale, vive le varie fasi di evoluzione del suo mercato. Il suo ciclo di vita generalmente prevede le fasi di analisi, progettazione, sviluppo, verifica e validazione, rilascio, manutenzione.

Nella fase di analisi viene definito ciò che deve essere fatto specificando funzionalità e requisiti che il sistema dovrà possedere; nella fase di progettazione vengono specificate le modalità di sviluppo e la struttura che il sistema dovrà avere; lo sviluppo consiste nell'implementazione del sistema; la verifica e la validazione consentono le verifiche di conformità e di congruenza con le specifiche richieste; il rilascio consiste nella consegna e conseguente installazione del prodotto; la manutenzione prevede le modifiche successive al rilascio.

Esistono alcuni modelli di riferimento nello sviluppo del software: Il modello a cascata prevede la concatenazione a sequenza delle varie fasi del ciclo di vita. Ogni fase è legata alla precedente e il passaggio da una fase all'altra prevede un'attività di revisione ed approvazione alla quale partecipano gli autori dell'attività stessa e quelli dell'attività successiva (design review). Il modello a spirale utilizza il concetto di prototipo (sviluppo parziale del prodotto). Il prototipo viene raffinato di volta in volta con uno scambio continuo tra committente e fornitore. Il modello a prototipazione sfrutta, come il modello a spirale, un prototipo al fine di offrire al cliente un prodotto intermedio su cui confrontare le proprie esigenze. La differenza con il modello precedente è che il feedback non avviene di continuo, ma a date prefissate. Nel modello a rilasci incrementali i prototipi vengono gradualmente sostituiti con un altri con funzionalità sempre maggiori.

Strumenti per lo sviluppo di sistemi

Per gestire le attività inerenti allo sviluppo di sistemi si ricorre spesso a strumenti software denominati CASE (Computer-Aided Software Engineering) che, attraverso varie funzionalità, supportano tutte le fasi della produzione del software.

Spesso vengono utilizzati più prodotti CASE nell'ambito di un progetto, gli upper CASE tools, che si adattano meglio alla gestione dei requisiti della progettazione, e i lower CASE tools, più adatti nelle fasi di programmazione, debugging e testing.

Collaudo del software e del sistema Secondo l'ANSI (American National Standards Institute) la verifica di un sistema software comprende le attività di "revisione, ispezione, collaudo, prova formale e indagine che definiscono ed attestano come gli oggetti, i processi, i servizi e i documenti siano conformi ai requisiti specificati".

La revisione è l'attività di valutazione dello stato del progetto che consente l'individuazione dei punti deboli e l'analisi delle possibili soluzioni. La rintracciabilità consente la definizione dei legami tra le varie parti del progetto e i requisiti richiesti. La prova formale serve a dimostrare da un punto di vista logico-matematica la correttezza del software. Il collaudo è il test del sistema su tutte le sue funzionalità per valutare la corrispondenza tra i risultati effettivi e quelli attesi.

Implementazione di sistemi L'implementazione di un sistema software richiede l'intervento di un programmatore o di un team di programmazione e prevede la traduzione in codice di linguaggio di programmazione degli algoritmi sviluppati in fase di progettazione. La codifica avviene in genere con l'ausilio di tool specifici che rendono più agevole il lavoro. Per la scrittura del codice vengono utilizzati editor di testo, il codice viene poi tradotto in linguaggio macchina attraverso i compilatori, il programma compilato viane poi testato attraverso i debugger.

Controllo e sicurezza dei sistemi Secondo le norme ISO, un sistema software deve assicurare "la protezione dei dati e delle risorse di calcolo in termini di integrità, riservatezza e disponibilità."

L'integrità garantisce la protezione dei dati da alterazioni accidentali o dolose, la riservatezza dovrebbe garantire la segretezza delle informazioni, la disponibilità è riferita alla messa a disposizione dell'utente autorizzato di tutte le informazioni e tutte le funzionalità alle quali è abilitato.

Gestione dei dati e basi di dati Con il termine basi di dati (database) si indicano in informatica gli archivi di dati, organizzati attraverso tecniche di modellazione e gestiti sulle memorie di massa dei computer attraverso applicazioni software definite database management system (DBMS). Dati e transazioni Le basi di dati vengono utilizzate prevalentemente per lo sviluppo di applicazioni gestionali. I database devono essere accessibili sia in lettura che in scrittura, dunque modificabili. Il risultato dell'operazione di modifica dei dati (transazione), se va a buon fine, deve essere permanente (commit) in caso contrario deve essere garantito il ripristino dello stato precedente l'inizio della transazione (rollback).

I DBMS supportano la registrazione delle transazioni alle quali forniscono le caratteristiche riassunte nell'acronimo ACID: Atomicity Consistency Isolation Durability. L'atomicità (atomicity) è la caratteristica che rende la transazione indivisibile, cioè le consente di giungere a un completamento valido (commit/rollback); la coerenza (consistency) è assicurata dalle regole sulle modalità di aggiornamento dei dati che devono impedire errori o incongruenze; l'isolamento (isolation) evita l'accesso simultaneo agli stessi dati da parte di transazioni separate evitando situazioni di conflitto; la persistenza (durability) deve garantire la possibilità di ripristino di "stati precedenti" in caso di malfunzionamenti o guasti del sistema.

Modelli di dati La progettazione di DBMS viene trattata su tre livelli separati: livello fisico, livello concettuale, livello vista utente. Il livello fisico (physical level) riguarda la modalità di memorizzazione dei dati dal punto di vista fisico, il livello concettuale (conceptual level) si occupa della struttura delle informazioni e delle relazioni tra i dati, il livello vista utente (view level) riguarda le modalità attraverso le quali gli utenti accedono ai dati. Attraverso il livello concettuale gli archivi di dati vengono modellati attraverso opportuni schemi e le varie entità identificate vengono messe in relazione tra di loro secondo le necessità. Tra i modelli più diffusi nella progettazione concettuale: il modello E-R (entità/relazioni) individua gli oggetti che compongono la realtà da modellare (entità), gli attributi che caratterizzano le entità e le associazioni che individuano le correlazioni logiche tra le entità; è un modello per la rappresentazione concettuale dei dati ad un alto livello di astrazione; il modello gerarchico, definito durante la prima fase di sviluppo dei DBMS, si basa sull'uso di strutture ad albero; il modello reticolare, standardizzato successivamente al modello gerarchico, si basa sull'utilizzo di grafi; il modello relazionale consente di organizzare i dati in insiemi di record a struttura fissa, si basa sull'algebra relazionale e sulla teoria degli insiemi ed è strutturato attorno al concetto di relazione; il modello a oggetti rappresenta l'evoluzione del modello relazionale ed estende alla basi di dati il paradigma della OOP (Object-oriented programming).

Data warehouse e data mining L'esistenza di differenti database in un'unica azienda, a volte implementati con tecnologie diverse, può rendere necessario un incrocio dei dati tra i vari oggetti al fine di ricavare informazioni più dettagliate e/o integrazioni ai dati già esistenti. Le operazioni di incrocio delle varie fonti vengono dette di data wharehousing e le successive analisi dei nuovi dati data mining. Un data warehouse, quindi, è un sistema che serve a localizzare, estrarre, trasformare e caricare i dati provenienti da varie fonti. Il data mining utilizza i dati estratti con il data warehousing al fine di produrre analisi sempre più dettagliate.

I database relazionali Un database relazionale è costituito da più tabelle. Ogni tabella, composta da righe e colonne, rappresenta le informazioni relative a un insieme di soggetti (es. clienti, fornitori, libri, prodotti ecc.). Ogni riga (record) contiene i dati relavi a un soggetto, le colonne (campi) rappresentano le singole informazioni del soggetto. Per identificare univocamente un soggetto si utilizza un campo con caratteristiche di univocità (chiave primaria). Le tabelle possono essere poste in relazione tra di loro utilizzando i contenuti di colonne che esistono in entrambe.

Interrogazioni e rapporti L'interrogazione, ovvero la lettura e la gestione dei dati dei database, avviene attraverso l'algebra relazionale o il linguaggio SQL (structured query language). L'algebra relazionale, in quanto linguaggio procedurale, può necessitare di più passaggi per arrivare a un risultato; il linguaggio SQL, non procedurale, permette, in genere, con un singolo comando di ottenere il risultato atteso. Tra le varie operazioni possibili con il linguaggio SQL: create, drop, alter per la creazione, cancellazione e modifica delle tabelle; insert, delete, update per inserire, eliminare, modificare record; grant, revoke per assegnare o revocare privilegi agli utenti.