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 1
Software 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... 2
Software 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 3
Produzione 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) 4
Arte 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. 5
Arte 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) 6
Arte 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 7
Il 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 8
Arte, 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 ... 9
Puoi anche leggere