Corso di Informatica per Giurisprudenza Matteo Cristani Dipartimento di Informatica Facoltà di Scienze MM. FF. NN. Università degli Studi di Verona http://www.sci.univr.it/~cristani 1 Agenda Software Tipi di software Sistema operativo Software applicativo Fasi di sviluppo del software 2 Tipi di software Classificazione generale Software orizzontale General-purpose software Linguaggi di programmazione Utilità Produttività individuale Software verticale Applicazioni specifiche Linguaggi special-purpose 3 Software di uso generale Sistemi operativi Ambienti operativi 4 Linguaggi di programmazione Compilatori ed interpreti Librerie riusabili Ambienti di sviluppo Verificatori (semi)automatici Applicazioni di Project Management 5 Utilità di sistema Connettività Connection Management Systems Session Management System Web Browsers Client Posta Elettronica Gestione modem Gestione periferiche Gestione stampanti Gestione dischi e file Gestione periferiche speciali Virus/worm/intrusion detection system 6 Produttività individuale Word processor Desktop Publishing Scientific Desktop Publishing Spreadsheet Presentation Management Systems Database Management Systems Idea Processor 7 Software speciale Applicazioni verticali Contabilità e finanza Automazione industriale WorkFlow Management Systems Linguaggi Special-Purpose Linguaggi specifici di risorsa Linguaggi orientati alla modellazione di sistemi fisici 8 Sistema operativo Funzioni Gestione memoria Gestione dispositivi e periferiche Gestione rete locale e geografica Gestione applicazioni Caratteristiche (Possibilmente) platform-independent 9 Software applicativo Il nome applicazione deriva dal fatto che tale software è utilizzato per ottenere certi scopi Applicazioni di lettura e scrittura di dati o applicazioni di sola lettura Applicazioni general-purpose o specifiche, dipendenti o indipendenti dal sistema operativo, dipendenti o indipendenti dalla piattaforma 10 Fasi di sviluppo del software Fasi fondamentali Specifiche dei requisiti Specifiche funzionali Specifiche di disegno Specifiche di architettura Specifiche dei test Sviluppo Test Manutenzione 11 Tipi di software dal punto di vista dello sviluppo Software commerciale Nessun committente Requisiti tagliati su committenti virtuali Software su commessa Richiesto da un cliente o utente Software di ricerca Software sviluppato per operare con problemi al limite 12 Specifiche dei requisiti Fase cooperativa Titolare: il committente Il committente descrive ciò che desidera per il software richiesto Per il software non su commessa la fase di specifiche dei requisiti è sostituita da un brainstorming (in alcuni casi anche da discussioni strutturate) 13 Specifiche funzionali Fase cooperativa Titolare: lo sviluppatore Lo sviluppatore descrive le funzioni ipotizzate per il software al committente Riceve conferma dal committente Per il software non su commessa la fase di specifiche funzionale è sostituita da discussioni strutturate 14 Specifiche di disegno Fase decisionale Titolare: lo sviluppatore Si decide come implementare le funzioni dal punto di vista delle loro relazioni Il Disegno di un Software è il documento di riferimento per migrazioni del software in altri linguaggi di programmazione, su altri sistemi operativi o piattaforme (porting) 15 Specifiche di architettura Fase decisionale Titolare: lo sviluppatore Si decide come implementare le funzioni definendo le scelte di architettura Linguaggio Sistema operativo Piattaforma Tecniche e metodologia di sviluppo Strumenti CASE (Computer Aided Software dEvelopment) 16 Specifiche dei test Fase operativa Titolare: lo sviluppatore Vengono scritti i test che saranno impiegati per validare il software Fase delicatissima perché test poco efficaci provvederanno sistemi con fault, mentre test troppo raffinati rallenteranno la consegna 17 Sviluppo Fase operativa Titolare: lo sviluppatore Divisa in Implementazione Assemblaggio 18 Testing Fase di prova delle funzioni Controllo della correttezza ed operatività Controllo della risposta al sovraccarico Controllo della risposta all’eccesso di richieste 19 Manutenzione Correzione dei bachi Integrazione delle funzioni Miglioramento delle risposte Aggiunte funzionali ed operative 20 Distribuzione temporale delle fasi (auspicabile) 20 18 16 14 12 10 8 6 4 2 0 Tempo SR SF SD SA SVI TEST MAN 21 Distribuzione temporale delle fasi (effettiva) 20 18 16 14 12 10 8 6 4 2 0 Tempo SR SF SD SA SVI TEST MAN 22 Caratteristiche dello sviluppo Metodologia TOP-DOWN Operazioni in sequenza Controllo della funzionalità Progressività Riuso di codice Modularità Indipendenza funzionale Carattere operativo del software 23 Figure professionali dell’informatica Sviluppatore Erede sincretico di Analista Analista-Programmatore Programmatore Sistemista Specialista di architetture Specialista di reti 24 Operatori dell’informatica Software house Consulenti indipendenti Negozi specializzati (sic!) Provider internet 25