SOFTWARE SOLIDO E USABILE

Похожие документы
Software solido e usabile

Strumenti di modellazione. Gabriella Trucco

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

Object Oriented Software Design

Groups vs Organizational Units. A cura di Roberto Morleo

7. Architetture Software

Progettazione : Design Pattern Creazionali

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

Stima dell'effort. IT Project Management. Lezione 6 Stima dell effort Federica Spiga. Monitoring del progetto (Earned Value)

I MODELLI STATISTICO-MATEMATICI PER I MERCATI DELL ENERGIA DAL MONDO ACCADEMICO ALL'INDUSTRIA

Ingegneria del Software

Ciclo di vita del software

Test e collaudo del software Continuous Integration and Testing

lem logic enterprise manager

L o. Walter Ambu japs: una soluzione agile (

Distributed Object Computing

Introduzione ai Web Services Alberto Polzonetti

Cos è il CRM. Andrea De Marco

Gestione dello sviluppo software Modelli Agili

Progettazione di Basi di Dati

Software Product Lines (SPL)

IS Governance. Francesco Clabot Consulenza di processo.

Sistemi di BPM su Cloud per la flessibilità delle PMI

Ciclo di vita dimensionale

Metodologie Agili per lo sviluppo di applicazioni Internet Distribuite. Agile Group DIEE, Università di Cagliari

Archivi e database. Prof. Michele Batocchi A.S. 2013/2014

Estendere Lean e Operational Excellence a tutta la Supply Chain

Corso di Laurea Specialistica in Ingegneria Informatica. Corso di Ingegneria del Software A. A Class Discovery E.

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

UniRoma2 - Ingegneria del Software 1 1

La portata del software

Ministero dell Istruzione, dell Università e della Ricerca. Allegato 9 - Profili Professionali

Dai sistemi documentari al knowledge management: un'opportunità per la pubblica amministrazione

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

Rational Unified Process Introduzione

Introduzione al Semantic Web

IBM Software Demos The Front-End to SOA

La reingegnerizzazione dei processi nella Pubblica Amministrazione

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. D. Talia - UNICAL. Sistemi Operativi 9.1

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. Implementazione del File System. Struttura del File System. Implementazione

Indice. Ingegneria dei requisiti e gestione agile. User-Centered Development Esempi di artefatti. Domain Driven Design. Design for Testability

Capitolo 13. Interrogare una base di dati

Il documento rappresenta una guida sintetica per descrivere i concetti che sono alla base delle entità Contratto, Fase e Lotto in recuper@2.

Introduzione. Il software e l ingegneria del software. Marina Mongiello Ingegneria del software 1

INGEGNERIA DEL SOFTWARE. Prof. Paolo Salvaneschi

Introduzione Ai Data Bases. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San giovanni

Il Building Information Modelling (BIM)

N 1 alla versione bilingue (italiano-inglese) NORMA UNI EN ISO 9001 (novembre 2008) Sistemi di gestione per la qualità - Requisiti.

Introduzione al data base

ISO Revisions Whitepaper

Gestione del workflow

AGENDA CRM-CUSTOMER RELATIONSHIP MANAGEMENT- IL CASO STARWOODHOTELS &RESORT. La Starwood. Conoscenza del prodotto. Il CRM e le informazioni

WorkFlow Management Systems

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 /

Progetto Turismo Pisa

L esigenza di un Trusted Cloud. Fabrizio Leoni - Infocert

Politica per la Sicurezza

ING SW. Progetto di Ingegneria del Software. e-travel. Requisiti Utente. Specifiche Funzionali del Sistema

Siti web centrati sui dati Architettura MVC-2: i JavaBeans

Database: collezione di fatti, registrabili e con un ben preciso significato, relazionati fra di loro

Gestione Unica Utenti End User Support and Application Management Services

Corso di Amministrazione di Sistema Parte I ITIL 1

Dolphin s Booking Management Module

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

Architetture software

Telerilevamento e GIS Prof. Ing. Giuseppe Mussumeci

Un approccio innovativo per il delivery di servizi in infrastrutture di nomadic computing

ARCHITETTURE DI SISTEMI INTEGRATI PER APPLICAZIONI SPECIFICHE. Design Flow

Architettura MVC-2: i JavaBeans

Raccolta dei Requisiti con i Casi D'uso. Corso di Ingegneria del Software Anno Accademico 2012/13

Object-Relational Mapping

Danais s.r.l. Profilo Aziendale

KPMG & Dipartimento di Economia Politica e Metodi Quantitativi Università degli Studi di Pavia Progetto studio di sistemi di Data Mining

B U S I N E S S M O D E L C A N V A S. Prof. Rosario Faraci 18 luglio 2014

Infrastruttura di produzione INFN-GRID

Progettaz. e sviluppo Data Base

ICT Governance: l anello debole della catena fra Business & IT. Franco Mastrorilli Quint Wellington Redwood Italia

Self Booking on line by e-travel Management. L importanza di un On Line Booking Tool Tailor Made, come leva per ridurre i costi dei viaggi

Sistemi informativi secondo prospettive combinate

Simple & Efficient.

Lean Organization EXCELLENCE CONSULTING OUTSOURCING STRATEGIES ACCOUNTABILITY TRAINING TO CHANGE

Base di dati e sistemi informativi

Organizzazione degli archivi

Caso d Uso: AcquistoAbbonamentoStudentiSettimanaleGiornaliero Breve descrizione. Procedura per la registrazione al servizio CicloPi.

Replica di Active Directory. Orazio Battaglia

Una metodologia per la specifica di software basato su componenti

Project Management. Modulo: Introduzione. prof. ing. Guido Guizzi

SQL: concetti base SQL. Definizione dei dati in SQL. SQL: "storia"

L obiettivo che si pone è di operare nei molteplici campi dell informatica aziendale, ponendosi come partner di riferimento per l utenza aziendale.

Транскрипт:

SOFTWARE SOLIDO E USABILE L approccio Domain-Driven Design 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

Perché una componente di dominio esplicita? Why bother with (domain) models? ˮ The critical complexity of most software projects is in understanding the business domain itself ˮ (Eric Evans) 3

Dominio applicativo: cargo shipping, logistica 4

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 tipico 5 Side effects YOURLOGO by

Perché una componente di dominio esplicita class Class Model Voyage Stops class Class Model 0..* start 1 Voyage 1..* Leg stop 1 Stop class Class Model «enumerati... LegType alternativeroute 0..1 MARITTIME AERIAL Voyage Itinerary Leg mainroute 0..1 0..* stop 1 start Stop 1 6

Pattern tattici del Domain-Driven Design Ubiquitous Language Entity vs. Value Objects Aggregates Factory e Repository Services Modules Domain-Driven Design Tactics 7

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 8

Modelli profondi Modelli profondi danno forma alla conoscenza di dominio riducendo lo scollamento tra analisi e progetto 9

Modelli profondi Modelli profondi nascono da frequenti iterazioni con esperti di domino per raffinare, estendere e validare il linguaggio ubiquo Se non hai un modello alternativo non hai un modello profondo 10

Un modello opaco Esempio: sistema di logistica Regola di business: Il sistema di prenotazione ammette un overbooking del 10% class Cargo Policy cablata nel servizio public int makebooking(cargo cargo, Voyage voyage) { double maxbooking = voyage.capacity() * 1.1; double actualcapacity= voyage.bookedcargosize() + cargo.size(); Voyage - maxcapacity :long 0..* Cargo - size :double } if (actualcapacity > maxbooking) return 1;... return confirmation; 11 BookingManager + makebooking() Quali responsabilità? Nessuna specifica! Quindi troppe!! Regola cablata

Modelli profondi: esplicitare la conoscenza di dominio Servizi al posto dei manager Le regole diventano classi class Cargo2 Voyage - maxcapacity :long «Invariant» {sum(cargo.size) < voyage.maxcapacity * 1.1} CargoOv erbookingpolicy + IsAllowed() Cargo - size :double 0..* // BookingService public int makebooking(cargo cargo, Voyage voyage) { if (!overbookingpolicy.isallowed(cargo, voyage)) return 1;... return confirmation; } // CargoOverbookingPolicy public boolean isallowed(cargo cargo, Voyage voyage) { boolean canoverbook= (cargo.size() + voyage.bookedcargosize()) <= (voyage.capacity() * 1.1); } return canoverbook; BookingServ ice 12

Pattern strategici del Domain-Driven Design Bounded Context Context Map Relationships between Bounded Contexts SHARED KERNEL CUSTOMER/SUPPLIER CONFORMIST ANTICORRUPTION LAYER OPEN HOST SERVICE PUBLISHED LANGUAGE PARTNERSHIP BIG BALL OF MUD SEPARATE WAYS Domain-Driven Design Strategies 13

Bounded Context 14 (Vaughn Vernon)

Bounded-Context Identifica un sottodominio specializzato Ubiquitous Language is ubiquitous only inside a context Un BOUNDED CONTEXT è un Dialetto del Linguaggio Ubiquo Es. Nella logistica il dominio del routing ha un corrispondente dominio tecnico: percorsi di costo minimo sui grafi Un BOUNDED CONTEXT isola conoscenza specialistica (Informazione contestuale) dentro al dominio applicativo

Bounded Context (cont.) class BoundedContext Cargo - size :double CargoOv erbookingpolicy + IsAllowed() 0..* Leg - origin :Place - destination :Place 1..* Voyage - origin :Place - destination :Place - maxcapacity :long RoutingServ ice FindBestPathServ ice Graph GraphTrav ersalalgoritm BookingServ ice 16

Relazioni tra bounded-context Partnership: coordinated planning of development and joint management of integration Shared Kernel: intimate interdependency with some subset of the domain model that teams agree to share Customer-Supplier: two teams in Upstream-Downstream (U-D) relationship: the U team may succeeds interdependently on the fate of the D team (D team has some power to ask for changes in the U model) Downstream team: customer Upstream team: supplier 17

Relazioni tra bounded-context (cont.) Anti-Corruption Layer (ACL): defensive translation layer between Bounded Contexts used when control or communication between teams is difficult; isolated layer used to provide the functionality of the U system in terms of the D model Conformist: two teams in U-D relationship where the U team has no motivation to satisfy the D team s needs; D team eliminates the complexity of translation between bounded contexts by slavishly adhering to the model of the U team 18

Relazioni tra bounded-context (cont.) Open Host Services: protocol that give access to the U model as a set of services Published Language: well-documented, shared language (often combined with OHS) to make the translation between two Bounded Contexts Separate Ways: two Bounded Contexts with no connection to each other Big-Ball of Mud: mixed models with inconsistent boundaries where sophisticated modeling is not economically sustainable 19

Context Map Descrive lo stile di collaborazione tra team responsabili di contesti diversi Descrive il livello di interdipendenza tra contesti diversi in un sistema Alberto Brandolini. Strategic Domain Driven Design with Context Mapping. InfoQ. 2009. http://www.infoq.com/articles/ddd-contextmapping 21

Ridurre la fracture tra analisi e implementazione Analista Il sistema dive permettere all'utente di definite le tratte del viaggio Tratta Flag Due record M, Fermata A,... Sviluppatore Una tratta è una coppia di record Fermata. Il primo record è start, Il secondo stop Experts di dominio Flag M, A,... Sviluppatore Il flag M nel record Fermata mi dice che si tratta di una tratta marittima In base al tipo di tratta viene elaborato un modello di costi diverso Tipo di Tratta Cliente Se è presente nel viaggio una tratta marittima, allora il sistema deve fornire un itinerario 22 alternativo Itinerario Array di record Fermata Sviluppatore Un itinerario è un array ordinate di record Fermata