L’azienda SC Informatica si occupa della progettazione e della realizzazione di sistemi informatici dedicati alle farmacie. Fornisce inoltre un servizio di assistenza on-site per ripristinare le normali operazioni di gestione in caso di malfunzionamento hardware e software, tempestivo, competente ed efficace. Il software richiesto è uno strumento per rendere più efficiente il servizio di assistenza tecnica, assegnando automaticamente i lavori da svolgere ai dipendenti dell’azienda e fornendo un quadro generale sui lavori svolti, tramite statistiche. Si richiede di realizzare un programma di gestione per SC Informatica, azienda che si occupa di assistenza hardware e software presso le farmacie. Il sistema consente la gestione degli interventi, effettuati dai dipendenti dell’azienda, e la loro memorizzazione. Esistono tre tipologie di dipendenti: centralinista, tecnico e amministratore. Il centralinista risponde alle chiamate dei clienti che richiedono assistenza, crea un nuovo intervento e ne memorizza i dati di apertura: cliente, data e ora della chiamata, caratteristiche del problema, eventuali note, data di scadenza. Il tecnico visualizza gli interventi da svolgere, assegnategli automaticamente dal programma,e seleziona quali andrà a risolvere, mettendoli in lavorazione. Al termine, il tecnico chiude l’intervento e inserisce i dati del lavoro appena svolto: tipo di intervento (hardware e/o software), soluzione del problema, data di chiusura, ore di viaggio e di lavoro. L’amministratore gestisce le anagrafiche dei clienti e dei dipendenti e ne visualizza le statistiche che gli permettono di ottenere un quadro generale sugli interventi svolti dall’azienda. Il sistema prevede tre attori: Amministratore, Centralinista, Tecnico. Sono stati individuati quattro casi d’uso principali: Inserisci Interventi Gestisci Interventi Visualizza Statistiche Gestisci Anagrafiche Casi d'uso Inserisci Interventi / Gestisci Interventi / Visualizza Statistiche / Gestisci Anagrafiche Particolare del caso d’uso Gestisci Interventi Particolare del caso d’uso Visualizza Statistiche Particolare del caso d’uso Gestisci Anagrafiche Attore: Centralinista Precondizioni: Il cliente deve essere presente nell’anagrafica e deve essere attivo Flusso: Il centralinista seleziona il cliente Se il cliente ha un intervento aperto Il sistema visualizza i dettagli dell’intervento aperto Il centralinista modifica la data di scadenza e le note Il centralinista richiede il salvataggio Il sistema controlla la validità dei dati Il sistema salva le modifiche Se il cliente ha un intervento in lavorazione Il sistema visualizza i dettagli dell’intervento in lavorazione Altrimenti Il centralinista inserisce i dati relativi al nuovo intervento (problema, note, data di apertura e data di scadenza) Il centralinista richiede il salvataggio Il sistema controlla la validità dei dati Il sistema crea il nuovo intervento Flussi alternativi: 2.3a.Il centralinista annulla l’operazione 2.4a.I dati non sono validi; si notifica l’errore e si torna al punto 2.2 4.2a.Il centralinista annulla l’operazione 4.3a.I dati non sono validi; si notifica l’errore e si torna al punto 4.1 Attore: Tecnico Precondizioni: Il tecnico deve avere almeno un intervento da svolgere (aperto o in lavorazione) Flusso: Il sistema visualizza gli interventi assegnati al tecnico Il tecnico seleziona l’intervento di cui deve cambiare lo stato Se l’intervento è nello stato di aperto Il sistema lo pone in lavorazione inserendo il tecnico nei dettagli dell’intervento Se l’intervento è nello stato di lavorazione Il tecnico <<Inserisce Dettagli Intervento>> Il sistema aggiorna la visualizzazione degli interventi assegnati al tecnico e torna al punto 2 Dal documento dei requisiti sono state ricavate le classi del modello statico. La classe Dipendente contiene le informazioni relative ad un generico dipendente dell’azienda, mentre le tre specializzazioni Tecnico, Centralinista e Amministratore rappresentano la funzione concreta svolta dal dipendente. La classe Cliente contiene le informazioni relative ai clienti attuali o passati dell’azienda; ad ogni cliente è associato un tecnico di riferimento. La classe Intervento contiene i dati relativi ad un intervento richiesto da un cliente e risolto da un tecnico. Può assumere tre differenti stati: aperto, in lavorazione e chiuso. Le due anagrafiche, AnagraficaClienti e AnagraficaDipendenti, rappresentano rispettivamente l’insieme dei clienti e dei dipendenti, e su di esse l’amministratore esegue le operazioni di gestione. Questo diagramma di sequenza mostra la cronologia di messaggi scambiati tra gli oggetti durante l’esecuzione del metodo VisualizzaStatistica(). L’utente Amministratore invoca questo metodo passando i parametri per la selezione degli interventi e la lista dei nomi dei calcoli da effettuare. Il metodo crea un nuovo oggetto di classe Statistica passando i parametri di selezione. Il costruttore richiede all’istanza del Singleton CollezioneInterventi un riferimento alla lista degli interventi, crea un nuovo oggetto di classe Selezione e un nuovo oggetto di classe CriterioDiSelezione, passando i parametri di selezione, ed infine setta la proprietà Criterio nell’oggetto Selezione, richiamando quindi il metodo Seleziona() e ricevendo la lista degli interventi su cui effettuare i calcoli. Per ogni calcolo presente nella lista, si invoca il metodo ImpostaCalcolo() sull’oggetto Statistica appena creato: questo richiede alla classe CalcoloFactory l’istanza di calcolo corrispondente al nome passato utilizzando il metodo GetCalcolo(). Viene quindi richiamato il metodo Calcola() della classe statistica, che a sua volta richiama il metodo Calcola() dell’oggetto di tipo ICalcolo precedentemente ottenuto dalla CalcoloFactory, ricevendo un risultato numerico. Infine il metodo VisualizzaStatistica() restituisce una lista di risultati. Pattern Singleton In progettazione si è deciso di modellare le due anagrafiche, per clienti e per dipendenti, utilizzando il design pattern Singleton. Singleton Anagrafica dei Clienti (analogo per l’anagrafica Dipendenti) Lo stesso concetto è stato applicato alla collezione degli interventi. Singleton Collezione Interventi Pattern State Per modellare lo stato degli interventi è stato utilizzato il design pattern State, che permette di cambiare dinamicamente il comportamento degli oggetti di classe Intervento a seconda dello stato in cui si trovano. Design pattern State per lo Stato dell’Intervento Pattern Strategy e Factory Per i diversi tipi di calcolo utilizzati per la visualizzazione delle statistiche sono stati combinati due Design Pattern, Strategy e Factory. Design Pattern Strategy e Factory per il calcolo delle Statistiche