Domain Driven Design: Overview Speaker: Giancarlo Sudano.

Slides:



Advertisements
Presentazioni simili
© 2010 Colt Telecom Group Limited. All rights reserved. Cloud Computing Lapproccio Colt Dionigi Faccedna.
Advertisements

Teoria e Tecniche del Riconoscimento
Interfacce Java.
Midrange Modernization Conference 1 Scenari evolutivi per le soluzioni basate su AS/400 Walter Poloni Direttore Developer & Platform Evangelism Microsoft.
1 Windows SharePoint 2003 Products & Technologies – Overview funzionale Marco Bellinaso Senior trainer & consultant Code Architects S.r.l. Web:
TechNet Integration Workshop
1 Teaching Cloud Computing and Windows Azure in Academia Domenico Talia UNIVERSITA DELLA CALABRIA & ICAR-CNR Italy Faculty Days 2010.
ASP.NET – Web Forms Davide Vernole.NET MVP. Di cosa parleremo Introduzione ad ASP.NET ASP.NET, dietro le quinte Componenti principali di una applicazione.
Vincenzo Campanale PM Security & Management System Center, DSI e la Roadmap.
JPA Overview della tecnologia. Java Persistence Architecture Definita nella JSR-220 EJB 3.0 ( Tentativo di unificare EJB2.1 con.
1 Processi e Thread Processi Thread Meccanismi di comunicazione fra processi (IPC) Problemi classici di IPC Scheduling Processi e thread in Unix Processi.
Sequential Statements. – Il VHDL simula lo svolgersi in parallelo di varie operazioni – Loggetto fondamentale e il PROCESS – Un PROCESS contiene una serie.
Seam.
1.E un algoritmo ricorsivo: Tutti le istanze di oggetti raggiungibili da un oggetto persistente diventano anchessi persistenti.
OWASP-Day e progetti OWASP-Italy
E Windows SharePoint Services 2.0 Ivan Renesto Overview how to use Windows SharePoint Services.
Un DataBase Management System (DBMS) relazionale client/server.
SOCIOLOGIA DEI PROCESSI CULTURALI E COMUNICATIVI Prof.ssa Donatella Padua A.A. 2011/12 A.A. 2011/12.
EJB Enterprise Java Beans B. Pernici. Approccio Java.
Model – View - Controller
Unified Modeling Language class C {…} class B extends C {…} Esiste una notazione grafica per mostrare le relazioni di ereditarietà. Object StringC B Tutte.
prompt> java SumAverage
Directory services Directory offline –Elenchi telefonici –Guide TV –Cataloghi acquisti Directory online –Application specific (lotus notes, MS Exchange.
C Consiglio Nazionale delle Ricerche - Pisa Iit Istituto per lInformatica e la Telematica Reasoning about Secure Interoperation using Soft Constraints.
Biometry to enhance smart card security (MOC using TOC protocol)
LInnovazione di Prodotto. Lo sviluppo di nuovi prodotti e nuovi servizi: una vecchia sfida per le imprese innovative. [emilio bellini]
1. Conoscere luso delle collezioni in Java Comprendere le principali caratteristiche nelle varie classi di Collection disponibili Saper individuare quali.
Fanno ormai parte della nostra vita di tutti i giorni….
Università La Sapienza Ingegneria del Software I 1 Ingegneria del software I Seminario 2: Microsoft.NET.
© CEFRIEL Cenni su XML in Java Docente: Gabriele Lombardi
FONDAMENTI DI INFORMATICA III WfMC-1. FONDAMENTI DI INFORMATICA III WfMC-2 WFMC Cose WfMC Workflow Management Coalition (WfMC), Brussels, è unorganizzazione.
HERES OUR SCHOOL.. 32 years ago this huge palace was built and it was just the beginning; It is becoming larger and larger as a lot of students choose.
Componenti dell’architettura Oracle
S VILUPPO E COLLAUDO DI UNA WEBAPP MEDIANTE I O C E AOP Alessandro Franchi Reti di Calcolatori L-S A.A. 2007/2008.
1 Attivita di ricerca Carlo Batini. 2 Aree Come costruire ed esprimere il contenuto informativo integrato di sistemi informativi complessi basati.
Palermo, may 2010 F.Doumaz, S.Vinci (INGV-CNT- Gruppo di telerilevamento)
Presentazione Finale Team 2 1. Decomposizione in sottosistemi 2.
© 2008 WS (WebScience srl) – All rights reserved WS Tech workshop Software Construction.
Filtered Index and Statistics Filtered Indexes Sergio Govoni
1 Web Design Internet Agency. 2 Web Design Internet Agency Qual è il valore aggiunto che può portare allimpresa ? Perché è fondamentale oggi avere un.
Prospecting & Vendite Padova 25 luglio Ci stanno ipnotizzando Crisi e Ipnosi.
Gli ambienti di apprendimento Firenze, 3 marzo 2006.
Project Review Località Sciistica 21 Dicembre 2011.
Attività Formativa Sviluppo di un WORKFLOW ENGINE di Dott. Riccardo Gasperoni Alessandro Caricato Gabriele Trabucco in collaborazione con Progesi S.p.A.
Project Review byNight byNight December 6th, 2011.
Facelets case study: Ricettario Docente: Gabriele Lombardi
WPF per il client Desktop
14° Workshop – DotNetMarche :: Castelfidardo, 16 Aprile 2010 Introduzione ai framework per IoC / DI e AOP.
Fabio Cozzolino Vito Arconzo
Fare clic per modificare lo stile del titolo Fare clic per modificare stili del testo dello schema – Secondo livello Terzo livello – Quarto livello » Quinto.
Socrates - Grundtvig D E S I G N I N G I N C L U S I V E S P O R T A C T I V I T I E S F A C I L I T I E S Questa presentazione può essere.
Robotica e Futuro Competenze per la Vita Personale, Professionale e Imprenditoriale Alfonso Molina Professor of Technology Strategy, University of Edinburgh.
Scoprirete che su Office non si può solo contare ma anche sviluppare.
CHE COSA E? E una collezione di materiali didattici fatti dallalunno. Lalunno riflette su se stesso, sui propri modi di essere e di fare. Si pone tra.
Tutor: Elisa Turrini Mail:
Visual Studio Tools for Office: Developer Solutions Platform Fulvio Giaccari MCSD.NET / MCT Responsabile Usergroup ShareOffice Blog:
SQL Server 2005 Sicurezza Davide Mauri Factory Software
Project Review Novembrer 17th, Project Review Agenda: Project goals User stories – use cases – scenarios Project plan summary Status as of November.
Project Review byNight byNight December 21th, 2011.
Project Review byNight byNight December 6th, 2011.
Project Review Novembrer 17th, Project Review Agenda: Project goals User stories – use cases – scenarios Project plan summary Status as of November.
Project Review byNight byNight December 5th, 2011.
Sviluppo Web Agile con Castle MonoRail Diego Guidi DotNetMarche.Start() 12 ottobre 2006.
Giovedì 17 Aprile 2008 Heroes {Community} Launch Giovedì 17 Aprile 2008.
Architettura software La scelta architetturale: MVA (Model – View – Adapter/Control) The view is completely decoupled from the model such that view and.
Corso di Web Services A A Domenico Rosaci Patterns di E-Business D. RosaciPatterns per l'e-Business.
Collection & Generics in Java
Azure: Mobile Services e Notification Hub ANDREA GIUNTA.
Prof. G.PassianteCorso di Economia dell’innovazione - A.A. 2012/13 The Process Handbook: A Tool for Business Process Redesign.
JDBC Java DataBase Connectivity SISTEMI ITIS B. CASTELLI Anno Scolastico
Transcript della presentazione:

Domain Driven Design: Overview Speaker: Giancarlo Sudano

Giancarlo Sudano (alias janky) Software Architect in Objectway Fondatore di GUISA Blog su Ugidotnet: About me:

Agenda Domain Model Domain Driven Design Conceptual Map Layering Esempi reali: Web Client Software Factory

DOMAIN MODEL

Un po di discipline...

Business Requirement Processo di vendita (testo) Processo dOrdine (testo) Use Case Model Business Requirement

Business Modeling Processo di vendita (testo) Processo dOrdine (testo) Use Case Model Business Modeling Order Custome r Product 1 1..* Domain Model Business Requirement Gli Use case, i termini, i concetti ispirano il Domain Model

Software Design Business ModelingSoftware Design Order Custome r Product 1 1..* I concetti del Dominio ispirano nomi e comportamenti delle classi del software Object ModelDomain Model

Design del Domain Layer Classificazione fatta da Fowler [PoEAA 2004] Transaction Script: Principalmente il layer sarà modellato con delle procedure che prendono linput dal layer di presentation, li processano e eventualmente trasmettono manipolazioni sui database. Table Module: Serie di classi che gestiscono la logica di business per tutte le righe sul database di una particolare entità. Domain Model: Serie di classi ispirate al modello analitico che gestiscono sia stato che comportamento. Una singola istanza rappresenta una singola entità.

Riepilogo delle definizioni Modello analitico: concettualizzazione del problema di business Domain Layer: Strato di software che rappresenta limplementazione del modello analitico Domain Layer patterns: metodologie per implementare i problemi di business –Transaction script –Table Module –Domain Model

DOMAIN DRIVEN DESIGN

...tutto cominciò... Formalizzazione fatta da Eric Evans 2003/04 nel suo libro Domain Driven Design: Tackling Complexity In The Heart Of Software Scopo del libro: –…To describe and build a vocabulary about the very art of domain modeling…

Domain Driven Design: Il portale –Informazioni –Interviste –Articoli –Discussioni –Case Stories –Esempi

Domain Driven Design: Definizione La DDD è un mindset, cioè una serie di principi e priorità, atte ad accelerare la progettazione software che ha a che fare con domini di particolare complessità.

Presupposti per la nascita di DDD Il modello analitico (cioè il risultato del lavoro degli analisti) è uno strumento di sola comprensione. Un analista poi può usare UML per la visualizzazione del modello stesso. Il modello non porterà nessun dettaglio implementativo ai fini di non inquinare la comprensione.

Quindi... l'implementazione di un modello molte volte può allontanarsi notevolmente dalla sua iniziale descrizione. La Domain Driven Design è una disciplina di progettazione atta quindi a tenere costantemente vicini/connessi il modello analitico che il modello implementativo.

Esempio classico di discostamento

La prima Conceptual Map di DDD

Entity e ValueObject

Troppa logica nelle entity? In generale si tende ad aggiungere solo i metodi essenziali ad una entity. Inserire troppa logica allinterno di una entity: + Complessità - Manutenibilità - Chiarezza, Espressività

Service Una classe Service modella, non tanto una entità di dominio, ma una regola di business Qualcosa che il software deve fare (operazione) e che non necessariamente coincide con uno stato

Restrictions: Un cliente non può inserire più di tre richieste dordine caricate sul suo credit account. Heuristics: Gli ordini di un cliente con uno stato preferenziale verranno evasi immediatamente. Computations: Il volume di ordini annuale di un cliente deve essere calcolato dal totale delle vendite chiuse entro la chiusura dellanno fiscale aziendale. Inference: Un cliente deve essere considerato preferenziale se ha almeno 5 ordini superiori a 1000 euro. Timing: Un cliente verrà archiviato se non effettua ordini per 36 mesi consecutivi. Triggers: Quando un ordine è stato spedito, una notifica di Send advance deve essere notificata ad una serie di sottoscritti Business Rules

Tipi di Services

Come distribuire logica tra Service e Entity? Una Entity con troppe responsabilità rischia di perdere in chiarezza concettuale. Entity troppo cariche sono di difficile manutenzione, refactoring e testing. Le operazioni di business, sono spesso legate ad altre entity. Esprimere queste operazioni come metodo di una Entity, aumenta la sua dipendenza da altri oggetti

Service dipendenti da classi (non da id)

Responsabilità di creare e assemblare oggetti particolarmente complessi. La logica di creazione di grafi immersa nel costruttore stesso, potrebbe non essere una buona idea. Factory

Responsabilità del ciclo di vita delle Entity. Responsabilità infrastrutturali di persistenza quali Identity Map, Cache. Repository

LAYERING

Isolare il codice dalla interfaccia utente Isolare il codice di accesso al database Contesto classico

Presentation Business Logic Data Access Soluzione classica

WinForm Business Logic Data Access (database A) Compact Framework Data Access (database B) Web FormWPF Form Soluzione classica

Non se ne può più...andiamo oltre

Dominio –Domain Model quanto più indipendente da tutte le altre parti del sistema. –E buona norma rendere il DM facilmente testabile, modificabile. –Minimizzare la dipendenza anche dalle API di.NET. Presentation Layer –Riutilizzo più pesante del codice tra una Presentation Layer ed un altro –Migliorare le capacità di Test delle View e della logica di Flusso Servizi: –Distinzione tra servizi infrastrutturali e applicativi Requisiti più alti

Isolamento: Layering User Interface (Presentation Layer) Responsible for presenting information to the user and interpreting user commands. Application Layer This is a thin layer which coordinates the application activity. It does not contain business logic. It does not hold the state of the business objects, but it can hold the state of an application task progress. Domain Layer This layer contains information about the domain. This is the heart of the business software. The state of business objects is held here. Persistence of the business objects and possibly their state is delegated to the infrastructure layer. Infrastructure Layer This layer acts as a supporting library for all the other layers. It provides communication between layers, implements persistence for business objects, contains supporting libraries for the user interface layer, etc.

Soluzione Presentation Business Logic Data Access UI Process Coordina le attività dellapplicazione. Non contiene logica di business. Non gestisce lo stato delle Entity, ma gestisce lo stato dellapplicazione e dei progresso dei task Può eseguire Processi di Business e Servizi in seguito a comandi dalla UI o a Eventi Esterni

Confusioni sui nomi di layer? Presentation Business Data Access UI Process Presentation Domain Data Access Controller/ Mediator Presentation Domain Data Source Application Controller Presentation Domain Infrastructure Application = = = = Brown Martin Fowler Eric Evans Presentation Business Data Access... DNA, J2EE

Soluzione UI Process Data Access Business Rules Entity (detto anche Core) Presentation Security ServiceAltri Service Business Process Validations

Soluzione UI Process Data Access Business Rules Entity (detto anche Core) Presentation Security ServiceAltri Service Business Process Validations

Service Gateway Layered Applications

Presentation Layer UserInterface Process Layer CAB, CWAB, Acropolis, MonoRail, Workflow Foundation Service Layer ORM NHibernate, Linq to SQL, Genome DatabaseLegacyWebServicesEnterpriseServicesLDAP Dependency Injection Framework (Spring.NET, Windsor) AOP Framework Spring.net, Policy Injection Application Block Business Process Layer Workflow Foundation, BizTalk, Spring Validation, Validation Application Block DataAccess Layer Authorization CrossCutting Utility Class Exception Handling, Logging, Security Domain Layer Authentication Log e Trace Transaction Management

ALTRE NAVIGATION MAPS

Supple Design Patterns Eric Evans: Domain Driven Design [2006]

Model Integrity Patterns Eric Evans: Domain Driven Design [2006]

Riferimenti Libro: Domain Driven Design: Tackling Complexity In The Heart Of Software [Eric Evans 2003] Libro: Applying Domain-Driven Design and Patterns [Jimmy Nilsson 2006] Libro: Domain Driven Design Quickly [InfoQ 2006] (gratuito, scaricabile da internet) Seguite il mio blog: iniziativa: Domain Model e Enterprise Application