Introduzione alla Progettazione per Componenti



Documenti analoghi
Introduzione al linguaggio Java

Architetture Applicative

Approccio stratificato

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1)

Introduzione alle tecnologie informatiche. Strumenti mentali per il futuro

Dispensa di Informatica I.1

Linguaggi di programmazione

Il Sistema Operativo. C. Marrocco. Università degli Studi di Cassino

Indice generale. OOA Analisi Orientata agli Oggetti. Introduzione. Analisi

11. Evoluzione del Software

COMUNE DI RAVENNA GUIDA ALLA VALUTAZIONE DELLE POSIZIONI (FAMIGLIE, FATTORI, LIVELLI)

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

12. Evoluzione del Software

Il corso di italiano on-line: presentazione

Fondamenti di Informatica. Docenti: Prof. Luisa Gargano Prof. Adele Rescigno BENVENUTI!

Sistema Operativo. Fondamenti di Informatica 1. Il Sistema Operativo

Sistemi informativi secondo prospettive combinate

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

Programmazione in Java e gestione della grafica (I modulo) Lezione 1: Presentazione corso

Progettazione : Design Pattern Creazionali

SOFTWARE PER LA RILEVAZIONE PRESENZE SUL WEB

e-dva - eni-depth Velocity Analysis

Definizione Parte del software che gestisce I programmi applicativi L interfaccia tra il calcolatore e i programmi applicativi Le funzionalità di base

Il Sistema Operativo

ISTITUTO TECNICO ECONOMICO MOSSOTTI

Coordinazione Distribuita

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

NOTE OPERATIVE. Prodotto Inaz Download Manager. Release 1.3.0

Corso di Informatica

La Gestione delle risorse Renato Agati

Sistema operativo: Gestione della memoria

POLITICA DI COESIONE

SCENARIO. Personas ALICE Lucchin / BENITO Condemi de Felice. All rights reserved.

Concetti di base di ingegneria del software

Memoria Virtuale. Anche la memoria principale ha una dimensione limitata. memoria principale (memoria fisica) memoria secondaria (memoria virtuale)

MService La soluzione per ottimizzare le prestazioni dell impianto

Gestione dei documenti e delle registrazioni Rev. 00 del

Creare una Rete Locale Lezione n. 1

Guida alla registrazione on-line di un DataLogger

Per chi ha la Virtual Machine: avviare Grass da terminale, andando su Applicazioni Accessori Terminale e scrivere grass

Rev 09/01/2012 I.R.I.S. Controllo Accessi

Corso di Informatica

Fondamenti di Informatica Ingegneria Clinica Lezione 16/10/2009. Prof. Raffaele Nicolussi

S i s t e m a d i v a l u t a z i o n e d e l l e p r e s t a z i o n i d e i d i p e n d e n t i

Laboratorio di Informatica

Corso di Informatica

Introduzione alla Virtualizzazione

Sistema operativo. Sommario. Sistema operativo...1 Browser...1. Convenzioni adottate

«Gestione dei documenti e delle registrazioni» 1 SCOPO CAMPO DI APPLICAZIONE E GENERALITA RESPONSABILITA DEFINIZIONI...

Scopo della lezione. Informatica. Informatica - def. 1. Informatica

FONDAMENTI di INFORMATICA L. Mezzalira

Il sistema di I/O. Hardware di I/O Interfacce di I/O Software di I/O. Introduzione

Corso di Informatica

Gestione della memoria centrale

Piano di gestione della qualità

GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain.

Introduzione alla Programmazione Orientata agli Oggetti. Classi, Oggetti e Messaggi

Protezione. Protezione. Protezione. Obiettivi della protezione

Calcolatori Elettronici. La memoria gerarchica La memoria virtuale

Gestione delle informazioni necessarie all attività di validazione degli studi di settore. Trasmissione degli esempi da valutare.

CONTROLLO DEGLI ACCESSI INTELLIGENTE PER UN FLUSSO DI PERSONE SICURO E CONFORTEVOLE. KONE Access

1. DISTRIBUZIONE Datore di Lavoro Direzione RSPP Responsabile Ufficio Tecnico Responsabile Ufficio Ragioneria (Ufficio Personale) Ufficio Segreteria

Generazione Automatica di Asserzioni da Modelli di Specifica

Software Servizi Web UOGA

Come usare P-touch Transfer Manager

Ibpm è lo strumento per la gestione dei processi, dalla modellazione, all esecuzione, al monitoraggio.

Software di sistema e software applicativo. I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche

Introduzione. Coordinazione Distribuita. Ordinamento degli eventi. Realizzazione di. Mutua Esclusione Distribuita (DME)

Il sistema operativo TinyOS

HR - Sicurezza. Parma 17/12/2015

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Progettaz. e sviluppo Data Base

Scheduling della CPU. Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux

Software per Helpdesk

Il CRM per la Gestione del Servizio Clienti

Esame di INFORMATICA

Presentazione FutureMobile. Sicurezza e Tracciabilità

Il sapere tende oggi a caratterizzarsi non più come un insieme di contenuti ma come un insieme di metodi e di strategie per risolvere problemi.

LA SOLUZIONE. EVOLUTION, con la E LA TECNOLOGIA TRASPARENTE IL SOFTWARE INVISIBILE INVISIBILE ANCHE NEL PREZZO R.O.I. IMMEDIATO OFFERTA IN PROVA

ROM Upgrade Utility (RUU) Prima dell aggiornamento fare attenzione se

Presidenza del Consiglio dei Ministri

Introduzione al sistema operativo Il file system: file, directory,...

Hub-PA Versione Manuale utente

Sistemi Operativi. 5 Gestione della memoria

La manutenzione come elemento di garanzia della sicurezza di macchine e impianti

Informatica 3. Informatica 3. LEZIONE 10: Introduzione agli algoritmi e alle strutture dati. Lezione 10 - Modulo 1. Importanza delle strutture dati

Contenuti. Visione macroscopica Hardware Software. 1 Introduzione. 2 Rappresentazione dell informazione. 3 Architettura del calcolatore

Laboratorio di reti Relazione N 5 Gruppo 9. Vettorato Mattia Mesin Alberto

SOMMARIO... 3 INTRODUZIONE...

Specifiche dello sviluppo di un progetto software e indicazioni sulla documentazione e sulle modalità di esercizio delle prestazioni

3. Introduzione all'internetworking

Guida Compilazione Piani di Studio on-line

1. BASI DI DATI: GENERALITÀ

Correttezza. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 10. A. Miola Novembre 2007

4.5 CONTROLLO DEI DOCUMENTI E DEI DATI

La Metodologia adottata nel Corso

Ambienti di Sviluppo

DATA BASE ON LINE (BANCA DATI MODULI SPERIMENTALI)

Transcript:

Introduzione alla Progettazione per Componenti Alessandro Martinelli 6 ottobre 2014 Obiettivo del Corso Il Progetto Software Reale Il Componente Software La Programmazione Ad Oggetti Fondamenti di Informatica II

Introduzione alla Programmazione per Componenti Obiettivo del Corso Introdurre e Preparare allo Sviluppo di Progetti Software Reali Presupposti al corso sono: Familiarità con almeno un linguaggio di Programmazione (Il riferimento è il linguaggio C) Familiarità con il concetto di Struttura Dati e di Allocazione/Occupazione della Memoria Familiarità con il concetto di Funzione (Importante) Capacità di implementare semplici algoritmi e di racchiuderli all interno di funzioni riutilizzabili A. Martinelli Introduzione 6 ottobre 2014 2 / 21

Il Progetto Software Reale Un Progetto Software Reale Rispetto ad un semplice esercizio di programmazione un Progetto Software Reale ha Dimensioni Significativamente Superiori. Queste dimensioni comportano : Più Funzioni da implementare, Più Codice di Programmazione Più Giorni per lo Sviluppo, Più Persone coinvolte Più Tecnologie per soddisfare esigenze diverse che cooperano tra di loro nello stesso Sistema Informatico A. Martinelli Introduzione 6 ottobre 2014 3 / 21

Il Progetto Software Reale Più Funzioni da implementare, Più Codice di Programmazione E necessarrio scomporre i problemi più complessi, cercando di affrontarne una parte per volta Le funzionalità di un Sistema Informatico devono essere organizzate in categorie e raccolte in gruppi Coesione Termine, importantissimo, utilizzato per indicare che un insieme di funzionalità stanno bene insieme Componente (Definizione Generale) Un insieme di funzioni, quanto più possibile coese. A. Martinelli Introduzione 6 ottobre 2014 4 / 21

Il Progetto Software Reale Più Giorni per lo Sviluppo, Più Persone coinvolte Non è facile ricordare quel che si è fatto a distanza di tempo Non è facile capire ciò che è stato fatto da altri Non è facile coordinare adeguatamente lo sforzo di più persone In presenza di queste limitazioni si commettono molti errori Versione Il codice aumenta progressivamente nel tempo, e vengono generate versioni successive contenenti un numero crescente di funzionalità Condivisione di Codice Si usano strumenti e specifiche modalità di lavoro per rendere più semplice la Condivisione del Codice tra gli sviluppatori di un Progetto Modello di Sviluppo Insieme di passi che scelgo di seguire per coordinare lo sviluppo del codice A. Martinelli Introduzione 6 ottobre 2014 5 / 21

Il Progetto Software Reale Più Tecnologie per soddisfare esigenze diverse Porzioni differenti dello stesso Sistema Informatico possono essere scritte in linguaggi differenti Il Sistema può utilizzare strumenti di natura differente (accessori, stampanti, schermi, casse...). Architettura Applicativa Struttura di una Applicazione che deve integrare tra di loro componenti scritti in linguaggi differenti o destinati all interazione con specifiche categorie di strumenti. A. Martinelli Introduzione 6 ottobre 2014 6 / 21

Il Componente Software Il Componente Software Componente (Definizione Generale) Un insieme di funzioni, quanto più possibile coese. La coesione è un concetto difficile da misurare in generale. Le caratteristiche desiderate di un insieme coeso di funzioni sono: Riusabilità : una volta che il componente è stato realizzato, può essere usato in più situazioni, per rispondere alle stesse esigenze Chiusura : il componente DEVE essere riutilizzabile senza che ci sia bisogno di ritoccare il codice Comprensibilità : il nome di un componente è rappresentativo delle funzionalità che offre; le funzioni presenti nel componente non devono indurre a confusione Ricercabilità : di fronte ad un vasto insieme di componenti riutilizzabili, deve essere semplice trovare quello giusto al momento giusto (diretta conseguenza della Comprensibilità) A. Martinelli Introduzione 6 ottobre 2014 7 / 21

Il Componente Software Il Componente Software deve essere : Progettato : deve essere chiaro quale insieme di funzionalità il componente rappresenta. Sviluppato Validato : la validazione è il processo con il quale valuto un componente e ne verifico il funzionamento, il che implica l esecuzione di Test e la correzione di eventuali errori di codifica Riutilizzabile : deve possibile utilizzare il componente in un numero differente di circostanze senza che ci sia bisogno di rifare tutto ogni volta Documentato : deve facile accedere alle informazioni relative al componente, in modo da favorirne il riutilizzo A. Martinelli Introduzione 6 ottobre 2014 8 / 21

Il Componente Software Un Esempio : i componenti in Elettronica Una Azienda di MicroElettronica produce memorie per processori. Ogni unità di memoria deve fornire una serie di connettori fisici sui quali si implementano queste importanti funzionalità: Allocazione e Deallocazione della memoria Lettura Scrittura L Azienda ha un obiettivo: consentire un uso flessibile di memorie diverse da parte dei consumatori A. Martinelli Introduzione 6 ottobre 2014 9 / 21

Il Componente Software L Azienda di MicroElettronica introduce il concetto di interfaccia elettronica per le sue memorie, rendendo uniforme la comunicazione Più in generale: L esempio delle memorie è solo uno dei tanti esempi di Interfacciamento Digitale. Si pensi alle Porte USB (è possibile connettere dispositivi molto differenti). O ai connettori per i monitor (è possibile connettere monitor con caratteristiche e risoluzioni diverse allo stesso PC). A. Martinelli Introduzione 6 ottobre 2014 10 / 21

Il Componente Software Nel nostro esempio, la Memoria è un Componente La Memory Inc. progetterà dei Modelli di Memoria ( quello da 256 Mb, quello da 512 Mb...). Per ogni modello, verranno messe in commercio diverse unità Quando parliamo di Componenti Software vogliamo delle unità software con proprietà simili, in modo tale che: I programmi si costruiscano connettendo fra loro i Componenti Software sulle loro Interfacce...... Interfacce che devono essere quanto più generiche possibile (come per le porte USB), per semplificare i meccanismi di connessione Ogni componente viene prodotto (o meglio istanzianziato, allocato...) in molte unità sulla base della descrizione fornita dal suo Modello. A. Martinelli Introduzione 6 ottobre 2014 11 / 21

Il Componente Software Modularità, Gerarchia e Strutturazione dei Componenti Tutti i componenti Software hanno una Interfaccia, che deve essere nota per poter sfruttare il componente. Non è invece necessario conoscere i dettagli dell implementazione del componente stesso. Funzione Una Funzione è un Componente Software che implementa un singolo algoritmo. Al variare dei parametri, fornisce in modo deterministico risultati differenti. L Interfaccia è la firma della funzione. Libreria Una Libreria è un Componente Software composto di solito da un insieme molto ampio di funzioni e strutture dati. Le librerie sono di solito meno coese di altri Componenti Software. L Interfaccia è l insieme delle firme delle funzioni. Pacchetto Un Pacchetto è un Componente Software composito che raccoglie al suo interno altri Componenti Software. L Interfaccia è data dalla descrizione delle interfacce di tutti i componenti software appartenenti al pacchetto. A. Martinelli Introduzione 6 ottobre 2014 12 / 21

La Programmazione Ad Oggetti La Programmazione ad Oggetti La Programmazione ad Oggetti introduce un nuovo tipo di Componente Software, l Oggetto. Un Oggetto è: Una struttura dati...... a cui possono essere associate delle particolari funzioni dette Metodi I Metodi hanno accesso diretto agli Attributi, per cui una chiamata ad un Metodi fornisce un risultato che cambia al cambiare del valore degli Attributi. Inoltre gli Oggetti rendono pratici alcuni concetti precedentemente visti: Un Oggetto deve essere progettato, ovvero devono essere definiti gli Attributi ed i Metodo di cui è composto. Il progetto di un Oggetto è detto Classe Data una Classe, è possibile instanziare tutti gli Oggetti che si desiderano. A. Martinelli Introduzione 6 ottobre 2014 13 / 21

La Programmazione Ad Oggetti La Programmazione ad Oggetti nei Linguaggi di Programmazione Esistono, tipicamente, due approcci buoni alla Sviluppo Software. L approccio basato sul Funzioni e Librerie L approccio basato sul Oggetti e Pacchetti (che struttura i componenti in modo ) Questi due approcci vengono solitamente banalizzati come Programmazione Non ad Oggetti e Programmazione ad Oggetti, ma sono due validi approcci da considerare più o meno buoni a seconda delle circostanze. A. Martinelli Introduzione 6 ottobre 2014 14 / 21

La Programmazione Ad Oggetti E inolte opinione comune associare alcuni Linguaggi di Programmazione alla Programmazione Non ad Oggetti ed altri alla Programmazione ad Oggetti. Questo corso si basa su un presupposto importantissimo: Nessun Linguaggio di Programmazione E (o Non E ) ad Oggetti I Linguaggio di Programmazione offrono più o meno strumenti Questo rende un linguaggio più o meno adatto allo sviluppo di una tipologia di componenti Ogni linguaggio però consente lo sviluppo di componenti di ogni tipo, con eventuali difficoltà Per Programmare Senza gli Oggetti bisogna comunqe imparare a fare buone Librerie Per Programmare Ad Oggetti bisogna comunqe imparare a fare buoni Oggetti e a comporli adeguatamente in Pacchetti A. Martinelli Introduzione 6 ottobre 2014 15 / 21

La Programmazione Ad Oggetti I Linguaggi C e C++ Il linguaggio C++ è il linguaggio che aggiunge al C svariati strumenti utili alla Programmazione ad Oggetti. Opinioni diffuse sui Linguaggi C e C++ Il C è difficile. Il C++ è difficilissimo. La verità: sono due linguaggi con strumenti meno semplici da usare rispetto ad altri, percui è richiesta maggiore competenza. Il C non è ad oggetti. Il C++ è un casino, perché fa tutto. La verità: Il C++ ha strumenti molto più adatti per la programmazione ad oggetti, ma non perfetti, e bisogna saperli usare. Il Codice scritto in C++ è veloce. Il codice scritto in C è velocissimo. La verità: il linguaggio contribuisce solo in parte ai tempi di esecuzione, perché il contributo maggiore è dato dalla corretta scelta degli algoritmi. La scelta corretta di un algoritmo diventa più difficile quando il linguaggio è più difficile da usare. Il C++ è storicamente un linguaggio molto importante per i contributi che ha fornito nell identificare strumenti adeguati alla programmazione ad oggetti. A. Martinelli Introduzione 6 ottobre 2014 16 / 21

La Programmazione Ad Oggetti Il linguaggio Java Nasce durante gli anni 90, con l intento di : superare i limiti del C++ favorire lo sviluppo di software per il Web Tre importanti caratteristiche: Portabilità Robustezza Orientato agli Oggetti Il Linguaggio Java è il linguaggio che ha dato i maggiori contributi alla teoria della Programmazione ad Oggetti e della Programmazione per Componenti software. A. Martinelli Introduzione 6 ottobre 2014 17 / 21

La Programmazione Ad Oggetti Java e Portabilità : la Java Virtual Machine Come per il linguaggio C, il codice Java viene compilato. Il risultato del processo di compilazione è un insieme di file.class I.class non sono scritti in linguaggio macchina La Java Virtual Machine Lanciando una Macchina Virtuale Java si può interpretare i.class. La Macchina Virtuale Java è un programma. E possibile eseguire i.class su qualsiasi sistema operativo per il quale esista una Macchina Virtuale Java. Per questi motivi Java è anche detto linguaggio interpretato. A. Martinelli Introduzione 6 ottobre 2014 18 / 21

La Programmazione Ad Oggetti Java e Robustezza : la Java Virtual Machine Nell epoca di massimo sviluppo del linguaggio C++, era noto che la difficoltà maggiore degli sviluppatori stava nella gestione della memoria (allocazione e deallocazione) Sbagliare in questo compito comporta due grossi rischi: Segmentation Fault (Facile da riscontrare, non da risolvere) Saturazione della Memoria (Molto più difficile da rilevare) Per far fronte a questi due problemi, Java offre due importanti meccanismi: Il primo problema è risolto con l introduzione delle Eccezioni a Runtime. Il secondo problema è risolto attraverso il Garbage Collector A. Martinelli Introduzione 6 ottobre 2014 19 / 21

La Programmazione Ad Oggetti Java e Robustezza : le Eccezioni Runtime Gestione delle Eccezioni La Gestione delle Eccezioni è un importante meccanismo comune a molti linguaggi ad oggetti, caratteristico tra gli altri del linguaggio Java. La Gestione delle Eccezioni consente di regolamentare il comportamento del Software quando si verificano comportamenti eccezionali. Le Eccezioni Runtime (RunTimeException) sono un particolare tipo di eccezione, trattata in modo privilegiato rispetto alle altre. Con le Eccezioni Runtime Java gestisce tutte quelle situazioni comuni del linguaggio che solitamente si tradurrebbero in un segmentation fault. Il vantaggio di usare la Gestione delle Eccezioni per trattare queste situazioni sta nelle informazioni che la Java Virtual Machine fornisce in output quando questi problemi si verificano. A. Martinelli Introduzione 6 ottobre 2014 20 / 21

La Programmazione Ad Oggetti Java e Robustezza : il Garbage Collector Per far fronte al secondo problema, Java introduce il Garbage Collector: Responsabile dell allocazione della memoria Mantiene una mappa di tutti i puntatori alle aree di memoria utilizzate. Dealloca automaticamente le aree di memoria non più utilizzate. Di fatto: il programmatore non alloca, non dealloca e i puntatori nemmeno li vede. A. Martinelli Introduzione 6 ottobre 2014 21 / 21