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