Costruzione del Software: Arte o Scienza ?
←
→
Trascrizione del contenuto della pagina
Se il tuo browser non visualizza correttamente la pagina, ti preghiamo di leggere il contenuto della pagina quaggiù
Costruzione del Software:
Arte o Scienza ?
Alberto Coen-Porisini
DICOM
La presentazione
Di cosa non parla
Computer Art
Stato della ricerca
Di cosa parla
Software
Produzione del Software
Perché il software non funziona (quasi) mai
come dovrebbe
1Software
Cos’è il Software ?
Le istruzioni che dicono a un calcolatore cosa
deve fare (Enciclopedia Britannica)
Le istruzioni e i dati presenti in un calcolatore
Vi sono tante altre definizioni
Software
Costruire Software ≠ Programmare
La lezione viene dalla fine degli anni ’60
Programmatore vs Utente
Nasce l’Ingegneria del Software
Il primo problema è capire cosa deve fare il
software
Troppo spesso non lo sa nessuno...
2Software
Peculiarità del Software
Modificabilità (Malleabilità)
E’ molto facile modificare il software
Modificarlo bene è molto difficile
Complessità
Sistemi software hanno un numero elevatissimo di stati
Difficoltà nell’identificazione
Difficoltà nel trasmettere le informazioni
Invisibilità
Mancanza di forme sintetiche di rappresentazione
Produzione del Software
Il processo produttivo del software
Assenza del processo manifatturiero
Progettazione
Difficile distinguere tra
Sviluppo
Evoluzione
3Produzione del Software
La legge di F. Brook
Aggiungere risorse umane ad un progetto in
ritardo serve ad aumentare il ritardo
La regola del 90-90 (Tom Cargill – Bell Labs)
Il 90% del codice richiede il 90% del tempo
dedicato allo sviluppo. Il restante 10% del codice
richiede il 90% del tempo
Evoluzione del Software
Legge di Zawinsky
Ogni programma viene esteso finché non riesce a
leggere la e-mail. I programmi che non possono
essere estesi sono rimpiazzati da quelli che possono
Sindrome della seconda versione
Quando si progetta la seconda versione di un sistema
semplice, elegante e ben funzionante si tende a
costruire un sistema mostruoso (elefantiaco)
4Arte o Scienza
E’ un dibattito che va avanti da oltre 30 anni
The Art of Computer Programming, D. Knuth
Bibbia degli algoritmi
Science of Computer Programming
Rivista scientifica internazionale
Sondaggio on-line propone
Arte, la creatività è l’asset principale (34%)
Scienza, la logica è l’asset pricipale (23%)
Dipende dall’individuo (23%)
Dipende dall’ambiente (20%)
Arte o Scienza
Definizione di Arte
1 attività umana basata sull’abilità individuale, sullo studio,
sull’esperienza e su un complesso specifico di regole |
insieme delle regole e delle conoscenze tecniche necessarie
per compiere una determinata attività
2 mestiere, professione
3 attività umana tesa a creare, per mezzo di forme, colori,
parole, suoni, ecc., prodotti culturali a cui si riconosce un
valore estetico.
5Arte o Scienza
Definizione di Scienza
1 insieme di conoscenze rigorosamente controllate e
sistematicamente ordinate che consente di giungere a verità
obiettive intorno a un determinato ordine di fenomeni o di
concetti: s. pura, quella fine a se stessa; s. applicata, quella
che ha per oggetto l’applicazione pratica delle scoperte
scientifiche | s. sperimentale o positiva, quella le cui
conoscenze sono fondate sull’esperienza
Arte o Scienza
L’informatica è sì una scienza
ma la costruzione del software ?
Richiede abilità individuale
Richiede studio ed esperienza
E’ guidata da un complesso specifico di
regole
Richiede creatività
Possiede dei canoni estetici (informali)
6Arte o Scienza
Non tutti gli informatici si occupano di
costruzione di software
Troppi costruttori di software non sono
informatici
Resta la creatività
Manca la conoscenze delle regole
Arte o Scienza
La vera domanda è:
Cosa dovrebbe essere la costruzione del
software ?
Una disciplina ingegneristica
aspetti creativi
approccio rigoroso
7Il funzionamento del software
Esiste un’ulteriore accezione del termine
arte:
pratica dell’alchimia; magia, sortilegio
Oggi far funzionare alcuni software è un’arte
magica
Arte, Scienza (o Magia) ?
Alcune tecniche (di sviluppo)
Voodoo programming
L’uso di tecniche proceduralizzate ma che uno non ha ben
capito (si segue la ricetta)
Black magic (programming)
L’uso di tecniche non documentate che nessuno capisce
Deep magic (programming)
L’uso di una tecnica (arcana) basata su principi teorici
sviluppati da un qualche “mago”
Heavy Wizardry
L’uso di una tecnica basata su profonda conoscenza e/o
esperienza di un ambiente di sviluppo specifico
8Arte, Scienza (o Magia) ?
Alcune tecniche (di funzionamento)
Rain dance
Una sequenza di operazioni rituali eseguita su un computer
per ottenere un determinato effetto
Incantation
Una sequenza di operazioni misteriose eseguite per ottenere
il risultato voluto
Casting the runes
Operazioni svolte da un Guru e che funzionano solo perché
le fa lui
...
Arte, Scienza (o Magia) ?
Le “bibbie”
Old Testament
Brian Kernighan, Dennis RitchieThe C Programming
Language
New Testament
Brian Kernighan, Dennis RitchieThe C Programming
Language, 2nd Ed.
Wizard Book
Hal Abelson, Jerry Sussman, Julie Sussman Structure and
Interpretation of Computer Programs
...
9Puoi anche leggere