Software Definizione, tipologie, progettazione Definizione di software Dopo l’hardware analizziamo l’altra componente fondamentale di un sistema di elaborazione. La macchina come insieme di componenti hardware di per sé non è in grado di funzionare. Devono esistere dei programmi progettati dall’uomo che indicano la sequenza di istruzioni da eseguire per svolgere determinate operazioni. L’insieme di tutti questi programmi prende il nome di software. Il software si divide in: software di base o software applicativo. 2 Il software di base o sistema operativo Insieme di programmi a corredo della macchina che svolge funzioni di servizio e di gestione del sistema di elaborazione I suoi compiti sono: Gestire e controllare tutte le componenti hardware del pc. Svolgere operazione di gestione dei file e delle memorie di massa che li contengono. Svolgere il ruolo di interfaccia tra l’uomo e la macchina permettendo all’utente di interagire con le componenti hardware. Programmi d’utilità facilitano l’utente in operazioni di manutenzione del sistema. 3 Sistemi operativi: un po' di storia MS – DOS : primo sistema operativo per personal computer. Funzionamento attraverso comandi digitati da un linea chiamata prompt dei comandi. Era necessario conoscere il nome di molti programmi per poter sfruttare a pieno le funzioni del S.O. Questo modo di interagire non favoriva la diffusione del personal computer in ambito domestico. Obiettivo: semplificare l’approccio tra l’utente e la macchina. 4 GUI: le interfacce grafiche Le Graphics User Interface vengono create per permettere di interagire con la macchina senza dover conoscere i comandi e la loro sintassi. Nascono elementi quali: finestre, icone, menù che possono essere utilizzati dall’utente mediante un sistema di puntamento controllato dal mouse. Tutti i moderni S.O si avvalgono delle interfacce grafiche: Windows, Mac, Linux/Unix. Tutti questi S.O consentono: Multitasking: esecuzione di più programmi contemporaneamente. Multiutenza: creazione di profili personalizzati per i diversi utenti del personal computer. 5 S.O: commerciali vs open source Windows e Macintosh rientrano nella categoria dei S.O commerciali. Il loro utilizzo è condizionato dal possesso di una licenza che va acquistata. Aggiornamenti del sistema operativo sono possibili ma non personalizzabili. L’utente non può modificare il sistema operativo. Unix e Linux invece vengono definiti sistemi open source. Nati e sviluppati in ambito universitario, consentono a chi ne possieda le capacità di modificare/aggiornare il nucleo (kernel) per aggiungere, modificare funzioni. Sono quasi sempre gratuiti e possiedono ormai un alto numero di applicazioni che possono funzionare su personal computer domestici. 6 Software applicativi Programmi orientati a svolgere determinati compiti, trovano il loro utilizzo in tutti i campi della vita odierna: domestici, office automation, medico-scientifico, etc… Analizziamo i programmi di maggior utilizzo: Elaborazione testi: scrittura testi, formattazione e stampa. Fogli di calcolo: inserimento ed analisi di dati numerici, consentono di utilizzare moltissime funzioni di diverso tipo. Matematiche, statistiche, logiche, finanziarie, etc Strumenti di presentazione: creano diapositive per utilizzo aziendale o didattico. Software multimediali che consentono anche l’utilizzo di immagini, suoni e filmati all’interno delle presentazioni. 7 Software applicativi Gestione basi di dati: permettono di creare e gestire grossi archivi dati correlati tra loro. Possiedono formalismi ben precisi per la creazione delle tabelle che contengono i dati di interesse. Programmi CAD (computer aided design): software di progettazione assistita dal computer. Es. AutoCAD etc Programmi CBT (computer based training): software multimediali utilizzati nell’ambito della formazione. Programmi di grafica: Photoshop, Illustrator, PSP. Elaborazione immagini e foto ritocco. Browser Web: consentono di sfogliare gli ipertesti che formano il www. Internet Explorer, Firefox, Netscape. 8 Fasi di sviluppo del software La creazione di un software nasce dal lavoro congiunto di molte persone. (Cliente, analisti, programmatori, etc) Necessario chiedersi: Cosa intendiamo raggiungere con la creazione del software? In che modo raggiungerò gli obiettivi prefissati? In commercio esistono diversi tools di programmazione per la creazione di specifici programmi. 9 1- Studio di fattibilità In questa fase bisogna valutare l’impatto della creazione di un nuovo programma che probabilmente andrà a sostituire una procedura eseguita manualmente. È veramente necessario avvalersi di strumenti informatici per la gestione del problema? È assolutamente indispensabile l’interazione tra committente ed l’analista programmatore al fine di arrivare alla formulazione chiara e non ambigua di ciò che si vuole realizzare. Valutare impatto ambientale dell’uso di strumenti informatici. 10 2 -Analisi e progettazione Analisi: in questa fase è necessario esaminare le richieste e le esigenze del cliente ed a partire dal sistema informativo presente, stabilire quante e quali risorse hardware saranno necessarie per la realizzazione del progetto. Progettazione: si individuano le possibili soluzioni del problema, comparandole tra loro per scegliere quella considerata ottimale sotto tutti i punti di vista: hardware necessario, prezzo, etc. Il risultato finale di questa fase porta alla stesura di un algoritmo di risoluzione del problema. Algoritmo: successione finita di passi elementari che si devono compiere per risolvere un problema. 11 3 -Programmazione In questa fase si passa dal progetto al programma. Il programmatore trasforma l’algoritmo in istruzioni di un determinato linguaggio di programmazione. Linguaggio di programmazione usato dal programmatore non è direttamente comprensibile dalla cpu che usa il suo linguaggio macchina e conosce solo quello. Necessario tradurre il programma scritto, attraverso software specifici. Esistono due tipi di traduttori: compilatori ed interpreti. 12 Compilatori vs interpreti Compilatori: traducono l’intero programma una sola volta trasformandolo in quello che viene chiamato programma oggetto che viene in seguito memorizzato ed eseguito dalla CPU. Ogni volta che si chiederà l’utilizzo del programma verrà eseguito direttamente il programma oggetto senza ulteriori traduzioni. Interpreti: traducono un’istruzione per volta e la inviano alla CPU affinché la esegua. Ogni volta che si dovrà eseguire il programma dovrà prima essere tradotto. È necessario stabilire a priori se usare programmazione compilato od interpretato. un linguaggio di 13 Linguaggi compilati ed interpretati Compilati: Assembly Pascal C/C++ Visual Basic Interpretati: Php Perl Python Java (ibrido) Vantaggi: Velocità di esecuzione dimensioni ridotte Svantaggi: necessario ricompilare base al sistema operativo Vantaggi: portabilità Svantaggi: elevate dimensioni lentezza di esecuzione in 14 4 - Test Costituisce la fase di verifica dell’affidabilità del programma mediante una serie di esecuzioni affinché ci si accerti che il programma è stabile e produca i risultati per il quale è stato creato. Rivelazione dei bug del programma: in questa fase quasi sempre emergono gli errori di programmazione e quindi la necessità di eliminarli. Vengono esaminate tutte le possibili elaborazioni alternative del programma. Garantire correttezza formale e logica del programma. 15 5 – Implementazione e revisione L’implementazione consiste nell’installazione del software in loco. Si provvede ad eseguire il programma nei computer dell’utente finale. Revisione o release: quando un software è creato a prescindere dalla richieste di un cliente (es. elaboratori di testo) questo verrà utilizzato da numerosi utenti permettendo di evidenziarne difetti o nuove caratteristiche desiderate. Nascono quindi nuove versioni dei programmi che eliminano gli errori precedenti ed aggiungono nuove funzioni utili in seguito all’introduzione di nuove tecnologie. Per identificare la release di un programma si usa l’anno di uscita ed un numero identificativo. (Word 98-2000-XP-2003 etc,,) 16