analisi dettagliata e design b. pernici d. ardagna
TRANSCRIPT
![Page 1: Analisi dettagliata e design B. Pernici D. Ardagna](https://reader035.vdocuments.pub/reader035/viewer/2022081602/5542eb76497959361e8e0179/html5/thumbnails/1.jpg)
Analisi dettagliata e design
B. Pernici
D. Ardagna
![Page 2: Analisi dettagliata e design B. Pernici D. Ardagna](https://reader035.vdocuments.pub/reader035/viewer/2022081602/5542eb76497959361e8e0179/html5/thumbnails/2.jpg)
Sommario
• Analisi dettagliata– Separazione interfaccia, controllo, entita’
• Design– Logical view– Progettazione dei dati– Component view
![Page 3: Analisi dettagliata e design B. Pernici D. Ardagna](https://reader035.vdocuments.pub/reader035/viewer/2022081602/5542eb76497959361e8e0179/html5/thumbnails/3.jpg)
Obiettivi
• Trasformare i requisiti in un progetto che puo’ essere implementato in un’applicazione software
• Analisi: utilizza casi d’uso e requisiti funzionali per realizzare un modello del sistema
• Progettazione: raffinamento del modello di analisi tenendo conto dei requisiti non funzionali dei vincoli architetturali
![Page 4: Analisi dettagliata e design B. Pernici D. Ardagna](https://reader035.vdocuments.pub/reader035/viewer/2022081602/5542eb76497959361e8e0179/html5/thumbnails/4.jpg)
Processo di sviluppo
• Analisi e progettazione possono evolvere come due attivita’ separate o come parte di una stessa attivita’
• Analisi e progettazione possono iniziare prima che la fase di raccolta dei requisiti sia completamente terminata
• Priorita’: gestione del rischio
![Page 5: Analisi dettagliata e design B. Pernici D. Ardagna](https://reader035.vdocuments.pub/reader035/viewer/2022081602/5542eb76497959361e8e0179/html5/thumbnails/5.jpg)
![Page 6: Analisi dettagliata e design B. Pernici D. Ardagna](https://reader035.vdocuments.pub/reader035/viewer/2022081602/5542eb76497959361e8e0179/html5/thumbnails/6.jpg)
Analisi dettagliata
• Packages
• Boundary-control-entity
(interfaccia, controllo, entita’)
![Page 7: Analisi dettagliata e design B. Pernici D. Ardagna](https://reader035.vdocuments.pub/reader035/viewer/2022081602/5542eb76497959361e8e0179/html5/thumbnails/7.jpg)
•Dipendenza•Generalizzazione•Appartenenza
Package
![Page 8: Analisi dettagliata e design B. Pernici D. Ardagna](https://reader035.vdocuments.pub/reader035/viewer/2022081602/5542eb76497959361e8e0179/html5/thumbnails/8.jpg)
Design package
• A partire dai casi d’uso di alto livello
• Identificazione classi: analisi dei nomi e dei verbi
• Suddividere il modello in base agli elementi simili (classi e oggetti)
• Obiettivi:– Comprensione– Coesione– Scarso accoppiamento– Gerarchie comunque poco
profonde
![Page 9: Analisi dettagliata e design B. Pernici D. Ardagna](https://reader035.vdocuments.pub/reader035/viewer/2022081602/5542eb76497959361e8e0179/html5/thumbnails/9.jpg)
Boundary - control - entity
• Secondo Conallen (interpretazione pattern model-view-controller):stereotipi– Boundary – Control – Entity
• Separare logica applicativa da presentazione e da dati presentati all’utente
• Esaminare ciascun caso d’uso• “Coordinamento” tra modello di navigazione e modello
concettuale • Si fara’ evolvere in modello di design
![Page 10: Analisi dettagliata e design B. Pernici D. Ardagna](https://reader035.vdocuments.pub/reader035/viewer/2022081602/5542eb76497959361e8e0179/html5/thumbnails/10.jpg)
Primo passo analisi Use case: Mostrare Configurazione Computer Standard
Poca enfasi(gia’ in UX)
Funzionalita’
Un diagramma per ogni caso d’uso
![Page 11: Analisi dettagliata e design B. Pernici D. Ardagna](https://reader035.vdocuments.pub/reader035/viewer/2022081602/5542eb76497959361e8e0179/html5/thumbnails/11.jpg)
Regole di robustezza
• Accesso a entita’ tramite controllori• Interfacce per gestire interazione con attori• Entita’: dati di interesse, persistenti
• Da UX model: corrispondenza schermate – interfacce
• Da modello concettuale dei dati: corrispondenza entità con classi del class diagram
![Page 12: Analisi dettagliata e design B. Pernici D. Ardagna](https://reader035.vdocuments.pub/reader035/viewer/2022081602/5542eb76497959361e8e0179/html5/thumbnails/12.jpg)
Elaborazione analisi
Operazioni richieste
dall’utente
Funzionalità per creare le
pagine
![Page 13: Analisi dettagliata e design B. Pernici D. Ardagna](https://reader035.vdocuments.pub/reader035/viewer/2022081602/5542eb76497959361e8e0179/html5/thumbnails/13.jpg)
Sequence diagram per l’analisi
• Interazioni tra oggetti corrispondenti alle classi del modello di analisi
• Elaborazione del diagramma di sequenza di interazione precedente
![Page 14: Analisi dettagliata e design B. Pernici D. Ardagna](https://reader035.vdocuments.pub/reader035/viewer/2022081602/5542eb76497959361e8e0179/html5/thumbnails/14.jpg)
Sequece Diagram (1)
Display Company Page
Display Categories
Display Products
Display Product detail
![Page 15: Analisi dettagliata e design B. Pernici D. Ardagna](https://reader035.vdocuments.pub/reader035/viewer/2022081602/5542eb76497959361e8e0179/html5/thumbnails/15.jpg)
![Page 16: Analisi dettagliata e design B. Pernici D. Ardagna](https://reader035.vdocuments.pub/reader035/viewer/2022081602/5542eb76497959361e8e0179/html5/thumbnails/16.jpg)
Corrispondenza con il modello UX
• Definire la corrispondenza partendo dalle classi del modello di analisi verso le schermate del modello UX: il modello di analisi e’ cosi’ il proprietario privilegiato
![Page 17: Analisi dettagliata e design B. Pernici D. Ardagna](https://reader035.vdocuments.pub/reader035/viewer/2022081602/5542eb76497959361e8e0179/html5/thumbnails/17.jpg)
Design
• Obiettivo: raffinare il modello di analisi in modo che possa essere implementato con i componenti dell’architettura
• Raffinamento classi, introduzione di classi di servizio
• Vista dei componenti
![Page 18: Analisi dettagliata e design B. Pernici D. Ardagna](https://reader035.vdocuments.pub/reader035/viewer/2022081602/5542eb76497959361e8e0179/html5/thumbnails/18.jpg)
Diagramma dei componenti
![Page 19: Analisi dettagliata e design B. Pernici D. Ardagna](https://reader035.vdocuments.pub/reader035/viewer/2022081602/5542eb76497959361e8e0179/html5/thumbnails/19.jpg)
Diagramma dei componenti
![Page 20: Analisi dettagliata e design B. Pernici D. Ardagna](https://reader035.vdocuments.pub/reader035/viewer/2022081602/5542eb76497959361e8e0179/html5/thumbnails/20.jpg)
Design
• Prima fase, progettazione comunque di alto livello
• Partizionamento degli oggetti in livelli, quali client e server
• Separazione e definizione delle interfacce utente e pagine Web
• Rappresentare le pagine Web come elementi del modello
![Page 21: Analisi dettagliata e design B. Pernici D. Ardagna](https://reader035.vdocuments.pub/reader035/viewer/2022081602/5542eb76497959361e8e0179/html5/thumbnails/21.jpg)
UML Web Application Extension
• Stereotipo: associa un nuovo significato semantico a un elemento del modello. Rappresentazione: nuova icona o «»
• Vincolo: condizioni sotto le quali il modello puo’ essere considerato ben formato. Rappresentazione: stringhe comprese tra parentesi graffe Es. parameters=“productId=<%id%>”
![Page 22: Analisi dettagliata e design B. Pernici D. Ardagna](https://reader035.vdocuments.pub/reader035/viewer/2022081602/5542eb76497959361e8e0179/html5/thumbnails/22.jpg)
«Server Page»
• Classe del metamodello: Classe• Pagina Web che ha contenuti costruiti da un
Server per ogni richiesta. Può contenere script che possono interagire con altre risorse lato server (logiche applicative, database,…). Le operazioni rappresentano le funzioni implementate dallo script, le proprieta’ le variabili che sono visibili nella pagina
• Vincoli: possono avere relazioni solo con altri oggetti sul server
![Page 23: Analisi dettagliata e design B. Pernici D. Ardagna](https://reader035.vdocuments.pub/reader035/viewer/2022081602/5542eb76497959361e8e0179/html5/thumbnails/23.jpg)
«Client Page»
• Classe del metamodello: Classe
• Pagina HTML visualizzata in un Browser. Le operazioni corrispondono a funzioni di script (browser) e le proprieta’ alle variabili dichiarate nelle etichiette di script della pagina. Possono avere associazioni con altre pagine client o server.
![Page 24: Analisi dettagliata e design B. Pernici D. Ardagna](https://reader035.vdocuments.pub/reader035/viewer/2022081602/5542eb76497959361e8e0179/html5/thumbnails/24.jpg)
«input Form»
• Classe del metamodello: Classe
• Insieme di campi di input parte di una pagina Client. Non ha operazioni
• Valori etichetta: il metodo (GET o POST) usato per inviare i dati all’URL specificato per action
![Page 25: Analisi dettagliata e design B. Pernici D. Ardagna](https://reader035.vdocuments.pub/reader035/viewer/2022081602/5542eb76497959361e8e0179/html5/thumbnails/25.jpg)
Stereotipi per le associazioni
• «link»: da pagina client a risorsa lato server. Astrazione dell’ancora HTML. Parameters parametri HTTP
• «build»: da una pagina server a una client. Output HTML generato dell’esecuzione di una pagina server
• «submit»: da form HTML a pagina server. Astrazione dell’invio dati di una form HTML
• «redirect»: da pagina client o server a un’altra risorsa. Impone al client di richiedere un’altra risorsa
![Page 26: Analisi dettagliata e design B. Pernici D. Ardagna](https://reader035.vdocuments.pub/reader035/viewer/2022081602/5542eb76497959361e8e0179/html5/thumbnails/26.jpg)
Stereotipi per le associazioni
• «forward»: da pagina server ad un’altra pagina server o client. Delega di elaborazione di una richiesta
• «object»: contenimento di una classe della vista logica da parte di una pagina client
• «include»: contenimento di una pagina client o server da parte di una pagina server
![Page 27: Analisi dettagliata e design B. Pernici D. Ardagna](https://reader035.vdocuments.pub/reader035/viewer/2022081602/5542eb76497959361e8e0179/html5/thumbnails/27.jpg)
![Page 28: Analisi dettagliata e design B. Pernici D. Ardagna](https://reader035.vdocuments.pub/reader035/viewer/2022081602/5542eb76497959361e8e0179/html5/thumbnails/28.jpg)
«Static Page»
• Classe del metamodello: Componente
• Pagina HTML statica
• Vincoli: non può invocare componenti logici sul server
![Page 29: Analisi dettagliata e design B. Pernici D. Ardagna](https://reader035.vdocuments.pub/reader035/viewer/2022081602/5542eb76497959361e8e0179/html5/thumbnails/29.jpg)
«Dynamic Page»
• Classe del metamodello: Componente
• Pagina dinamica invocata dal client. Può modificare lo stato del server ed elaborare input fornito dal browser
![Page 30: Analisi dettagliata e design B. Pernici D. Ardagna](https://reader035.vdocuments.pub/reader035/viewer/2022081602/5542eb76497959361e8e0179/html5/thumbnails/30.jpg)
Seconda fase di design: componenti
![Page 31: Analisi dettagliata e design B. Pernici D. Ardagna](https://reader035.vdocuments.pub/reader035/viewer/2022081602/5542eb76497959361e8e0179/html5/thumbnails/31.jpg)
Partizionamento degli oggetti
• Attivita’ critica che dipende dall’architettura dell’applicazione
• Gli oggetti possono risiedere sul server sul client o su entrambi– Es. oggetti per la convalida campi: sul client– Es. oggetti contenitore (catalogo, clienti, …) sul
server– Es. fattura? Su entrambi, server ciclo di vita e
persistenza, client documento XML
![Page 32: Analisi dettagliata e design B. Pernici D. Ardagna](https://reader035.vdocuments.pub/reader035/viewer/2022081602/5542eb76497959361e8e0179/html5/thumbnails/32.jpg)
Partizionamento degli oggetti
• Thick Web client: possono esistere sul client oggetti che non hanno associazioni e dipendenze con oggetti server. Tipicamente oggetti per la convalida input, controlli interfaccia utente, ecc.
• Web delivery client: la suddivisione dipende dalla natura del singolo oggetto– Togliere parte del carico dal server– Posizionare gli oggetti dove possono essere piu’
efficaci– Regolare generale: semplificare accesso ai dati e
collaborazioni
![Page 33: Analisi dettagliata e design B. Pernici D. Ardagna](https://reader035.vdocuments.pub/reader035/viewer/2022081602/5542eb76497959361e8e0179/html5/thumbnails/33.jpg)
Modello J2EE
• Utilizzare una Servlet per validare input fornito dall’utente• La servlet delega la costruzione della risposta ad una pagina
JSP
![Page 34: Analisi dettagliata e design B. Pernici D. Ardagna](https://reader035.vdocuments.pub/reader035/viewer/2022081602/5542eb76497959361e8e0179/html5/thumbnails/34.jpg)
View
ControllerModel
JavaBeans, relazioni in DB, classi Middleware
JSP pages, componenti JavaBeans, classi, (Servlet), CGI
Classi controller, servlet, (client side scripting)
Pattern architetturale MVC
![Page 35: Analisi dettagliata e design B. Pernici D. Ardagna](https://reader035.vdocuments.pub/reader035/viewer/2022081602/5542eb76497959361e8e0179/html5/thumbnails/35.jpg)
Pattern architetturale MVC
• Model: dati dell’applicazione e regole che governano accesso e modifica dei dati.
• View: visualizza il contenuto del Model. Dipende dal client (Web based, desktop…). Allo stesso Model e’ possibile associare View differenti
• Controller: specifica il comportamento dell’applicazione, interpreta input dell’utente e richiede l’esecuzione di opportune operazioni da parte del Model. Finite State Machine. Client differenti dovrebbero condividere il Controller
![Page 36: Analisi dettagliata e design B. Pernici D. Ardagna](https://reader035.vdocuments.pub/reader035/viewer/2022081602/5542eb76497959361e8e0179/html5/thumbnails/36.jpg)
Controller FSM
![Page 37: Analisi dettagliata e design B. Pernici D. Ardagna](https://reader035.vdocuments.pub/reader035/viewer/2022081602/5542eb76497959361e8e0179/html5/thumbnails/37.jpg)
Complessita’R
obus
tezz
a
Pagine HMTL
JSP basic e Servlet
JSP, JavaBeans
JSP, JavaBeanse EJB
Pagine HMTL
Pagine HMTL
JSP
Servlet
Pagine HMTL
JSP
ServletJavaBeans
Pagine HMTL
JSP
ServletJavaBeans
Eneterprise JavaBeans
![Page 38: Analisi dettagliata e design B. Pernici D. Ardagna](https://reader035.vdocuments.pub/reader035/viewer/2022081602/5542eb76497959361e8e0179/html5/thumbnails/38.jpg)
Modello J2EE
![Page 39: Analisi dettagliata e design B. Pernici D. Ardagna](https://reader035.vdocuments.pub/reader035/viewer/2022081602/5542eb76497959361e8e0179/html5/thumbnails/39.jpg)
Design o Implementazione ???
• Presentation tier– Pagine JSP, Pagine HTML, classi Java di servizio
• Application tier (JavaBeans, Middleware)– Control
– Session data management (alcuni dati non persistenti)
• Resource tier – Gestione persistenza
– Collegamento a DB e ad altre risorse EIS (Enterprise Information System)
![Page 40: Analisi dettagliata e design B. Pernici D. Ardagna](https://reader035.vdocuments.pub/reader035/viewer/2022081602/5542eb76497959361e8e0179/html5/thumbnails/40.jpg)
Esempio ordine
• Order boundary
• Order controller
• Order entity (proxy)
• Order entity JavaBean
• Order in DBMS (tabelle relazionali)
![Page 41: Analisi dettagliata e design B. Pernici D. Ardagna](https://reader035.vdocuments.pub/reader035/viewer/2022081602/5542eb76497959361e8e0179/html5/thumbnails/41.jpg)
Esempio ordine (<<controller>>, <<entity>>)
Order “proxy”
![Page 42: Analisi dettagliata e design B. Pernici D. Ardagna](https://reader035.vdocuments.pub/reader035/viewer/2022081602/5542eb76497959361e8e0179/html5/thumbnails/42.jpg)
“Pages”