Introduzione. Contenuti da Cap. 1 Ghezzi et al.

Documenti analoghi
Introduzione. Sommario. Il software. Definizione di Ingegneria del software

MATRICE TUNING competenze versus unità didattiche, Corso di Laurea in Informatica (classe L-31), Università degli Studi di Cagliari

Gestione dello sviluppo software Modelli Base

INFORMATICA TECNOLOGIE DELLA COMUNICAZIONE SAPERI MINIMI DISCIPLINARI

Materiale didattico. Sommario

In passato, occuparsi di informatica era sinonimo di programmare computer

MATERIALI PER LA DISCUSSIONE

2. Finalità generali previste dalle indicazioni nazionali

Il calcolatore. Architettura di un calcolatore (Hardware)

Ingegneria del Software

Informatica 3. LEZIONE 1: Introduzione. Modulo 1: Introduzione al corso Modulo 2: Introduzione ai linguaggi di programmazione

SISTEMI INFORMATIVI AZIENDALI

BASI DI DATI. basi di dati - introduzione ai sistemi informativi 1

Basi di dati. Docente Prof. Alberto Belussi. Anno accademico 2009/10

Un linguaggio per la rappresentazione formale di vincoli su scenari d'uso

Introduzione D B M G

Informatica 3. Informatica 3. Lezione 1- Modulo 1. LEZIONE 1: Introduzione. Concetti di linguaggi di programmazione. Introduzione

Elena Baralis 2007 Politecnico di Torino 1

Sistemi informativi D B M G. Introduzione. Introduzione alle basi di dati D B M G 2. Elena Baralis 2007 Politecnico di Torino 1

Elena Baralis 2007 Politecnico di Torino 1

DOCENTE PROF. ALBERTO BELUSSI. Anno accademico 2010/11

Linguaggi di programmazione e astrazione

Basi di Dati. Concetti e Principi Generali. Maria Mirto

PIANO DI STUDIO DELLA DISCIPLINA DISCIPLINA: Tecnologia e Progettazione di Sistemi Informatici e di Telecomunicazioni

MAPPA DELLE COMPETENZE - Indirizzo INFORMATICA, articolazione INFORMATICA a.s

La fase di Progettazione

Corso di Ingegneria del Software

Gestione delle informazioni Base di dati Modello dei dati Indipendenza dei dati Accesso ai dati Vantaggi e svantaggi dei DBMS

Elena Baralis 2007 Politecnico di Torino 1

Ingegneria del Software

Basi di dati D O C E N T E P R O F. A L B E R T O B E L U S S I. Anno accademico 2012/13

Tecnico della progettazione implementazione e manutenzione di sistemi di gestione di database

Introduzione al corso

Introduzione al Calcolo Scientifico

Linguaggi di Programmazione

SISTEMI INFORMATIVI AZIENDALI. introduzione ai sistemi informativi 1

2. Finalità generali previste dalle indicazioni nazionali

TEORIE E TECNICHE PER LA COMUNICAZIONE DIGITALE

Indirizzo Liceo Scientifico opzione Scienze Applicate Classe 1 a sez. F Anno Scolastico

Unified Modeling Language (UML)

PROGRAMMAZIONE DIDATTICA DI DIPARTIMENTO A.S. 2017/2018

Corso di Laurea Ingegneria Civile

Corso integrato di Sistemi di Elaborazione. Modulo I. Prof. Crescenzio Gallo.

Linee di programmazione

Corso di Ingegneria del Software. Modelli di produzione del software

Sistemi Informativi Aziendali. Programma del corso

Programmazione di INFORMATICA e Laboratorio

Java: un linguaggio per applicazioni di rete

Introduzione alla programmazione strutturata

Corso di Ingegneria del Software. Modelli di produzione del software

Fondamenti di Informatica. Proff. B.Buttarazzi & A.D Ambrogio A.A. 2011/2012

Ciclo di vita di un sistema informativo

Capitolo 7. Ingegneria del Software. Mauro Giacomini Pearson Addison-Wesley. All rights reserved

Le aree dell informatica

Concetti Introduttivi. Il Computer

Il Software programmabili programma algoritmo

MODELLO e RAPPRESENTAZIONE

Allegato 1 Descrizione profili professionali

Cosa è un programma. Informatica di Base -- R.Gaeta 18

Giacomo Fauser. Istituto Tecnico Settore Tecnologico Via Ricci, Novara PIANO DI LAVORO. Per l anno scolastico

A proposito di informatica

ITI M. FARADAY. Programmazione a. s

Scrivere il software. Scrivere il software. Interprete. Compilatore e linker. Fondamenti di Informatica

Introduzione alla Programmazione. Giselda De Vita

Introduzione alle Basi di Dati

Corso di Ingegneria del Software. Modelli di produzione del software

Ingegneria del Software (e Prova Finale) Luciano Baresi

UNITA CAPITALIZZABILI PER LA FIGURA PROFESSIONALE: TECNICO SUPERIORE PER LO SVILUPPO DEL SOFTWARE

A proposito di informatica

Lez. 5 La Programmazione. Prof. Salvatore CUOMO

Basi di dati Basi di dati per bioinformatica

Il corso di Fondamenti di Informatica

PIANO DI LAVORO DEL DOCENTE. Docente: Giuliana Pederzoli Classe: 3 A Indirizzo: SIA Disciplina: INFORMATICA Ore di lezione settimanali : 4

PIANO DI LAVORO DEL DOCENTE. Docente: Giuliana Pederzoli Classe: 3 A Indirizzo: SIA Disciplina: INFORMATICA Ore di lezione settimanali : 4

3. Ciclo di Vita e Processi di Sviluppo

Corso di Laurea Ingegneria Civile

Università di Bergamo Dip. di Ingegneria gestionale, dell'informazione e della produzione INGEGNERIA DEL SOFTWARE. Paolo Salvaneschi A2_2 V3.

Davide Cervi Classe : 3E I.T.E Agostino Bassi - Lodi

SISTEMI INFORMATIVI TERRITORIALI DATABASES -LEZIONE 3

Linguaggi, Traduttori e le Basi della Programmazione

Disciplina: INFORMATICA

Sommario Obiettivo della programmazione e ciclo di sviluppo di programmi. Programmi. Ciclo di sviluppo di programmi. Obiettivo

CONCETTI E ARCHITETTURA DI UN SISTEMA DI BASI DI DATI

INFORMATICA NOVITÀ IL LINGUAGGIO JAVA. Massimiliano Bigatti. Guida alla programmazione di base IN ALLEGATO AL VOLUME

Sistemi Informativi. Marino Segnan

Esami. Ingegneria del Software. Obiettivi del corso. Sir Tony Hoare s suggestion. There are two ways of constructing a software design.

APPUNTI PER IL CORSO DI ALFABETIZZAZIONE INFORMATICA

TECNOLOGIE DELL INFORMAZIONE E DELLA COMUNICAZIONE PER LE AZIENDE

I corsi del Dipartimento di Informatica

Meccatronica? Flavio Corradini CF3000 Engineering & Electronics Group

Sommario Linguaggi, messaggi e comunicazione. Introduzione ai Linguaggi di Programmazione. Linguaggio (1) Linguaggio (2)

Introduzione all informatica

Unità di apprendimento 6. Il software: dal linguaggio alla applicazione

Corso di Ingegneria del Software. Introduzione al corso

SEZIONE A: TRAGUARDI FORMATIVI Scuola Sec. II grado II BIENNIO PROGETTAZIONE MULTIMEDIALE Competenza chiave europea

Università di Bergamo Facoltà di Ingegneria INGEGNERIA DEL SOFTWARE. Paolo Salvaneschi A4_3 V2.1. Progettazione. Metodi e Linguaggi

A. Ferrari sistemi informativi e sistemi informatici

Transcript:

Introduzione Contenuti da Cap. 1 Ghezzi et al.

Sommario l Definizione l Nascita dell ingegneria del software l Ruolo l Relazione con altre discipline 2

Il software l Il software e` definito come: i programmi, le procedure, e l eventuale documentazione associata e i dati relativi all operatività di un sistema di elaborazione. 3

Definizione di Ingegneria del software l Nel glossario dell IEEE ( IEEE Standard Glossary of Software Engineering, 1990), l ingegneria del software e` definita come: applicazione di un approccio sistematico, disciplinato e quantificabile allo sviluppo, all operatività e alla manutenzione del software. 4

Campo di applicazione l Costruzione di sistemi software l grandi e complessi l prodotti da squadre l esistenti in diverse versioni l in funzione per anni o decenni l che subiscono evoluzioni 5

Storia: anni Cinquanta l Il software doveva risolvere problemi relativamente semplici e ben compresi l L utente e il programmatore erano la stessa persona l Ingegneria del software = programmazione 6

Storia: anni Sessanta l Calo dei costi dell hardware, maggiore diffusione dei computer l Software applicato a problemi vari, più complessi, non sempre ben compresi l Utente!= programmatore 7

Storia: anni Sessanta l Problemi: l difficoltà di comunicazione fra utenti e programmatori, requisiti del software non chiari l tecniche di programmazione non adatte a grossi sistemi l parti dei sistemi software fortemente accoppiate: l necessità di coordinazione continua fra i programmatori l difficoltà nella sostituzione di chi abbandonava i progetti l la modifica di una parte influenzava l intero sistema 8

Storia: anni Sessanta l Esempio di progetto: sviluppo del sistema operativo OS 360 per i mainframe IBM della famiglia 360 l Viene coniata l espressione crisi del software 9

Storia: anni Sessanta l Risultato: l sistemi poco soddisfacenti, poco affidabili, che non rispettavano i tempi e i costi previsti l Si comprende la necessità di un approccio sistematico alla produzione del software l L espressione ingegneria del software nasce in questo periodo 10

Storia: dagli anni Sessanta a oggi l L ingegneria del software ha prodotto: l Linguaggi e strumenti l Approcci rigorosi (formali) per l specifica l verifica l Standard l Metodologie pratiche, organizzative e gestionali 11

L ingegneria del software è una disciplina relativamente giovane l I problemi l non esistono parametri universalmente accettati per definire i requisiti l le tecniche formali sono poco sviluppate e di applicabilità incerta l (quasi) ogni nuovo prodotto pone problemi nuovi l Intuito ed esperienza giocano ancora un ruolo fondamentale 12

No silver bullet l In un articolo del 1987 Brooks afferma che non esiste un proiettile d argento, ovvero una soluzione magica ai problemi del software (dal fatto che i proiettili d argento uccidono i lupi mannari) l La progettazione e lo sviluppo del software richiedono sforzo intellettuale, creatività e tempo 13

Dimensione economica Introduzione 14

Dimensione economica http://www.gartner.com/newsroom/id/3759763 l Spese per il software passate da 140*10 9 $ nel 1985 a 800*10 9 $ nel 2000 l Gartner prevede che la spesa mondiale in software per le aziende aumenti del 6,4% nel 2013 per un totale di 297 miliardi di dollari. l Necessità di l prodotto sempre più affidabili l contenimento dei costi Introduzione 15

Ruolo dell ingegnere del software l Non solo programmare: l comprendere i requisiti e tradurli in specifiche precise l progettare (architettura dei componenti) l operare a diversi livelli di astrazione l comunicare con la squadra, gli utenti, i clienti l rispettare tempi e costi 16

Attività nell ingegneria del software l Analisi e specifica dei requisiti l Progettazione e specifica di sistema l Codifica e verifica di modulo l Integrazione e verifica di sistema l Consegna e manutenzione 17

Modello a cascata del ciclo di vita del software Requirements analysis and specification Date di consegna, semilavorati Design and specification Code and module testing Integration and system testing Delivery and maintenance 18

Analisi e specifica dei requisiti l Dopo studio di fattibilità (costi/benefici, diversi scenari e soluzioni) l Obiettivo: identificare e documentare i requisiti che il sistema software dovrà rispettare (che cosa) l In caso di sistemi innovativi, richiede ampia interazione fra cliente e ingegnere l Il documento dei requisiti dovrebbe l essere comprensibile per l utente finale l poter portare alla creazione del manuale utente e di casi di test 19

Progettazione e specifica di sistema l Obiettivo: progetto di un particolare sistema che soddisfi i requisiti (come) l Divisa in due fasi: l Progetto architetturale: organizzazione globale del sistema in componenti di alto livello e loro interazioni l Progetto dettagliato: scomposizione a livelli di dettaglio sempre maggiori, fino a una specifica diretta della codifica 20

Codifica e verifica di modulo l Produzione del codice sorgente secondo il progetto dettagliato del sistema l Verifica che i singoli moduli prodotti rispettino la loro specifica 21

Integrazione e verifica di sistema l I singoli moduli prodotti vengono l assemblati l integrati l testati come sistema unico 22

Consegna e manutenzione l Quando il sistema ha superato tutti i test viene consegnato all utente l Successivamente, si rende necessaria la manutenzione del sistema: l per correggere i difetti che si manifestano l per adattare il sistema a cambiamenti dei requisiti (evoluzione) 23

Modello a cascata del ciclo di vita del software Requirements analysis and specification Design and specification A volte è necessario ritornare ai passi precedenti A volte le fasi sono parzialmente sovrapposte Code and module testing Integration and system testing Delivery and maintenance 24

Relazione con altri campi dell informatica l Linguaggi di programmazione l Sistemi operativi l Basi di dati l Intelligenza artificiale l Metodi formali 25

Relazione con linguaggi di programmazione l Forte influenza dell ingegneria del software sui linguaggi di programmazione: ad esempio, l Costrutti per programmazione modulare l Costrutti per la gestione delle eccezioni l Separazione tra interfaccia e implementazione (Java, etc) Introduzione 26

Relazione con linguaggi di programmazione l Influenza inversa: l Specifiche di progetto rigorose, adatte all implementazione in un linguaggio di programmazione l Formalizzazione del linguaggio con cui si scrive l input di un software (da Job Control Language di OS 360 a linguaggi a linea di comando alla Unix) l Formalizzazione per favorire l automazione (analizzatori lessicali, parser) 27

Sistemi operativi l Hanno avuto influenza notevole sull ingegneria del software: l primi sistemi di grandi dimensioni l macchine virtuali, livelli di astrazione, separazione fra politiche e meccanismi l Influenza inversa: l modularità e portabilità dei sistemi operativi moderni l ad es., separazione dell interprete dei comandi l architetture a micro-kernel 28

Basi di dati l Hanno influenzato l ingegneria del software: l indipendenza dalla rappresentazione dei dati (astrazione, separazione degli interessi) l uso di DBMS come componente risolve gratis i problemi legati all accesso concorrente a grosse quantità di dati 29

Basi di dati l Influenza inversa: l necessità di nuovi modelli per usare DBMS come strumenti per l ingegneria del software l memorizzazione di codice sorgente, documenti, file binari l memorizzazione di diverse versioni dello stesso oggetto l transazioni lunghe 30

Intelligenza artificiale l Influenza su ingegneria del software l Tecniche per produrre sistemi software grossi e complessi con requisiti incerti (sviluppo esplorativo) l Utilizzo della logica l Influenza inversa l Sistemi di IA modulari (a regole o shell) l Concezione di tecniche di intelligenza artificiale da applicare a ingegneria del software l Assistenti di programmazione l Elaborazione del linguaggio naturale per le interfacce 31

Sistemi formali l Modelli formali utilizzati in ingegneria del software (specifiche e modelli) l automi a stati finiti l automi a pila l reti di Petri l logica matematica l Inversamente: sviluppo di nuovi metodi formali: l specifiche algebriche l tipi di dato astratto l logica temporale 32

Relazione con altre discipline l Scienze organizzative l Modelli gestionali applicati a produzione del software per effettuare stime, gestire le risorse umane, monitorare il processo l Necessità di nuovi modelli l Ingegneria dei sistemi l Software come componente di un sistema più complesso 33