POLITECNICO DI BARI DIPARTIMENTO DI INGEGNERIA ELETTRICA E DELL INFORMAZIONE LAUREA IN INGEGNERIA INFORMATICA E DELL AUTOMAZIONE Tema d anno di INGEGNERIA DEL SOFTWARE Modellazione ed Implementazione di app per la gestione informatizzata di ricette LIBRO DI RICETTE Docente: Prof.ssa Marina MONGIELLO Dott. Francesco NOCERA Studenti (Gruppo n. 01): Massimo TUMOLO Claudio GIANFRATE ANNO ACCADEMICO 2015 2016
FASE DI IDEAZIONE VISIONE Cronologia revisioni Versione Data Descrizione Bozza ideazione 24/10/2015 Prima bozza. Raffinamento previsto in elaborazione Introduzione Si vuole realizzare una Applicazione Android, denominata Libro di Ricette, in grado di memorizzare ricette. L applicazione grazie alla sua interfaccia intuitiva deve permettere anche ad utenti poco esperti di registrare e categorizzare le proprie ricette implementando un meccanismo di ricerca adeguato. Requisiti funzionali R1) Il Sistema deve consentire di inserire ricette specificandone durante la creazione il nome, gli ingredienti, il procedimento, la categoria a cui appartengono e un eventuale valutazione. R2) Il Sistema deve consentire all utente la gestione delle ricette, con rimozione e modifica. R3) Il Sistema deve consentire all utente la gestione delle categorie, con inserimento, rimozione e modifica di quelle preesistenti. R4) Il Sistema deve consentire la ricerca per nome di una particolare ricetta. R5) Il Sistema deve consentire la visualizzazione dell elenco delle ricette memorizzate. R6) Il Sistema deve consentire la visualizzazione per categoria. R7) Il Sistema deve consentire la visualizzazione per valutazione.
SPECIFICHE SUPPLEMENTARI Cronologia revisioni Versione Data Descrizione Bozza ideazione 24/10/2015 Prima bozza. Raffinamento previsto in elaborazione Introduzione Questo documento raccoglie tutti gli attributi di qualità e i requisiti URPS+ ed eventuali vincoli dell Applicazione Libro di Ricette. Sicurezza Non essendo presenti dati sensibili da trattare non è necessario adottare particolari misure di protezione. Non sono necessari meccanismi per la gestione della concorrenza per l accesso alle risorse in quanto si tratta di un applicazione monoutente. Usabilità L applicazione si propone di essere quanto più user-friendly possibile, pertanto si adotteranno interfacce semplici. L utente deve poter accedere a ciascuna funzionalità con al più tre tap. Hardware e Interfacce Significative L applicazione è destinata a smartphone con sistema operativo Android versione minima 3.0. Non è richiesta connessione a internet o interazioni con altri servizi offerti dal sistema.
STIMA DEI COSTI E DELLA TEMPISTICA Cronologia revisioni Versione Data Descrizione Bozza ideazione 25/10/2015 Prima bozza. Raffinamento previsto in elaborazione Introduzione Per il calcolo della tempistica ci riconduciamo al modello COCOMO II. Per stimare l effort utilizziamo la formula: Size Calcoliamo gli UFP. Effort = 2,94 * Size B * M Input utente Requisiti Complessità Peso R1 Alta 6 R2 Media 4 R3 Bassa 3 Totale UFP: 13 Output utente Requisiti Complessità Peso R5 Media 5 R6 Media 5 R7 Media 5 Totale UFP: 15 Interrogazioni utente Requisiti Complessità Peso R4 Media 4 Totale UFP: 4 Archivi Requisiti Complessità Peso Basi di Dati Alta 15 Totale UFP: 15
Interfaccia utente Requisiti Complessità Peso Interfaccia Alta 10 Totale UFP: 10 Numero totale di UFP = 57 Calcoliamo ora il VAF VAF Caratteristiche generali del sistema Risposta Comunicazione dei dati 0 Processi con dati distribuiti 1 Performance 1 Pesantezza della configurazione utilizzata 1 Grado di transazione 0 Input Interattivo 5 Efficienza lato utente 2 Aggiornamento interattivo 3 Complessità dei processi 0 Riusabilità 1 Facilità di installazione 0 Facilità di operazione 2 Siti multipli 0 Complessità delle interrogazioni 1 Totale VAF: 17 Calcoliamo i punti funzione FP= UFP * [0,65 +( 0,01 * VAF)] = 47 Il progetto sarà programmato in Java per Android all 80% integrando un DBMS SQLite per il 10%. L interfaccia sarà gestita attraverso XML. Size = 41 * [(27 * 0,80) + (13 * 0,10)] / 1000 = 1,08 B Per calcolare B utilizziamo la formula B=0,91 + 0,01 Σ Wi
Wi Fattori Lavori precedenti Flessibilità di sviluppo Risoluzioni di Architettura/rischi Coesione del Team Maturità del Processo Totale B: 1,0997 M Per calcolare M utilizziamo la formula M= PERS x RCPX x RUSE x PDIF x PREX x FCIL x SCED Coefficenti Codice Descrizione Valore assegnato RCPX Affidabilità e complessità del prodotto 0.8 RUSE Riusabiltà richiesta n/a PDIF Difficoltà della piattaforma 1 PERS Capacità del personale 1 PREX Esperienza del personale 1 FCIL Destrezza 1 SCED Tempi di scadenza del progetto 1 Totale M: 0.8 Per cui Effort = 2,94 * Size B * M = 2,6 In base alle stime effettuate si richiede un tempo di realizzazione pari a 2 mesi e mezzo.
PIANO DELLE FASI Cronologia revisioni Versione Data Descrizione Bozza ideazione 25/10/2015 Prima bozza. Raffinamento previsto in elaborazione FASE O ATTIVITÀ 1. IDEAZIONE Introduzione al dominio di interesse Analisi dei requisiti Analisi dei tempi di sviluppo del progetto Documento di visione Analisi delle specifiche Analisi dei costi Modello dei casi d uso TOTALE FASE DI IDEAZIONE 4 2. ELABORAZIONE 2.1. Requisiti 1 Riformulazione delle specifiche Aggiornamento del documento di Visione Aggiornamento piano del progetto 2.2. Analisi (opzionali) Raffinamento e specifica dei casi d uso Diagramma delle classi Diagramma dei package Diagrammi di sequenza Diagrammi di collaborazione Diagrammi di attività 2.3. Progettazione Rifinitura dei Diagrammi realizzati nelle attività precedenti Diagrammi di stato 2.4. Implementazione Sviluppo del prototipo funzionale TOTALE FASE ELABORAZIONE 8 3. COSTRUZIONE 3.1. Analisi 1 Conclusione del modello di analisi Analisi dei requisiti non funzionali 3.2. Progettazione 2 4 1 2 GIORNI
Scelta della piattaforma implementativa Sviluppo dell interfaccia Stesura dei manuali 3.3. Implementazioni 3.4. Test Scrittura del codice I primi test delle funzionalità TOTALE FASE COSTRUZIONE 10 4. TRANSIZIONE 4.1. Design Modifiche sui modelli nel caso di problemi nel testing Completamento dei manuali 4.2. Test 2 Testing Acceptance Testing TOTALE FASE TRANSIZIONE 6 TOTALE PROGETTO 32 6 1 4
MODELLO DEI CASI D USO Cronologia revisioni Versione Data Descrizione Bozza ideazione 31/10/2015 Prima bozza. Raffinamento previsto in elaborazione Individuazione dei casi d uso Casi d uso riconducibili all utente: UC1) Inserisci ricetta UC2) Visualizza e gestisci ricetta UC3) Visualizza e filtra elenco ricette UC4) Gestisci categorie UC5) Ricerca ricette Casi d uso riconducibili al sistema operativo: UC6) Avvio sistema Descrizione dei Casi D uso UC1) Inserisci ricetta L utente inserisce nel database una nuova ricetta specificando. L utente deve necessariamente inserire il nome, gli ingredienti e il procedimento per la preparazione della ricetta. All utente è offerta inoltre la possibilità di valutare la ricetta e inserirla all interno di una categoria. UC2) Visualizza e gestisci ricetta L utente può cliccare su una singola ricetta per visualizzarla ed eventualmente modificarla o rimuoverla. È lasciato all utente il compito di salvare le modifiche. UC3) Visualizza e filtra elenco ricette L utente può selezionare quali ricette visualizzare scegliendo se applicare un filtro in base alla categoria richiesta o al voto assegnato. UC4) Gestisci categorie L utente può inserire nel database una nuova categoria o eliminare/modificare le categorie già presenti. UC5) Ricerca ricette L utente può cercare una particolare ricetta fra tutte quelle presenti nel database attraverso un meccanismo di ricerca per nome.
UC6) Avvio sistema Il sistema operativo avvia all avvio dell applicazione apre il database SQLite e carica l elenco delle ricette. UC1) Inserisci ricetta Descrizione Inserimento della ricetta con specifica dei singoli campi Precondizioni Applicazione avviata Post-Condizioni per successo Ritorno al menù Post-Condizione per fallimento Pop-up di errore Evento innescante Pressione sul pulsante Inserisci ricetta Attore Primario Utente Scenario di base Step Azioni 1 Compilazione dei campi obbligatori 1.1 Compilazione del campo Nome Ricetta 1.2 Compilazione del campo Ingredienti 1.3 Compilazione del campo Procedimento 2 Compilazione dei campi opzionali 2.1 Assegnazione della categoria 2.2 Valutazione della ricetta Scenario alternativo A Evento innescante Pressione pulsante Salva 3.A Ricetta inserita nel database Scenario alternativo B Evento innescante Pressione del tasto back dello smartphone 3.B Inserimento annullato
UC2) Visualizza e filtra elenco ricette Descrizione Visualizzazione delle ricette in base al filtro Precondizioni Applicazione avviata Post-Condizioni per successo Visualizzazione elenco delle ricette che rispettano il filtro imposto Evento innescante Pressione sul pulsante Filtro Attore Primario Utente Scenario di base Step Azioni 1 Selezione del filtro opportuno Scenario alternativo A Evento innescante Viene selezionato il filtro per categoria 2.A Selezione della categoria con cui applicare il filtro Scenario alternativo B Evento innescante Viene selezionato il filtro per valutazione 2.B Selezionare la valutazione con cui applicare il filtro 2.1 Assegnazione della categoria 2.2 Valutazione della ricetta Scenario alternativo A Evento innescante Pressione pulsante Salva 3.A Ricetta inserita nel database Scenario alternativo B Evento innescante Pressione del tasto back dello smartphone 3.B Inserimento annullato, ritorno al menù Diagramma UML dei casi d uso Avvio sistema Inserisci ricetta Visualizza e gestisci ricetta Gestisci categorie Ricerca ricette Visualizza e filtra elenco ricette
DIAGRAMMA DELLE CLASSI Cronologia revisioni Versione Data Descrizione Bozza ideazione 31/10/2015 Diagramma concettuale. Raffinamento previsto in elaborazione Modellazione Sono state modellate solamente le classi strettamente necessarie all adempimento, rimandando in fase di elaborazione la strutturazione delle classi ausiliarie quali quelle di interfaccia. Ricetta -id : int -titolo : String -ingredienti : String -procedimento : String -valutazione : short -categoria : Categoria 0..n 0..1 Appartiene Contiene Categoria -id : int -nome : String
FASE DI ELABORAZIONE RAFFINAMENTO VISIONE Cronologia revisioni Versione Data Descrizione Definitiva 27/11/2015 Raffinamento Introduzione Si vuole realizzare una Applicazione Android, chiamata Libro di Ricette, che sia un sistema informativo in grado di memorizzare ricette. L applicazione grazie alla sua interfaccia intuitiva deve permettere anche ad utenti poco esperti di registrare e categorizzare le proprie ricette implementando un meccanismo di ricerca adeguato. Requisiti funzionali R8) Il Sistema deve consentire di registrare un nuovo profilo. R9) Il Sistema deve consentire di selezionare il proprio profilo. R10) Il Sistema deve consentire di inserire ricette specificandone durante la creazione il nome, gli ingredienti, il procedimento, la categoria a cui appartengono e un eventuale valutazione. R11) Il Sistema deve consentire all utente la gestione delle ricette, con rimozione e modifica. R12) Il Sistema deve consentire all utente la gestione delle categorie del profilo selezionato, con inserimento, rimozione e modifica di quelle preesistenti. R13) Il Sistema deve consentire la ricerca per nome di una particolare ricetta. R14) Il Sistema deve consentire la visualizzazione dell elenco delle ricette memorizzate sul proprio profilo. R15) Il Sistema deve consentire la visualizzazione per categoria. R16) Il Sistema deve consentire la visualizzazione per valutazione.
MODELLO DEI CASI D USO Cronologia revisioni Versione Data Descrizione Definitiva 28/11/2015 Raffinamento Individuazione dei casi d uso Casi d uso riconducibili all utente: UC7) Inserisci ricetta UC8) Visualizza e gestisci ricetta UC9) Visualizza e filtra elenco ricette UC10) Gestisci categorie UC11) Ricerca ricette UC12) Registrazione UC13) Accesso Casi d uso riconducibili al sistema operativo: UC14) Avvio sistema Descrizione dei Casi D uso UC7) Inserisci ricetta L utente inserisce nel database una nuova ricetta specificando. L utente deve necessariamente inserire il nome, gli ingredienti e il procedimento per la preparazione della ricetta. All utente è offerta inoltre la possibilità di valutare la ricetta e inserirla all interno di una categoria. UC8) Visualizza e gestisci ricetta L utente può cliccare su una singola ricetta per visualizzarla ed eventualmente modificarla o rimuoverla. È lasciato all utente il compito di salvare le modifiche. UC9) Visualizza e filtra elenco ricette L utente può selezionare quali ricette visualizzare scegliendo se applicare un filtro in base alla categoria richiesta o al voto assegnato. UC10) Gestisci categorie L utente può inserire nel database una nuova categoria o eliminare/modificare le categorie già presenti. UC11) Ricerca ricette L utente può cercare una particolare ricetta fra tutte quelle presenti nel database attraverso un meccanismo di ricerca per nome.
UC12) Registrazione L utente deve registrare il proprio profilo inserendo un nome. UC13) Accesso All avvio del sistema l utente deve scegliere il profilo da utilizzare. UC14) Avvio sistema Il sistema operativo avvia all avvio dell applicazione apre il database SQLite e carica l elenco delle ricette. UC1) Inserisci ricetta Descrizione Inserimento della ricetta con specifica dei singoli campi Precondizioni Accesso eseguito Post-Condizioni per successo Ritorno al menù Post-Condizione per fallimento Pop-up di errore Evento innescante Pressione sul pulsante Inserisci ricetta Attore Primario Utente Scenario di base Step Azioni 1 Compilazione dei campi obbligatori 1.1 Compilazione del campo Nome Ricetta 1.2 Compilazione del campo Ingredienti 1.3 Compilazione del campo Procedimento 2 Compilazione dei campi opzionali 2.1 Assegnazione della categoria 2.2 Valutazione della ricetta Scenario alternativo A Evento innescante Pressione pulsante Salva 3.A Ricetta inserita nel database Scenario alternativo B Evento innescante Pressione del tasto back dello smartphone 3.B Inserimento annullato
UC2) Visualizza e gestisci ricetta Descrizione Visualizzazione ricetta con possibilità di modifica e cancellazione Precondizioni Accesso eseguito Post-Condizioni per successo Ritorno al menù Post-Condizione per fallimento Pop-up di errore Evento innescante Pressione sul nome della ricetta Attore Primario Utente Scenario di base Step Azioni 1 Visualizzazione dei campi con possibilità di modifica Scenario alternativo A Evento innescante Pressione pulsante Salva 2.A Ricetta inserita nel database Scenario alternativo B Evento innescante Pressione pulsante Cancella 2.B Ricetta eliminata dal database Scenario alternativo C Evento innescante Pressione del tasto back dello smartphone 2.C Inserimento annullato, ritorno al menù UC3) Visualizza e filtra elenco ricette Descrizione Visualizzazione delle ricette in base al filtro Precondizioni Accesso eseguito Post-Condizioni per successo Visualizzazione elenco delle ricette che rispettano il filtro imposto Evento innescante Pressione sul pulsante Filtro Attore Primario Utente Scenario di base Step Azioni 1 Selezione del filtro opportuno Scenario alternativo A Evento innescante Viene selezionato il filtro per categoria 2.A Selezione della categoria con cui applicare il filtro Scenario alternativo B Evento innescante Viene selezionato il filtro per valutazione 2.B Selezionare la valutazione con cui applicare il filtro
Diagramma UML dei casi d uso
DIAGRAMMA DELLE CLASSI Cronologia revisioni Introduzione Versione Data Descrizione Definitiva 17/11/2015 Diagramma delle classi di 28/11/2015 progetto di dettaglio Le classi rilevate nella fase di elaborazione sono le seguenti Classi relative alla gestione del database SQLite o DBhelper: Classe deputata alla creazione e all aggiornamento del database al suo avvio o DBmanager: Classe deputata alla gestione dell input/output sul database Classi relative all UI o MainActivity: Classe deputata alla selezione del profilo e alla registrazione o ShowList: Classe principale, si occupa di istanziare i principali partecipanti all applicazione o ShowRecipe: Classe deputata alla gestione delle singole ricette o ShowCategories: Classe deputata alla gestione delle categorie Classi funzionali o Recipe: Classe adibita a contenere i parametri della ricetta e a comunicarli al DBmanager o Categories: Classe adibita a contenere i parametri della categoria e a comunicarli al DBmanager o DButilities: Interfaccia di comunicazione tra le classi funzionali e il DBmanager o Utente: Classe adibita alla profilazione
Diagramma
MODELLO DI PROGETTO Cronologia revisioni Versione Data Descrizione Definitiva 29/11/2015 Diagramma delle classi di progetto di dettaglio Introduzione Sono necessari per il progetto 3 package: com.librodiricette.ui è il package che contiene tutte le classi relative all interfaccia com.librodiricette.funcclass è il package che contiene tutte le classi funzionali com.librodiricette.database è il package che contiene tutte le classi di interrogazione al database Diagramma dei Package
Diagramma di sequenza
SCHEMA E-R Cronologia revisioni Versione Data Descrizione Schema concettuale 16/11/2015 Schema E-R concettuale della 29/11/2015 base di dati. Entità Le entità rilevate in fase di progettazione concettuale sono Ricetta, Categoria e Utente. 1. Ricetta Tiene traccia delle ricette salvate dall utente, con titolo, ingredienti, preparazione ed eventualmente valutazione e categoria 1.1. Attributi: Id, Titolo, Ingredienti, Preparazione, Valutazione, Categoria, Utente 1.2. Identificatore: Id 2. Categoria Tiene traccia dei gruppi attraverso i quali l utente decide di organizzare le ricette, caratterizzate da un nome e da un codice identificativo. 2.1. Attributi: Id, Nome, Utente 2.2. Identificatore: Id 3. Utente Tiene traccia del profilo che a cui appartiene la ricetta o la categoria, in modo da consentire la gestione indipendente dei propri dati in base all utilizzatore del dispositivo. 3.1. Attributi: Id, Nome 3.2. Identificatore: Nome E presente un vincolo referenziale tra Ricetta e Categoria.
Schema Logico E-R Titolo Ingredienti Preparazione Nome Ricetta (0,1) (1,N) Appartenenza Categoria Categoria Id Id Valutazione (1,1) Id (1,1) Nome Proprietà Possessione (1,N) Utente (1,N)
Dettaglio Attributi Entità Attributo Tipo Descrizione Ricetta Titolo Stringa Nome con il quale verrà identificata la ricetta. Ingredienti Stringa Elenco che identifica gli ingredienti Preparazione Stringa Descrizione della procedura di preparazione Categoria Intero Numero identificativo della categoria di appartenenza. Facoltativo. Valutazione Intero Numero da 1 a 5 sulla qualità della ricetta. Facoltativo. Id Intero Numero identificativo assegnato automaticamente alla ricetta. Univoco per ciascun utente. Proprietario Stringa Nome del creatore della ricetta. Categoria Nome Stringa Nome con il quale verrà identificata una categoria. Id Intero Numero identificativo assegnato automaticamente alla categoria. Proprietario Stringa Nome del creatore della categoria. Utente Nome Stringa Nome del profilo. Id Intero Numero identificativo assegnato automaticamente al profilo.
FASE DI COSTRUZIONE DIAGRAMMA DELLE CLASSI Cronologia revisioni Versione Data Descrizione Definitiva 22/12/2015 Diagramma delle classi di progetto di dettaglio Introduzione Il diagramma delle classi definitivo, rilevato in seguito all implementazione, è il seguente Classi relative alla gestione del database SQLite o DBhelper: Classe deputata alla creazione e all aggiornamento del database al suo avvio o DBmanager: Classe deputata alla gestione dell input/output sul database Classi relative all UI o MainActivity: Classe deputata alla selezione del profilo e alla registrazione o ShowList: Classe principale, si occupa di istanziare i principali partecipanti all applicazione o ShowRecipe: Classe deputata alla visualizzazione e alla modifica delle singole ricette o ShowCategories: Classe deputata alla gestione delle categorie o NewRecipe: Classe deputata alla creazione di una nuova ricetta o FilterRecipe: Classe deputata alla visualizzazione delle ricetto dopo aver usato un filtro Classi funzionali o Recipe: Classe adibita a contenere i parametri della ricetta e a comunicarli al DBmanager o Categories: Classe adibita a contenere i parametri della categoria e a comunicarli al DBmanager o DButilities: Interfaccia di comunicazione tra le classi funzionali e il DBmanager o Utente: Classe adibita alla profilazione