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 è lobiettivo 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) Lhardware 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, LUOMO 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 è unentità statica (descritta in un dato LINGUAGGIO) che specifica:  linsieme 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 lattivazione di un PROCESSO Una entità dinamica. Attraverso il suo stato si rappresenta il modo in cui avviene lesecuzione 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 luomo 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 lelaborazione 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 larchiviazione 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