Ciclo di vita del software



Documenti analoghi
Specifiche dello sviluppo di un progetto software e indicazioni sulla documentazione e sulle modalità di esercizio delle prestazioni

Modellazione di sistema

Base di dati e sistemi informativi

Concetti di base di ingegneria del software

Automazione Industriale (scheduling+mms) scheduling+mms.

1. BASI DI DATI: GENERALITÀ

Project Management. Modulo: Introduzione. prof. ing. Guido Guizzi

Software di sistema e software applicativo. I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche

Ciclo di vita del progetto

Gestione del workflow

INGEGNERIA DEL SOFTWARE. Prof. Paolo Salvaneschi

Fasi di creazione di un programma

Strumenti di modellazione. Gabriella Trucco

SINPAWEB corso per Tecnico della programmazione e dello sviluppo di siti internet e pagine web co.reg matricola 2012LU1072

leaders in engineering excellence

Università degli Studi di Parma Facoltà di Scienze MM. FF. NN. Corso di Laurea in Informatica. Ingegneria del Software. La fase di Analisi

Diagrammi di Flusso dei Dati

Università degli Studi "Roma Tre" Dipartimento di Informatica ed automazione. Facoltà di Ingegneria

ING SW. Progetto di Ingegneria del Software. e-travel. Requisiti Utente. Specifiche Funzionali del Sistema

ISTITUTO TECNICO ECONOMICO MOSSOTTI

Archivi e database. Prof. Michele Batocchi A.S. 2013/2014

Progettaz. e sviluppo Data Base

Indice generale. OOA Analisi Orientata agli Oggetti. Introduzione. Analisi

Sistemi informativi secondo prospettive combinate

Linguaggi e Paradigmi di Programmazione

UNIVERSITA DEGLI STUDI DI BRESCIA Facoltà di Ingegneria

In legenda sono riportate le fasi R, P, C/T e I/SA come specificato nella norma ISO/IEC

Dispensa di Informatica I.1

Metodologie di programmazione in Fortran 90

Gruppo 4: Gelmi Martina, Morelato Francesca, Parisi Elisa. La mia scuola ha un sito Web

Appendice III. Competenza e definizione della competenza

IL PROCESSO DI FABBRICAZIONE (sviluppo nuovo prodotto)

Requisiti normativi, standard, template

Generazione Automatica di Asserzioni da Modelli di Specifica

12. Evoluzione del Software

TECNICO SUPERIORE PER L AUTOMAZIONE INDUSTRIALE

Organizzazione degli archivi

Piano di gestione della qualità

Telerilevamento e GIS Prof. Ing. Giuseppe Mussumeci

Gestione Iter Manuale Sistemista. Gestione Iter Manuale Sistemista

11. Evoluzione del Software

SOFTWARE PER LA RILEVAZIONE DEI TEMPI PER CENTRI DI COSTO

Il sapere tende oggi a caratterizzarsi non più come un insieme di contenuti ma come un insieme di metodi e di strategie per risolvere problemi.

WorkFLow (Gestione del flusso pratiche)

Corso di Informatica

ISO 9001:2015 e ISO 14001:2015

Esercitazione di Basi di Dati

Corso di Access. Prerequisiti. Modulo L2A (Access) 1.1 Concetti di base. Utilizzo elementare del computer Concetti fondamentali di basi di dati

Volumi di riferimento

DFD DISPENSA DEL CORSO DI SISTEMI INFORMATIVI UNIVERSITÀ DEGLI STUDI DI VERONA FACOLTÀ DI MM.FF.NN LAUREA SPECIALISTICA IN INFORMATICA

Il modello veneto di Bilancio Sociale Avis

7. Architetture Software

Progettazione esterna

MANUALE DELLA QUALITÀ Pag. 1 di 6

Conti Gestione Manuale Utente. Conti Gestione Manuale Utente

rilascio del Prototipo Gestione SAL cantieri e subappalti. 3 mesi 4-8 mesi 20gg 90% Controllo di Gestione Avanzato del 2 mesi 6-10 mesi 15gg 90%

IL SOFTWARE SECONDO LA NORMA UNI EN ISO :2008 (IIA PARTE) 1


GESTIONE AVANZATA DEI MATERIALI

Soluzione dell esercizio del 12 Febbraio 2004

Corso Analista Programmatore Web PHP Corso Online Analista Programmatore Web PHP

Sistemi Informativi. Introduzione. Processi fisici. Tipologie di processi. Processi informativi. Processi aziendali

03. Il Modello Gestionale per Processi

COME SVILUPPARE UN EFFICACE PIANO DI INTERNET MARKETING

I casi d uso corrispondono ai compiti che l attore (che può essere una persona fisica e non) può svolgere.

AZIENDA SANITARIA LOCALE TO1 - SC MEDICINA LEGALE - OBITORIO CIVICO

La gestione manageriale dei progetti

Progettazione dei Sistemi di Produzione

COME SI REALIZZANO GLI APPLICATIVI DI UN SISTEMA INFORMATIVO?

TECNICO SUPERIORE DEI TRASPORTI E DELL INTERMODALITÀ

SOFTWARE A SUPPORTO DELLA GESTIONE AMMINISTRATIVA DELLO SPORTELLO UNICO SPECIFICA DEI REQUISITI UTENTE

Strumenti per la gestione della configurazione del software

GESTIONE DELLE NON CONFORMITÀ E RECLAMI

Tecnopolis CSATA s.c.r.l. APQ in Materia di Ricerca Scientifica nella Regione Puglia

EA 03 Prospetto economico degli oneri complessivi 1

LINGUAGGI, CREATIVITA, ESPRESSIONE TECNOLOGIA - INFORMATICA

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

05/03/07 Anna Maria Baratta. Lavorare per progetti

Copyright Università degli Studi di Torino, Progetto Atlante delle Professioni 2009 IT PROCESS EXPERT

MATERIA: INFORMATICA CLASSI: PRIME TERZE QUARTE SECONDE QUINTE

L ORGANIZZAZIONE AZIENDALE

PIANO DI LAVORO ANNUALE DEL DIPARTIMENTO DI MATERIA DIPARTIMENTO DI INFORMATICA INDIRIZZO TECNICO SCIENTIFICO NUCLEI FONDAMENTALI DI CONOSCENZE

GESTIONE AVANZATA DEI MATERIALI

BASI DI DATI per la gestione dell informazione. Angelo Chianese Vincenzo Moscato Antonio Picariello Lucio Sansone

La Metodologia adottata nel Corso

UML e (R)UP (an overview)

Sistemi di misurazione e valutazione delle performance

Nozione di algoritmo. Gabriella Trucco

DI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1

SysAround S.r.l. L'efficacia delle vendite è l elemento centrale per favorire la crescita complessiva dell azienda.

Le figure professionali di riferimento per l Ingegneria Biomedica

Nodi concettuali essenziali della disciplina (Saperi essenziali)

Perfare MASSIMIZZARE IL VALORE DELL ATTUALE GAMMA DI PRODOTTI

La progettazione centrata sull utente nei bandi di gara

2.0 Gli archivi. 2.1 Inserire gli archivi. 2.2 Archivio Clienti, Fornitori, Materiali, Noleggi ed Altri Costi. Impresa Edile Guida all uso


SISTEMI DI SUPPORTO ALLE DECISIONI

IL MARKETING E QUELLA FUNZIONE D IMPRESA CHE:

Dominio applicativo. Analisi e ricognizione delle fonti dati

I Problemi e la loro Soluzione. Il Concetto Intuitivo di Calcolatore. Risoluzione di un Problema. Esempio

Transcript:

Ciclo di vita del software Da Wikipedia, l'enciclopedia libera. L'espressione ciclo di vita del software si riferisce al modo in cui una metodologia di sviluppo o un modello di processo scompongono l'attività di realizzazione di prodotti software in sottoattività fra loro coordinate, il cui risultato finale è il prodotto stesso e tutta la documentazione a esso associato. La comparsa in letteratura e nella pratica dello sviluppo del software dei concetti di ciclo di vita e di processo software si può far coincidere con la nascita dell'ingegneria del software, in quanto rappresenta un passaggio storico dallo sviluppo del software inteso come attività "artigianale" (ovvero affidata alla libera creatività dei singoli individui) a un approccio più industriale, in cui la creazione di programmi e sistemi software viene considerata come un processo complesso che richiede pianificazione, controllo, e documentazione appropriati (così come avviene tradizionalmente nei settori più maturi dell'ingegneria). Questa transizione si può ricondurre, in ultima analisi, all'aumentata complessità dei sistemi, all'avvento di un vero e proprio mercato del software, nonché a nuovi e più stringenti requisiti di qualità, legati per esempio all'uso di sistemi informatici in contesti critici (centrali energetiche, sistemi aerospaziali, armamenti e così via). Questo mutamento di prospettiva iniziò a verificarsi, storicamente, fra la fine degli anni sessanta e l'inizio della decade successiva. Da allora, la ricerca su questi temi è stata estremamente prolifica sia in ambito industriale che accademico. Storicamente, il primo ciclo di vita del software di larga diffusione è stato il modello a cascata. Esso suddivideva il processo software in un insieme di fasi che si ritrovano quasi puntualmente nei modelli moderni (che spesso si discostano dal modello a cascata su altri aspetti, quali l'ordine in cui devono essere svolte le attività corrispondenti alle varie fasi, o l'enfasi relativa che va assegnata a ciascuna di esse).ogni fase produce un output che è usato come input per la fase successiva. In linea di massima vengono individuate 5 fasi: 1. Analisi e Specifica dei requisiti di che cosa fa il sistema 2. Progettazione che permette di specificare come è fatto il sistema 3. Codifica, la fase classifica di scrittura del codice 4. Integrazione e verifica, controllo del buon funzionamento 5. Consegna e manutenzione, tutto ciò che accade a sistema funzionante Se originariamente i modelli di ciclo di vita del software erano strumenti di natura esclusivamente concettuale, i moderni ambienti di sviluppo CASE (Computer aided software engineering) spesso automatizzano l'applicazione di un particolare ciclo di vita così come di altri aspetti di un processo software. Esistono altri modelli di cicli di vita del software: 1. Evolutivo 2. Trasformativo 3. A spirale (è un metaprocesso)

Modello a cascata La maggior parte dei modelli di ciclo di vita del software comprendono un insieme comune di attività, elencate di seguito. Dev'essere tuttavia chiaro che il fatto che tali fasi debbano essere eseguite in sequenza (come l'impaginazione necessariamente suggerisce) non è vero per tutti i modelli. Ci si è inoltre limitati alle "macro-fasi", suggerendo di alcune di esse alcune ulteriori scomposizioni tipiche e comuni a molti modelli di ciclo di vita del software. la fase di analisi, ovvero l'indagine preliminare sul contesto in cui il prodotto software deve inserirsi, sulle caratteristiche che deve esibire, ed eventualmente su costi e aspetti logistici della sua realizzazione; questa fase può essere scomposta in sottoattività quali analisi di fattibilità, analisi e modellazione del dominio applicativo, analisi dei requisiti e così via. In senso ampio si può dire che l'analisi ha lo scopo di definire (il più precisamente possibile) il problema da risolvere. Questa fase è costituita anche da raccolta dei dati tramite colloqui tra Cliente/Committente e relativi Sviluppatori. Al termine della fase verrà creato un documento che descrive le caratteristiche del sistema; la fase di progetto, in cui si definiscono le linee essenziali della struttura del sistema da realizzare, in funzione dei requisiti evidenziati dall'analisi e dal documento finale da essa creato. Anche questa fase può essere scomposta in sottoattività, dal progetto architetturale al progetto dettagliato. Si può dire che il progetto ha lo scopo di definire (a un certo livello di dettaglio) la soluzione del problema. In questa fase verrà sviluppando un documento che permetterà di avere una definizione della struttura di massima (architettura di alto livello) e una definizione delle caratteristiche dei singoli componenti (moduli); la fase di implementazione o codifica del sistema, ovvero la sua realizzazione concreta; questa tipicamente consiste nella realizzazione di uno o più programmi in un determinato linguaggio di programmazione, benché possano essere coinvolte anche tecnologie diverse (database, linguaggi di scripting e via dicendo). Nella maggior parte dei casi è possibile distinguere almeno una sottoattività di implementazione dei singoli moduli che costituiscono il sistema e la sottoattività dell'integrazione di tali moduli a formare il sistema complessivo. Complessivamente, l'implementazione ha lo scopo di realizzare la soluzione. la fase di testing, volta a misurare in che misura il sistema realizzato soddisfa i requisiti stabiliti nella fase di analisi, ovvero a valutarne la correttezza rispetto alle specifiche. Anche il testing è normalmente scomponibile almeno nelle due attività del testing dei singoli moduli e testing del sistema integrato. Le tipologie specifiche di test (prove) si possono inoltre distinguere in funzione dei particolari aspetti dei moduli o del sistema che vengono valutati; si parla per esempio di test funzionali, test di performance, test di accettazione, test d'istallazione; la fase di manutenzione, che comprende tutte le attività di modifica del software successive al suo rilascio presso il cliente o la sua immissione sul mercato. Queste attività possono essere volte a correggere errori del software, adattarlo a nuovi ambienti operativi, o estenderne le funzionalità. La manutenzione incide sui costi, si stima che il 60% dei costi dipende dalla manutenzione. Ogni modifica al software comporta necessariamente la necessità di nuovi test, sia relativi alle nuove funzionalità eventualmente introdotte, sia mirati a verificare che le modifiche apportate non abbiano compresso funzionalità preesistenti (test di regressione). Una linea standard di verifica prevede dei test sui moduli più precisamente si occupa di controllare che i moduli presi singolarmente funzionino e che una volta assemblati assieme i moduli continuino a funzionare.

Modello evolutivo Questo modello si propone di superare i limiti principali del modello a cascata, come la mancanza di incrementalità e l'inadeguatezza a supportare l evoluzione dell'applicazione. E costituito da poche fasi che si ripetono e che prevendo questa sequenza: 1. Costruisci qualcosa 2. Consegnalo all utente 3. Ottieni delle valutazioni 4. Modifica il manufatto in funzione delle valutazioni Il rischio nell'attuazione di questo modello, è di essere indisciplinati, e si renderà necessario far uso di standard di processo. Gli strumenti moderni sono adatti a supportare questo tipo di modello accompagnati da certificazioni di qualità di processo. Analisi dei requisiti In ingegneria del software, l'analisi dei requisiti (talvolta detta semplicemente analisi) rappresenta una delle prime fasi nel ciclo di vita di un prodotto software; scopo generale dell'analisi è stabilire cosa il sistema in questione deve fare (mentre le decisioni sul come sono rimandate alla successiva fase di progetto). L'analisi dei requisiti avviene normalmente come negoziazione fra individui legati allo sviluppo (analisti) e i clienti, oppure (nel caso di pacchetti software pensati per la grande distribuzione) fra analisti e responsabili del marketing. Tale dialogo è tutt'altro che semplice: gli analisti possono avere difficoltà a comprendere il linguaggio e il contesto culturale del cliente, e viceversa; e lo stesso cliente potrebbe aver difficoltà a mettere a fuoco i propri reali bisogni e di conseguenza le richieste o le proposte da mettere sul tavolo della discussione. Proprio a causa di queste difficoltà, i modelli di ciclo di vita del software moderni hanno abbandonato l'assunzione che sia possibile identificare i requisiti di un sistema software a priori, e tendono a privilegiare approcci iterativi in i requisiti vengono esplicitati gradualmente, per esempio coinvolgendo l'utente nella prova di prototipi e rilasci parziali del sistema in corso di sviluppo. Il documento principale prodotto dall'analisi dei requisiti è la specifica dei requisiti; se la metodologia e il modello di ciclo di vita del software utilizzati lo prevedono, essa può addirittura portare già alla stesura del manuale d'uso del prodotto da sviluppare. L'analisi dei requisiti è spesso accompagnata da altre attività di analisi come l'analisi del dominio o l'analisi dei costi e benefici. Analisi delle funzioni con i data flow diagram La definizione delle funzionalità che il sistema deve offrire è importante e critica. Per un verso, costituisce la base dell'accordo tra i committenti ed il gruppo di progetto, sulla cui base vengono concordati costi e tempi di realizzazione; allo stesso tempo rappresenta l'input primario per le fasi di progettazione tecnica e di realizzazione e test del sistema. La definizione deve risultare quindi chiara, non ambigua, completa, sufficientemente dettagliata. Esistono tecniche di analisi strutturata, che da oltre vent'anni forniscono una guida per la scoperta e la definizione delle caratteristiche funzionali dei sistemi. Vengono utilizzati dei data flow diagram, che permettono di partire dalla definizione del contesto del sistema, per poi arrivare alle tecniche utilizzabili per la scomposizione in sottoprocessi, fino alla definizione dei processi elementari ed alla loro specifica.

Il Data Flow Diagram è un tipo di diagramma definito nel 1978 da Tom Demarco nel testo Structured Analysis and Systems Specification per aiutare nella definizione delle specifiche. É una notazione grafica molto usata per i sistemi informativi e per la descrizione del flusso di dati in quanto permette di descrivere un sistema per livelli di astrazione decrescenti con una notazione di specifica molto "intuitiva". Attraverso i Data Flow Diagram si definiscono soprattutto come fluiscono (e vengono elaborate) le informazioni all interno del sistema, quindi l'oggetto principale è il flusso delle informazioni o, per meglio dire, dei dati. Motivo per il quale diventa fondamentale capire dove sono immagazzinati i dati, da che fonte provengono, su quale fonte arrivano, quali componenti del sistema li elaborano. Componenti Le componenti di questo tipo di diagramma sono: Funzioni, rappresentate da bolle; Flussi di dati, rappresentati da frecce; Archivi di dati, rappresentati da scatole aperte; Agenti esterni o Input/Output di dati, rappresentati da scatole chiuse. Funzioni Le funzioni rappresentano unità di elaborazione dei dati: trasformano i dati in ingresso in quelli in uscita Flusso di dati Le frecce collegano i diversi componenti di un diagramma tra loro: Rappresentano i dati gestiti dal sistema; Gli archivi e gli agenti esterni NON possono essere collegati tra loro; Agente esterno Gli Agenti Esterni rappresentano delle entità esterne al sistema: Non sono soggette ad ulteriore modellazione; Sono le sorgenti e le destinazioni dei dati del sistema;

Archivi Gli archivi sono dei depositi permanenti di informazione: Possono essere basati su qualunque tecnologia; I dati che entrano in un archivio vengono scritti; I dati che escono dall archivio sono letti (ma non cancellati); Modellazione Un generico sistema è sempre rappresentabile nel seguente modo: Se gli ingressi e/o le uscite sono molteplici si introducono nuovi flussi. Questo tipo di rappresentazione ha un livello di astrazione molto alto e individua solo l interfaccia tra il sistema e il mondo esterno per cui vanno inseriti altri dettagli raffinando le funzioni. Ogni funzione, infatti, è a sua volta specificabile mediante un Data Flow Diagram per cui è possibile ottenere diversi livelli con sempre maggiore definizione. Criteri di stesura Nella stesura si ignora l inizializzazione del sistema, la gestione degli errori e la terminazione, il sistema si immagina come "up & running". Si ignorano anche le sincronizzazioni ed il flusso di controllo tra processi. Individuare sempre le entrate e le uscite di un diagramma Qualora i dati gestiti fossero particolarmente strutturati si complementa il Data Flow Diagram con un sistema complementare. Limiti Questa notazione, quindi, presenta dei limiti consistenti: Semantica: i simboli non sono sufficientemente chiari e i nomi vengono scelti dall utente; Controllo: gli aspetti di controllo non sono definiti dal modello e, quindi, anche la sequenza temporale è poco chiara. Quindi il Data Flow Diagram è adatto ad una descrizione rapida e intuitiva per cui non è una notazione operazionale proprio perché alcuni aspetti non sono chiariti. Per questo motivo si parla di notazione semiformale perché la sintassi è precisa, ma la semantica non lo è. Si sono progettati diversi metodi per rimediare a queste difficoltà che possono essere classificati nel seguente modo: Usare una notazione complementare per colmare le lacune del data flow diagram; Migliorare il modello in modo da completare la versione tradizionale

L'analista programmatore Il lavoro dell'analista programmatore consiste nell analizzare ed interpretare le esigenze degli utenti, nonché nell incaricarsi della progettazione, codifica e documentazione, collaudo e manutenzione dei programmi (software) creati in risposta a tali esigenze. L'analista programmatore è perciò colui che sviluppa l'analisi di un problema in termini informatici, e partecipa anche alla stesura dei programmi. In alcune realtà, la figura dell'analista programmatore si può suddividere in due figure distinte: quella dell'analista e quella del programmatore. L'analista si occupa della prima delle due fasi accennate precedentemente: l'analisi delle esigenze del cliente e la traduzione di queste ultime in un progetto funzionante attraverso il coordinamento di un gruppo di programmatori. Il programmatore, si occupa della seconda fase: lo sviluppo del software nei vari linguaggi partendo dal progetto di un analista. L'analista programmatore opera in genere all'interno di grandi imprese dotate di propri centri di elaborazione, nelle software house (società che creano i software), in società di servizi, studi di consulenza, centri di ricerca nonché in ambito universitario. I tempi medi di un progetto cui un analista programmatore prende parte sono intorno ai sei mesi, ma su un caso particolarmente complesso o di grandi dimensioni il suo lavoro può protrarsi anche uno-due anni. Il lavoro dell'analista programmatore si svolge a ritmi serrati, spesso si lavora "a scadenza" per cui i suoi orari risultano piuttosto flessibili. L'analista programmatore può essere un lavoratore dipendente o un libero professionista. L'insieme delle attività dell'analista programmatore può essere suddiviso in quattro fasi, una conseguente all'altra: COMPETENZE dopo aver individuato le esigenze del cliente, egli elabora un documento con: i requisiti che il software dovrà soddisfare; lo studio di fattibilità; l'analisi dei costi; partendo da questo documento, l'analista programmatore elabora il progetto, realizza il software e documenta l'intero procedimento; effettua il collaudo, prima della consegna al cliente; provvede alla manutenzione del programma, vale a dire ad apportare tutte le modifiche necessarie per il suo buon funzionamento. Per svolgere il suo lavoro, l'analista programmatore deve: instaurare un rapporto produttivo con il cliente, comprenderne i problemi e le richieste; conoscere la logica e un certo numero di linguaggi di programmazione essere in grado di sviluppare adeguate metodologie per i test; saper documentare, con sintesi e chiarezza, i procedimenti tecnici. In termini più generali, tra le competenze richieste spiccano: conoscenza della lingua inglese tecnica; flessibilità; capacità di analisi; capacità di operare in team. Fondamentale è, inoltre, il continuo aggiornamento (learning).