Costruzione del Software: Arte o Scienza ?

Pagina creata da Giuseppe Nanni
 
CONTINUA A LEGGERE
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