Software
1
Principali componenti di un
Sistema di Elaborazione
• Hardware
• Software
– Software di sistema: Sistema operativo
– Software applicativo: Applicazioni
2
Organizzazione a “strati”
3
Motivazioni
• Qual è l’obiettivo di un sistema costituito da
diversi “strati” (hardware, software di sistema,
software applicativo) ben definiti e separati?
Avere un sistema a livelli, dove lo strato
superiore mascheri quello inferiore
Perché? Qual è il vantaggio?
4
Perché costruire un “sistema a livelli”?
OBIETTIVO RIVOLTO AGLI “UTILIZZATORI”
“Virtualizzazione” far apparire la realtà in modo diverso
(tipicamente più semplice e/o più gradevole)
L’hardware ha molte virtù (veloce, miniaturizzato), ma non
è né semplice né gradevole! Quindi farlo risultare tale è un
problema molto complesso per i progettisti informatici
QUANDO UN PROBLEMA E’ COMPLESSO, L’UOMO …
Quindi, un sistema a livelli (“modulare”) consente ai progettisti
di semplificare la soluzione del problema complesso di progettare,
realizzare e successivamente modificare un sistema informatico e
renderlo facilmente utilizzabile da chiunque (o quasi …)
5
Componenti di un Sistema di
Elaborazione + Utente
Hardware
Software
UTENTE
…
APPLICAZIONI
Sistema Operativo
?
Controller
SCSI
Controller
Keyboard
Controller
Mouse
Controller
PCI Bus
Controller
Floppy
Controller
ATAPI
SCSI Bus
Tastiera
Mouse
PCI Bus
Floppy
CD-ROM
6
Hardware e software
• Hardware è un termine sempre utilizzato
nella lingua inglese per indicare i pezzi
metallici usati nelle costruzioni, e per
indicare gli oggetti di “ferramenta”
– Oggi si riferisce anche alle parti fisiche di un
computer
• Software è un termine creato appositamente
per i computer (per analogia)
7
Cos’è il software?
• “Il Software è un insieme di programmi che permettono
ad un calcolatore di eseguire determinate funzionalità”
Cos’è un programma?
• Un PROGRAMMA è un’entità statica (descritta in un
dato LINGUAGGIO) che specifica:
– l’insieme di istruzioni che il calcolatore deve eseguire
– e la sequenza in cui devono essere eseguite
• Nel momento in cui un PROGRAMMA VIENE MANDATO
IN ESECUZIONE, si ha l’attivazione di un PROCESSO Una entità dinamica. Attraverso il suo stato si rappresenta
il modo in cui avviene l’esecuzione del programma
8
Algoritmi
• Algoritmo Sequenza finita di mosse che risolve in
un tempo finito una classe di problemi
– E’ un metodo sistematico per risolvere un problema. Es.
♦
lo svolgimento di operazioni aritmetiche
il processo di spedizione di una cartolina
♦ la ricerca di un numero telefonico
♦ il metodo per determinare quando il puntatore del mouse clicca
su un pulsante virtuale
♦…
♦
– Gli algoritmi devono essere non ambigui, essere costituiti
da un insieme finito di passi e terminare in un tempo finito
– E’ l’uomo che risolve problemi (inventa algoritmi)
9
Programma
• Testo scritto secondo la sintassi (alfabeto+regole
grammaticali) e la semantica di un linguaggio di
programmazione
PROGRAMMAZIONE (CODIFICA, IMPLEMENTAZIONE)
• Fase di scrittura di un algoritmo attraverso un insieme
ordinato di frasi (“istruzioni”), scritte in un linguaggio di
programmazione, che specificano le azioni da compiere
in modo formale che sia interpretabile dal computer, il
tutto allo scopo di risolvere un problema
10
Algoritmi e programmi (cont.)
• La programmazione consiste nello scrivere i
passi di un algoritmo in uno specifico
linguaggio
– un programma è un algoritmo codificato in uno specifico
linguaggio di programmazione (es., Java, C, Fortran, …)
• Esecuzione di un programma
– per avviare un programma si può “cliccare” sulla sua
icona (ad es., Word, Explorer, Firefox)
– così facendo si dice al computer di caricare il
programma in memoria principale e di far eseguire il
programma dalla CPU
11
Esecuzione di un programma
• L'esecuzione delle azioni nell'ordine specificato
dall'algoritmo consente di ottenere, a partire dai
dati di ingresso, i risultati che risolvono il
problema
UTENTE
Applicazioni
RISULTATI
DATI
INPUT
Sistema Operativo
OUTPUT
Hardware
Computer
12
I ruoli…
UTENTE
Individuazione
di un algoritmo
Metodo risolutivo
(progetto)
Programma
RIS
ULT
ATI
Formulazione
di un problema
(esecuzione)
DATI
Linguaggio di
Programmazione
(codifica)
INFORMATICO
(Sviluppo applicazioni)
INFORMATICO
(Tecnico)
13
NOTA
• Sono stati introdotti 4 termini importanti e non
banali:
– Software
– Programma
– Linguaggio (di programmazione)
♦ Ne
esistono tantissimi. Alcuni noti linguaggi di alto
livello: C, Java, Fortran.
[NO, NO, NO: HTML!!!]
– Processo
QUESTO CORSO NON INSEGNA LINGUAGGI DI
PROGRAMMAZIONE, QUINDI NON INSEGNA A
SVILUPPARE NUOVE APPLICAZIONI SOFTWARE
14
Quanti sono gli applicativi software?
• Esistono tantissimi tipi di software
–
–
–
–
–
–
per calcolo scientifico
per videoscrittura
per memorizzazione e recupero dati
per comunicazione
per svago
…
• Per ogni tipo di software, esistono innumerevoli
applicativi software prodotti da “fonti” molto varie
–
–
–
–
–
–
Multinazionali del software: IBM, Microsoft, EDS, …
Grandi software house
Gruppi di sviluppatori “free software”
Gruppi di ricerca per prototipi
Singole persone (per interesse o svago personale)
…
15
Esempi
• Software per l’elaborazione testi
– creazione, modifica e stampa di un documento: Word, Editor,
OpenOffice, ...
• Foglio elettronico
– tabella di valori disposti in righe e colonne: Excel, Lotus, …
• Software per Database
– sistema per l’archiviazione ed il recupero efficiente di dati in
formato digitale: Access, Oracle, MySQL, …
• Software per presentazioni
– creazione di testi/immagini per la creazione di diapositive e
prospetti: PowerPoint, Acrobat, …
16
Esempi (cont.)
• Software per la comunicazione
– creazione, invio e ricezione di posta elettronica: Outlook,
Eudora, pine, ...
– Navigazione su Web: Explorer, Firefox, …
• Software per il calcolo
– Simbolico e/o numerico: MatLab, …
• Software di utilità
– Antivirus, antispyware, …
• Cos’è un virus informatico?
E’ parte del software anche lui…
17