Software - Dipartimento di Matematica e Informatica

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