definizione complessiva del mio lavoro; proporrei questa...

81
Calvino (Lezioni americane) Leggerezza “.. definizione complessiva del mio lavoro; proporrei questa: la mia operazione è stata il più delle volte una sottrazione di peso, ho cercato di togliere peso ora alle figure umane, ora ai corpi celesti, ora alle città; soprattutto ho cercato di togliere peso alla struttura del racconto ed al linguaggio” . …

Transcript of definizione complessiva del mio lavoro; proporrei questa...

Calvino(Lezioni americane)

Leggerezza

“.. definizione complessiva del mio lavoro; proporrei questa: la mia operazione è stata il piùdelle volte una sottrazione di peso, ho cercato di togliere peso ora alle figure umane, ora ai corpi celesti, ora alle città; soprattutto ho cercato di togliere peso alla struttura del racconto ed al linguaggio” . …

Calvino(Lezioni americane)

Leggerezza

• …Poi, l’informatica. E’ vero che il software non potrebbe esercitare i poteri della sua leggerezzase non mediante la pesantezza dell’hardware; ma è il software che comanda, che agisce sul mondo esterno e sulle macchine, le quali esistono solo in funzione del software, si evolvono in modo da elaborare programmi sempre più complessi….

ADA

ADA

Ada Augusta Byron Lovelace (Londra, 1815- 1852)

ADA

• 1833. Incontro con Charles Babbage.

• Primo programma di computer : algoritmo (per il calcolo dei numeri di Bernoulli) codificato per essere elaborato da una macchina (macchina analitica di Babbage).

Charles Babbage (1791-1871)

macchina alle differenze(1822)

macchina analitica(1833-1842)

Macchina alle differenze• Realizzazione di tavole matematiche. Tabulazione

di funzioni polinomiali. (Metodo alle differenze). Fino ad 8 cifre decimali.

Macchina analitica

• Calcolatore programmabile. Possibilità di fornire in ingresso alla macchina non solo i dati su cui operare, ma anche la sequenza di operazioni (istruzioni) da eseguire sui dati (programma).

• Strumento di calcolo “universale” le cui operazioni possono essere di volta in volta specificate assieme ai dati da elaborare

Telaio di Jacquard (1752-1834)

prima applicazione pratica delle schede perforate. Le schede comandano la tessitura di disegni e trame sui tessuti.

“.…. E’ risaputo infatti, che il telaio di Jacquard può tessere qualsiasi disegno che l’immaginazione umana ècapace di concepire.E’ pure noto che è pratica costante dei fabbricanti di rivolgersi ad artisti provetti per disegnare i modelli (scelta e messa a punto dell’algoritmo).Questi modelli sono poi affidati ad un artigiano specializzato il quale , per mezzo di una certa macchina, punzona una serie di schede (traduzione dell’algoritmo in programma). Dopo averle inserite nel telaio Jacquard, esso tesserà il disegno così come lo ha tratteggiato l’artista (esecuzione del programma da parte della macchina).”

La macchina analitica era composta da:

• Store (memoria) per immagazzinare i dati iniziali, i risultati intermedi ed i valori finali. Costituita da 200 colonne (25 ruote dentate).

• Mill (unità aritmetico logica) in grado di svolgere le quattro operazioni aritmetiche con procedimenti meccanici (1 addizione al secondo).

• Un nastro perforato contenente la sequenza delle operazioni richieste per il problema.

1840. Congresso degli scienziati italiani a Torino. Partecipazione di Charles Babbage (invitato da Vittorio Amedeo Plana).

1842. Luigi Menabrea “Notions sur la machine analytique de Charle Babbage” Bibliothèque Universelle de Genève.

1843. Traduzione in Inglese del testo di Menabrea da parte di Ada Byron.

ADA

Sketch of

Invented by Charles Babbage By L. F. MENABREA

of Turin, Officer of the Military Engineersfrom the Bibliothèque Universelle de Genève, October, 1842, No. 82

With notes upon the Memoir by the Translator

ADA AUGUSTA, COUNTESS OF LOVELACE

ADA

• Parla di variabili, operazioni e stati e si esprime in linguaggio puramente simbolico.

• Strutture cicliche annidate (problemi ricorrenti).

• Uso di un linguaggio molto simile all’attuale assembler

ADA

• “The analytical Engine weaves algebraic patterns , just as the Jacquard loom weaves flowers and leaves”

• “The analytical Engine has no pretension to originate anything. It can do whatever we know how to order it to perform.”

George Boole (1815-1864)

• 1854- “An investigation of the law of thought, on which are founded the mathematical theories of logic and probabilities”.

• Partendo dalla logica di Aristotele, riprendendo le idee di Leibniz introdusse l’algebra booleana.

• Nuovi operatori per rappresentare combinazioni di “vero” e “falso”.

BOOLE

• 1940 Claude Shannon si laurea con una tesi basata sul lavoro di BOOLE, sostenendo che l’algebra booleana poteva essere applicata per studiare e progettare i circuiti a relè necessari tanto in informatica che in telefonia.

Hermann Hollerith• 1890 Censimento americano. Macchina di

Hollerith. • Leggere, conteggiare e ordinare i dati immessi

su schede perforate• Perforatore, tabulatore (conteggio) e ordinatore

(ordinamento alfabetico o numerico).• Programmabili (tramite fili e spine) in modo che

l’utente potesse specificare quali colonne conteggiare ed in quale ordine disporre le schede

• 1924 IBM (Thomas Watson)

Le origini del software

ENIAC(Electronic Numerical Integrator And Computer)

Università di Pennsylvania (1946).

• Problemi di calcolo balistico per il lancio dei proiettili d’artiglieria (soluzione di un sistema di equazioni differenziali)

•18.000 valvole termoioniche, collegate da 500.000 contatti saldati manualmente, 1.500 relè.

ENIAC

I80 mq, 30 ton.

Architettura di Von Neumann (1903- 1957)

• Programma e dati contenuti nella stessa memoria.

• Unità di calcolo separata dalla unità di memoria.

• Il calcolatore può modificare il proprio comportamento

Von Neumann e Turing

• Tra il 37 ed il 38 Turing trascorse un periodo di ricerca a Princeton.

• Incontrò e lavorò con Von Neumann che venne in quella occasione a conoscenza del lavoro di Turing sulla macchina universale.

Macchina di Turing

La macchina è dotata di un insieme di istruzioni che descrivono le operazioniche la macchina può eseguire in funzione dello stato in cui si trova

Macchina di Turing Universale

• in grado di emulare il funzionamento di una qualunque altra macchina di Turing creata per risolvere un particolare problema.

• tesi di Church-Turing : se esiste un algoritmo in grado di svolgere un compito di manipolazione dei simboli, allora esiste una macchina di Turing in grado di svolgere lo stesso compito.

Calcolatori “Von Neumann”

• EDVAC (Electronic Discrete Variable Automatic Computer) Università della Pennsylvania ( 1951)

• EDSAC (Electronic Delay Storage Automatic Calculator) Maurice Wilkes, Università di Cambridge, Inghilterra (1950)

In Italia

• 1954 Politecnico di Milano . Calcolatore CRC California.

• 1955 Istituto nazionale per le applicazioni del calcolo. Ferranti (Mark1)

• CEP (Calcolatrice Elettronica Pisana) circuiti a transistori, microprogrammata , linguaggio Fortran. (1953-57)

• ELEA (Elaboratore Elettronico Automatico) Olivetti

Memoria a tamburo magnetico :2,000 word 10-digit con segnoTempo di accesso medio: 2.5 ms

IBM 650 (1957)

Costo: mezzo milione di dollariDimensioni ridotteProgrammato usando il sistema decimale invece di quello binario.

Appunti autografi di A.M.Turing: programmazione del computer Mark I (Manchester, 1953)

A caccia di un errore:

How did this happen ?

Fonte: [8] nella bibliografia di questa lezione (con adattamenti del docente)

IBM1620

Tempo di accesso alla memoria 20 microseconds Memoria centrale ( da 20,000 a 60,000 cifre decimali )Linguaggio Fortran IIDisco magnetico

• La disumanità del computer sta nel fatto che una volta programmato e messo in funzione, si comporta in maniera perfettamente onesta.(Isac Azimov)

• I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmenti lenti, imprecisi ed intelligenti. L’insieme dei due costituisce una forza incalcolabile.(Albert Einstein)

“The humble programmer”.

E.W. Dijkstra, Communications of the ACM 1972

Sistemi time sharing

1961 CTS- Compatible time sharing(John MacCarty, Robert Fano e Fernando

Corbato).• Fu usato un calcolatore della classe IBM 7090

(32 K di memoria, parole a 36 bit, tamburo veloce come memoria secondaria.) Gestiva fino a 32 utenti.

• Nel 1964 presso il MIT fu finanziato il progetto Multics

Public utility

“If computers of the kind I have advocated become the computers of the future, then computing may someday be organized as a public utility just as the telephone system is a public utility... The computer utility could become the basis of a new and important industry.”(John McCarthy)

FORTRAN e COBOL

• FORmula TRANslation. (John Backus, 1954). Progetto di ricerca IBM. Calcolo scientifico.

• Common Business Oriented Language (Grace Murray Hopper, 1961). Applicazioni gestionali

Crisi del software

Crisi del software

• Progetti oltre il budget • Progetti oltre i limiti di tempo • Software di scarsa qualità• Software che spesso non rispettava i requisiti • Progetti ingestibili e codice difficile da

manutenere

“Se il settore dell’automobile si fosse sviluppato come l’industria informatica, oggi avremo veicoli che costano 25 dollari e fanno 500 Km con un litro”. (Bill Gates).

“Se le auto funzionassero come i software, si bloccherebbero due volte al giorno senza motivo e l’unica soluzione sarebbe reinstallare il motore” (Dirigente General Motors)

OS/360

• Serie IBM 360 (1964):applicazioni scientifiche e commerciali (circuiti integrati).

• Sistema operativo OS/360: varianti tra loro compatibili dello stesso S.O. per tutte le macchine della serie.

The Mytical Man-MonthBrooks ‘s law“Assigning more programmers to a project running behind schedule will make it even later, because of the time required for the new programmers to learn about the project, as well as the increased communication overhead. “

The second-system effect“When an architect designs a second system it is the most dangerous system he will ever design because he will tend to incorporate all of the additions he originated but did not add (because of the inherent time constraints) to the first system. Thus, when embarking upon a second system, an engineer should be mindful that he is susceptible to over-engineering it.”

The Mytical Man-Month

• The tendency for managers to repeat such errors in project development led Brooks to quip that his book is called "The Bible of Software Engineering", because, "everybody quotes it, some people read it, and a few people go by it.”

Ingegneria del software

Ingegneria del software

• NATO Software Engineering Conference (1968 Garmisch , Germania).

• “an engineering discipline that is concerned with all aspects of software production from the early stage of system specification to maintaining the system after it has gone into use”

Modelli di Processo

• Processo a cascata• Processo iterativo• Processo iterativo a spirale• Processi agili (eXtreme Programming)• Processi model driven• …….

Processo a cascata

Analisi

Progettazi

Realizzazi

Requisiti

Analisi

Progettazione

Realizzazione

Test

Rilascio

Processo a cascata

• Netta separazione tra le fasi di costruzione e quella di analisi e progettazione.

• Problema: nella costruzione del software i requisiti sono spesso non stabili (natura dei domini applicativi).

• Scoprire in fase di progetto avanzato o di collaudo che un requisito è mal definito o del tutto ignorato è la ragione di molti fallimenti

Processi agili

• Sviluppo iterativo e incrementale:codifica, collaudo, interazione, progettazione.

• Il miglior modello di un sistema software èrappresentato dal suo codice

• Lo sviluppo si adatta in maniera flessibile ai requisiti man mano che questi vengono esplicitati

• Non esiste un unico modello di riferimento da adottare come standard immutabile e universale.

• Il modello di processo deve essere di volta in volta definito in base alle specifiche caratteristiche dell’applicazione.

Nuove metodologie e strumenti• Programmazione strutturata (Böhm-Jacopini-1966)• Tecniche di decomposizione (Dijkstra- 1968)• Verifica formale delle proprietà dei programmi (Floyd,

Hoare , fine anni 60)• Modularizzazione e progettazione per il cambiamento

(Parnas, anni 70)• Programmazione orientata agli oggetti (anni 70)• Nuovi linguaggi di programmazione:ADA,JAVA(90)• Service oriented architecture(componenti software)• ……

No silver bullet

• F. Brooks: “No silver bullet: essence and accidents of software engineering”.(IEEE Computer, 1987)

• Non esiste una panacea capace di rendere facile lo sviluppo del software.

Complessità• “La complessità del software è una proprietà

essenziale e non incidentale.”(Brooks).

• Il software deve spesso modellare una realtàcomplessa: problemi definiti da una miriade di requisiti in competizione fra di loro.

• Requisiti di tipo anche non funzionale: usabilità, prestazioni, costo,durata nel tempo, affidabilità

Programmazione concorrente

Programmazione concorrente

• Suddivisione di una applicazione complessa in parti che possono essere eseguite parzialmente in parallelo.

• Problemi di interazione (sincronizzazione) tra le varie parti.

• Modelli e strumenti.

Programmazione concorrente

Dijkstra Problema dei cinque filosofi

Free software e open source

Licenze per il software proprietario

Le licenze del software proprietario impongono in genere vincoli su:

• Uso ed installazione• Riproduzione e ridistribuzione• Modifica.

Software libero e Open source

• Richard Matthew Stallman (1953)

• Laboratorio di AI, MIT

• Nel 1980, a Stallman fu rifiutatoIl codice sorgente di una nuovastampante laser Xerox.

GNU

• 1983. Stallman annuncia il progetto per creare un sistema operativo completamente libero compatibile con Unix, GNU ( GNU's Not Unix).

• Free Software Foundation. No profit.

“Libertà” del software liberoL’utente può:

• eseguire il programma per qualsiasi scopo;• modificare il programma secondo i propri bisogni

(codice sorgente); • distribuire copie del programma, gratuitamente o

dietro compenso (purché esso rimanga libero);• distribuire versioni modificate del programma, così

che la comunità possa fruire dei miglioramenti apportati ( le modifiche apportate non possono essere mantenute private) .

GPL (Generic Public License)

• documento legale associato al programma rilasciato sotto tale licenza. Consente le quattro libertà.

• Copyleft

GNU LINUX

• Nel 1991, Linus Torvalds, uno studente finlandese,mise a disposizione della comunitàcon licenza GPL, un Kernel che aveva iniziato a sviluppare partendo da Minix.

• La vera novità di Linux fu il metodo di lavoro, coordinato via internet e caratterizzato dal rilascio di versioni aggiornate anche giornaliere.

LGPL ( Lesser General Public License )

• La LGPL è una licenza di tipo copyleft, ma un programma sotto LGPL può essere incorporato entro un programma proprietario.

• La LGPL è principalmente usata per le librerie software (librerie C fornite con Linux).

Vantaggi del software libero

• Possibilità di personalizzazione.

• Il codice sorgente è sottoposto ad una revisione da parte di moltissime persone [Many eyes make all bugs shallow].

• Difficile inserire intenzionalmente nel software virus senza che vengano prontamente rilevati.

Applicazioni commerciali del software libero

• Purché si rispettino i vincoli della licenza d'uso, è possibile vendere il software libero.

• Il guadagno non è nella vendita di software libero ma sui servizi e assistenza.

• Esempi : alcune distribuzioni di Linux come Red Hat o Suse.

Open Source Initiative (1998)• Ambiguità del termine free ("free speech, not

free beer“). Viene proposto il termine open source.

• Metodologia di sviluppo del software che prevede la collaborazione di una comunità di utenti, che si scambia il codice e lo migliora.

• Possibile convivenza tra software sorgente e software proprietario. Si possono mantenere private le modifiche

• La piattaforma Android è codice open source rilasciato con licenza Apache.

• Il software può essere modificato e distribuito secondo altre licenze non necessariamente libere.

• Lo sviluppatore è tenuto, ad ogni modo a rendere noto quali parti di software, licenziate con Apache, sono state modificate

Open source

• Bruce Perens , Eric S. Raymond“La cattedrale ed il bazaar”

Licenze open source• MPL (Mozilla Public License) e BSD( Berkeley

Software Distribution).• Un software MPL può essere mescolato con software

commerciale e le modifiche possono essere mantenute private e non restituite all’autore originale.

• BSD non impone il rilascio pubblico del codice sorgente delle opere derivate.

• Altre licenze: Apache Software license, Sun public license …..

TCO (Total Cost of Ownership)

• acquisto• installazione• personalizzazione• formazione• assistenza • dismissione

Cloud computing

Cloud computing

• “… a model for enabling convenient on-demand access to a shared pool of configurable computing resources (e.g. networks,servers, storage, applications and services) that can be rapidely provisioned and released with minimal management effort or service provider interaction”.

National Institute of Standards and Technology (NIST), USA

Caratteristiche essenziali

• 1. Approccio di tipo self service on-demand• 2. Accesso attraverso Internet• 3. Allocazione dinamica delle risorse (CPU,

RAM, larghezza di banda, macchine virtuali)• 4. I servizi possono essere forniti in modo

elastico e sono in grado in modo automatico di scalare a seconda delle richieste.

Modelli di servizio

• Software as a Service (SaaS) .• Platform as a service (PaaS) • Infrastructure as a service (IaaS)

Criticità

• Sicurezza e privacy dei dati• Mancanza di interoperabilità tra le diverse cloud

e tra le cloud ed i sistemi informativi aziendali.• Mancanza di infrastrutture adeguate:

connettività a banda larga,pervasiva e multicanale.

• Necessità di un‘ elevata affidabilità (es:rete di distribuzione dell’energia elettrica).

Web apps

• Applicazioni sviluppate per dispositivi mobili. Possono essere o pre-installate sui dispositivi o scaricate dagli utenti da “app storesapp stores”.

• Crescita esplosiva entro il 2014 (Gartner), 185 miliardi di applicazioni scaricate dai mobile app store, dal debutto di Apple nel luglio 2008.

• Un giro di affari da 58 miliardi di dollari, in crescita del 1000% tra il 2010 e il 2014.

Web apps

• Le applicazioni sono sviluppate usando diversi S.O. e linguaggi di programmazione.

• Differenti componenti hardware nei vari dispositivi.

• Applicazioni complesse da realizzare (multimedialita’)

Ambienti di sviluppo

• Java ME Applicazioni portabili (in generale). Adatte per dispositivi semplici (feature phones) Le Applicazioni sono in generale non superiori ad 1 megabyte.

• Symbian è un S.O. real time, multi-tasking OS . Molto diffuso. Progettato con l’obiettivo di ridurre l’impegno di memoria e di massimizzare il tempo di vita delle batterie. Open source (Symbian Foundation).

Ambienti di sviluppo

• Android piattaforma basata su Linux utilizzata da Google, Motorola, T-Mobile etc..Uso del linguaggio Java

• Windows Mobile è una variante di Windows Ce per telefoni mobili (Microsoft)

• Palm OS basato su Linux. Mercato US (Palm PDA) • BlackBerry• iOS (Apple)

Piattaforma Android

• La piattaforma Android è codice open source rilasciato con licenza Apache.

• Il software può essere modificato e distribuito secondo altre licenze non necessariamente libere.

• Lo sviluppatore è tenuto, ad ogni modo a rendere noto quali parti di software, licenziate con Apache, sono state modificate