Upload
trankhue
View
218
Download
0
Embed Size (px)
Citation preview
Il software
Il termine software ha origine durante la seconda guerra mondiale.
I tecnici dell'esercito inglese erano impegnati nella decrittazione dei codici tedeschi di Enigma, di cui già conoscevano la meccanica interna (detta hardware, componente dura, nel senso di ferraglia) grazie ai servizi segreti polacchi. La prima versione di Enigma sfruttava tre rotori per mescolare le lettere.
Dopo il 1941, ad Enigma venne aggiunto un rotore, e il team di criptanalisti inglesi, capitanati da Alan Turing, si dovette interessare non più alla sua struttura fisica, ma alle posizioni in cui venivano utilizzati i rotori della nuova Enigma.
Dato che queste istruzioni erano scritte su pagine solubili nell'acqua (per poter essere più facilmente distrutte, evitando in tal modo che cadessero nelle mani del nemico) furono chiamate software (componente tenera), in contrapposizione all'hardware.
Il senso moderno del termine deriva dalle istruzioni date ai computer, ed è stato utilizzato per la prima volta nel 1957 da John Wilder Tukey, noto statistico statunitense.
Dal 1950 l'analogia tra l'hardware ed il corpo umano e quella tra il software e la mente umana si è fatta molto forte, dal momento che Turing ha sostenuto che il progresso tecnologico sarebbe riuscito a creare, entro il 2000, delle macchine intelligenti (in grado cioè di "pensare" autonomamente) atte alla risoluzione dei problemi
Andrew Hodges, Alan Turing: una biografia, Torino, Bollati Boringhieri, 2006
Il software
Il software è una componente del computer costituita dai:
programmi di base per la gestione del sistema programmi applicativi per l’uso del sistema
Queste componenti permettono di trasformare l’hardware in un oggetto in grado di svolgere delle funzioni di natura diversa
La proprietà fondamentale dei computer è il fatto di essere programmabili
Algoritmi
L'algoritmo è un procedimento che permette di calcolare un risultato e/o risolvere un problema, eseguendo una serie di ordini e condizioni impostate a priori.
Analogamente, in informatica, un algoritmo non è altro che un semplice procedimento che permette la risoluzione di specifici problemi mediante l’applicazione di una sequenza finita di precise istruzioni che, a loro volta, devono essere interpretate ed eseguite fino alla loro conclusione seguendo un ordine ben preciso.
Metafora: ricette e algoritmi
ricetta
cuoco
ingredienti
piatto
algoritmo (programma)
computer
input
output
Cfr.: Pellegrino Artusi (1910), La scienza in cucina e l'arte di
mangiar bene.
Metafora: ricette
deve esistere qualcuno (cuoco) che esegua la ricetta
le istruzioni devono essere eseguite in ordine per partire dagli ingredienti ed ottenere il piatto
il cuoco deve conoscere la lingua italiana altrimenti serve un traduttore
il cuoco non può preparare “cotolette di arigusta” se non sa preparare la “balsamella”
la ricetta per “balsamella” è riportata nel capitolo “salse”
cuoco in difficoltà con istruzioni ambigue (“abbiate l’avvertenza di cuocerli poco, in molta acqua”)
l’ordine di esecuzione è importante (“condite gli spaghetti” dopo “cuocerli”)
istruzioni non infinite
tempo non infinito
eseguendo più volte la stessa ricetta si ottiene lo stesso piatto
se una ricetta è per 4 persone, raddoppiando le dosi degli ingredienti vale per 8 persone
Metafora: algoritmi deve esistere un esecutore (calcolatore) che esegua l’algoritmo
le istruzioni devono essere eseguite in ordine per partire dai dati di input ed ottenere i dati di output
il calcolatore deve conoscere il linguaggio dell’algoritmo altrimenti serve un traduttore
l’algoritmo deve prevedere solo istruzioni elementari per il calcolatore
specificato un algoritmo, può essere richiamato per l’esecuzione di algoritmi più complessi
il linguaggio dell’algoritmo non può essere ambiguo
l’ordine di esecuzione è importante
istruzioni non infinite
tempo non infinito
l’algoritmo deve essere deterministico: eseguito più volte sugli stessi dati di input genera sempre lo stesso output
algoritmo parametrico: risolve una classe di problemi (al variare dei dati di input)
Il softwareIl software
Una programmazione diretta della macchina hardware da parte degli utenti creerebbe delle serie difficoltà L’utente dovrebbe conoscere l’organizzazione fisica
dell’elaboratore e il suo linguaggio macchina Ogni programma dovrebbe essere scritto utilizzando
delle sequenze di bit ed ogni piccola differenza hardware comporterebbe una riscrittura del programma stesso
Una programmazione diretta della macchina
hardware da parte degli utenti non è accettabile
È necessario fornire un meccanismo per astrarre dall’organizzazione fisica della macchina
L’utente deve: usare nello stesso modo (o comunque in un modo molto
simile) macchine diverse dal punto di vista hardware avere un semplice linguaggio di interazione con la
macchina avere un insieme di programmi applicativi per svolgere
compiti diversi
Il software
La macchina virtuale
Nei moderni sistemi di elaborazione questi obiettivi vengono raggiunti grazie alla definizione di macchine virtuali che vengono realizzate al di sopra della macchina hardware reale
Questa macchina si dice virtuale in quanto essa non esiste fisicamente
Si può fare in modo che macchine (fisicamente) differenti siano usabili in modo simile Si tratta di costruire al di sopra delle diverse macchine
fisiche la stessa macchina virtuale
La macchina virtuale
La macchina virtuale viene realizzata mediante il software (software di base)
L’utente interagisce con la macchina virtuale grazie ad un opportuno linguaggio di comandi
Ogni computer ha un linguaggio macchina le cui istruzioni sono direttamente eseguibili dalla macchina hardware
Linguaggio di comandi
La macchina virtuale si preoccupa della traduzione di ogni comando impartito dall’utente nella sequenza di comandi che realizzano la stessa funzione e sono riconosciuti dalla macchina fisica sottostante
Linguaggio di comandi
Per esempio: interfaccia testuale MS-DOS, Unix shell, Linux shell
Lavorando con una interfaccia testuale i comandi vengono impartiti mediante la tastiera
Ogni comando ha un suo nome e una sintassi ben precisa
C:> print foo1.doc
Can’t find file foo1.doc
C:>
prompt
Linguaggio di comandi (interfaccia testuale)
Dai il messaggio di prompt all’utente
Quando arriva il comando, riconoscilo
Se è errato, dai un messaggio di errore
Se è corretto, esegui l’azione corrispondente
Al termine dell’operazione, torna all’inizio
C:> print foo1.doc
Can’t find file foo1.doc
C:>
Linguaggio di comandi (interfaccia grafica)
Per esempio: interfaccia grafica Nei calcolatori con interfaccia grafica molti comandi sono
impartiti mediante l’interazione attraverso il mouse e la tastiera
Cioè il clic (il doppia clic, …) del mouse su un’icona viene tradotto in una opportuna sequenza di istruzioni che il computer esegue per soddisfare la richiesta dell’utente
Il software di base
Software di base: realizza la macchina virtuale
Gli strumenti software che permettono all’utente (e ai programmi applicativi) di interagire con l’elaboratore in modo semplice (funzioni
di traduzione tra linguaggi diversi) e di gestire le risorse fisiche
Il sistema operativo fa parte del software di base
Software di base
Sistema Operativo (OS, Operating System):insieme di programmi che forniscono all’utente intermediazione nell’utilizzo della macchina HW
visione astratta dell’HW (macchina virtuale, macchina astratta)
un ambiente per l’esecuzione del SW applicativo
OS: componenti
nucleo (kernel) controlla la CPU (programmi…)
gestore della memoria allocazione della memoria ai
programmi in esecuzione
gestore dei dispositivi di I/O garantisce l’accesso ai
dispositivi di I/O
maschera i dettagli di basso livello e gli eventuali conflitti
file system archiviazione e reperimento
dei dati sulla memoria di massa
gestore della rete interfaccia con risorse
collegate via rete
comunicazione con processi su altri calcolatori
interprete comandi interfaccia diretta, semplice ed
intuitiva con gli utenti
Il sistema operativo
Dal punto di vista strutturale il sistema operativo è formato da un insieme di livelli, che formano la cosi detta “struttura a cipolla”
Idealmente l’utente è ignaro di tutti i dettagli delle operazioni svolte dai livelli inferiori della gerarchia e conosce solo le operazioni del livello più alto
Funzioni principali del sistema operativo
Avvio del computer
Gestione del processore e dei programmi in esecuzione (detti processi)
Gestione della memoria principale
Gestione della memoria virtuale
Gestione della memoria secondaria
Gestione dei dispositivi di input/output
Interazione con l’utente
Avvio dell’elaboratore
Una parte del sistema operativo deve essere sempre mantenuta in memoria principale e deve essere sempre pronta per l’esecuzione
012345
N
S.O.
spazio
utente
Avvio dell’elaboratore: i virus
Spesso durante questa fase sono eseguiti anche dei programmi che verificano l’eventuale presenza di virus sul disco dell’elaboratore
I virus può danneggiare il funzionamento dell’elaboratore
I virus possono essere trasmessi da un elaboratore ad un altro
Malware
malicious software
computer virus: programma che può riprodursi attaccando il suo codice ad un altro programma, al settore di avvio di un disco o ad un documento con macro e, in generale, generare effetti collaterali dannosi
worm (verme): programma che si diffonde tra gli elaboratori autoreplicandosi mediante la rete (soprattutto e-mail)
trojan horse (cavallo di troia): programma distruttivo nascosto all’interno di un programma applicativo o di un gioco hacker (o cracker): individuo che aggira le
protezioni di un sistema informatico per compiere accessi non autorizzati
spyware: programma che raccoglie, senza autorizzazione, informazioni sull’utente e le sue abitudini (applicazioni eseguite, siti web visitati …)
adware (advertising-supported software): programma che propone pubblicità adware disonesto: installato senza
autorizzazione
crimeware: programmi per il furto d’identità
hoax (bufala): messaggio e-mail che annuncia l’imminente arrivo di messaggi e-mail infettati da pericolosissimi virus inesistenti
Protezione dal malware
diffidenza verso: materiale scaricato da siti web dubbi
e-mail con contenuto e/o mittente strano
documenti con macro
PC usati da molte persone
antivirus: aggiornamento
scansione avviata manualmente ed automaticamente
controlli automatici costanti
controllo e-mail
firewall (muro tagliafuoco)
Software: opera dell’ingegno
SW proprietario può essere usato acquistandolo oppure ottenendo l’autorizzazione
all’uso (licenza)
SW shareware distribuito gratuitamente, può essere usato gratuitamente per un
periodo di prova dopo, pagando la registrazione, si può utilizzarlo e ricevere
aggiornamenti
SW freeware può essere liberamente usato, copiato e distribuito
SW libero e SW open source può essere usato, copiato e distribuito gratis ma rispettando alcune
regole
Software applicativo
videoscrittura (word processor)
fogli elettronici (spreadsheet)
presentazioni multimediali
desktop publishing
gestione di basi di dati
web editor
grafica e fotoritocco
diagrammi
gestione delle finanze individuali
organizer
project management
OCR
CAD
videogiochi
audio/video player
applicazioni per Internet
…