UNIVERSITA DI FIRENZE Facoltà di Ingegneria Ingegneria del Software Prof. Giacomo Bucci (aa 2011-2012) 1 Introduzione PROVVISORIO
Contenuto Cos è il SW Prodotto/processo Legislazione Categorie/tipi di software Dimensione economica/sociale Ingegneria del software Ciclo di vita Introduzione (aa 2011/12) G. Bucci 2
Cos è il software E Codice, ma non solo.. anche: documentazione, regole di impiego, manuali d uso,... Riguardato come prodotto di un processo industriale rispettando tempi, costi,.. E un prodotto speciale immateriale Introduzione (aa 2011/12) G. Bucci 3
Processo - prodotto Prodotto software: deve soddisfare requisiti di qualità come si misura la qualità? Processo software: Il processo software è molto simile ad una continua progettazione piuttosto che ad una produzione tradizionale (ciclo di vita) Introduzione (aa 2011/12) G. Bucci 4
Produzione Produzione di beni materiali: mezzi di produzione, forza lavoro, materie prime ForzaLav Mezzi proc Prodotto finito Materiali Produzione di software: In pratica è rilevante la sola forza lavoro
Prodotto speciale Il software è un prodotto immateriale prodotto di una attività intellettuale (progettazione continua) non c è un processo manifatturiero totalmente malleabile difficile da descrivere non si consuma facilmente copiabile Introduzione (aa 2011/12) G. Bucci 6
Legislazione In Europa non è brevettabile (negli Usa sì) il Consiglio dei ministri UE aveva emanato una direttiva a favore della brevettabilità il Parlamento europeo ha respinto la direttiva il 6 Luglio 2005 648 contro, 14 favorevoli, 18 astenuti E la prima volta che una direttiva del Consiglio viene respinta in seconda lettura!!! Esperienza americana: Brevettabilità = Contenziosi legali il 98% dei brevetti si dimostra inutile Introduzione (aa 2011/12) G. Bucci 7
In Italia (in Europa) Il SW è un opera di ingegno. Regolato dalla legge sul diritto d autore (248/2000) Copiare sw abusivamente (anche se non per profitto) è un illecito penale l Art 13 punisce da 6 mesi a 3 anni chi duplica abusivamente SW Il compratore non è affatto protetto!! E se fa un danno? Introduzione (aa 2011/12) G. Bucci 8
Art 13 Legge 248/2000 Chiunque abusivamente duplica, per trarne profitto, programmi per elaboratore o ai medesimi fini importa, distribuisce, vende, detiene a scopo commerciale o imprenditoriale o concede in locazione programmi contenuti in supporti non contrassegnati dalla Società italiana degli autori ed editori (SIAE), è soggetto alla pena della reclusione da sei mesi a tre anni e della multa da lire cinque milioni a lire trenta milioni. La stessa pena si applica se il fatto concerne qualsiasi mezzo inteso unicamente a consentire o facilitare la rimozione arbitraria o l elusione funzionale di dispositivi applicati a protezione di un programma per elaboratori. La pena non è inferiore nel minimo a due anni di reclusione e la multa a lire trenta milioni se il fatto è di rilevante gravità. Introduzione (aa 2011/12) G. Bucci 9
Categorie Commerciale (Windows XP) Shareware Freeware Opensource Non Opensource (Java) (prova + registrazione a 1 mese) (Linux) Public domain (non ci sono più diritti) Che fare? Comprare, affittare, sviluppare, far sviluppare???? Introduzione (aa 2011/12) G. Bucci 10
Shareware Può essere liberamente ridistribuito e utilizzato per un periodo di tempo di prova variabile (generalmente 30 giorni), dopodiché è necessario registrare il software presso la casa produttrice pagandone l'importo. La versione di prova ha alcune limitazioni rispetto alla versione completa quali l'impossibilità di stampare o salvare i files o simili, contenere al suo interno meccanismi di protezione tali da impedire di utilizzare il software dopo la scadenza ed altro. Una volta acquistata la versione completa viene generalmente fornito un Codice Seriale da inserire nell'applicativo per sbloccarne le funzioni senza dover effettuare una nuova installazione. Introduzione (aa 2011/12) G. Bucci 11
Freeware Software che viene distribuito in modo gratuito. Con o senza codice sorgente, a totale discrezione dell'autore e senza alcun obbligo al riguardo. È sottoposto esplicitamente ad una licenza che ne permette la redistribuzione gratuita. Il software freeware viene concesso in uso senza alcun corrispettivo, ed è liberamente duplicabile e distribuibile, con pochissime eccezioni. Di norma l'autore che decide di rilasciare il suo lavoro come freeware, esercitando appieno il suo diritto di scegliere le forme e le modalità di distribuzione che ritiene più idonee, inserisce esplicitamente delle clausole che impediscono qualsiasi tipo di pagamento per la distribuzione del suo software, fatto salvo un eventuale "piccolo" rimborso per supporti e spese di duplicazione. (Richard Stallman, Linus Torvalds) Introduzione (aa 2011/12) G. Bucci 12
Open Source http://www.opensource.org
Tipi Software di sistema Software applicativo Software embedded Prevalente gestione e elaborazione dati Prevalente controllo ecc. Molto diversi tra loro Non esiste una soluzione valida per tutti i campi applicativi Introduzione (aa 2011/12) G. Bucci 14
Tipologia delle applicazioni Sequenziali Un solo flusso di controllo Concorrenti Più flussi di controllo paralleli Dipendenti dal tempo La velocità di esecuzione influenza non solo le prestazioni, ma anche la correttezza (hard real-time) Introduzione (aa 2011/12) G. Bucci 15
Contenuto Cos è il SW Prodotto/processo Legislazione Categorie/tipi di software Dimensione economica/sociale Ingegneria del software Ciclo di vita Introduzione (aa 2011/12) G. Bucci 16
Prodotto interno lordo Il PIL è il valore complessivo dei beni e servizi prodotti all'interno di un Paese in un certo intervallo di tempo (1 anno) e destinati ad usi finali (consumi finali, investimenti, esportazioni nette); non viene quindi conteggiata la produzione destinata ai consumi intermedi, che rappresentano il valore dei beni e servizi consumati e trasformati nel processo produttivo per ottenere nuovi beni e servizi. Introduzione (aa 2011/12) G. Bucci 17
Italia PIL a prezzi di mercato (ML ) Anno PIL 2001 1.248.648 2002 1.295.226 2003 1.335.354 2004 1.391.530 2005 1.428.375 2006 1.479.981 2007 1.535.540 Fonte: ISTAT Introduzione (aa 2011/12) G. Bucci 19
Tasso di crescita PIL Nel 2009 è stato negativo (-1%) Introduzione (aa 2011/12) G. Bucci 20
Valore assoluto PIL (2009) 1 $ = 0.77 1.500.000 ca (occhio al tasso di cambo ) MLN Debito pubblico Italia (6/2011) : 1.812.000 (3/2012) : 1.900.000 Sorgente: banca Mondiale (aprile 2011)
Dimensione economica/sociale Industria SW (2007) : PIL Italia anno 2007: 1.535 MLD (c.a.) Mercato IT 2007: 22 MLD (c.a.) mercato IT 2007: 1,41% del PIL Mercato SW 2007: 4 MLD (c.a.) mercato del SW 2007: 0,26% del PIL Introduzione (aa 2011/12) G. Bucci 22
I prossimi trasparenti sono presi dal Rapporto Assintel 2010 Introduzione (aa 2011/12) G. Bucci 23
Introduzione (aa 2011/12) G. Bucci 24
Introduzione (aa 2011/12) G. Bucci 25
Introduzione (aa 2011/12) G. Bucci 26
Introduzione (aa 2011/12) G. Bucci 27
Attenzione a India e Cina E anche all Italia, nel senso opposto! Introduzione (aa 2011/12) G. Bucci 28
Dimensione sociale Le nostre vite dipendono (sono influenzate) dal software: ABS Monitoraggio pazienti Conti correnti Iscrizione agli esami (rischio letale) (rischio economico) (nessun rischio) I malfunzionamenti possono produrre danni economici e alle persone Conviene avere teorie/metodi solidi Introduzione (aa 2011/12) G. Bucci 29
Contenuto Cos è il SW Prodotto/processo Legislazione Categorie/tipi di software Dimensione economica/sociale Ingegneria del software Ciclo di vita Introduzione (aa 2011/12) G. Bucci 30
Come si scrivono i programmi ovvero Cosa capita troppo spesso Introduzione (aa 2011/12) G. Bucci 31
Software crisis e leggende metropolitane sui progettisoftware (un po datate) Oltre il 60% dei progetti fallisce L 80% supera i tempi previsti Il 50% produce sistemi con funzioni non richieste dall utente Decine di miliardi di sprecati Introduzione (aa 2011/12) G. Bucci 32
Ingegneria del software Termine coniato nel 1968 (a Garmisch Partenkirchen, Germania) durante una conferenza internazionale Vorrebbe essere l applicazione dei metodi dell ingegneria al software Approccio sistematico allo sviluppo, all operatività, alla manutenzione e al ritiro del software(*) Attenzione: Ingegneria NON scienza (*) IEEE 610.12 - Glossary of Software Engineering Terminology Introduzione (aa 2011/12) G. Bucci 33
What is Software Engineering? IEEE 610 (Glossary of Software Engineering Terminology) The application of a systematic, disciplined quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software Introduzione (aa 2011/12) G. Bucci 34
Programmazione<=> Ing. SW Il programma che calcola il MCD di due numeri è di interesse dell Ing. del SW? No! Perché E un problema ben formalizzato Nel caso specifico esiste un algoritmo (Euclide) che ne permette il calcolo E un problema di programmazione Introduzione (aa 2011/12) G. Bucci 35
Programmazione<=> Ing. SW Un sistema di matematica che consente La scrittura a video di formule, di sistemi di equazioni, La soluzione di problemi complessi con differenti strategie di soluzione L analisi dei risultati ecc. è un problema di Ing. del SW? Sì Interfaccia grafica, interpretazione formule, strumenti di analisi, integrazione,.. Introduzione (aa 2011/12) G. Bucci 36
L ingegnere del software E un programmatore in grande (programming in the large) capire i requisiti - stendere le specifiche progettare scomporre i problemi, identificare i moduli gestire il processo di sviluppo lavorare in team - ripartire il lavoro Computer software engineers apply computer science, engineering, and math to design, develop, and test software. Computer hardware engineers design computer chips, boards, systems, modems, and printers. Introduzione (aa 2011/12) G. Bucci 37
Il ciclo di vita Da ANSI / IEEE Std 729-1983 Il ciclo di vita è il periodo di tempo che: inizia quando un prodotto software viene concepito termina quando il prodotto software non viene più usato Costituisce il contesto organizzativo per lo sviluppo di un progetto Detto anche processo software Introduzione (aa 2011/12) G. Bucci 38
Il ciclo di vita Organizzato in fasi. Grossolanamente: sviluppo e uso. La fase di uso è molto più lunga della fase di progetto e sviluppo durante la fase d uso è normale apportare modifiche Inizio Rilascio Abbandono Sviluppo Uso Introduzione (aa 2011/12) G. Bucci 39
Schema preliminare sviluppo Requisiti Analisi Spec. Requisiti Spazio del problema Progettazione Spec. Progetto Realizzazione Spazio della soluzione Codice corretto Introduzione (aa 2011/12) G. Bucci 40
Analisi/specifica dei requisiti L analisi è lo studio di un problema prima di intraprendere qualsiasi azione (De Marco) L analisi è lo studio del dominio di un problema, che porta alla specifica di un comportamento esternamente osservabile, a una descrizione coerente e fattibile di ciò che occorre realizzare Introduzione (aa 2011/12) G. Bucci 41
Requisiti Insieme delle caratteristiche che il prodotto deve possedere per soddisfare al proprio scopo di uso. Un requisito è: qualcosa che il software deve fare; una caratteristica che esso deve possedere. Un requisito esiste sia perché: la natura dell applicazione lo richiede; il committente vuole che esso sia parte del prodotto (software). Introduzione (aa 2011/12) G. Bucci 42
Studio di Fattibilità Analisi Più una caterva di altri documenti Modello a Cascata: La madre di tutti i cicli di vita SRS Progetto Elementi di disturbo Codifica Test unit DS Fasi e deliverables (principali) Integraz Test sist. Codice e risultati test Manutenz
Categorie di requisiti Requisiti funzionali ciò che il sistema deve fare (stampare le fatture emesse giornalmente) Requisiti non funzionali proprietà (qualità) che il sistema deve possedere (stampare in meno di un minuto) Vincoli sono requisiti di carattere generale; definiti prima che inizi l effettiva raccolta dei requisiti (usare Linux come sistema operativo) Introduzione (aa 2011/12) G. Bucci 44
Specifica dei requisiti Metodo classico: elencazione ESEMPIO <id> il <sistema> deve <funzione> R1. Il sistema deve presentare lo stato delle prenotazioni delle camere a un generica data R2. Il sistema deve ricercare le camere libere tra due date generiche date R2.2. In mancanza di camere libere, deve cercare la camera che ha più giorni contigui liberi nell intervallo R3. Il sistema deve calcolare la spesa relativa a un ospite al momento del termine del suo soggiorno Introduzione (aa 2011/12) G. Bucci 45
Specifica dei requisiti Attraverso l analisi dei Casi d uso ESEMPIO Introduzione (aa 2011/12) G. Bucci 46
Rapidi cambiamenti L Ingegneria del software è un settore tecnologico che ha subito rapidi cambiamenti, specialmente negli ultimi anni (Java e Web sono di metà anni Novanta) Nel processo software: dal metodo a cascata ai metodi agili Introduzione (aa 2011/12) G. Bucci 47
Rapidi cambiamenti L Ingegneria del software è un settore tecnologico che ha subito rapidi cambiamenti, specialmente negli ultimi anni (Java e Web sono di metà anni Novanta) Nel processo software: dal metodo a cascata ai metodi agili Introduzione (aa 2011/12) G. Bucci 48
Modello iterativo-evolutivo Successivi ampliamenti e rifiniture attraverso iterazioni multiple (feedback) Il sistema cresce incrementalmente Introduzione (aa 2011/12) G. Bucci 49
RUP This diagram is Copyright 1999-2005 IBM. http://www.agilemodeling.com/essays/agilemodelingrup.htm Introduzione (aa 2011/12) G. Bucci 50
C è sempre qualche estremista There are certain things you must do. You must write tests before code (TDD). You must program in pairs. You must integrate frequently. You must be rested. You must communicate with the customer daily. You must follow the customer s priorities. You must leave the software clean and simple by the end of the day. You must adapt the process and practices to your environment. Introduzione (aa 2011/12) G. Bucci 51
Quando la sicurezza è il requisito principale... Sistemi embedded, sistemi medicali, controllo del traffico aereo, ecc.. Garantire affidabilità, sicurezza, qualità, Sostanzialmente viene seguito il metodo a cascata: Analisi e progettazione accurata sin dall inizio. Analisi, analisi del rischio, pianificazione, tracciabilità dei requisiti, assicurazione della qualità, versionamento,.. Esistono molte normative e standard (di prodotto e di processo) per i vari settori (Ferrovie, avionica,..) Introduzione (aa 2011/12) G. Bucci 52
Contenuto del corso Modellazione Programmazione OO UML Tecniche di analisi/progetto/sviluppo Use case driven analysis (TDD) Tecnologie Design patterns, Architectural patterns Altro Modelli ciclo di vita, qualità, stima risorse,.. Introduzione (aa 2011/12) G. Bucci 53
Generi trattati Normalmente faremo riferimento ad applicazioni enterprise Gestione di un albergo Trattamento mutui Ecc. Ma anche software per applicazioni di controllo Casello autostradale Introduzione (aa 2011/12) G. Bucci 54
Obiettivo Useremo JAVA, ma l obiettivo non è imparare un linguaggio in più L obiettivo è imparare ad analizzare, modellare, progettare,... Introduzione (aa 2011/12) G. Bucci 55
Tools (da usare) StarUML (free) Modellazione UML Eclipse IDE per lo sviluupo dei programmi Java Come linguaggio di programmazione Tutta roba scaricabile da rete Introduzione (aa 2011/12) G. Bucci 56