ISTRUZIONE E FORMAZIONE TECNICA SUPERIORE SETTORE I.C.T. Information and Communication Technology TECNICO SUPERIORE PER LO SVILUPPO DEL SOFTWARE STANDARD MINIMI DELLE COMPETENZE TECNICO PROFESSIONALI TECNICO SUPERIORE PER LO SVILUPPO DEL SOFTWARE DESCRIZIONE Il Tecnico superiore per lo sviluppo del software opera e collabora nelle attività di analisi e progettazione, manutenzione evolutiva e collaudo delle soluzioni software, sulla base delle specifiche individuate utilizzando le metodologie più appropriate; contribuisce alle fasi di sviluppo, individuando gli strumenti più opportuni alla realizzazione delle applicazioni software. ATTIVITA’ PROFESSIONALI FONDAMENTALI • collabora nelle attività di individuazione e formalizzazione dei requisiti del software, in termini funzionali ed architetturali; • partecipa alle attività di pianificazione e progettazione del software di base e applicativo; • interviene nelle fasi di individuazione e selezione degli strumenti e delle metodologie per la conduzione delle attività di analisi, progettazione e sviluppo del software; • contribuisce alle fasi di sviluppo del software applicativo, anche utilizzando metodologie volte all’integrazione per componenti software; • collabora nelle operazioni di installazione e configurazione del software realizzato; • partecipa alle attività di collaudo, gestione tecnica, manutenzione e assistenza del software realizzato TECNICO SUPERIORE PER LO SVILUPPO DEL SOFTWARE UNITÀ CAPITALIZZABILE N° 1 1 - Individuare e formalizzare i requisiti del software A – STANDARD MINIMO DELLE COMPETENZE Il soggetto è in grado di: 1. 2. 3. 4. 5. scambiare informazioni con il cliente, al fine di individuare i requisiti utente; modellare i requisiti utente in maniera formale per i dati e le transazioni; valutare per grandi linee il costo di sviluppo di un’applicazione software; redigere documenti di analisi; utilizzare Computer-Aided Software Engineering (CASE) per la gestione dei requisiti; 6. utilizzare linguaggi e metodi di descrizione e catalogazione delle informazioni. 1. Per scambiare informazioni con il cliente al fine di individuare i requisiti utente, il soggetto ha bisogno di sapere come: • • • • usare modelli strutturati di interazione con il cliente; interpretare le richieste del cliente; identificare i requisiti utente; valutare i requisiti utente. 2. Per modellare i requisiti utente in maniera formale per i dati e le transazioni, il soggetto ha bisogno di sapere come: • applicare i principi standard della raccolta di requisiti; • descrivere con metodologie e strumenti formali i requisiti utente per i dati di un sistema software; • descrivere con metodologie e strumenti formali i requisiti utente per le funzioni di un sistema software. 3. Per valutare per grandi linee il costo di sviluppo di una applicazione software, il soggetto ha bisogno di sapere come: • definire i principali parametri che determinano il costo di un progetto software; • identificare i punti critici dello sviluppo di un progetto software, relativamente ai costi e/o al tempo di sviluppo. TECNICO SUPERIORE PER LO SVILUPPO DEL SOFTWARE 4. Per redigere documenti di analisi, il soggetto ha bisogno di sapere come: • definire i processi e i flussi di dati che soddisfano i requisiti a partire dalle specifiche; • rappresentare il comportamento dei processi; • definire esplicitamente tutti i dati del modello, sia esogeni che endogeni. 5. Per utilizzare software CASE per la gestione dei requisiti, il soggetto ha bisogno di sapere come: • individuare strumenti software adeguati per la modellazione delle specifiche; • modellare i requisiti e redigere documenti di analisi con l’ausilio di tool software. 6. Per utilizzare linguaggi e metodi di descrizione e catalogazione delle informazioni, il soggetto ha bisogno di sapere come: • definire dizionari dei dati. TECNICO SUPERIORE PER LO SVILUPPO DEL SOFTWARE B - DECLINAZIONE DI LIVELLO Per essere in grado di: 1. 2. 3. 4. 5. 6. scambiare informazioni con il cliente, al fine di individuare i requisiti utente; modellare i requisiti utente in maniera formale per i dati e le transazioni; valutare per grandi linee il costo di sviluppo di una applicazione software; redigere documenti di analisi; utilizzare software CASE per la gestione dei requisiti; utilizzare linguaggi e metodi di descrizione e catalogazione delle informazioni. Il soggetto deve dimostrare di: 1. • saper interagire con il cliente per definire modalità di raccolta requisiti; • saper identificare e descrivere i requisiti utente. 2. • saper descrivere i requisiti utente, con metodologie formali, per l’architettura e le funzionalità di sistema. Gli indicatori sono: • La conoscenza delle principali tecniche per la raccolta delle esigenze del cliente; • la redazione di specifiche, sulla base di un semplice User’s Requirements Document. • L’utilizzo di metodologie di modellazione dei requisiti; • la distinzione tra. modellazione funzionale e modellazione comportamentale. 3. • saper individuare e quantificare i principali elementi che determinano il costo di sviluppo di un applicativo software. • La redazione di preventivi di massima; • la conoscenza delle principali metriche per tipologie di prodotti software standard . 4. • saper individuare e descrivere i processi, i flussi e i depositi di dati, sulla base delle specifiche. • la redazione in autonomia di semplici documenti di analisi. 5. • L’uso di almeno uno strumento CASE. • saper individuare e utilizzare strumenti software atti a produrre documenti di specifica. 6. • aver compreso l’utilità e la funzione di un dizionario di dati. • La redazione e l’interpretazione di dizionari dei dati. TECNICO SUPERIORE PER LO SVILUPPO DEL SOFTWARE UNITÀ CAPITALIZZABILE N° 2 2 - Pianificare e progettare software di base e applicativo A – STANDARD MINIMO DELLE COMPETENZE Il soggetto è in grado di: 1. redigere documenti di progetto; 2. definire l’architettura di un sistema software sulla base dei documenti di specifica; 3. definire l’interfaccia con l’utente; 4. modellare la logica e i dati di un progetto software; 5. interagire con altri individui nella definizione di un progetto; 6. utilizzare strumenti CASE nella gestione di un progetto software. 1. Per redigere documenti di progetto, il soggetto ha bisogno di sapere come: • individuare le metodologie standard più adatte al progetto; • interpretare documenti di analisi; • applicare principi di astrazione, raffinamento e modularizzazione. 2. Per definire l’architettura di un sistema software sulla base dei documenti di specifica, il soggetto ha bisogno di sapere come: • analizzare e disegnare l’architettura di un sistema software , sulla base dei documenti di specifica, distinguendo dati e funzioni; • analizzare e disegnare architetture software in logiche multi-tier; • definire le classi e i metodi. 3. Per definire l’interfaccia con l’utente, il soggetto ha bisogno di sapere come: • pianificare l’interazione con l’utente; • utilizzare metodologie standard per la progettazione dell’interfaccia utente; • garantire l’usabilità. TECNICO SUPERIORE PER LO SVILUPPO DEL SOFTWARE 4. Per modellare la logica e i dati di un progetto software , il soggetto ha bisogno di sapere come: • individuare e descrivere i blocchi funzionali; • individuare e descrivere i dati e i flussi di dati; • individuare e descrivere i depositi di dati; • identificare i vincoli presenti in un documento di specifica; • rispettare i vincoli identificati nella progettazione; • usare strategie di gestione dei vincoli. 5. Per interagire con altri individui nella definizione di un progetto software, il soggetto ha bisogno sapere come: • utilizzare modalità standard di suddivisione dei compiti e delle attività progettuali; • definire le interfacce tra i vari attori del progetto; • gestire politiche di trust in un team. 6. Per utilizzare strumenti CASE nella gestione di un progetto software, il soggetto ha bisogno di sapere come: • valutare l’ambiente più adatto ad uno specifico progetto, sulla base della logica di business; • interagire con strumenti CASE per la progettazione; • partecipare a progetti con sviluppo cooperativo. TECNICO SUPERIORE PER LO SVILUPPO DEL SOFTWARE B - DECLINAZIONE DI LIVELLO Per essere in grado di: 1. redigere documenti di progetto; 2. definire l’architettura di un sistema software sulla base dei documenti di specifica; 3. definire l’interfaccia con l’utente; 4. modellare la logica e i dati di un progetto software; 5. interagire con altri individui nella definizione di un progetto; 6. utilizzare strumenti CASE nella gestione di un progetto software, Il soggetto deve dimostrare di: 1. • saper applicare principi di astrazione, raffinamento e modularizzazione nella generazione del progetto, sulla base di documenti di specifica ed analisi. Gli indicatori sono: • L’utilizzo di almeno una metodologia standard di progetto software. 2. • saper modellare una base di dati; • L’utilizzo del modello Entità Relazioni nel disegno dei dati; • essere in grado di mappare un documento di specifica in una architettura software; • la definizione di architetture software in logiche multi-tier e client-server. • saper scegliere la logica più adatta della architettura software 3. • saper scegliere tra le varie metodologie per la creazione di una interfaccia utente; • comprendere le problematiche connesse all’usabilità. • La progettazione in logica ad eventi; • la progettazione di semplici interfacce grafiche, in almeno un ambiente di sviluppo visuale. 4. • Per un semplice documento di analisi, la determinazione: del tipo di flusso • saper procedere nella progettazione dei delle informazioni, dei confini del dati, selezionando le rappresentazioni flusso, della struttura del programma, logiche degli oggetti-dato individuati in della gerarchia del controllo. un documento di analisi; • saper sviluppare una struttura di programma modulare e rappresentare le interfacce tra moduli/oggetti; • saper sviluppare le interfacce, attraverso le quali i dati fluiscono nel programma. TECNICO SUPERIORE PER LO SVILUPPO DEL SOFTWARE 5. • conoscere le regole standard per la progettazione cooperativa del software. • La descrizione delle regole principali di progettazione cooperativa del software. 6. • essere in grado di mappare un documento di analisi, in un ambiente di progettazione integrato. • L’utilizzo di almeno un ambiente integrato CASE. TECNICO SUPERIORE PER LO SVILUPPO DEL SOFTWARE UNITÀ CAPITALIZZABILE N° 3 3 - Individuare gli strumenti di sviluppo software A – STANDARD MINIMO DELLE COMPETENZE Il soggetto è in grado di: 1. utilizzare lo strumento di sviluppo più adatto per un processo di realizzazione di un progetto software; 2. scegliere il sistema operativo più adatto per ospitare un progetto di sviluppo software; 3. scegliere la piattaforma hardware più adatta ad ospitare un’applicazione; 4. valutare i requisiti hardware per un’applicazione client/server . 1. Per utilizzare lo strumento di sviluppo più adatto per un processo di realizzazione di un progetto software, il soggetto ha bisogno di sapere come: • individuare le peculiarità degli strumenti di sviluppo disponibili sul mercato; • valutare gli strumenti di sviluppo software più adeguati, disponibili sul mercato; • descrivere un progetto software con strumenti di sviluppo di sistema; integrare moduli software di diversa origine; • schedulare un processo di sviluppo software. 2. Per scegliere il sistema operativo più adatto per ospitare un progetto di sviluppo software, il soggetto ha bisogno di sapere come: • individuare le caratteristiche peculiari di un sistema operativo; • scegliere un sistema operativo al fine di ospitare un progetto di sviluppo sulla base delle sue caratteristiche; • giustificare la scelta di un sistema operativo. 3. Per Scegliere la piattaforma hardware più adatta ad ospitare un’applicazione, il soggetto ha bisogno di sapere come: • analizzare i requisiti hardware di una applicazione software; • scegliere i componenti hardware appropriati; • validare il sistema hardware ospite per un’applicazione software. 4. Per valutare i requisiti hardware per un’applicazione client/server, il soggetto ha bisogno di sapere come: • analizzare i requisiti hardware di un’applicazione client/server; • scegliere l’architettura di rete appropriata per un’applicazione client/server; • validare le politiche di trust in un’applicazione client/server. TECNICO SUPERIORE PER LO SVILUPPO DEL SOFTWARE B - DECLINAZIONE DI LIVELLO Per essere in grado di: 1. utilizzare lo strumento di sviluppo più adatto per un processo di realizzazione di un progetto software; 2. scegliere il sistema operativo più adatto per ospitare un progetto di sviluppo software; 3. scegliere la piattaforma hardware più adatta ad ospitare un’applicazione; 4. valutare i requisiti hardware per un’applicazione client/server Il soggetto deve dimostrare di: 1. Gli indicatori sono: • comprendere le peculiarità degli strumenti di sviluppo software disponibili sul mercato; • conoscere le caratteristiche dei principali ambienti di sviluppo e le loro peculiarità; • saper scegliere uno strumento di sviluppo, sulla base delle caratteristiche del progetto da realizzare; • La descrizione delle principali caratteristiche di almeno due ambienti di sviluppo. 2. • saper distinguere le caratteristiche dei principali Sistemi Operativi; • aver compreso i concetti di multiprocessing, multitasking e multithreading; • aver compreso le modalità di accesso ed utilizzo per Sistemi Operativi mono e multiutente. • La comprensione delle differenze tra i principali Sistemi Operativi; • la motivazione della scelta di un Sistema Operativo; • La descrizione delle principali differenze tra classi di Sistemi Operativi. 3. • conoscere le principali architetture di un elaboratore; • comprendere il legame tra applicazioni sviluppate ed ambiente hardware più software ospitante • La descrizione dei principali elementi di un’architettura di elaborazione; • l’individuazione, per grandi linee, dei vincoli prestazionali che determinano la scelta di un sistema ospitante. 4. conoscere i principali protocolli del livello delle applicazioni nel modello convenzionale International Standard Organization / Open System Interconnection (ISO/OSI); • conoscere i principali vincoli per lo sviluppo di un’applicazione in rete • L’individuazione dei vincoli prestazionali per una applicazione distribuita o client/server. TECNICO SUPERIORE PER LO SVILUPPO DEL SOFTWARE UNITÀ CAPITALIZZABILE N° 4 4 - Sviluppare software A – STANDARD MINIMO DELLE COMPETENZE Il soggetto è in grado di: 1. interpretare documenti di progetto e creare codice conforme alla documentazione progettuale; 2. implementare basi di dati relazionali; 3. interagire con basi di dati relazionali; 4. realizzare diverse tipologie di applicazioni software; 5. applicare principi di qualità nelle varie fasi del ciclo di vita di un software; 6. individuare e correggere errori in un software utilizzando opportuni strumenti di sviluppo. 1. Per interpretare documenti di progetto e creare codice conforme alla documentazione progettuale, il soggetto ha bisogno di sapere come: • individuare gli elementi di un documento di progetto; • verificare la consistenza di un documento di progetto; • realizzare codice strutturato; • applicare i paradigmi della programmazione ad oggetti; • documentare il codice durante la sua realizzazione. 2. Per implementare basi di dati relazionali, il soggetto ha bisogno di sapere come: • normalizzare e raffinare il progetto logico di un database relazionale; • codificare il progetto logico di una base di dati in un corrispondente database relazionale; • definire tabelle e vincoli intra ed inter relazionali. 3. Per interagire con basi di dati relazionali, il soggetto ha bisogno di sapere come: • inserire nuovi dati in un database nel rispetto dei vincoli; • esprimere il bisogno informativo in una interrogazione, utilizzando un linguaggio dichiarativo. TECNICO SUPERIORE PER LO SVILUPPO DEL SOFTWARE 4. Per realizzare diverse tipologie di applicazioni software, il soggetto ha bisogno di sapere come: • utilizzare strumenti per lo sviluppo per componenti; • realizzare applicazioni client-server; • realizzare applicazioni orientate al web; • realizzare applicazioni orientate all’interfacciamento con DBMS. 5. Per applicare principi di qualità nelle varie fasi del ciclo di vita di un software, il soggetto ha bisogno di sapere come: • produrre documentazione associata alle fasi di sviluppo di un codice; • utilizzare metriche per la valutazione di un codice; • gestire strumenti atti a garantire la qualità del codice sviluppato. 6. Per individuare e correggere errori in un software con l’ausilio di opportuni strumenti di sviluppo software, il soggetto ha bisogno di sapere come: • utilizzare un debugger; • eseguire test funzionali sul codice • implementare codice utilizzando strumenti Computer-Aided Software Engineering (CASE). TECNICO SUPERIORE PER LO SVILUPPO DEL SOFTWARE B - DECLINAZIONE DI LIVELLO Per essere in grado di: 1. interpretare documenti di progetto e creare codice conforme alla documentazione progettuale; 2. implementare basi di dati relazionali; 3. interagire con basi di dati relazionali; 4. realizzare diverse tipologie di applicazioni software; 5. applicare principi di qualità nelle varie fasi del ciclo di vita di un software; 6. individuare e correggere errori in un software utilizzando opportuni strumenti di sviluppo. Il soggetto deve dimostrare di: 1. • saper sviluppare codice, strutturato e ad oggetti, in conformità ad un documento di progetto. Gli indicatori sono: • La conoscenza delle principali regole della programmazione strutturata e dei paradigmi della programmazione ad oggetti; • la creazione di un programma, sulla base di documentazione progettuale, in almeno un linguaggio imperativo di alto livello; • la creazione di un programma, sulla base di documentazione progettuale, in almeno un linguaggio ad oggetti. 2. • conoscere i metodi formali di raffinamento di uno schema relazionale e di normalizzazione; • La normalizzazione di un semplice schema relazionale in 3° Forma Normale; • saper creare tabelle, con l’uso del Data • l’utilizzo di almeno un DBMS Definition Language di SQL, commerciale, per la creazione di un implementando i vincoli di integrità database sulla base di specifiche di previsti. progetto; • l’espressione in SQL di vincoli di integrità. 3. • saper utilizzare il Data Manipulation Language di SQL; • saper formulare interrogazioni utilizzando un tool QBE. • La conoscenza dei principali costrutti di SQL; • l’esecuzione di interrogazioni in SQL su più tabelle, utilizzando operatori aggregati. TECNICO SUPERIORE PER LO SVILUPPO DEL SOFTWARE il soggetto deve dimostrare di: 4. • saper realizzare codice per componenti predefiniti; • saper utilizzare collegamenti di tipo pipeline; • saper utilizzare collegamenti di tipo remote procedure call; • saper interagire con RDBMS utilizzando embedded SQL. 5. • saper applicare tecniche standard di documentazione del codice prodotto. gli indicatori sono: • L’interazione con sistemi remoti mediante semplici RPC; • la conoscenza del funzionamento di un Object Request Broker • l’accesso a RDBMS, mediante connessioni ODBC. • La conoscenza di almeno una tecnica standard di documentazione del codice; • la creazione di codice documentato con tecniche standard. 6. • saper utilizzare l’ambiente di debug di uno strumento per lo sviluppo software; • saper distinguere errori lessicali ed errori sintattici; • saper effettuare test funzionali su un codice. • L’interazione con un debugger; • la rilevazione e correzione di errori lessicali e sintattici; • l’esecuzione di elaborazione passo passo; • la comprensione dei break point. TECNICO SUPERIORE PER LO SVILUPPO DEL SOFTWARE UNITÀ CAPITALIZZABILE N° 5 5 - Installare e configurare software A – STANDARD MINIMO DELLE COMPETENZE Il soggetto è in grado di: 1. installare pacchetti software; 2. configurare pacchetti software; 3. individuare situazioni di incompatibilità in una installazione e contribuire alla risoluzione del problema; 4. assicurare il mantenimento della sicurezza di un sistema a seguito di installazione di software. 1. Per installare pacchetti software, il soggetto ha bisogno di sapere come: • individuare le caratteristiche peculiari del pacchetto da installare; • individuare preventivamente eventuali conflitti tra il pacchetto da installare e l’ambiente ospite. 2. Per configurare pacchetti software, il soggetto ha bisogno di sapere come: • • • • gestire pannelli di controllo; effettuare attività di registrazione di prodotto; Individuare le proprietà di configurazione dei pacchetti applicativi; descrivere le funzionalità di una applicazione ad utenti. 3. Per individuare situazioni di incompatibilità in una installazione e contribuire alla risoluzione del problema, il soggetto ha bisogno di sapere come: • • • • analizzare le possibili cause di incompatibilità determinate da una installazione; determinare alternative risolutive in situazioni di incompatibilità di una installazione; esemplificare le ragioni di incompatibilità; ripristinare lo stato del sistema in caso di disinstallazione. 4. Per assicurare il mantenimento della sicurezza di un sistema a seguito di installazione di software, il soggetto ha bisogno di sapere come: • verificare la sicurezza di un sistema a seguito della installazione di un pacchetto software; • individuare le possibili cause di una perdita di sicurezza a seguito della installazione di un pacchetto software; • intervenire mediante reperimento ed installazione di “patch” per ripristinare la sicurezza di sistema. TECNICO SUPERIORE PER LO SVILUPPO DEL SOFTWARE B - DECLINAZIONE DI LIVELLO Per essere in grado di: 1. installare pacchetti software; 2. configurare pacchetti software; 3. individuare situazioni di incompatibilità in una installazione e contribuire alla risoluzione del problema; 4. assicurare il mantenimento della sicurezza di un sistema a seguito di installazione di software, Il soggetto deve dimostrare di: 1. • saper effettuare l’installazione dei principali prodotti di office automation; Gli indicatori sono: • saper configurare server web e ftp • Configurazione di almeno una classe di server web e ftp. • L’esecuzione di una corretta installazione di una suite di prodotti software; • saper effettuare l’installazione di server • l’esecuzione di una corretta web e ftp. installazione di almeno una classe di server web e ftp. 2. • saper configurare e registrare i principali • individuazione dei componenti da pacchetti software di base e di configurare di una suite di prodotti di produttività office automation; 3. • comprendere le principali cause di incompatibilità; possibili • L’esecuzione di un backup e ripristino di una configurazione. • saper effettuare backup preventivi e ripristino di configurazione. 4. • saper verificare il mantenimento della sicurezza di un sistema, a seguito della installazione di un applicativo; • saper reperire patch; • comprendere i rischi determinati dall’installazione di software non sicuro. • Il reperimento di patch via Internet dai produttori di applicativi; • Individuazione di virus e backdoor con l’uso di strumenti appropriati. TECNICO SUPERIORE PER LO SVILUPPO DEL SOFTWARE UNITÀ CAPITALIZZABILE N° 6 6 - Collaudare, gestire e manutenere le applicazioni informatiche A – STANDARD MINIMO DELLE COMPETENZE Il soggetto è in grado di: 1. predisporre un documento di collaudo; 2. gestire aggiornamenti del software; 3. riconoscere problematiche applicative. 1. Per predisporre un documento di collaudo, il soggetto ha bisogno di sapere come: • descrivere le caratteristiche funzionali di una applicazioni in termini verificabili; • determinare gli elementi per l’effettuazione di un collaudo; • redigere un documento di collaudo esaustivo. 2. Per gestire aggiornamenti del software, il soggetto ha bisogno di sapere come: • installare aggiornamenti di software di base; • installare aggiornamenti di specifici applicativi; • verificare il mantenimento delle funzionalità a seguito di aggiornamenti. 3. Per riconoscere problematiche applicative, il soggetto ha bisogno di sapere come; • determinare le cause di eventuali malfunzionamenti e ricondurle a possibili soluzioni; • descrivere le cause di eventuali malfunzionamenti. TECNICO SUPERIORE PER LO SVILUPPO DEL SOFTWARE B - DECLINAZIONE DI LIVELLO Per essere in grado di: 1. predisporre un documento di collaudo; 2. gestire aggiornamenti del software; 3. riconoscere problematiche applicative, Il soggetto deve dimostrare di: 1. • saper redigere un semplice documento di collaudo in conformità alle specifiche; Gli indicatori sono: • L’individuazione degli elementi essenziali collaudabili in un sistema e in una applicazione. • saper descrivere le caratteristiche funzionali di un sistema informatico. 2. • saper valutare l’opportunità di aggiornare software di base ed applicativo ed eseguire gli aggiornamenti. • La quantificazione del costo dell’aggiornamento, in rapporto alle caratteristiche di prestazione della versione aggiornata. 3 • comprendere le principali cause di malfunzionamento di un sistema; • comprendere il significato della manutenzione evolutiva. • La descrizione delle caratteristiche della manutenzione evolutiva.