Corso di Informatica per Giurisprudenza Lezione 5 Matteo Cristani Dipartimento di Informatica Facoltà di Scienze MM. FF. NN. Università degli Studi di Verona http://www.sci.univr.it/~cristani
Agenda Software Fasi di sviluppo del software Tipi di software Sistema operativo Software applicativo Fasi di sviluppo del software
Tipi di software Classificazione generale Software orizzontale General-purpose software Linguaggi di programmazione Utilità Produttività individuale Software verticale Applicazioni specifiche Linguaggi special-purpose
Software di uso generale Sistemi operativi Ambienti operativi
Linguaggi di programmazione Compilatori ed interpreti Librerie riusabili Ambienti di sviluppo Verificatori (semi)automatici Applicazioni di Project Management
Utilità di sistema Connettività Gestione periferiche 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
Produttività individuale Word processor Desktop Publishing Scientific Desktop Publishing Spreadsheet Presentation Management Systems Database Management Systems Idea Processor
Software speciale Applicazioni verticali Linguaggi Special-Purpose Contabilità e finanza Automazione industriale WorkFlow Management Systems Linguaggi Special-Purpose Linguaggi specifici di risorsa Linguaggi orientati alla modellazione di sistemi fisici
Sistema operativo Funzioni Caratteristiche Gestione memoria Gestione dispositivi e periferiche Gestione rete locale e geografica Gestione applicazioni Caratteristiche (Possibilmente) platform-independent
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
Fasi di sviluppo del software Fasi fondamentali Specifiche dei requisiti Specifiche funzionali Specifiche di disegno Specifiche di architettura Specifiche dei test Sviluppo Test Manutenzione
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
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)
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
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)
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)
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
Sviluppo Fase operativa Titolare: lo sviluppatore Divisa in Implementazione Assemblaggio
Testing Fase di prova delle funzioni Controllo della correttezza ed operatività Controllo della risposta al sovraccarico Controllo della risposta all’eccesso di richieste
Manutenzione Correzione dei bachi Integrazione delle funzioni Miglioramento delle risposte Aggiunte funzionali ed operative
Distribuzione temporale delle fasi (auspicabile)
Distribuzione temporale delle fasi (effettiva)
Caratteristiche dello sviluppo Metodologia TOP-DOWN Operazioni in sequenza Controllo della funzionalità Progressività Riuso di codice Modularità Indipendenza funzionale Carattere operativo del software
Figure professionali dell’informatica Sviluppatore Erede sincretico di Analista Analista-Programmatore Programmatore Sistemista Specialista di architetture Specialista di reti
Operatori dell’informatica Software house Consulenti indipendenti Negozi specializzati (sic!) Provider internet