Ercole Colonese

L’ESPERIENZA AL VOSTRO SERVIZIO!

Consulenza informatica ed organizzativa

 

 

home

sviluppo software

consulenza

didattica

chi sono

 info

 

Sviluppare software oggi …

Stonehenge

 

In questa pagina:

 

Ruoli, responsabilità e competenze

Direzione

RAQ

Responsabile commerciale

Capo progetto

Analista/Architetto

Programmatore

Tester

Amministratore DB

Gestore configurazione

Sistemista

 

Ruoli, responsabilità e competenze

Sviluppare software è un'attività tecnica e creativa ad alto contenuto umano. Al successo di un un progetto contribuiscono varie figure, ognuna apportando il proprio contributo determinante.

L'analista/architetto

Il ruolo

Ricopre un ruolo fondamentale nella fase alta del ciclo di vita: “Analisi e Disegno”.  Nelle grandi organizzazioni i due ruoli sono distinti, con responsabilità e competenze differenti, anche se la collaborazione è totale. Nelle organizzazioni di dimensioni minore i due ruoli sono invece ricoperti dalla stessa persona. Solo una minore complessità delle architetture tecnologiche adoperate e delle applicazioni progettate permette la sintesi dei due ruoli. Ma non per questo il ruolo è meno importante o meno critico. Anzi, tutt’altro. In estrema sintesi, nella fase di analisi si interpretano le esigenze del cliente (“dominio del problema”), mentre nella fase di disegno si progetta la soluzione (“dominio della soluzione”).

Nella fase di analisi il professionista effettua la raccolta e l’analisi dei requisiti, funzionali e qualitativi da indirizzare, dei vincoli da rispettare, degli standard e delle norme da seguire, delle  modalità operative da tenere conto, dell’ambiente culturale da rispettare. Il tutto è tradotto in specifiche, scritte in linguaggio naturale e/o tramite casi d’uso (Use case). La documentazione è rivista internamente e condivisa con il cliente per assicurare la piena e corretta interpretazione delle esigenze.

Il professionista esegue l’attività con cura e precisione, seguendo il processo, sapendo quanto sia critica tale attività e quali problemi possa generare una incompleta e non corretta definizione dei requisiti nelle fasi successive. Sa che non è mai tropo il tempo speso per l’analisi.

Traduce i requisiti in specifiche funzionali, documentate in linguaggio naturale e/o tramite casi d’uso.  La soluzione indirizzerà tutti i requisiti condivisi, espliciti ed impliciti, funzionali e prestazionali. La documentazione è prodotta secondo gli standard stabiliti ed è rivista tecnicamente per verificarne la completezza e la correttezza.

Progetta – o collabora con l’architetto quando sia presente il ruolo - il sistema, l’applicazione ed i componenti ed effettua la revisione tecnica del disegno per garantirne la completezza, la correttezza e l’aderenza ai requisiti ed alle specifiche. Assicura che la progettazione indirizzi correttamente tutte le caratteristiche del software attese (sicurezza, usabilità, prestazioni, affidabilità, robustezza, manutenibilità, coesistenza).

Realizza prototipi per verificare la fattibilità di soluzioni particolari o per valutare in anticipo prestazioni e caratteristiche del software.

Effettua l’analisi dei dati, realizza il disegno concettuale e quello logico dei dati e collabora con l’amministratore DB nella realizzazione del disegno fisico dei database.

Effettua con estrema cura il dimensionamento del sistema e le stime su tempi e le risorse necessarie a realizzare il sistema e a sviluppare il software.

Coordina il gruppo di lavoro e lo supporta nelle attività di disegno di dettaglio e di programmazione controllandone puntualmente i risultati.

Partendo dai requisiti progetta i casi di test per indirizzare sia le funzionalità che le prestazioni e produce le specifiche di test.

Le responsabilità

Il ruolo prevede le seguenti responsabilità:

  • Raccolta, analisi e documentazione dei requisiti;

  • Condivisione dei requisiti con il cliente;

  • Analisi dei processi aziendali, dei dati, delle transazioni, ecc.;

  • Stesura delle specifiche funzionali;

  • Dimensionamento del sistema software;

  • Stima dei tempi e delle risorse necessarie al progetto;

  • Progettazione (o collaborazione con l’Architetto quando esista la figura) dell’architettura del sistema;

  • Progettazione dell’applicazione: componenti, transazioni, procedure, interfacce utente, ecc.);

  • Disegno concettuale e logico dei dati;

  • Supporto all’amministratore DB per il disegno fisico dei dati;

  • Supporto ai programmatori nella progettazione di dettaglio dei moduli e nello sviluppo del software;

  • Realizzazione di prototipi per verificare la fattibilità di componenti tecnologici particolari o per valutare in anticipo prestazioni e caratteristiche del software;

  • Svolgimento dei controlli previsti per assicurare gli obiettivi di qualità stabiliti (revisioni, ispezioni, walkthrough);

  • Progettazione dei test e del collaudo e stesura delle specifiche di test;

  • Dimensionamento del sistema, del software, dei tempi e delle risorse necessarie a realizzare il sistema ed a sviluppare il software;

  • Coordinamento di gruppi di lavoro;

  • Verifica e controllo delle attività svolte dal gruppo di lavoro e supporto alla risoluzione dei problemi;

  • Rendicontazione periodica delle attività svolte al capo progetto.

Le competenze richieste

Il ruolo richiede le seguenti competenze ed esperienze maturate:

  • Aree applicative di interesse;

  • Ingegneria dei requisiti;

  • Architetture e tecnologie (sistemi operativi, reti, DBMS, sicurezza);

  • Metodologie di progettazione di sistemi software (strutturata, ad oggetti, a componenti, Pattern, ricusabilità, ecc.);

  • Tecniche di modellazione (UML, dati, ecc.);

  • Tecniche di progettazione orientate all'utente (UCD), di prototipazione e di revisione euristica dell'usabilità;

  • Ciclo di sviluppo del software e relative metodologie;

  • Tecniche di stima e metriche del software;

  • Tecniche di documentazione;

  • Tecniche di verifica e validazione: revisioni tecniche, ispezioni, walkthrough, revisioni euristiche dell'usabilità, testing funzionale e prestazionale del software;

  • Gestione delle modifiche e della configurazione.

In particolare, per quanto riguarda l’analisi e la progettazione dei dati, sono richieste competenze specifiche come:

  • Metodologie e strumenti (tool) di progettazione di base dati;

  • DBMS;

  • Tecniche di disegno e modellazione dei dati.

Per quanto attiene il Sistema di gestione per la qualità, sono richieste competenze specifiche come:

  • Contenuti del SGQ;

  • Procedure per la gestione della documentazione, le registrazioni di qualità, le verifiche ispettive, la non conformità e le azioni correttive e preventive;

  • Procedure per la gestione della qualità (obiettivi, piani, verifiche e controlli).

Sviluppare software oggi ...

Il contesto

Norme e modelli

Professioni e certificazioni

Ruoli, responsabilità e competenze

Direzione

RAQ

Responsabile commerciale

Capo progetto

Analista/Architetto

Programmatore

Tester

Amministratore DB

Gestore configurazione

Sistemista

Ingegneria del software (SWEBOK)

Project Management (PMBOK)

Professioni informatiche (EUCIP)

Esperto qualità (EQDL)

Utilizzo del computer (ECDL)

Metodologia di sviluppo software

10 best practice del software

 

Collegamenti esterni utili:

SWECC - Software Engineering Coordinating Committee.

IEEE Computer Society.

ACM - Association for Computing Machinery.

AICA - Associazione Italiana per l'Informatica ed il Calcolo Automatico

AICQ - Associazione Italiana Cultura Qualità.

SWEBOK - Software Engineering Body Of Knowledge.

PMBOK - Project Management Body of Knowledge.

EQDL - European Quality Driving Licence.

EUCIP - European Certification of Informatics Professionals.

ECDL - European Computer Driving Licence.

 

Pubblicazioni disponibili sul tema:

Introduzione al SWEBOK, Introduzione al Software Engineering Body of knowledge

Competenze della professione ingegnere del software, Lezione tenuta all'Università di Tor Vergata sull'argomento

 

 

Copyright © 2005-2008 - Ultimo aggiornamento: 29 settembre 2008