Software solido e usabile



Похожие документы
SOFTWARE SOLIDO E USABILE

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

Strumenti di modellazione. Gabriella Trucco

L o. Walter Ambu japs: una soluzione agile (

Indice. Indice Premessa e scopo del documento Ambiente operativo Architettura di sistema... 5

7. Architetture Software

Distributed Object Computing

Una metodologia per la specifica di software basato su componenti

Groups vs Organizational Units. A cura di Roberto Morleo

A ridurre le dimensioni del database. A ordinare i record secondo criteri fissati sui campi. A facilitare le operazioni di inserimento dei dati

PROGETTAZIONE E SVILUPPO DI UN. Relatore: Studente: Paolo Merialdo Valerio Barbagallo

Architettura SW Definizione e Notazioni

ECDL - Database. European Computer Driving Licence - Modulo 5 - Database LEZIONE 2

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

object oriented analysis

E.S.B. Enterprise Service Bus ALLEGATO C11

UN PROGRAMMA APPLICATIVO: ACCESS Access è un programma del pacchetto Office che permette di realizzare database

Corso di Access. Prerequisiti. Modulo L2A (Access) 1.1 Concetti di base. Utilizzo elementare del computer Concetti fondamentali di basi di dati

Cosa è un foglio elettronico

Object-Relational Mapping

Reingegnerizzazione di un Content Management System verso l accessibilità secondo la normativa italiana

L'impatto della flessibilità sull'infrastruttura tecnologica. Luca Amato IT Architect, Global Technology Services, IBM Italia

CORSO DI PROGRAMMAZIONE JAVA

Progettazione : Design Pattern Creazionali

Architettura MVC-2 A L B E R T O B E L U S S I A N N O A C C A D E M I C O /

Software Product Lines (SPL)

Sommario. Oracle Database 10g (laboratorio) Grid computing. Oracle Database 10g. Concetti. Installazione Oracle Database 10g

DBMS (Data Base Management System)

Access. P a r t e p r i m a

15 volte più veloce. per ridurre TCO e time-to-market

Dispensa di database Access

Progettaz. e sviluppo Data Base

Introduzione all Architettura del DBMS

1. BASI DI DATI: GENERALITÀ

11. Evoluzione del Software

Architetture software

I I SISTEMI INFORMATIVI INTEGRATI. Baan IV IV - Enterprise e Orgware NOTE

SWIM v2 Design Document

MANUALE DI UTILIZZO: INTRANET PROVINCIA DI POTENZA

IBM Software Demos The Front-End to SOA

Organizzazione degli archivi

Realizzazione di un prototipo di un software web based per la gestione di un inventario comunale

Introduzione alle basi di dati. Gestione delle informazioni. Gestione delle informazioni. Sistema informatico

Introduzione al data base

Scenario di Progettazione

GOW GESTIONE ORDINI WEB

Indice. Prefazione all edizione italiana

corso di Access MICROSOFT ACCESS Docente: Andrea Mereu Università degli studi di Cagliari 16 aprile 9 maggio 2012

sito web sito Internet

Facoltà di Farmacia - Corso di Informatica

Basi di dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL

BASE DI DATI: introduzione. Informatica 5BSA Febbraio 2015

per immagini guida avanzata Uso delle tabelle e dei grafici Pivot Geometra Luigi Amato Guida Avanzata per immagini excel

12. Evoluzione del Software

Il Pattern MVC nei Framework di sviluppo per applicazioni Web. Analisi e comparazione di SPRING MVC Framework e ASP.NET MVC Framework.

Ingegneria del Software. Introduzione ai pattern

I blog. Andrea Marin. a.a. 2013/2014. Università Ca Foscari Venezia SVILUPPO INTERCULTURALE DEI SISTEMI TURISTICI SISTEMI INFORMATIVI PER IL TURISMO

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

Al giorno d oggi, i sistemi per la gestione di database

Sistemi Informativi Distribuiti

Raggruppamenti Conti Movimenti

Corso di: ECDL Core full 7 moduli

Sistemi Informativi e Basi di Dati

Implementazione di MVC. Gabriele Pellegrinetti

Ciclo di vita dimensionale

INGEGNERIA DEL SOFTWARE. Prof. Paolo Salvaneschi

Informatica per le discipline umanistiche 2 lezione 10

Sistemi Operativi STRUTTURA DEI SISTEMI OPERATIVI 3.1. Sistemi Operativi. D. Talia - UNICAL

Brochure Internet. Versione The Keyrules Company s.r.l. Pagina 2 di 8

Design Patterns. Sommario. Architettura a 3 Livelli Concetti Generali Presentazione Dominio Sorgente Dati DIB 1. Design Patterns DIB 2

Ciclo di vita del software

Uso delle tabelle e dei grafici Pivot

Organizzazione delle informazioni: Database

Esercitazioni di PROGETTAZIONE DEL SOFTWARE A.A

Audit & Sicurezza Informatica. Linee di servizio

Università degli Studi di Salerno Ingegneria del Software: Tecniche Avanzate

Applicazione: Sistema Informativo Integrato per il Controllo di Gestione

Use Case Driven Object Modeling: ICONIX

Basi di dati. Corso di Laurea in Ingegneria Informatica Canale di Ingegneria delle Reti e dei Sistemi Informatici - Polo di Rieti

Database. Si ringrazia Marco Bertini per le slides

Cloud Computing: alcuni punti fermi per non smarrirsi fra le nuvole

Progettazione di Basi di Dati

LO SVILUPPO DELLE COMPETENZE PER UNA FORZA VENDITA VINCENTE

EUROPEAN COMPUTER DRIVING LICENCE. Using Databases. Syllabus

Corso di Basi di Dati e Conoscenza

Componenti di una applicazione. Un programma applicativo è strutturato come un insieme organizzato di tre componenti funzionali:

Sistemi di gestione delle basi di dati. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma

File system II. Sistemi Operativi Lez. 20

guida: lo stato dell arte Stefano Micocci CUP 2000

Транскрипт:

La tecnica di analisi e progetto Domain-Driven Design Software solido e usabile Nel cuore della complessità del software

Che cos è il Domain-Driven Design È un approccio alla costruzione di sistemi software Usando modelli e (spesso) tecniche OO Con una forte connotazione orientata a creare rappresentazioni esplicite della componente di dominio 2

Dominio applicativo: cargo shipping, logistica 3

Perché una componente di dominio esplicita Side-effects-driven design Difficile da collaudare, da modificare, da capire Che conversazione possiamo avere con un esperto di dominio? Questo modello nasconde requisiti essenziali: Regole (business rules, policy, etc.) Logica di business Stile di design DB-oriented 4 Side effects YOURLOGO by

Senza componente di dominio esplicita cosa si perde? Quali concetti del problema non emergono da questo design? Itinerario, tratte Regole di prenotazione delle spedizioni (booking rules) Policy di overbooking Modello di costo, sconti, tipi di clienti, etc. Il design invece rende espliciti concetti di infrastruttura Tabelle, righe, colonne, id, record, query Tali concetti tecnici sono intrecciati con concetti di dominio 5

Un modello di dominio esplicito class Deep model Cargo - volume -cargos 1..* «enumerati... LegType MARITTIME AERIAL RAIL 1 VoyageRoutingServ ice + FindQuickestRoute() + FindCheapestRoute() Voyage - dest - orig - maxcapacity + TotalCost() Route -mainroute - cost 1 1..* -alternativeroute 1 - cost - dest - orig Leg 6

Il dominio come responsabilità architetturale Componente di dominio Responsabilità architetturali su: 1. Rappresentazione del problema 2. Soddisfacimento di bisogni specifici componente di dominio deve rimanereseparata da Infrastruttura e aspetti tecnologici (es. database) Vincoli legati a soluzioni preesistenti (codice legacy) 7

Un architettura di riferimento per il DDD La componente di dominio forza la separazione tra la rappresentazione del problema e le decisioni 8 tecnologiche Attenzione alle dipendenze! Control Logic class System Architecture DDD User Interface Application Controller Domain B u s i n e s s Logic Infrastructure Technology View Model Persistent Model Presentation Logic Qui è dove succedono le cose interessanti

Ubiquitous Language Molti requisiti si riferiscono a concetti del dominio Questo linguaggio deve essere preservato nella componente di dominio Con un linguaggio comune, analisi e design diventano processi di knowledge crunching Ubiquitous Language Struttura del problema e della soluzione quasi isomorfe Piccole modifiche nel dominio hanno basso impatto nella soluzione 9

Modelli profondi Il linguaggio ubiquo esplicita conoscenza profonda sul dominio del problema costruendo modelli in cui tale conoscenza si riflette sulla soluzione Modelli profondi danno forma alla conoscenza profonda riducendo lo scollamento tra analisi e progetto 10

Aggregati Voyage deve contenere tutti i servizi di accesso alle sue parti utili all esterno Se qualche parte viene fornita come output, ne viene restituita sempre una copia (Value Object) class Cargo3 BookingServ ice Voyage - origin :Place - destination :Place - maxcapacity :long Cargo - size :double CargoOv erbookingpolicy 0..* 1..* Leg - origin :Place - destination :Place + IsAllowed() 11

Factory e Repository Factory e Repository isolano le dipendenze di creazione e persistenza Effetti: class Cargo4fr Cargo - size :double 0..* CargoOv erbookingpolicy + IsAllowed() 1..* Leg - origin :Place - destination :Place Nessuna query nel dominio Voyage Nessuna allocazione esplicita della memoria nel codice applicativo - origin :Place - destination :Place - maxcapacity :long Granularità: Una factory e un repository per ogni aggregato BookingServ ice «create» VoyageFactory VoyageRepository 12

Architettura stratificata in stile DDD class System Architetcture DDD Complete User Interface View Application Controller Serv ice Domain Aggregate Factory AbstractRepository Infrastructure 13 OracleRepository PostgreSQLRepository

Port and Adapters: una moderna architettura DDD 14 http://alistair.cockburn.us/hexagonal+architecture

Difendersi dal codice legacy: il pattern ACL Una strategia efficace per gestire il codice legacy (Big Ball of Mud?) è creare un Anti-Corruption Layer 15

Conclusioni: Perché fare DDD? DDD non è solo un approccio tecnico Indagando profondamente la natura del problema e rappresentandolo separatamente dalle decisioni tecnologiche l obiettivo del DDD è di Ridurre la frattura tra analisi e design 16