Il progetto informatico
Un progetto è l'insieme di attività, risorse umane e materiali, oltre ai piani e
alle decisioni, necessarie per ottenere un risultato che dia risposta alla richiesta
di un committente.
Fattori di complessità emersi nell’evoluzione del software:
1. Passaggio da batch a real-time: Lo sviluppo software è passato da
elaborazioni sequenziali (batch) a sistemi interattivi e in tempo reale.
2. Da progetti su misura a software di mercato: Si è evoluto da soluzioni
per singoli clienti a prodotti destinati a un vasto numero di utenti.
3. Da monoutente a multiutente: I software si sono trasformati da
applicazioni per un solo utente a sistemi concorrenti e multiutente.
4. Da soluzioni specifiche a sistemi integrati: Si è passati da soluzioni
isolate a sistemi complessi e integrati che coinvolgono l’intera organizzazione.
Quando si affronta un problema complesso, la difficoltà principale è spesso
l’approccio iniziale. Un progetto informatico presenta due aspetti
fondamentali: la gestione del progetto e il progetto stesso. Il primo passo
per affrontarli consiste nell’individuare modelli adatti che rappresentino il
sistema in modo chiaro, semplificato e utile a prevederne il comportamento.
Gli attori coinvolti sono:
Il committente, che espone il problema;
L’analista, che lo traduce in un modello;
Lo sviluppatore, che realizza il prodotto;
Il coordinatore, che gestisce risorse, tempi, rischi e correzioni.
Il progetto si sviluppa nel tempo attraverso fasi e interazioni tra attori,
influenzate dal modello adottato.
Per affrontare problemi complessi si usano due approcci:
Top-down (decomposizione funzionale): si parte dal problema
generale per scomporlo in parti più semplici.
Vantaggi: modello fedele alla realtà, senza elementi superflui.
o Svantaggi: rischio di reinventare soluzioni già esistenti.
o
Bottom-up (composizione modulare): si parte da moduli già risolti
per costruire la soluzione complessiva.
Vantaggi: si sfruttano soluzioni già pronte e funzionalità aggiuntive.
o Svantaggi: integrazione complessa e rischio di creare un sistema
o troppo complicato.
Ogni approccio può essere applicato iterativamente fino a raggiungere una
(livello di dettaglio di un modello iterativo)
granularità sufficiente per
descrivere il problema in dettaglio.
Fasi e deliverables
L’approccio top-down di un progetto informatico porta alla suddivisione del
processo in fasi interconnesse, ciascuna composta da attività affini che
producono deliverable, ovvero risultati concreti e documentabili.
Un progetto, pur essendo un’attività unica, è gestito tramite un processo
sistematico. Ogni deliverable deve:
derivare da attività precedenti,
essere utile per attività successive,
essere riconoscibile, chiaro e condivisibile tra gli attori del progetto.
Le attività hanno predecessori (attività che devono essere completate prima)
e successori (quelle che seguono), e sono ordinate in modo logico o
cronologico per formare un piano di lavoro.
Esempi di deliverable:
Documento dei requisiti del committente (es. appunti, email, file).
Stato di avanzamento lavori (report o presentazioni).
Programma eseguibile per test.
Rapporto dei risultati dei test effettuati.
Il percorso tr