Ingegneria del Software Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dellInformazione Università di Siena Via Roma 56 – 53100 – SIENA Uff. 0577233606.

Slides:



Advertisements
Presentazioni simili
XmlBlackBox La presentazione Alexander Crea 11 Aprile 2010 La presentazione Alexander Crea 11 Aprile 2010.
Advertisements

Amministrazione dei servizi di stampa. Sommario Introduzione ai servizi di stampa Introduzione ai servizi di stampa Terminologia della stampa Terminologia.
1 Introduzione ai calcolatori Parte II Software di base.
Modulo 1 – Ambiente di lavoro Windows 7
Analisi e progettazione
Procedure e funzioni A. Ferrari.
Linguaggi di programmazione
Il Sistema Operativo.
Metodologie di Programmazione = decomposizione basata su astrazioni
Obiettivo della tesi Percorso
XmlBlackBox La presentazione Alexander Crea 7 Giugno 2010 La presentazione Alexander Crea 7 Giugno 2010.
1 9: Progettazione Architetturale Obiettivo: stabilire la struttura globale di un sistema software Descriveremo diversi tipi di modello di architettura,
1 14. Verifica e Validazione Come assicurarsi che il software corrisponda alle necessità dellutente? Introdurremo i concetti di verifica e validazione.
DIFFICOLTA’ DEL LINGUAGGIO
Anno Accademico Corso di Informatica Informatica per Scienze Biologiche e Biotecnologie Anno Accademico
Il Software: Obiettivi Programmare direttamente la macchina hardware è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica del computer.
Applet Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dellInformazione Università di Siena Via Roma 56 – – SIENA Uff
Introduzione allinformatica. Cosè linformatica ? Scienza della rappresentazione e dellelaborazione dellinformazione ovvero Studio degli algoritmi che.
Architettura Three Tier
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Corso di Informatica (Programmazione)
Struttura dei sistemi operativi (panoramica)
Modelli simulativi per le Scienze Cognitive
Linguaggi di programmazione
CAPITOLO 2 INTRODUZIONE AL LINGUAGGIO JAVA E ALL'AMBIENTE HOTJAVA.
Primi Elementi di Programmazione in C++
Fondamenti di Informatica1 Software di base Tra il linguaggio macchina (basso livello) e i linguaggi evoluti (alto livello) esiste uno strato di software.
SOFTWARE I componenti fisici del calcolatore (unità centrale e periferiche) costituiscono il cosiddetto Hardware (alla lettera, ferramenta). La struttura.
Progettazione di una base di dati
Modello E-R Generalizzazioni
I SISTEMI OPERATIVI.
Gruppo Directory Services Rapporto dell'attivita' svolta - Marzo 2000.
GIADA O N L I N E.
1 Programmazione = decomposizione basata su astrazioni (con riferimento a Java)
La progettazione di un sistema informatico
Università Politecnica delle Marche
Modulo 1 - Hardware u.d. 3 (syllabus – 1.3.5)
Modulo 1 - Concetti di base della Tecnologia dell'Informazione
STRUTTURA GENERALE DI UN ELABORATORE
L’ingegneria del software
Concetti di base sul Software dei PC Unitre Anno
Introduzione alla programmazione Object Oriented
Lo sviluppo del progetto informatico
VIRTUALIZZAZIONE Docente: Marco Sechi Modulo 1.
Servizi Grid ed agenti mobili : un ambiente di sviluppo e delivering
User stories Claudio Maccari Mail:
Design Goals Definiamo le fondamenta dello sviluppo del sistema.
Programma di Informatica Classi Prime
1 Il Sistema Operativo: Esempio n Le operazioni effettuate sembrano abbastanza semplici ma … n Provocano una serie di eventi in cui vengono coinvolte sia.
Identificazione dei database interni alle applicazioni software Napoli 30 gennaio 2014 Ing. Gennaro Di Giaimo Presidente del CdA Mediamobile Italia S.p.A.
Sistema Operativo (Software di base)
QMAN Queue Manager Documentazione Commerciale Presentazione prodotti.
Sistemi e Tecnologie Informatiche Verifica di correttezza di un programma.
INTERFACCE Schede elettroniche che permettono al calcolatore di comunicare con le periferiche, che possono essere progettate e costruite in modo molto.
GLI ALGORITMI VISIBILE SUL BLOG INFORMATICA ANNO SCOLASTICO 2013 / 2014 GABRIELE SCARICA 2°T.
Tecnologie Informatiche ed Elettroniche per le Produzioni Animali (corso TIE) CORSO LAUREA MAGISTRALE IN SCIENZE E TECNOLOGIE DELLE PRODUZIONI ANIMALI.
1 Sommario degli argomenti  Sistemi operativi: DOS, Unix/Linux,Windows  Word processors: Word  Fogli elettronici: Excel  Reti: TCP/IP, Internet, ftp,
Studio di una soluzione distribuita per la gestione di un centro sondaggi.
Corso di Architetetture degli Elaboratori, A.A. 2004/ Architettura degli Elaboratori Elisa B.P. Tiezzi Orario ricevimento: Giovedì, ( Il materiale.
Strategie di progetto Si possono utilizzare le strategie tipiche dello sviluppo di un processo di ingegnerizzazione (es. ingegneria del software). Strategie.
Sistemi operativi di rete Ing. A. Stile – Ing. L. Marchesano – 1/18.
1 Metodologie di Programmazione = decomposizione basata su astrazioni.
I Sistemi Operativi. Che cosa sono? Il sistema operativo è un software di base che fa funzionare il computer. I Sistemi operativi più importanti sono:
I Sistemi Operativi. Definizione Per Sistemi Operativi (di seguito SO) si intendono quei pacchetti software, a loro volta costituiti da più sottoprogrammi.
Le basi di dati.
I sistemi operativi Funzioni principali e caratteristiche.
Implementazioni di un analizzatore di protocollo Esistono quattro fondamentali tradeoff per la realizzazione di un analizzatore di protocollo:  Analisi.
Dal problema al programma – ciclo di sviluppo del software La scrittura del programma è solo una delle fasi del processo di sviluppo di un'applicazione.
1 Informatica di Base Facoltà di Lingue e Letterature Straniere Corso di laurea in Relazioni Pubbliche.
ALGORITMI, LINGUAGGI E PROGRAMMI Facoltà di Lingue e Letterature Straniere Corso di laurea in Relazioni Pubbliche.
Transcript della presentazione:

Ingegneria del Software Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dellInformazione Università di Siena Via Roma 56 – – SIENA Uff

Prodotto software Rilevanti differenze rispetto alle tradizionali tipologie di prodotto: – Intangibile: descrizione funzionale – Modificabile il risultato non è definitivo, ma nel tempo può subire modifiche anche molto rilevanti

Prodotto e processo Prodotto Risultato dello sviluppo dell'applicazione richiesta Processo: Insieme di operazioni che portano alla realizzazione del prodotto La qualità del processo influenza la qualità del prodotto.

Caratteristiche esterne: Visibili agli utenti –> funzionalità richieste e interfaccia grafica interne: Riguardano gli sviluppatori –> funzionalità interne, progettazione, problemi di performance ecc.. Le caratteristiche interne influenzano quelle esterne.

Caratteristiche di un prodotto software

1 - Correttezza Un prodotto software è corretto se soddisfa i requisiti funzionali richiesti analisi dei requisiti e specifiche Se le specifiche sono formali (caso di programmi formali), la correttezza può essere verificata formalmente: prova di un teorema matematico

1 – Correttezza Non esistono gradi di correttezza ma è un valore assoluto e binario: corretto/non corretto Cosa succede se le specifiche iniziali sono sbagliate? Es. caso di un'analisi iniziale parziale o non chiara

2 - Affidabilità L'utilizzatore del programma DEVE fidarsi che ciò che sta facendo sia fatto correttamente E' definita come la probabilità di assenze di fallimenti in un certo periodo di tempo: Maggiore è il periodo di lavoro senza intoppi, maggiore è l'affidabilità di un programma Es. windows vs. MacOS

3 - Robustezza Capacità di gestire situazioni fuori dalla normalità: Operazioni incorrette da parte dell'utilizzatore Problemi hardware … Più il programma riesce a prevedere e a gestire comportamenti errati dell'utente, maggiore è il grado di robustezza del software: Procedure di backup, undo, richieste di conferma per le operazioni più pericolose ecc...

4 – Prestazioni (performances) Efficiente utilizzo delle risorse: Memoria – occupazione di spazio CPU – occupazione di tempo Rete – Occupazione di banda … Verifica: analisi della complessità simulazioni

5 – Usabilità Misura la capacità richiesta all'utente per l'utilizzo del programma. Altrimenti conosciuta come: user-friendliness Caratteristiche: Molto soggettiva e variabile: utenti diversi possono ritenere lo stesso programma più o meno usabile Riguarda principalmente l'insieme delle interfacce uomo/macchina utilizzate nel programma (uso di finestre rispetto alla linea di comando, device esterni come lettori ottici ecc...)

6 - Manutenibilità Manutenzione: modifiche o miglioramenti successivi al rilascio del prodotto. I costi di manutenzione sono il 60% dei costi totali di produzione di un programma. La manutenibilità di un software misura quanto esso sia facile da aggiornare, modificare o migliorare: In altre parole, facilità di manutenzione.

6 – Manutenibilità Tre tipi di interventi: Correttiva – rimozione di errori residui (20%) Adattiva – aggiustamenti necessari a seguito di cambiamenti dell'ambiente (20%): es. modifica di una legge in un programma di gestione tributaria. Perfettiva – Miglioramenti rispetto alla versione attuale (60%).

7 - Riusabilità Capacità del software di poter essere riutilizzato in altri ambiti con uno sforzo programmativo ridotto: Es. software per la gestione di magazzino di un negozio di PC e di un negozio di abiti. Riutilizzo di gran parte del codice scritto. Enorme risparmio di tempo e conseguente possibilità di allargamento del mercato.

8 - Portabilità Capacità del programma di essere eseguito su diverse piattaforme hardware o software Portabilità software: Sistema operativo – Windows, MacOS, linux ecc... Portabilità hardware: Computer con diverse caratteristiche fisiche, 256Mb contro 1Gb di RAM, ecc...

9 - Interoperabilità Capacità del software di comunicare con altri programmi. Uso di standard: per lo scambio di dati (es. PDF, xml, ecc...) per la comunicazione (es. TCP/IP, ethernet ecc..) Per la gestione di periferiche (es. stampanti, periferiche video ecc..)

10 - Chiarezza Misura la facilità di comprensione da parte di un tecnico del programma Influenza la manutenibilità in quanto nuovi programmatori possono facilmente ed in tempi brevi entrare nel programma.

Tipologie di programma Operazioni real-time: requisiti temporali stringenti necessità di risposte immediate e in tempi certi Es. sistemi di guida, programmi per automazione industriale ecc... Operazioni batch: Possono essere demandate ad un secondo momento Es. aggiornamento, ricreazione dell'indice, ecc...

Tipologie di programma Standalone: Programma completamente installato su un computer. Maggior consumo di memoria e cpu. Programma distribuito: Software di rete, normalmente applicazioni client- server che centralizzano il nucleo dell'applicazione su un server remoto. Sul computer è in esecuzione solamente un programma client che richiede funzionalità al server. Minor utilizzo di memoria e cpu, ma maggior consumo di rete

Ciclo di vita del software

Analisi dei requisiti Primo passo per la progettazione di un software: Specifica dei requisiti da parte del committente Analisi dei requisiti da parte del progettista Passo che normalmente viene iterato più volte per accertare al massimo l'accordo tra committente e realizzatore: Differenze di linguaggio Differenze di punti di vista (interfaccia rispetto a funzionalità) Problemi inizialmente non analizzati e/o apparsi successivamente

Progettazione Fase di progettazione dell'architettura del programma Principi chiave: Rigore e formalismo Separazione tra concetti Modularità Astrazione Anticipazione dei cambiamenti Generalità Incrementalità

1 – Rigore e formalismo La specifica e l'analisi dei requisiti deve essere il più possibile rigorosa e formale. Laddove è possibile dare una rappresentazione formale (matematica o simile), dovrebbe essere fatto. Normalmente vengono redatti una serie di documenti descrittivi delle funzionalità e dei requisiti individuati.

2 – Separazione tra concetti Per dominare la complessità di grossi progetti software è necessario separare i problemi, affrontarli in maniera indipendente e poi ri-assemblarli per ottenere la soluzione generale. Approccio Divide et Impera: i sotto-problemi sono più semplici da risolvere la loro ricomposizione per la soluzione generale non dovrebbe aggiungere eccessiva complessità al problema

2 – Separazione tra concetti Permette la parallelizzazione degli sforzi di realizzazione: i singoli sotto-problemi individuati possono essere sviluppati indipendentemente e ri-assemblati alla fine per ottenere il prodotto finale Anche le responsabilità realizzative all'interno del team di progettazione/sviluppo sono separate e limitate a sottoparti dell'intero sistema: pochi responsabili di progetto, molti responsabili di primo livello ecc...

3 – Modularità La separazione dei concetti, in fase di schematizzazione del progetto si trasforma in modularità: il progetto generale viene suddiviso in moduli. Modulo: Sotto-blocco di un sistema caratterizzato da un insieme di funzionalità o compiti affini es. un modulo gestore di database si occupa di tutte le operazioni su database.

3 – Modularità La suddivisione in moduli può essere ricorsiva: Primo livello individuazione di entità funzionali di alto livello (molto astratte) Secondo livello all'interno di ogni modulo individuato al passo precedente vengono isolati altre entità funzionali chiare e con sotto-compiti distinti (sempre più specifiche).... Ultimo livello livello oltre il quale non si riesce ad individuare ulteriori blocchi funzionali (funzionalità di basso livello)

3 – Modularità Creazione di schemi a blocchi: Rettangoli per individuare le entità (moduli) Frecce o linee per schematizzare le interconnessioni tra esse La direzione delle frecce chiarisce la direzionalità dello scambio dati tra moduli: input, output o entrambe Es: il risultato dell'elaborazione di un modulo viene passato al gestore di database, ma, in altre situazioni, la lettura effettuata dal gestore di database deve essere passata al modulo (freccia bidirezionale)

3 – Modularità: coesione ed accoppiamento Elevato grado di coesione interna: moduli capibili separatamente moduli con operazioni e/o proprietà affini Elevato accoppiamento interno ed uno scarso accoppiamento esterno: le funzionalità di un modulo utilizzano il più possibile le altre funzionalità e/o proprietà interne le funzionalità e/o proprietà interne di un modulo sono scarsamente utilizzate da altri moduli (tranne i moduli padre in cui eventualmente sono inseriti)

4 - Astrazione Identificare gli aspetti importanti di un fenomeno (leggi modulo) ed ignorare il più possibile i suoi dettagli. Approccio a scatola nera (black-box): Definire le funzionalità di interfaccia senza preoccuparsi di come esse saranno realizzate

5 – Anticipazione dei cambiamenti Abilità a supportare le evoluzioni del software richiede di anticipare i possibili cambiamenti futuri. E' alla base per un software manutenibile e in continuo aggiornamento.

6 – Generalizzazione Quando si approccia ad un problema, cercare di capire se esso è un caso particolare di un problema più generale: Molte volte il problema più generale è già stato risolto oppure è più semplice da risolvere. Vantaggi: Riutilizzo Astrazione Modularità

7 - Incrementabilità Il processo di realizzazione di un software segue due strade in parallelo: Sviluppo Rilascio di versioni intermedie Dal rilascio di versioni intermedie è possibile avere feedback per modificare o aggiungere caratteristiche (funzionalità)

Fase di rilascio 1.Rilascio di un un sottoinsieme di funzionalità allo scopo di ottenere dagli utenti dei feedback per successive modifiche o aggiunte. Le rimanenti funzionalità sono aggiunte in maniera incrementale. 2.Rilascio di un prodotto completo in termini di funzionalità, ma poco ottimizzato in termini di performances. 3.Rilascio di un primo prototipo del prodotto (non singole funzionalità come nel caso 1) e successiva trasformazione in prodotto finale.

Sviluppo Una volta creato/i gli schemi a blocchi individuanti le entità del progetto e le loro interconnessioni è possibile passare alla fase di realizzazione: Implementazione Ogni entità corrisponde ad una classe: le proprietà di una entità possono essere realizzate tramite variabili della classe. Le funzionalità assegnate alla entità (modulo) possono essere realizzate tramite i metodi.

Sviluppo Le interazioni tra moduli si trasformano in chiamate di funzione: la direzione della freccia indica chi chiama cosa Es: Service chiama il metodo scrivi della classe DBManager Service Salva nel DB DBManager