160 likes | 346 Views
No Silver Bullet. Essenza ed Accidenti nella Ingegneria del Software Mario Capurso http://info.bazarinfo.info. Tra tutti i mostri , i piu’ terribili sono i lupi mannari. Un progetto e’ apparentemente innocente ...ma diventa un mostro a causa di: scadenze inevase preventivi disattesi
E N D
No Silver Bullet Essenza ed Accidenti nella Ingegneria del Software Mario Capurso http://info.bazarinfo.info
Tra tutti i mostri , i piu’ terribili sono i lupi mannari Un progetto e’ apparentemente innocente ...ma diventa un mostro a causa di: • scadenze inevase • preventivi disattesi • prodotti disastrosi Ci fosse una Pallottola d’Argento
Non c’e’ Pallottola d’Argento • A causa della stessa natura del Software • Niente che migliori di due volte ogni 18 mesi (legge di Moore) • Niente che migliori di sei ordini di grandezza in 30 anni • Niente che permetta di scegliere tra migliori prestazioni o minor prezzo
Le difficolta’ di fare Software • Analizzare, Progettare, Testare il progetto con l’utente: DIFFICILE • Programmare: RELATIVAMENTE FACILE Facciamo ancora errori di sintasssi, ma sono banali rispetto agli errori concettuali
Le Proprieta’ della Essenza del Software • Complessita’ • Conformita’ • Cambiabilita’ • Invisibilita’
Complessita’ Le entita’ software sono complesse per: • la dimensione • la mancanza di oggetti ripetuti • la quantita’ enorme di stati • la mancanza di scalabilita’
La complessita’ fa parte della essenza, e determina... • Difficolta’ di comunicazione in un team • Errori nei prodotti • Esplosione nei costi • Ritardi nelle consegne • Difficolta’ nell’uso • Difficolta’ di manutenzione • Difficolta’ di apprendimento • Difficolta’ nella sostituzione del personale
Conformita’ • Non ci sono principi unificanti • Il Software deve conformarsi ai voleri di molte istituzioni umane • Il software deve interfacciarsi a molti sistemi • Deve conformarsi perche e’ l’ultimo arrivato o e’ ritenuto il piu’ malleabile
Cambiabilita’ - 1 • Il Software e’ sotto continua pressione per il cambiamento • Anche i prodotti tangibili cambiano, ma meno frequentemente • Il Software incorpora la funzione, che e’ cio’ che risente di piu’ del cambiamento • Il Software e’ pensiero puro, infinitamente malleabile
Cambiabilita’ - 2 • Il Software di successo viene cambiato • L’utente lo prova in nuovi casi • L’utente vuole nuove funzioni • Il Software sopravvive all’hardware • Il Software e’ inserito in una matrice culturale di leggi, usi, utenti, macchine, situazioni che cambiano in continuazione
Invisibilita’ • Il Software e’ invisibile • Gli oggetti sono visualizzabili, il Software puo’ essere rappresentato da una molteplicita’ di grafi sovrapposti • Il Software e’ non visualizzabile • Questo rende difficile la comunicazione tra menti differenti
I Progressi passati hanno risolto le difficolta’ accidentali • I Linguaggi ad alto livello • Risolvono la complessita’ accidentale legata al computer usato: bits, registri, periferiche • I Computer usati in maniera interattiva • Risolvono la complessita’ accidentale legata ai tempi di risposta • Gli ambienti di programmazione integrati • Risolvono la complessita’ accidentale legata all’uso di programmi separati
Speranze d’Argento - 1 • I progressi nei linguaggi di programmazione • Favoriscono il training del programmatore • La programmazione ad oggetti • Riduce la quantita’ di materiale da esprimere • L’Intelligenza Artificiale in generale • Troppo legata a problemi specifici • I Sistemi Esperti • Utile per formalizzare l’esperienza dei migliori programmatori
Speranze d’Argento - 2 • La programmazione automatica • Utile per problemi con pochi parametri e librerie di alternative • La programmazione grafica • Offre una visione limitata • Ambienti e strumenti di programmazione • Guadagni marginali • Stazioni di lavoro potenti • Benvenute, ma non sono magia
Gli Attacchi Promettenti all’Essenza Concettuale -1 • Compra piuttosto che costruire • Compra software sotto forma di prodotti, strumenti, moduli • Usa programmi generali come spreadsheets e data bases
Gli Attacchi Promettenti all’Essenza Concettuale -2 • Raffina i requisiti attraverso prototipi • Estrai iterativamente i requisiti • Aiuta l’utente a capire cosa vuole • Trovati dei Grandi Progettisti • Le differenze sono di un ordine di grandezza • Identifica e fa’ crescere un grande progettista • Premia un grande progettista • Fa’ interagire i progettisti con un grande progettista