No Silver Bullet
description
Transcript of No Silver Bullet
No Silver Bullet
Essenza ed Accidenti nella Ingegneria del SoftwareMario 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