Friendly & Interactive Schedule Helper Uno scheduler per attività umane

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Friendly & Interactive Schedule Helper Uno scheduler per attività umane"

Transcript

1 Friendly & Interactive Schedule Helper Uno scheduler per attività umane Luca Salvatore Lorello Progetto di Ingegneria del Software, Università degli studi di Urbino. Matricola Anno accademico

2 Indice 1 Specifica del problema Struttura di un impegno Cosa fornire all esterno Interfaccia Specifica dei requisiti Specifiche contestualizzate nel dominio del problema Diagramma dei casi d uso Template dei casi d uso Analisi e progettazione Pattern utilizzati Singleton Iterator Strategy Model-View-Controller Scelte di progetto Scelte relative agli algoritmi Scelte relative alle strutture dati Scelte relative alle interazioni complesse (pattern) Diagrammi di attività Diagrammi delle classi Implementazione Processo di sviluppo utilizzato Peculiarità di C#: proprietà e indexer Implementazione in C# Namespace ShortTermScheduler Namespace ShortTermScheduler/Algorithms Namespace ShortTermScheduler/Fitters Namespace Data Namespace Tester

3 5 Test Test black-box Test white-box Compilazione ed esecuzione Requisiti di sistema Requisiti minimi Requisiti consigliati Compilazione Compilazione con MSBuild Compilazione con Visual Studio 2013 Community Edition Compilazione con Visual Studio 2013 Ultimate Edition Esecuzione

4 Diagrammi 2.1 Diagramma dei casi d uso Diagramma di attività di Scheduler.Schedule() Diagramma di attività di TesterController.TestScheduler() Diagramma di attività di SJF.GetBest() Diagramma delle classi della libreria Diagramma delle classi dell interfaccia di test

5 Template dei casi d uso 2.1 Caso d uso: Configurazione Test Caso d uso: Acquisizione manuale impegni Caso d uso: Generazione automatica impegni Caso d uso: Esecuzione test Caso d uso: Restituzione esito

6 Listati 1.1 Algoritmo di invocazione tipico del sistema Implementazione del metodo Instance() del pattern Singleton Due modi equivalenti per implementare una proprietà banale Esempio di indexer Esempi di accesso a proprietà e indexers Classe Algorithm Classe FIFO Classe SJF Classe LJF Classe Prio Classe Fitter Classe FFit Classe BFit Classe WFit Classe Job Classe Interval Classe Validator Classe Program (entrypoint del programma) Classe InputView Classe TesterController Classe OutputView Test di unità di SJF.GetBest() Compilazione tramite MSBuild in modalità Debug Compilazione tramite MSBuild in modalità Release Raggiungimento del percorso dell applicazione compilata Esecuzione dell applicazione compilata in modalità Debug Esecuzione dell applicazione compilata in modalità Release

7 Capitolo 1 Specifica del problema Si vuole realizzare un sistema che gestisca un insieme di attività umane (impegni) in maniera automatica in termini di tempi d esecuzione. Nello specifico ci si vuole limitare all organizzazione nell arco delle 24 ore, con una precisione al quarto d ora. Il sistema dovrà gestire una tabella oraria (dalle 00:00 alle 23:45) e popolarla con gli impegni forniti dall utente secondo i seguenti criteri (che dovranno essere interamente configurabili): Se l orario di esecuzione di un impegno è stato stabilito dall utente, allora non dovrà essere modificato L ordine con cui verrà popolata la tabella dovrà procedere dall impegno più importante a quello meno importante, ciò vuol dire che gli intervalli temporali migliori verranno assegnati agli impegni più importanti Il criterio di importanza verrà scelto dall utente (tra First In First Out, Shortest Job First, Longest Job First, criterio per priorità e criterio casuale) Il criterio di scelta dell intervallo migliore dovrà essere scelto dall utente (tra First Fit, Best Fit e Worst Fit) Si dovrà dare all utente la possibilità di scegliere tra un esecuzione pigra (si massimizzerà il tempo libero tra due impegni consecutivi) o efficiente (si cercherà di concentrare gli impegni a inizio giornata). Il sistema, anche in presenza di più esecutori (e quindi tabelle orarie e configurazioni), dovrà assicurare un controllo centralizzato delle decisioni per facilitare eventuali implementazioni in ambiente concorrente e/o distribuito. 6

8 1.1 Struttura di un impegno Ogni impegno è genericamente costituito da un nome, una descrizione e un identificatore univoco. Un impegno può essere di tre tipi: Normale: l utente si limita a specificare durata e/o priorità Interrompibile: l utente specifica anche una granularità con cui dividere l impegno Fissato: l utente specifica solamente ora d inizio e fine, forzando l esecuzione in quell intervallo temporale. Gli impegni interrompibili dovranno essere interrotti solo se strettamente necessario ed esattamente in frammenti di dimensione pari alla granularità imposta (ad eccezione, naturalmente, dell ultimo frammento che potrebbe avere dimensione inferiore alla granularità). Non è consentita la cancellazione di un singolo frammento di impegno interrompibile (ne è tuttavia consentita la modifica della durata e degli altri parametri) e la rimozione dovrà dunque avvenire in toto. 1.2 Cosa fornire all esterno Il sistema dovrà fornire al mondo esterno le seguenti funzionalità: Configurazione del sistema Creazione, modifica e validazione di un impegno Modifica della lista di impegni da gestire (inserimenti e rimozioni di singoli impegni e svuotamento della lista) Popolamento della tabella oraria Azzeramento delle decisioni riguardo agli impegni futuri, ma non passati e presenti (eliminazione dalla tabella oraria di tutto ciò che è futuro) Restituzione della lista di impegni inseriti in tabella oraria e della lista di impegni che non è stato possibile inserire in tabella oraria Restituzione della frammentazione (1 dimensione intervallo libero massimo tempo libero totale ) e del tempo libero (in percentuale) calcolati sulla tabella oraria corrente. 7

9 1.3 Interfaccia Si deve fornire un interfaccia dimostrativa (a linea di comando) di un flusso canonico d esecuzione che funzioni in due modalità: Manuale: l utente genera manualmente gli impegni da ordinare Semiautomatica: l utente impone il soddisfacimento di alcune condizioni statistiche e l interfaccia genera casualmente gli impegni da ordinare. I parametri statistici su cui dovrà basarsi la modalità semiautomatica sono: Numero di impegni da generare Durata media degli impegni Percentuale di impegni fissati Percentuale di impegni interrompibili. L interfaccia dimostrativa dovrà restituire: Lista di impegni inseriti Lista di impegni che il sistema ha fallito nell organizzare Tabella oraria (coppia (orario; impegno)) Percentuale di tempo libero Percentuale di frammentazione della giornata Rappresentazione grafica dell occupazione della giornata. Poiché il sistema deve fornire solo funzionalità a basso livello (come descritto nella sezione 1.2), l interfaccia dimostrativa dovrà testare un algoritmo di invocazione tipico (listato 1.1). Listato 1.1: Algoritmo di invocazione tipico del sistema 1 Sistema.Reset(); 2 foreach (Impegno i in listaimpegni) 3 { 4 Sistema.Inserisci(i); 5 } 6 Sistema.Ordina(oraCorrente); 8

10 Non si impone che la tabella oraria sia ordinata temporalmente (si delega l ordinamento ad un più alto livello d astrazione, ad esempio alla memorizzazione permanente degli impegni su database o file). Per semplicità l interfaccia non dovrà restituire valori in tempo canonico (formato hh:mm) e potrà utilizzare qualunque formato interno si ritenga appropriato in fase di analisi senza imporre alcuna conversione, sia per gli input che per gli output. L interfaccia dimostrativa non dovrà tenere conto di riordini, modifiche, eliminazioni e nuovi inserimenti durante la giornata, l esecuzione dovrà dunque essere lineare e procedere nell ordine: 1. Configurazione della libreria 2. Creazione e validazione degli impegni 3. Esecuzione dell algoritmo di popolamento 4. Restituzione dell esito all utente. 9

11 Capitolo 2 Specifica dei requisiti Osservando la specifica del problema, risulta evidente che il dominio del problema sia quello che in teoria dei sistemi operativi prende il nome di scheduling (più nello specifico la sola componente a breve termine). Il popolamento della tabella oraria deve inoltre risolvere il problema dell allocazione contigua, ben codificato nell area della teoria dei sistemi operativi che si occupa di gestione della memoria principale. 2.1 Specifiche contestualizzate nel dominio del problema Si vuole implementare uno scheduler a breve termine che operi a tempo discreto, con time quantum di dimensione 15 minuti, su un process control block che modelli delle attività umane e che contenga: Nome dell attività Descrizione dell attività Identificatore Parametri di scheduling: Durata Time quantum d inizio Time quantum di fine Priorità Granularità Flag di interrompibilità Flag di impegno fissato. 10

12 Lo scheduler dovrà simulare la preemption (possibilità di interrompere un impegno in esecuzione e di sostituirlo con uno a maggiore importanza) solo per impegni interrompibili e i possibili punti di scheduling dovranno essere forzati ad intervalli pari alla granularità dell impegno. A differenza di uno scheduler tradizionale, sarà necessario non soltanto scegliere quale impegno mandare in esecuzione, ma anche quando mandarlo in esecuzione (all interno di una tabella oraria che verrà gestita tramite gli algoritmi di allocazione contigua della memoria principale noti in letteratura). Tale vincolo aggiunge la possibilità che l impegno scelto dall algoritmo di scheduling risulti non schedulabile a causa di mancanza di spazio nella tabella, si deve dunque aggiungere una nuova struttura dati che contenga tutti gli impegni non schedulabili, lasciando all utente il compito di gestirli (eliminandoli, rinviandoli al giorno dopo, affidandoli ad un altro esecutore o altro). L intero scheduler dovrà essere configurabile (in termini di algoritmi da utilizzare), come descritto nel capitolo 1, pertanto è necessario abbandonare il forte vincolo di efficienza (algoritmi che operano in tempo costante) imposto dall applicazione tradizionale della teoria dei sistemi operativi. 2.2 Diagramma dei casi d uso Di seguito è riportato il diagramma dei casi d uso relativo alla libreria (sottosistemi Data e ShortTermScheduler) e all interfaccia dimostrativa (sottosistema Tester). Si noti che l intero sottosistema Tester può essere visto come un istanza specifica dell attore LibraryUser. 11

13 Figura 2.1: Diagramma dei casi d uso 2.3 Template dei casi d uso Nel capitolo 5 si descriverà un test black-box relativo all interfaccia dimostrativa, vengono pertanto riportati qui tutti i template dei casi d uso relativi. Poiché il processo di sviluppo utilizzato (sezione 4.1) prevede lo sviluppo orientato ai test, non è necessario effettuare dei test di tipo black-box sulla libreria (durante lo sviluppo vengono creati test white-box che coprono quasi tutti i possibili flussi d esecuzione) ed è quindi superfluo descrivere i template dei casi d uso della libreria. 12

14 Actor Preconditions Basic course of action Postconditions Alternative paths TesterUser Lo scheduler è configurato con le impostazioni predefinite. L attore effettua la scelta dell algoritmo di scheduling. L attore effettua la scelta dell algoritmo di fitting. L attore sceglie se attivare la pigrizia. L attore imposta il time quantum corrente. L attore inserisce il numero di impegni da schedulare. L attore sceglie se creare una lista d impegni manualmente o automaticamente. Lo scheduler è configurato in base alle scelte dell utente. È noto il numero di impegni che verranno schedulati. Viene eseguito il caso d uso 2.2 se si è scelto l inserimento manuale, altrimenti il caso d uso 2.3. Nel caso in cui una scelta non venga inserita correttamente (ad esempio configurazioni non contemplate dall interfaccia), l interfaccia chiede di effettuare nuovamente la scelta. Tabella 2.1: Caso d uso: Configurazione Test 13

15 Actor Preconditions Basic course of action Postconditions Alternative paths TesterUser I parametri dello scheduler sono stati impostati correttamente. È noto il numero di impegni che verranno schedulati. Per un numero di volte pari al numero di impegni acquisito: L attore inserisce il nome dell impegno L attore inserisce la descrizione dell impegno L attore inserisce il tipo dell impegno L attore inserisce la durata e la priorità se il tipo è normale o interrompibile L attore inserisce la granularità se il tipo è interrompibile L attore inserisce il time quantum d inizio e di fine se il tipo è fissato L impegno viene validato e inserito in una lista temporanea. La lista temporanea ha cardinalità pari al numero d impegni acquisito in precedenza e contiene tutti gli impegni acquisiti. L identificatore di ogni impegno è assegnato incrementalmente. Viene eseguito il caso d uso 2.4. Nel caso in cui un parametro non venga inserito correttamente (ad esempio una durata non intera), l interfaccia riprova ad acquisire il parametro. Se la validazione di un impegno fallisce (ad esempio perché il time quantum d inizio è successivo al time quantum di fine), l impegno non viene inserito e si chiede di inserirne un altro. Tabella 2.2: Caso d uso: Acquisizione manuale impegni 14

16 Actor Preconditions Basic course of action Postconditions Alternative paths TesterUser I parametri dello scheduler sono stati impostati correttamente. È noto il numero di impegni che verranno schedulati. L attore inserisce durata media degli impegni, percentuale di impegni fissati e percentuale di impegni interrompibili. Vengono generati casualmente (rispettando i parametri stabiliti dall attore) un numero di impegni pari al numero acquisito in precedenza, ogni impegno ha un identificatore casuale e univoco e, se viene validato, viene inserito in una lista temporanea. La lista temporanea ha cardinalità pari al numero d impegni acquisito in precedenza e contiene tutti gli impegni generati. Viene eseguito il caso d uso 2.4. Nel caso in cui un parametro non venga inserito correttamente (ad esempio una durata media non intera), l interfaccia effettua nuovamente la richiesta. Se un impegno generato non supera la validazione, si ritenta finché non si genera un impegno valido. Nota: la somma delle percentuali di impegni interrompibili e fissati non può superare il 100 % (1.0). Tabella 2.3: Caso d uso: Generazione automatica impegni 15

17 Actor Preconditions Basic course of action Postconditions Alternative paths TesterUser Lo scheduler è configurato. La lista temporanea contiene tutti gli impegni da schedulare. Vengono resettate le decisioni di scheduling Si inserisce ogni impegno della lista temporanea nelle liste di scheduling Si invoca lo scheduler. La tabella oraria è stata popolata. Una lista contiene eventuali impegni non schedulabili. Nessuno. Tabella 2.4: Caso d uso: Esecuzione test Actor Preconditions Basic course of action Postconditions Alternative paths TesterUser La tabella oraria è stata popolata. Una lista (eventualmente vuota) contiene gli impegni non schedulabili. L attore legge la lista degli impegni da schedulare (nel formato id: nome, descrizione). L attore legge la lista degli impegni non schedulabili (costituita dai soli id). L attore legge la lista di impegni schedulati (nel formato time quantum iniziale - time quantum finale: id). L attore legge le percentuali di fallimenti, tempo libero e frammentazione. L attore visualizza una rappresentazione grafica dell occupazione della giornata. L attore preme un tasto per terminare l esecuzione. L attore ha letto l output del programma e il programma è terminato. Nessuno. Tabella 2.5: Caso d uso: Restituzione esito 16

18 Capitolo 3 Analisi e progettazione 3.1 Pattern utilizzati Un design pattern è una descrizione di un problema di progettazione ricorrente e una sua soluzione generica, applicabile dunque un numero indefinito di volte variandone i dettagli implementativi. In genere, per descrivere un design pattern, sono necessari quattro elementi: Nome: necessario per codificare problema e soluzione in maniera rapida e univoca Problema: dominio di applicazione del pattern, può essere la descrizione di un problema specifico o di strutture generiche; a volte sono presenti anche dei vincoli da soddisfare per l applicabilità del pattern Soluzione: elementi che descrivono strutture (classi e oggetti nel contesto della programmazione orientata a oggetti) e relazioni, responsabilità e collaborazioni tra strutture atte a risolvere il problema Conseguenze: risultati e vincoli (in termini di spazio, tempo, flessibilità e via dicendo) ottenuti applicando il pattern. I design pattern si categorizzano in: Pattern creazionali: forniscono un astrazione del processo di istanziazione degli oggetti, gli elementi fondamentali di un pattern creazionale sono la capacità di incapsulare la conoscenza delle classi concrete da utilizzare e di nasconderne le modalità di creazione e composizione Pattern strutturali: implementano modalità di composizione di classi (per comporre interfacce e implementazioni) e oggetti (per creare nuove funzionalità) atte a formare strutture complesse 17

19 Pattern comportamentali: implementano algoritmi e assegnano responsabilità tra oggetti collaboranti, possono operare su classi, oggetti o sulla comunicazione tra oggetti, risolvono problemi causati da flussi di controllo complessi spostando l attenzione sul modo in cui si interconnettono i vari oggetti. Si noti che l interpretazione della natura di un pattern dipende fortemente dal livello di astrazione utilizzato: a bassi livelli d astrazione un pattern è qualcosa da implementare, ad alti livelli invece si riconduce ad una primitiva fornita dal linguaggio di programmazione usato (ad esempio è stato necessario implementare il pattern Singleton, descritto in sezione 3.1.1, mentre il pattern Iterator, sezione 3.1.2, è già implementato dalla libreria standard di C# come interfaccia IIterator o come costrutto foreach). La scelta del paradigma e del linguaggio di programmazione influiscono molto anche su cosa considerare pattern, ad esempio il polimorfismo è una funzionalità fondamentale del paradigma a oggetti, mentre può essere considerato un pattern nel paradigma procedurale. I design pattern utilizzati per lo scheduler sono stati Singleton, Iterator e Strategy. Per l interfaccia dimostrativa si è usato Model-View-Controller che non è un design pattern, bensì un pattern architetturale, ossia una descrizione di un problema architetturale (anziché progettuale) ricorrente con la relativa soluzione Singleton Singleton è un pattern creazionale basato su oggetti che risolve il problema di assicurare che per una classe esista un unica istanza accessibile con semplicità, facendo in modo che sia la classe stessa ad istanziarsi. Singleton è applicabile quando: Deve esistere un unica istanza di una classe accessibile da un riferimento noto a tutti gli utilizzatori L unica istanza deve essere estesa con sottoclassi e anch esse devono ammettere un unica istanza. Per far funzionare correttamente il pattern, il costruttore della classe deve essere privato (nel caso in cui si debba verificare la prima precondizione) o protetto (nel caso in cui si debba verificare la seconda). L implementazione di Singleton consiste nella creazione di un metodo pubblico e statico (in genere chiamato Instance) che restituisce il riferimento all istanza, non accessibile direttamente dall esterno, dell oggetto (in genere contenuta nell attributo privato _instance), se il riferimento è nullo, invoca il costruttore prima di restituirlo. Listato 3.1: Implementazione del metodo Instance() del pattern Singleton 18

20 1 if (_instance == NULL) { 2 _instance = new Singleton(); 3 } 4 return _instance; Le conseguenze dell applicazione di Singleton sono: Controllo stretto dell accesso all istanza (in termini di modalità e tempi di accesso da parte degli utilizzatori) poiché viene incapsulata dal metodo Instance Riduzione dello spazio dei nomi rispetto all utilizzo di variabili globali Possibilità di estendere la classe singleton con sottoclassi che avranno a loro volta un unica istanza (le sottoclassi possono fare override del metodo Instance, sfruttando il costruttore protetto della classe base) Possibilità di convertire facilmente l implementazione di Singleton in un implementazione di Multiton (pattern che prevede l utilizzo di un numero di istanze finito o comunque tenuto sotto controllo dalla classe stessa) Maggiore flessibilità rispetto all utilizzo di classi statiche (in alcuni linguaggi, come il C++, le classi statiche non possono sfruttare il polimorfismo) Iterator Iterator (anche noto come Cursor) è un pattern comportamentale basato su oggetti che risolve il problema della visita di una struttura dati complessa, senza esporne la struttura interna e permettendo l attraversamento da parte di utilizzatori diversi (con i singoli elementi correnti indipendenti tra loro). Iterator è applicabile quando: È necessario accedere al contenuto di un oggetto contenitore senza esporne la struttura interna Sono necessari attraversamenti contemporanei di uno stesso oggetto contenitore È necessario fornire un interfaccia comune a classi contenitore diverse, ovvero fornire un attraversamento polimorfico. La responsabilità dell attraversamento viene gestita da un oggetto esterno che tiene traccia dell elemento corrente e fornisce un interfaccia di accesso (in genere con metodi che restituiscono gli elementi primo e corrente della struttura dati, un metodo di avanzamento all elemento successivo e un metodo di controllo del raggiungimento della fine della struttura dati). Grazie 19

21 al disaccoppiamento tra struttura dati e oggetto iteratore, è possibile implementare diverse politiche di attraversamento, ad esempio per una struttura Tree si potrebbero creare gli iteratori TreePreIterator, TreeInIterator e Tree- PostIterator che implementano rispettivamente le visite pre-order, in-order e post-order dell albero. Si noti che un classe iteratore sarà fortemente dipendente dalla classe della struttura dati da iterare, perciò per implementare iteratori polimorfici (in modo che l utilizzatore non modifichi il proprio codice per strutture di tipo diverso), e necessario definire due classi astratte, dalla prima deriveranno tutte le strutture dati da utilizzare e dalla seconda tutti gli iteratori, in modo che ogni sottoclasse iteratrice possa implementare la visita di ogni struttura dati. La creazione di un iteratore polimorfico è di responsabilità della classe astratta da cui derivano le strutture dati, fornendo un metodo (in genere chiamato CreateIterator) che implementa il pattern Factory Method (un pattern creazionale basato su classi che definisce un interfaccia di creazione di un oggetto di una classe, lasciando però alle sottoclassi la decisione di cosa istanziare, ovvero implementa un meccanismo atto a rendere polimorfica la creazione di un oggetto) per poter istanziare l iteratore corrispondente ad ogni sottoclasse della struttura dati. Le conseguenze dell applicazione di Iterator sono: Gestione di varianti della visita di una struttura dati, tramite semplice sostituzione delle istanze degli iteratori utilizzati Semplificazione dell interfaccia della struttura dati, in quanto la visita è delegata all oggetto iteratore Gestione di visite multiple da parte di più utilizzatori su una stessa istanza della struttura dati semplificata. In C#, il pattern Iterator è implementato nativamente dal costrutto foreach e dall interfaccia generica di libreria standard IIterator<T>; per essere visitabile con foreach, una struttura dati deve estendere l interfaccia IIEnumerable<T> (implementando il metodo GetEnumerator) Strategy Strategy è un pattern comportamentale basato su oggetti che risolve il problema di definire una famiglia di algoritmi intercambiabili dinamicamente senza dover cambiare il codice nella classe che li utilizza. Strategy è applicabile quando: Esistono molte classi che differiscono solo per il comportamento Sono necessarie più varianti di un algoritmo 20

22 Un algoritmo utilizza strutture dati interne che devono essere nascoste al client Sono presenti istruzioni switch contenenti comportamenti multipli e vanno sostituite con qualcosa di più manutenibile. L implementazione di Strategy consiste nella creazione di un interfaccia Strategy che verrà implementata dalle classi dei singoli algoritmi e che fornisce un unico metodo d esecuzione dell algoritmo e nella creazione di una classe Context che contiene la struttura dati su cui opera l algoritmo e un riferimento a una classe derivata di Strategy e fornisce dei metodi per l esecuzione e per la scelta dell algoritmo (in genere consiste semplicemente nel passare al costruttore di Context un istanza di una classe derivata da Strategy), senza esporre al mondo esterno né l algoritmo, né la struttura dati usati. Le conseguenze dell applicazione di Strategy sono: Definizione di una famiglia di algoritmi simili tra loro e riusabili Creazione di un alternativa all ereditarietà che rende più leggibile il codice (implementare lo stesso comportamento tramite ereditarietà semplice gestirebbe insieme algoritmi e strutture dati all interno di classi derivate da quella che nel pattern corrisponde a Context) Rimozione di istruzioni switch utilizzate per gestire algoritmi simili Possibilità scegliere a tempo d esecuzione più implementazioni dello stesso algoritmo Necessità dei client di conoscere a priori quali implementazioni esistano, aggiungendo di fatto una dipendenza per ogni algoritmo implementato (a causa di questo svantaggio, Strategy viene implementato solo quando è il client a richiedere la necessità di variare dinamicamente algoritmo) Costo elevato per la collaborazione tra Context e Strategy in quanto alcuni algoritmi potrebbero non usare tutti i dati forniti da Context (ad esempio la famiglia di algoritmi di ricerca del percorso minimo su un grafo ha la necessità di lavorare su liste o matrici, non essendo noto a priori quale algoritmo usare, Context dovrà memorizzarle entrambe e renderle consistenti ad ogni modifica) Se non utilizzato insieme al pattern Flyweight (pattern strutturale che accorpa insieme più oggetti di piccole dimensioni per ridurne il numero), Strategy potrebbe portare alla creazione di troppi oggetti per famiglie di algoritmi numerose. 21

23 3.1.4 Model-View-Controller Model-View-Controller (MVC) è un pattern architetturale utilizzato per l implementazione di interfacce utente che disaccoppia la logica funzionale dalla sua rappresentazione in tre componenti (chiamate Model, View e Controller, come suggerisce il nome del pattern). Il Model è costituito dalla logica funzionale, il View dall interfaccia con cui interagisce l utente e il Controller costituisce la componente intermedia tra Model e View (implementa metodi di passaggio dei valori tra Model e View, di validazione degli input, di memorizzazione permanente e via dicendo). È possibile progettare un architettura MVC partendo da un diagramma di robustezza, semplicemente convertendo ogni oggetto Entity in una classe Model, ogni oggetto Control in una classe Controller, ogni oggetto Boundary in una classe View e ogni relazione da un oggetto a un altro in una chiamata, da parte del primo, di un metodo del secondo. Un diagramma di robustezza deve soddisfare i seguenti vincoli: Un oggetto Boundary può comunicare solo con attori (oggetti che modellano gli utenti del sistema) e oggetti Control Un oggetto Entity può comunicare solo con oggetti Control Un oggetto Control può comunicare con oggetti di qualsiasi tipo, esclusi attori. Un operazione nota come analisi di robustezza permette di creare un diagramma di robustezza procedendo incrementalmente a partire da un diagramma UML dei casi d uso e trasformando i singoli casi d uso in oggetti Entity, Boundary o Control e aggiungendo, se necessario, nuovi oggetti intermedi (in genere Control) in modo che il diagramma finale soddisfi i vincoli per ogni oggetto. Grazie a questa conversione semiautomatica è possibile generare un architettura MVC con estrema semplicità a partire dai requisiti. 3.2 Scelte di progetto Scelte relative agli algoritmi Il vincolo riguardante la configurabilità degli algoritmi di scheduling e di fitting, impone di sovrascrivere dinamicamente il comportamento dello scheduler in base alla coppia di algoritmi scelti, poiché ci sono cinque algoritmi di scheduling e tre algoritmi di fitting, si avrebbero quindici comportamenti diversi da implementare (senza contare il parametro di pigrizia, che porterebbe a trenta le implementazioni) che tuttavia differiscono di poco tra loro, i 22

24 principi della programmazione orientata agli oggetti di astrazione e polimorfismo permettono una soluzione più elegante del problema, rendendo inoltre possibile un espandibilità futura del sistema. La gestione della pigrizia può avvenire in tre punti, nella classe Scheduler, nella classe base Fitter (tramite metodo protetto non sovrascritto dalle classi derivate) oppure nelle singole classi derivate da Fitter. Poiché le specifiche non indicano come implementare la pigrizia, sfruttando tale libertà, si è optato per l implementazione più semplice, ossia il posizionamento di un impegno esattamente a metà dell intervallo scelto (ad esempio se per un impegno di durata cinque time quantum viene scelto un intervallo di ampiezza nove time quantum, l impegno verrà posizionato lasciando due time quantum liberi prima e due dopo). L indeterminatezza di tale specifica però ha anche lo svantaggio di poter essere molto probabilmente modificata in futuro, pertanto per l implementazione si è scelta la variante più flessibile: implementare la gestione della pigrizia nelle singole classi derivate (in modo che, teoricamente, ognuna possa utilizzare implementazioni diverse senza vincoli). In un sistema operativo tradizionale, l interruzione di un processo può avvenire in due situazioni: Se il processo rilascia volontariamente l esecuzione (in caso di attese di interrupt, IO, sincronizzazione o altro, il processo rilascia la CPU e lo scheduler sceglie un altro processo) Se lo scheduler è preemptive e sopraggiunge un processo più importante che quindi ha maggiore diritto ad eseguire. Le specifiche del problema non contemplano la possibilità che si verifichi la prima situazione, la seconda è modellata dalla specifica sugli impegni interrompibili. Per modellare il vincolo secondo il quale un impegno può essere interrotto solo al sopraggiungere di un impegno più importante, è necessario forzare l utilizzo dell algoritmo di fitting First Fit con pigrizia disattiva, infatti si tratta dell unica configurazione in grado di minimizzare il numero di interruzioni, fornendo anche l effetto collaterale di permettere l utilizzo di impegni interrompibili come filler in grado di ridurre la frammentazione. Il modo più semplice per implementare un impegno interrompibile consiste nel dividerlo in più sottoimpegni di dimensione pari alla granularità e che condividono lo stesso identificatore, infatti, avendo lo stesso identificatore, verranno eliminati tutti i frammenti dalla funzionalità di rimozione e, avendo gli stessi parametri di scheduling, verranno schedulati da qualsiasi algoritmo (ad eccezione, ovviamente, dell algoritmo casuale) uno di seguito all altro (ricordando che a parità di parametri, la scelta tra più impegni avviene secondo algoritmo FIFO, nel momento in cui viene scelto il primo frammento, tutti gli altri frammenti verranno scelti subito dopo e solo alla 23

25 fine verrà scelto un nuovo impegno perché questo è l ordine con cui sono stati inseriti). Poiché gli impegni fissati sono, di fatto, impegni su cui lo scheduler non può operare, conviene smistarli in una lista separata che verrà attraversata in ordine FIFO e su cui non opererà l algoritmo di fitting (l intervallo di posizionamento di un impegno fissato è noto a priori). Non ha senso azzerare le decisioni di scheduling relative al passato, pertanto il metodo di azzeramento delle decisioni (flush dello scheduler) dovrà prima ricercare l impegno attualmente in esecuzione, determinarne il punto di fine e azzerare le decisioni a partire da quel punto, le specifiche richiedono già un metodo di ricerca dell impegno corrente (che si limita a cercare nella lista degli impegni schedulati l unico che ha time quantum iniziale minore o uguale al time quantum corrente e il time quantum finale maggiore), pertanto verrà riusato anche all interno del flush. L algoritmo di test è già stato descritto nel template 2.4, non è necessario dunque ripetere come opera Scelte relative alle strutture dati Come già accennato nella sezione 3.2.1, conviene smistare gli impegni fissati da tutti gli altri, in realtà conviene anche smistare tra impegni schedulati, da schedulare e non schedulabili, ottenendo pertanto quattro liste (la scelta delle liste come strutture dati risulta la più naturale per un insieme di dati omogenei e di dimensione variabile): Impegni fissati da schedulare Impegni non fissati da schedulare (grazie alla gestione degli impegni interrompibili come più frammenti, non è necessario distinguere tra impegni normali e interrompibili) Impegni schedulati Impegni non schedulabili. Da specifica, la durata di un time quantum è costante, pertanto anche il numero di time quantum contenuti in una giornata lo è. La struttura dati che modella gli intervalli è un semplice array booleano (ovviamente incapsulato) di dimensione pari al numero di time quantum della giornata che offre dei metodi aggiuntivi (ad esempio il calcolo della frammentazione). Un valore vero alla posizione n indica che il time quantum n-esimo è occupato, mentre un valore falso indica che il time quantum è libero. Un impegno è una semplice struttura dati che contiene i campi necessari allo scheduling, per garantire il corretto funzionamento dello scheduler, è necessario validarne il contenuto controllando che: 24

26 In un impegno fissato time quantum iniziale e finale devono essere definiti e, rispettivamente, minore dell ultimo time quantum della giornata e compreso tra time quantum iniziale e minore dell ultimo time quantum della giornata In un impegno non fissato time quantum iniziale e finale non devono essere definiti e la durata deve essere un valore positivo e minore del numero di time quantum rimanenti alla fine della giornata. Si noti che la conoscenza del time quantum corrente impossibilita la validazione dell impegno all interno dei setter degli attributi, si è optato per l implementazione di una classe statica il cui unico scopo è quello di validare gli impegni Scelte relative alle interazioni complesse (pattern) Il vincolo sul controllo centralizzato delle decisioni è banalmente implementato se si impone che durante l esecuzione sia presente un solo scheduler, il pattern più appropriato allo scopo è Singleton (sezione 3.1.1). Modellando lo scheduler come una classe Scheduler, che opera delegando alle classi base Algorithm e Fitter l effettiva esecuzione degli algoritmi (che verranno sovrascritti dalle classi derivate), si ottiene un implementazione del pattern Strategy (sezione 3.1.3), dove la classe Context coincide con la classe Scheduler (le strutture dati incapsulate sono le liste di scheduling e l istanza di Interval). In realtà le due classi implementano una variante polimorfica del pattern, in quanto, anziché essere interfacce, si tratta di classi che offrono un comportamento base che verrà sovrascritto dalle classi derivate (la classe Algorithm implementa l algoritmo casuale, mentre la classe Fitter restituisce un eccezione NotSupportedException, si è preferito infatti rimanere consistenti anziché implementare contemporaneamente Strategy vero e proprio e la variante polimorfica). Per quanto riguarda l interfaccia dimostrativa, si è implementato il pattern Model-View-Controller (sezione 3.1.4), dove il Model è costituito dalla classe di scheduling, il Controller implementa l algoritmo di test e due View implementano rispettivamente l acquisizione dell input dell utente e la restituzione dell output. 3.3 Diagrammi di attività Di seguito sono riportati i diagrammi di attività dei metodi Scheduler.Schedule() (diagramma 3.1), TesterController.TestScheduler() (diagramma 3.2) e SJF.GetBest() (diagramma 3.3). Il diagramma 3.1 descrive il comportamento del metodo chiave dell intero sistema, mentre il diagramma 3.2 aiuta a visualizzare meglio l algoritmo descritto dal template

27 Il diagramma 3.3 mostra il funzionamento di uno degli algoritmi di scheduling e sarà utilizzato nel capitolo 5 per esemplificare uno dei test di unità usati durante lo sviluppo. Figura 3.1: Diagramma di attività di Scheduler.Schedule() 26

28 Figura 3.2: Diagramma di attività di TesterController.TestScheduler() 27

29 Figura 3.3: Diagramma di attività di SJF.GetBest() 28

30 3.4 Diagrammi delle classi Figura 3.4: Diagramma delle classi della libreria 29

31 Figura 3.5: Diagramma delle classi dell interfaccia di test 30

Soluzione dell esercizio del 2 Febbraio 2004

Soluzione dell esercizio del 2 Febbraio 2004 Soluzione dell esercizio del 2 Febbraio 2004 1. Casi d uso I casi d uso sono riportati in Figura 1. Figura 1: Diagramma dei casi d uso. E evidenziato un sotto caso di uso. 2. Modello concettuale Osserviamo

Dettagli

FONDAMENTI di INFORMATICA L. Mezzalira

FONDAMENTI di INFORMATICA L. Mezzalira FONDAMENTI di INFORMATICA L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software

Dettagli

Progettazione : Design Pattern Creazionali

Progettazione : Design Pattern Creazionali Progettazione : Design Pattern Creazionali Alessandro Martinelli alessandro.martinelli@unipv.it 30 Novembre 2010 Progettazione : Design Pattern Creazionali Aspetti generali dei Design Pattern Creazionali

Dettagli

GESTIONE DEI PROCESSI

GESTIONE DEI PROCESSI Sistemi Operativi GESTIONE DEI PROCESSI Processi Concetto di Processo Scheduling di Processi Operazioni su Processi Processi Cooperanti Concetto di Thread Modelli Multithread I thread in Java Concetto

Dettagli

I file di dati. Unità didattica D1 1

I file di dati. Unità didattica D1 1 I file di dati Unità didattica D1 1 1) I file sequenziali Utili per la memorizzazione di informazioni testuali Si tratta di strutture organizzate per righe e non per record Non sono adatte per grandi quantità

Dettagli

Organizzazione degli archivi

Organizzazione degli archivi COSA E UN DATA-BASE (DB)? è l insieme di dati relativo ad un sistema informativo COSA CARATTERIZZA UN DB? la struttura dei dati le relazioni fra i dati I REQUISITI DI UN DB SONO: la ridondanza minima i

Dettagli

Sistemi Operativi Kernel

Sistemi Operativi Kernel Approfondimento Sistemi Operativi Kernel Kernel del Sistema Operativo Kernel (nocciolo, nucleo) Contiene i programmi per la gestione delle funzioni base del calcolatore Kernel suddiviso in moduli. Ogni

Dettagli

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto: Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante

Dettagli

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

Indice generale. OOA Analisi Orientata agli Oggetti. Introduzione. Analisi Indice generale OOA Analisi Orientata agli Oggetti Introduzione Analisi Metodi d' analisi Analisi funzionale Analisi del flusso dei dati Analisi delle informazioni Analisi Orientata agli Oggetti (OOA)

Dettagli

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

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1) La gestione di un calcolatore Sistemi Operativi primo modulo Introduzione Augusto Celentano Università Ca Foscari Venezia Corso di Laurea in Informatica Un calcolatore (sistema di elaborazione) è un sistema

Dettagli

Fasi di creazione di un programma

Fasi di creazione di un programma Fasi di creazione di un programma 1. Studio Preliminare 2. Analisi del Sistema 6. Manutenzione e Test 3. Progettazione 5. Implementazione 4. Sviluppo 41 Sviluppo di programmi Per la costruzione di un programma

Dettagli

Un sistema operativo è un insieme di programmi che consentono ad un utente di

Un sistema operativo è un insieme di programmi che consentono ad un utente di INTRODUZIONE AI SISTEMI OPERATIVI 1 Alcune definizioni 1 Sistema dedicato: 1 Sistema batch o a lotti: 2 Sistemi time sharing: 2 Sistema multiprogrammato: 3 Processo e programma 3 Risorse: 3 Spazio degli

Dettagli

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione. Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione. Compito fondamentale di un S.O. è infatti la gestione dell

Dettagli

Concetti di base di ingegneria del software

Concetti di base di ingegneria del software Concetti di base di ingegneria del software [Dalle dispense del corso «Ingegneria del software» del prof. A. Furfaro (UNICAL)] Principali qualità del software Correttezza Affidabilità Robustezza Efficienza

Dettagli

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

Scheduling della CPU. Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux Scheduling della CPU Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux Sistemi multiprocessori Fin qui si sono trattati i problemi di scheduling su singola

Dettagli

Sistemi Operativi. 5 Gestione della memoria

Sistemi Operativi. 5 Gestione della memoria Gestione della memoria Compiti del gestore della memoria: Tenere traccia di quali parti della memoria sono libere e quali occupate. Allocare memoria ai processi che ne hanno bisogno. Deallocare la memoria

Dettagli

INFORMATICA 1 L. Mezzalira

INFORMATICA 1 L. Mezzalira INFORMATICA 1 L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software del modello

Dettagli

Object Oriented Programming

Object Oriented Programming OOP Object Oriented Programming Programmazione orientata agli oggetti La programmazione orientata agli oggetti (Object Oriented Programming) è un paradigma di programmazione Permette di raggruppare in

Dettagli

Pronto Esecuzione Attesa Terminazione

Pronto Esecuzione Attesa Terminazione Definizione Con il termine processo si indica una sequenza di azioni che il processore esegue Il programma invece, è una sequenza di azioni che il processore dovrà eseguire Il processo è quindi un programma

Dettagli

Gestione Turni. Introduzione

Gestione Turni. Introduzione Gestione Turni Introduzione La gestione dei turni di lavoro si rende necessaria quando, per garantire la continuità del servizio di una determinata struttura, è necessario che tutto il personale afferente

Dettagli

DI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1

DI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1 DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI 1 1 Il linguaggio dei diagrammi a blocchi è un possibile formalismo per la descrizione di algoritmi Il diagramma a blocchi, o flowchart, è una rappresentazione grafica

Dettagli

Protezione. Protezione. Protezione. Obiettivi della protezione

Protezione. Protezione. Protezione. Obiettivi della protezione Protezione Protezione La protezione riguarda i meccanismi per il controllo dell accesso alle risorse in un sistema di calcolo da parte degli utenti e dei processi. Meccanismi di imposizione fissati in

Dettagli

Traccia di soluzione dell esercizio del 25/1/2005

Traccia di soluzione dell esercizio del 25/1/2005 Traccia di soluzione dell esercizio del 25/1/2005 1 Casi d uso I casi d uso sono in Figura 1. Ci sono solo due attori: il Capo officina e il generico Meccanico. Figura 1: Diagramma dei casi d uso. 2 Modello

Dettagli

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

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. Algoritmi 1 Sommario Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. 2 Informatica Nome Informatica=informazione+automatica. Definizione Scienza che si occupa dell

Dettagli

Scheduling della CPU:

Scheduling della CPU: Coda dei processi pronti (ready( queue): Scheduling della CPU primo ultimo PCB i PCB j PCB k contiene i descrittori ( process control block, PCB) dei processi pronti. la strategia di gestione della ready

Dettagli

GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL

GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL GUIDA RAPIDA BOZZA 23/07/2008 INDICE 1. PERCHÉ UNA NUOVA VERSIONE DEI MODULI DI RACCOLTA DATI... 3 2. INDICAZIONI GENERALI... 4 2.1. Non modificare la struttura dei fogli di lavoro... 4 2.2. Cosa significano

Dettagli

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

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1 MECCANISMI E POLITICHE DI PROTEZIONE 13.1 Protezione Obiettivi della Protezione Dominio di Protezione Matrice di Accesso Implementazione della Matrice di Accesso Revoca dei Diritti di Accesso Sistemi basati

Dettagli

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1 MECCANISMI E POLITICHE DI PROTEZIONE 13.1 Protezione Obiettivi della Protezione Dominio di Protezione Matrice di Accesso Implementazione della Matrice di Accesso Revoca dei Diritti di Accesso Sistemi basati

Dettagli

Metodologie di programmazione in Fortran 90

Metodologie di programmazione in Fortran 90 Metodologie di programmazione in Fortran 90 Ing. Luca De Santis DIS - Dipartimento di informatica e sistemistica Anno accademico 2007/2008 Fortran 90: Metodologie di programmazione DIS - Dipartimento di

Dettagli

CORSO ACCESS PARTE II. Esistono diversi tipi di aiuto forniti con Access, generalmente accessibili tramite la barra dei menu (?)

CORSO ACCESS PARTE II. Esistono diversi tipi di aiuto forniti con Access, generalmente accessibili tramite la barra dei menu (?) Ambiente Access La Guida di Access Esistono diversi tipi di aiuto forniti con Access, generalmente accessibili tramite la barra dei menu (?) Guida in linea Guida rapida Assistente di Office indicazioni

Dettagli

Coordinazione Distribuita

Coordinazione Distribuita Coordinazione Distribuita Ordinamento degli eventi Mutua esclusione Atomicità Controllo della Concorrenza 21.1 Introduzione Tutte le questioni relative alla concorrenza che si incontrano in sistemi centralizzati,

Dettagli

Corso di Sistemi Operativi Ingegneria Elettronica e Informatica prof. Rocco Aversa. Raccolta prove scritte. Prova scritta

Corso di Sistemi Operativi Ingegneria Elettronica e Informatica prof. Rocco Aversa. Raccolta prove scritte. Prova scritta Corso di Sistemi Operativi Ingegneria Elettronica e Informatica prof. Rocco Aversa Raccolta prove scritte Realizzare una classe thread Processo che deve effettuare un numero fissato di letture da una memoria

Dettagli

Funzioni in C. Violetta Lonati

Funzioni in C. Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni

Dettagli

Approccio stratificato

Approccio stratificato Approccio stratificato Il sistema operativo è suddiviso in strati (livelli), ciascuno costruito sopra quelli inferiori. Il livello più basso (strato 0) è l hardware, il più alto (strato N) è l interfaccia

Dettagli

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) 12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica,

Dettagli

Lezione 8. La macchina universale

Lezione 8. La macchina universale Lezione 8 Algoritmi La macchina universale Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni su i dati digitale= l informazione

Dettagli

Oggetti Lezione 3. aspetti generali e definizione di classi I

Oggetti Lezione 3. aspetti generali e definizione di classi I Programmazione a Oggetti Lezione 3 Il linguaggio Java: aspetti generali e definizione di classi I Sommario Storia e Motivazioni Definizione di Classi Campi e Metodi Istanziazione di oggetti Introduzione

Dettagli

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware COS È UN LINGUAGGIO? Un linguaggio è un insieme di parole e di metodi di combinazione delle

Dettagli

Processi e Thread. Scheduling (Schedulazione)

Processi e Thread. Scheduling (Schedulazione) Processi e Thread Scheduling (Schedulazione) 1 Scheduling Introduzione al problema dello Scheduling (1) Lo scheduler si occupa di decidere quale fra i processi pronti può essere mandato in esecuzione L

Dettagli

Università degli Studi di Parma Facoltà di Scienze MM. FF. NN. Corso di Laurea in Informatica. Ingegneria del Software. La fase di Analisi

Università degli Studi di Parma Facoltà di Scienze MM. FF. NN. Corso di Laurea in Informatica. Ingegneria del Software. La fase di Analisi Università degli Studi di Parma Facoltà di Scienze MM. FF. NN. Corso di Laurea in Informatica Ingegneria del Software La fase di Analisi Giulio Destri Ing. del software: Analisi - 1 Scopo del modulo Definire

Dettagli

Modulo 4: Ereditarietà, interfacce e clonazione

Modulo 4: Ereditarietà, interfacce e clonazione Modulo 4: Ereditarietà, interfacce e clonazione Argomenti Trattati: Classi, Superclassi e Sottoclassi Ereditarietà Ereditarietà ed Attributi Privati Override super Ereditarietà e Costruttori Polimorfismo

Dettagli

Scheduling. Sistemi Operativi e Distribuiti A.A. 2004-2005 Bellettini - Maggiorini. Concetti di base

Scheduling. Sistemi Operativi e Distribuiti A.A. 2004-2005 Bellettini - Maggiorini. Concetti di base Scheduling Sistemi Operativi e Distribuiti A.A. 2-25 Bellettini - Maggiorini Concetti di base Il massimo utilizzo della CPU si ottiene mediante la multiprogrammazione Ogni processo si alterna su due fasi

Dettagli

7. Architetture Software

7. Architetture Software 7. Architetture Software progettare la struttura Andrea Polini Ingegneria del Software Corso di Laurea in Informatica (Ingegneria del Software) 7. Architetture Software 1 / 20 Scopo della fase di design

Dettagli

Monitor. Introduzione. Struttura di un TDA Monitor

Monitor. Introduzione. Struttura di un TDA Monitor Monitor Domenico Cotroneo Dipartimento di Informatica e Sistemistica Introduzione E stato introdotto per facilitare la programmazione strutturata di problemi in cui è necessario controllare l assegnazione

Dettagli

Gestione della memoria centrale

Gestione della memoria centrale Gestione della memoria centrale Un programma per essere eseguito deve risiedere in memoria principale e lo stesso vale per i dati su cui esso opera In un sistema multitasking molti processi vengono eseguiti

Dettagli

Creare diagrammi di Gantt con Visio 2003

Creare diagrammi di Gantt con Visio 2003 Creare diagrammi di Gantt con Visio 2003 La fase di pianificazione di un progetto è sicuramente molto delicata e alquanto complessa, in quanto bisogna riuscire a definire una scomposizione del progetto

Dettagli

Stefania Marrara - Esercitazioni di Tecnologie dei Sistemi Informativi. Integrazione di dati di sorgenti diverse

Stefania Marrara - Esercitazioni di Tecnologie dei Sistemi Informativi. Integrazione di dati di sorgenti diverse Politecnico di Milano View integration 1 Integrazione di dati di sorgenti diverse Al giorno d oggi d la mole di informazioni che viene gestita in molti contesti applicativi è enorme. In alcuni casi le

Dettagli

SOMMARIO Coda (queue): QUEUE. QUEUE : specifica QUEUE

SOMMARIO Coda (queue): QUEUE. QUEUE : specifica QUEUE SOMMARIO Coda (queue): Specifica: interfaccia. Implementazione: Strutture indicizzate (array): Array di dimensione variabile. Array circolari. Strutture collegate (nodi). Prestazioni. Strutture Software

Dettagli

Sistemi Operativi GESTIONE DELLA MEMORIA SECONDARIA. D. Talia - UNICAL. Sistemi Operativi 11.1

Sistemi Operativi GESTIONE DELLA MEMORIA SECONDARIA. D. Talia - UNICAL. Sistemi Operativi 11.1 GESTIONE DELLA MEMORIA SECONDARIA 11.1 Memoria Secondaria Struttura del disco Scheduling del disco Gestione del disco Gestione dello spazio di swap Struttura RAID Affidabilità Implementazione della memoria

Dettagli

Sistemi Operativi. Memoria Secondaria GESTIONE DELLA MEMORIA SECONDARIA. Struttura del disco. Scheduling del disco. Gestione del disco

Sistemi Operativi. Memoria Secondaria GESTIONE DELLA MEMORIA SECONDARIA. Struttura del disco. Scheduling del disco. Gestione del disco GESTIONE DELLA MEMORIA SECONDARIA 11.1 Memoria Secondaria Struttura del disco Scheduling del disco Gestione del disco Gestione dello spazio di swap Struttura RAID Affidabilità Implementazione della memoria

Dettagli

Java: Compilatore e Interprete

Java: Compilatore e Interprete Java: Compilatore e Interprete Java Virtual Machine Il bytecode non è Linguaggio Macchina. Per diventarlo, deve subire un ulteriore trasformazione che viene operata dall interprete Java in modalità JIT

Dettagli

Esercitazione di Basi di Dati

Esercitazione di Basi di Dati Esercitazione di Basi di Dati Corso di Fondamenti di Informatica 6 Maggio 2004 Come costruire una ontologia Marco Pennacchiotti pennacchiotti@info.uniroma2.it Tel. 0672597334 Ing.dell Informazione, stanza

Dettagli

Gestione Risorse Umane Web

Gestione Risorse Umane Web La gestione delle risorse umane Gestione Risorse Umane Web Generazione attestati di partecipazione ai corsi di formazione (Versione V03) Premessa... 2 Configurazione del sistema... 3 Estrattore dati...

Dettagli

Modello di Controllo dell Accesso basato sui ruoli (RBAC)

Modello di Controllo dell Accesso basato sui ruoli (RBAC) Modello di Controllo dell Accesso basato sui ruoli (RBAC) POLITICHE RBAC Sistemi di tipo Role Based Access Control (RBAC) assegnano i privilegi non agli utenti, ma alla funzione che questi possono svolgere

Dettagli

Automazione Industriale (scheduling+mms) scheduling+mms. adacher@dia.uniroma3.it

Automazione Industriale (scheduling+mms) scheduling+mms. adacher@dia.uniroma3.it Automazione Industriale (scheduling+mms) scheduling+mms adacher@dia.uniroma3.it Introduzione Sistemi e Modelli Lo studio e l analisi di sistemi tramite una rappresentazione astratta o una sua formalizzazione

Dettagli

Ottimizzazione delle interrogazioni (parte I)

Ottimizzazione delle interrogazioni (parte I) Ottimizzazione delle interrogazioni I Basi di Dati / Complementi di Basi di Dati 1 Ottimizzazione delle interrogazioni (parte I) Angelo Montanari Dipartimento di Matematica e Informatica Università di

Dettagli

ING SW. Progetto di Ingegneria del Software. e-travel. Requisiti Utente. Specifiche Funzionali del Sistema

ING SW. Progetto di Ingegneria del Software. e-travel. Requisiti Utente. Specifiche Funzionali del Sistema Pagina: 1 e-travel ING SW Progetto di Ingegneria del Software e-travel Requisiti Utente Specifiche Funzionali del Sistema e Pagina: 2 di 9 Indice dei contenuti 1 INTRODUZIONE... 3 1.1 SCOPO DEL DOCUMENTO...

Dettagli

Le fattispecie di riuso

Le fattispecie di riuso Le fattispecie di riuso Indice 1. PREMESSA...3 2. RIUSO IN CESSIONE SEMPLICE...4 3. RIUSO CON GESTIONE A CARICO DEL CEDENTE...5 4. RIUSO IN FACILITY MANAGEMENT...6 5. RIUSO IN ASP...7 1. Premessa Poiché

Dettagli

Soluzione dell esercizio del 12 Febbraio 2004

Soluzione dell esercizio del 12 Febbraio 2004 Soluzione dell esercizio del 12/2/2004 1 Soluzione dell esercizio del 12 Febbraio 2004 1. Casi d uso I casi d uso sono riportati in Figura 1. Figura 1: Diagramma dei casi d uso. 2. Modello concettuale

Dettagli

La Metodologia adottata nel Corso

La Metodologia adottata nel Corso La Metodologia adottata nel Corso 1 Mission Statement + Glossario + Lista Funzionalià 3 Descrizione 6 Funzionalità 2 Schema 4 Schema 5 concettuale Logico EA Relazionale Codice Transazioni In PL/SQL Schema

Dettagli

Excel. A cura di Luigi Labonia. e-mail: luigi.lab@libero.it

Excel. A cura di Luigi Labonia. e-mail: luigi.lab@libero.it Excel A cura di Luigi Labonia e-mail: luigi.lab@libero.it Introduzione Un foglio elettronico è un applicazione comunemente usata per bilanci, previsioni ed altri compiti tipici del campo amministrativo

Dettagli

Matematica in laboratorio

Matematica in laboratorio Unità 1 Attività guidate Attività 1 Foglio elettronico Divisibilità tra numeri naturali Costruisci un foglio di lavoro per determinare se a è divisibile per b, essendo a e b due numeri naturali, con a

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T3 3-Schedulazione 1 Prerequisiti Concetto di media Concetto di varianza 2 1 Introduzione Come sappiamo, l assegnazione della CPU ai processi viene gestita dal nucleo, attraverso

Dettagli

E possibile modificare la lingua dei testi dell interfaccia utente, se in inglese o in italiano, dal menu [Tools

E possibile modificare la lingua dei testi dell interfaccia utente, se in inglese o in italiano, dal menu [Tools Una breve introduzione operativa a STGraph Luca Mari, versione 5.3.11 STGraph è un sistema software per creare, modificare ed eseguire modelli di sistemi dinamici descritti secondo l approccio agli stati

Dettagli

Tecniche di Simulazione: Introduzione. N. Del Buono:

Tecniche di Simulazione: Introduzione. N. Del Buono: Tecniche di Simulazione: Introduzione N. Del Buono: 2 Che cosa è la simulazione La SIMULAZIONE dovrebbe essere considerata una forma di COGNIZIONE (COGNIZIONE qualunque azione o processo per acquisire

Dettagli

SCHEDULATORI DI PROCESSO

SCHEDULATORI DI PROCESSO Indice 5 SCHEDULATORI DI PROCESSO...1 5.1 Schedulatore Round Robin...1 5.2 Schedulatore a priorità...2 5.2.1 Schedulatore a code multiple...3 5.3 Schedulatore Shortest Job First...3 i 5 SCHEDULATORI DI

Dettagli

Dispensa di database Access

Dispensa di database Access Dispensa di database Access Indice: Database come tabelle; fogli di lavoro e tabelle...2 Database con più tabelle; relazioni tra tabelle...2 Motore di database, complessità di un database; concetto di

Dettagli

L ambizione dei design pattern (letteralmente schemi di programmazione) è quella di offrire soluzioni a problemi ricorrenti che facilitano lo

L ambizione dei design pattern (letteralmente schemi di programmazione) è quella di offrire soluzioni a problemi ricorrenti che facilitano lo Design Pattern L ambizione dei design pattern (letteralmente schemi di programmazione) è quella di offrire soluzioni a problemi ricorrenti che facilitano lo sviluppo dei programmi, il loro mantenimento,

Dettagli

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

Correttezza. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 10. A. Miola Novembre 2007 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 10 Correttezza A. Miola Novembre 2007 http://www.dia.uniroma3.it/~java/fondinf1/ Correttezza 1 Contenuti Introduzione alla correttezza

Dettagli

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it MODELLO CLIENT/SERVER Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it POSSIBILI STRUTTURE DEL SISTEMA INFORMATIVO La struttura di un sistema informativo

Dettagli

Linguaggi e Paradigmi di Programmazione

Linguaggi e Paradigmi di Programmazione Linguaggi e Paradigmi di Programmazione Cos è un linguaggio Definizione 1 Un linguaggio è un insieme di parole e di metodi di combinazione delle parole usati e compresi da una comunità di persone. È una

Dettagli

Inizializzazione, Assegnamento e Distruzione di Classi

Inizializzazione, Assegnamento e Distruzione di Classi Inizializzazione, Assegnamento e Distruzione di Classi Lezione 9 Operazioni Automatiche In ogni programma C++ oggetti classe vengono gestiti automaticamente dal compilatore Inizializzati al momento della

Dettagli

Mon Ami 3000 Varianti articolo Gestione di varianti articoli

Mon Ami 3000 Varianti articolo Gestione di varianti articoli Prerequisiti Mon Ami 3000 Varianti articolo Gestione di varianti articoli L opzione Varianti articolo è disponibile per le versioni Azienda Light e Azienda Pro e include tre funzionalità distinte: 1. Gestione

Dettagli

Progettazione di Basi di Dati

Progettazione di Basi di Dati Progettazione di Basi di Dati Prof. Nicoletta D Alpaos & Prof. Andrea Borghesan Entità-Relazione Progettazione Logica 2 E il modo attraverso il quale i dati sono rappresentati : fa riferimento al modello

Dettagli

Archivi e database. Prof. Michele Batocchi A.S. 2013/2014

Archivi e database. Prof. Michele Batocchi A.S. 2013/2014 Archivi e database Prof. Michele Batocchi A.S. 2013/2014 Introduzione L esigenza di archiviare (conservare documenti, immagini, ricordi, ecc.) è un attività senza tempo che è insita nell animo umano Primi

Dettagli

DESIGN PATTERN CREAZIONALI INGEGNERIA DEL SOFTWARE INTRODUZIONE SINGLETON. Scopo dei design pattern creazionali

DESIGN PATTERN CREAZIONALI INGEGNERIA DEL SOFTWARE INTRODUZIONE SINGLETON. Scopo dei design pattern creazionali DESIGN PATTERN CREAZIONALI DESIGN PATTERN CREAZIONALI INGEGNERIA DEL SOFTWARE Università degli Studi di Padova Dipartimento di Matematica Corso di Laurea in Informatica, A.A. 2013 2014 rcardin@math.unipd.it

Dettagli

RISOLUTORE AUTOMATICO PER SUDOKU

RISOLUTORE AUTOMATICO PER SUDOKU RISOLUTORE AUTOMATICO PER SUDOKU Progetto Prolog - Pierluigi Tresoldi 609618 INDICE 1.STORIA DEL SUDOKU 2.REGOLE DEL GIOCO 3.PROGRAMMAZIONE CON VINCOLI 4.COMANDI DEL PROGRAMMA 5.ESEMPI 1. STORIA DEL SUDOKU

Dettagli

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

Introduzione. Coordinazione Distribuita. Ordinamento degli eventi. Realizzazione di. Mutua Esclusione Distribuita (DME) Coordinazione Distribuita Ordinamento degli eventi Mutua esclusione Atomicità Controllo della Concorrenza Introduzione Tutte le questioni relative alla concorrenza che si incontrano in sistemi centralizzati,

Dettagli

Il software di base comprende l insieme dei programmi predisposti per un uso efficace ed efficiente del computer.

Il software di base comprende l insieme dei programmi predisposti per un uso efficace ed efficiente del computer. I Sistemi Operativi Il Software di Base Il software di base comprende l insieme dei programmi predisposti per un uso efficace ed efficiente del computer. Il sistema operativo è il gestore di tutte le risorse

Dettagli

Sistema operativo: Gestione della memoria

Sistema operativo: Gestione della memoria Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Sistema operativo: Gestione della memoria La presente dispensa e

Dettagli

Manuale d'uso. Manuale d'uso... 1. Primo utilizzo... 2. Generale... 2. Gestione conti... 3. Indici di fatturazione... 3. Aliquote...

Manuale d'uso. Manuale d'uso... 1. Primo utilizzo... 2. Generale... 2. Gestione conti... 3. Indici di fatturazione... 3. Aliquote... Manuale d'uso Sommario Manuale d'uso... 1 Primo utilizzo... 2 Generale... 2 Gestione conti... 3 Indici di fatturazione... 3 Aliquote... 4 Categorie di prodotti... 5 Prodotti... 5 Clienti... 6 Fornitori...

Dettagli

CHIUSURE di MAGAZZINO di FINE ANNO

CHIUSURE di MAGAZZINO di FINE ANNO CHIUSURE di MAGAZZINO di FINE ANNO Operazioni da svolgere per il riporto delle giacenze di fine esercizio Il documento che segue ha lo scopo di illustrare le operazioni che devono essere eseguite per:

Dettagli

Il sofware è inoltre completato da una funzione di calendario che consente di impostare in modo semplice ed intuitivo i vari appuntamenti.

Il sofware è inoltre completato da una funzione di calendario che consente di impostare in modo semplice ed intuitivo i vari appuntamenti. SH.MedicalStudio Presentazione SH.MedicalStudio è un software per la gestione degli studi medici. Consente di gestire un archivio Pazienti, con tutti i documenti necessari ad avere un quadro clinico completo

Dettagli

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI Indice 1 Le frazioni algebriche 1.1 Il minimo comune multiplo e il Massimo Comun Divisore fra polinomi........ 1. Le frazioni algebriche....................................

Dettagli

Linguaggi di programmazione

Linguaggi di programmazione Linguaggi di programmazione Un calcolatore basato sul modello di von Neumann permette l esecuzione di un programma, cioè di una sequenza di istruzioni descritte nel linguaggio interpretabile dal calcolatore

Dettagli

CP Customer Portal. Sistema di gestione ticket unificato

CP Customer Portal. Sistema di gestione ticket unificato CP Customer Portal Sistema di gestione ticket unificato Sommario CP Customer Portal...1 Sistema di gestione ticket unificato...1 Sommario...2 Flusso gestione ticket...3 Modalità di apertura ticket...3

Dettagli

Object Oriented Software Design

Object Oriented Software Design Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Object Oriented Software Design Corso di Tecniche di Programmazione Laurea in Ingegneria Informatica (Canale di Ingegneria

Dettagli

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

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14. Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14 Pietro Frasca Lezione 11 Martedì 12-11-2013 1 Tecniche di allocazione mediante free list Generalmente,

Dettagli

Lo scheduling. Tipici schedulatori

Lo scheduling. Tipici schedulatori Lo scheduling Un processo durante la sua evoluzione è o running o in attesa di un evento. Nel secondo caso trattasi della disponibilità di una risorsa (CPU, I/O, struttura dati, ecc.) di cui il processo

Dettagli

Siti web centrati sui dati Architettura MVC-2: i JavaBeans

Siti web centrati sui dati Architettura MVC-2: i JavaBeans Siti web centrati sui dati Architettura MVC-2: i JavaBeans 1 ALBERTO BELUSSI ANNO ACCADEMICO 2009/2010 Limiti dell approccio SEVLET UNICA La servlet svolge tre tipi di funzioni distinte: Interazione con

Dettagli

Il database management system Access

Il database management system Access Il database management system Access Corso di autoistruzione http://www.manualipc.it/manuali/ corso/manuali.php? idcap=00&idman=17&size=12&sid= INTRODUZIONE Il concetto di base di dati, database o archivio

Dettagli

CREAZIONE DI UN DATABASE E DI TABELLE IN ACCESS

CREAZIONE DI UN DATABASE E DI TABELLE IN ACCESS CONTENUTI: CREAZIONE DI UN DATABASE E DI TABELLE IN ACCESS Creazione database vuoto Creazione tabella Inserimento dati A) Creazione di un database vuoto Avviamo il programma Microsoft Access. Dal menu

Dettagli

Architettura MVC-2: i JavaBeans

Architettura MVC-2: i JavaBeans Siti web centrati sui dati Architettura MVC-2: i JavaBeans Alberto Belussi anno accademico 2008/2009 Limiti dell approccio SEVLET UNICA La servlet svolge tre tipi di funzioni distinte: Interazione con

Dettagli

Inizializzazione degli Host. BOOTP e DHCP

Inizializzazione degli Host. BOOTP e DHCP BOOTP e DHCP a.a. 2002/03 Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/~auletta/ Università degli studi di Salerno Laurea e Diploma in Informatica 1 Inizializzazione degli Host Un

Dettagli

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

Il Sistema Operativo. C. Marrocco. Università degli Studi di Cassino Il Sistema Operativo Il Sistema Operativo è uno strato software che: opera direttamente sull hardware; isola dai dettagli dell architettura hardware; fornisce un insieme di funzionalità di alto livello.

Dettagli

Corso di Amministrazione di Reti A.A. 2002/2003

Corso di Amministrazione di Reti A.A. 2002/2003 Struttura di Active Directory Corso di Amministrazione di Reti A.A. 2002/2003 Materiale preparato utilizzando dove possibile materiale AIPA http://www.aipa.it/attivita[2/formazione[6/corsi[2/materiali/reti%20di%20calcolatori/welcome.htm

Dettagli

MANUALE UTENTE Fiscali Free

MANUALE UTENTE Fiscali Free MANUALE UTENTE Fiscali Free Le informazioni contenute in questa pubblicazione sono soggette a modifiche da parte della ComputerNetRimini. Il software descritto in questa pubblicazione viene rilasciato

Dettagli

LINGUAGGI DI PROGRAMMAZIONE

LINGUAGGI DI PROGRAMMAZIONE LINGUAGGI DI PROGRAMMAZIONE Il potere espressivo di un linguaggio è caratterizzato da: quali tipi di dati consente di rappresentare (direttamente o tramite definizione dell utente) quali istruzioni di

Dettagli

Come costruire una presentazione. PowerPoint 1. ! PowerPoint permette la realizzazione di presentazioni video ipertestuali, animate e multimediali

Come costruire una presentazione. PowerPoint 1. ! PowerPoint permette la realizzazione di presentazioni video ipertestuali, animate e multimediali PowerPoint Come costruire una presentazione PowerPoint 1 Introduzione! PowerPoint è uno degli strumenti presenti nella suite Office di Microsoft! PowerPoint permette la realizzazione di presentazioni video

Dettagli

Considera tutti i requisiti funzionali (use cases) NON deve necessariamente modellare i requisiti non funzionali

Considera tutti i requisiti funzionali (use cases) NON deve necessariamente modellare i requisiti non funzionali Corso di Laurea Specialistica in Ingegneria Informatica Corso di Ingegneria del Software A. A. 2008 - Progettazione OO E. TINELLI Punto di Partenza Il modello di analisi E una rappresentazione minima del

Dettagli