Introduzione al Domain Driven Design (DDD)DotNetMarche
In questa sessione si approfondirà il concetto di Domain Driven Design, un principio di progettazione che può essere visto come una “forma-mentis” per aiutare a concepire e modellare applicazioni enterprise che fanno un forte uso del Domain Model. Questa metodologia, introdotta da Eric Evans, mette in risalto il dominio applicativo di un progetto, costituendo quindi il collante tra il modello analitico e il modello implementativo e trovando la sua naturale applicazione in ambienti di sviluppo agili come Extreme Programming. Come completamento della sessione verranno esaminate alcune tecniche di Layering e pattern architetturali che ben si sposano con questa tecnica.
As UX becomes increasingly Agile, a need arises to quickly create and iterate new interface elements. Many popular frameworks exist to document front-end design patterns. Most of them connect directly to the website's CSS, and help developers easily create new interface elements and templates.
But what happens when the design and UX team can't work in code? How can we create truly cross-functional design documentation that works both for developers and designers?
In this session, we will describe the process we have been working on to document our existing design patterns and create a working set of elements that allow both for rapid iteration of design prototypes and implementation of templates in code.
This session is for UXers who work with teams that include both front-end developers and visual/interaction designers, who need to create and iterate on interfaces in rapid, Agile environments.
DDD - 1 - A gentle introduction to Domain Driven Design.pdfEleonora Ciceri
An introduction to Domain Driven Design, including definitions of domain experts, ubiquitous language, domains and subdomains, models, bounded contexts and context maps
Using SmartNICs to Provide Better Data Center Security - Jack Matheson - 44CO...44CON
Data Center security has been forced to reinvent itself as software complexity increases, networking capabilities grow more agile, and attack complexity turns unmanageable. With this change, the need for security policy enforcement to be handled at the edge has pushed functionality onto host compute systems, resulting in inherent performance loss and security weakness due to consolidation of resources.
In the first part of the talk we will be presenting a SmartNIC-based model for data-center security that solves both the performance problem and the security problems of edge-centric policy models. The model features a more robust isolation of responsibilities, superior offload capabilities, significantly better scaling of policy, and unique visibility opportunities.
To illustrate this, we present a SmartNIC-based reference architecture for network layout, as well as examples of SmartNIC security controls and their resulting threat models.
The second part of the talk will unveil a new innovative technique for tamper proof host introspection as SmartNICs are in a unique position to analyze and inspect the memory of the host to which they are attached. Normally, this functionality is reserved for a hypervisor, where it is known as ‘guest introspection’ or ‘virtual-machine introspection’. With host introspection, security controls no longer live in the hypervisor, but on the SmartNIC itself, on a separate trust domain. In this way, the visibility normally achieved with guest introspection can be performed for the entire host memory in an isolated and secure area. In order for host introspection to work in the same way as guest introspection, memory is DMA transferred in bursts over the PCI-e bus that attaches the SmartNIC to the host. As this method can be subverted to hide unwanted software, we will demonstrate a novel approach to tamper proof the acquisition of memory and for performing live introspection.
Host introspection complements the network controls implemented using the SmartNIC by enabling the measurement of the integrity and the behavior of workloads (virtual machines, containers, bare metal servers) to identify possible indicators of compromise. The visibility and context gained also enhances the granularity of network controls, resulting in measurably better security for the data center compared to traditional software-only based controls.
Introduzione al Domain Driven Design (DDD)DotNetMarche
In questa sessione si approfondirà il concetto di Domain Driven Design, un principio di progettazione che può essere visto come una “forma-mentis” per aiutare a concepire e modellare applicazioni enterprise che fanno un forte uso del Domain Model. Questa metodologia, introdotta da Eric Evans, mette in risalto il dominio applicativo di un progetto, costituendo quindi il collante tra il modello analitico e il modello implementativo e trovando la sua naturale applicazione in ambienti di sviluppo agili come Extreme Programming. Come completamento della sessione verranno esaminate alcune tecniche di Layering e pattern architetturali che ben si sposano con questa tecnica.
As UX becomes increasingly Agile, a need arises to quickly create and iterate new interface elements. Many popular frameworks exist to document front-end design patterns. Most of them connect directly to the website's CSS, and help developers easily create new interface elements and templates.
But what happens when the design and UX team can't work in code? How can we create truly cross-functional design documentation that works both for developers and designers?
In this session, we will describe the process we have been working on to document our existing design patterns and create a working set of elements that allow both for rapid iteration of design prototypes and implementation of templates in code.
This session is for UXers who work with teams that include both front-end developers and visual/interaction designers, who need to create and iterate on interfaces in rapid, Agile environments.
DDD - 1 - A gentle introduction to Domain Driven Design.pdfEleonora Ciceri
An introduction to Domain Driven Design, including definitions of domain experts, ubiquitous language, domains and subdomains, models, bounded contexts and context maps
Using SmartNICs to Provide Better Data Center Security - Jack Matheson - 44CO...44CON
Data Center security has been forced to reinvent itself as software complexity increases, networking capabilities grow more agile, and attack complexity turns unmanageable. With this change, the need for security policy enforcement to be handled at the edge has pushed functionality onto host compute systems, resulting in inherent performance loss and security weakness due to consolidation of resources.
In the first part of the talk we will be presenting a SmartNIC-based model for data-center security that solves both the performance problem and the security problems of edge-centric policy models. The model features a more robust isolation of responsibilities, superior offload capabilities, significantly better scaling of policy, and unique visibility opportunities.
To illustrate this, we present a SmartNIC-based reference architecture for network layout, as well as examples of SmartNIC security controls and their resulting threat models.
The second part of the talk will unveil a new innovative technique for tamper proof host introspection as SmartNICs are in a unique position to analyze and inspect the memory of the host to which they are attached. Normally, this functionality is reserved for a hypervisor, where it is known as ‘guest introspection’ or ‘virtual-machine introspection’. With host introspection, security controls no longer live in the hypervisor, but on the SmartNIC itself, on a separate trust domain. In this way, the visibility normally achieved with guest introspection can be performed for the entire host memory in an isolated and secure area. In order for host introspection to work in the same way as guest introspection, memory is DMA transferred in bursts over the PCI-e bus that attaches the SmartNIC to the host. As this method can be subverted to hide unwanted software, we will demonstrate a novel approach to tamper proof the acquisition of memory and for performing live introspection.
Host introspection complements the network controls implemented using the SmartNIC by enabling the measurement of the integrity and the behavior of workloads (virtual machines, containers, bare metal servers) to identify possible indicators of compromise. The visibility and context gained also enhances the granularity of network controls, resulting in measurably better security for the data center compared to traditional software-only based controls.
Using the Actor Model with Domain-Driven Design (DDD) in Reactive Systems - w...Lightbend
Is the Actor Model just a new "shiny object" for developers to chase after, a fad soon to be abandoned? In fact, the Actor Model was first designed in 1973–over 20 years before brands like Yahoo! and Hotmail first arrived at the burgeoning internet. Created to address the long-term direction of computing and software development, it is almost as old as the formal definition of object-oriented programming.
Fast forward to 2017, where we are faced with an online and mobile world that continues to grow exponentially, and a third wave of IoT aims to add hundreds of billions of connected devices to our lives.
To manage today’s demanding needs and to prepare for the coming wave, enterprises like Intel, Samsung, Walmart, PayPal, Hootsuite, and Norwegian Cruise Lines are embracing distributed, Reactive systems deployed on hybrid cloud infrastructures. Central to these systems and applications is the Actor Model, which is seeing “renewed interest as cloud concurrency challenges grow,” according to Forrester Research.
In this webinar, special guest Vaughn Vernon explains why actors are so vital to the future of software development. You will learn:
- Why actors are so exceptionally well-suited for use with Domain-Driven Design, speaking the Ubiquitous Language of your core business domain.
- How actors are designed to gracefully handle failure, maintaining system resilience and responsiveness to users no matter what’s happening.
- How actors help you reactively scale your systems meet concurrency demands, elastically growing up and out to handle peak load, and shrinking when not minimizing your infrastructure and hardware footprint.
Second presentation on domain-driven design. In this presentation tactical designs are presented, describing what value objects, entities, aggregates, domain events and domain services are (and how they can be implemented)
Software application architecture is an interesting and broadly discussed topic. In this presentation, I am discussing N-Tier application architecture. Going to investigate: What is architecture? Kinds of N-Tier application architecture and its advantage and disadvantage.
There is also a very basic quiz at the end of the session.
Advanced Software Engineering course, a.y. 2014-2015
http://lore.com/Advanced-Software-Engineering-Univaq/
This lecture is about Architecture Description Languages. What they are, how they evolved in time, current challenges and perspectives.
Patterns (et anti-patterns) d’architecture ou comment mieux concevoir ses app...Microsoft
Développer des applications d'entreprises ou métiers, de nos jours devient de plus en plus difficile. Les applications sont de plus en plus complexes et les spécifications fonctionnelles instables et changeantes au gré des clients. Pour gérer aux mieux ces difficultés, de bonnes pratiques qui ont fait leurs preuves existent et de nouvelles tendances d’architecture et de design émergent. Que vous soyez développeurs ou architectes, cette session orientée technique vous intéressera car elle vous délivrera différents patterns (et anti-patterns à éviter) pour mieux concevoir l'architecture de vos applications métiers et ainsi mieux absorber les difficultés. On y abordera plusieurs aspects et problématiques récurrentes et comment les résoudre de façon efficace, en illustrant le tout par des exemples d’implémentation possible. Nous y verrons aussi une introduction aux nouvelles tendances d’approche comme le Domain Driven Design (DDD) ou d’architecture comme Command and Query Responsibility Segregation (CQRS) et ce que ces concepts peuvent nous apporter.
Explain Domain-Driven Design, its main concepts and tools, and the Event Storming practice to highlight the importance of a good design and empower a team to start using it progressively.
Independently from the DevOps movement but starting from the same problems, Google developed its own strategy defining a new specific role called SRE (Site Reliability Engineer). This introduction tries to explain the history and the concept of this methodology and to compare it with the DevOps manifesto to understand what does it mean to adopt DevOps and what does it mean to be an SRE and what the two things are sharing and where they diverge.
Using the Actor Model with Domain-Driven Design (DDD) in Reactive Systems - w...Lightbend
Is the Actor Model just a new "shiny object" for developers to chase after, a fad soon to be abandoned? In fact, the Actor Model was first designed in 1973–over 20 years before brands like Yahoo! and Hotmail first arrived at the burgeoning internet. Created to address the long-term direction of computing and software development, it is almost as old as the formal definition of object-oriented programming.
Fast forward to 2017, where we are faced with an online and mobile world that continues to grow exponentially, and a third wave of IoT aims to add hundreds of billions of connected devices to our lives.
To manage today’s demanding needs and to prepare for the coming wave, enterprises like Intel, Samsung, Walmart, PayPal, Hootsuite, and Norwegian Cruise Lines are embracing distributed, Reactive systems deployed on hybrid cloud infrastructures. Central to these systems and applications is the Actor Model, which is seeing “renewed interest as cloud concurrency challenges grow,” according to Forrester Research.
In this webinar, special guest Vaughn Vernon explains why actors are so vital to the future of software development. You will learn:
- Why actors are so exceptionally well-suited for use with Domain-Driven Design, speaking the Ubiquitous Language of your core business domain.
- How actors are designed to gracefully handle failure, maintaining system resilience and responsiveness to users no matter what’s happening.
- How actors help you reactively scale your systems meet concurrency demands, elastically growing up and out to handle peak load, and shrinking when not minimizing your infrastructure and hardware footprint.
Second presentation on domain-driven design. In this presentation tactical designs are presented, describing what value objects, entities, aggregates, domain events and domain services are (and how they can be implemented)
Software application architecture is an interesting and broadly discussed topic. In this presentation, I am discussing N-Tier application architecture. Going to investigate: What is architecture? Kinds of N-Tier application architecture and its advantage and disadvantage.
There is also a very basic quiz at the end of the session.
Advanced Software Engineering course, a.y. 2014-2015
http://lore.com/Advanced-Software-Engineering-Univaq/
This lecture is about Architecture Description Languages. What they are, how they evolved in time, current challenges and perspectives.
Patterns (et anti-patterns) d’architecture ou comment mieux concevoir ses app...Microsoft
Développer des applications d'entreprises ou métiers, de nos jours devient de plus en plus difficile. Les applications sont de plus en plus complexes et les spécifications fonctionnelles instables et changeantes au gré des clients. Pour gérer aux mieux ces difficultés, de bonnes pratiques qui ont fait leurs preuves existent et de nouvelles tendances d’architecture et de design émergent. Que vous soyez développeurs ou architectes, cette session orientée technique vous intéressera car elle vous délivrera différents patterns (et anti-patterns à éviter) pour mieux concevoir l'architecture de vos applications métiers et ainsi mieux absorber les difficultés. On y abordera plusieurs aspects et problématiques récurrentes et comment les résoudre de façon efficace, en illustrant le tout par des exemples d’implémentation possible. Nous y verrons aussi une introduction aux nouvelles tendances d’approche comme le Domain Driven Design (DDD) ou d’architecture comme Command and Query Responsibility Segregation (CQRS) et ce que ces concepts peuvent nous apporter.
Explain Domain-Driven Design, its main concepts and tools, and the Event Storming practice to highlight the importance of a good design and empower a team to start using it progressively.
Independently from the DevOps movement but starting from the same problems, Google developed its own strategy defining a new specific role called SRE (Site Reliability Engineer). This introduction tries to explain the history and the concept of this methodology and to compare it with the DevOps manifesto to understand what does it mean to adopt DevOps and what does it mean to be an SRE and what the two things are sharing and where they diverge.
Too often we model processes around the myth of Database Transactions, ofter forgetting what a transaction really means in the real world. This talk shows an easy and cheap approach to use together with EventStorming in order to include User Experience into process modelling
CQRS, ovvero: 2 stack, uno per "leggere" e l'altro per "scrivere". Se per "scrivere" abbiamo l'imbarazzo della scelta (Domain Model, Command, Event Sourcing, ...) per leggere, invece, apparentemente c'è poco da dire. "Apparentemente", appunto. Parliamone :-)
Most software development processes are focused on tracking and delivery. Unfortunately, writing code is no longer the bottleneck. The real bottleneck is the team ability to learn about the domain complexity and do the right thing.
[AxonIQ Italia Community] Architetture distribuite a eventi: sono adatte al m...Corrado Musumeci
Architetture distribuite a eventi: sono adatte al mio progetto?
Una rapida introduzione ai vantaggi che possiamo ottenere dall'adozione di una architettura a microservizi guidata dagli eventi.
Quali sono i problemi che tipicamente affliggono i sistemi software complessi?
Quali di questi problemi possono risolti adottando un approccio distribuito?
Che complessità dobbiamo affrontare nello sviluppo di applicazioni distribuite?
Cercheremo di sviscerare questi e altri dubbi relativi all'implementazione di sistemi event-driven distribuiti.
Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...Massimo Cenci
La naming convention è una componente fondamentale di ogni progetto informatico.
L’obiettivo di questo articolo è quello di suggerire uno standard di nomenclatura
pratico ed efficace per un progetto di Data Warehouse.
(parte 1)
This set of design patterns are related to Enterprise Patterns. In it you can find, J2EE, Presentation, Business & Integration Patterns (such as: ApplicaCon Controller, Data Transfer Object (DTO), Business Object (BO) & Data Access Object (DAO) among others ...)
AreaMVC: un'architettura software basata sulla semplicitàGiulio Destri
Come usare il pattern MVC per creare una architettura semplice e flessibile con cui ottenere software manutenibile e facilmente adattabile a nuove esigenze. Usabile in .NET e Java.
Grazie a Team Foundation Build è possibile adottare pratiche di integrazione continua nel proprio progetto. In questa presentazione viene introdotta la struttura di tfs build assieme alle tecniche base per effettuare una customizzazione della build.
Abilitare le organizzazioni e le persone ad adottare con successo il CloudAmazon Web Services
Una migrazione al cloud si compone di tre pilastri: persone, processi e tecnologia. Troppo spesso, le organizzazioni si concentrano sul miglioramento dei processi e sull’implementazione tecnologica, ma ignorano l’aspetto umano. Molti leader ammettono che i primi due sono semplici da modificare, mentre influenzare la cultura è più complicato. Questa sessione affronta i metodi migliori per aiutare ai clienti come affrontare questa sfida. Scopri i ruoli e le responsabilità pertinenti alla fase di transizione e di post-adozione del cloud. Valuta i gap della tua organizzazione tra le capacità e le competenze richieste. Crea modelli di addestramento efficienti che portano ad un’efficace cultura DevOps.
Speaker: Danilo Poccia, Senior Evangelist, Serverless, AWS
XeDotNet meeting del 5 Marzo 2013
In questa sessione vedremo come Knockout.js permetta di scrivere codice JavaScript in modo pulito e organizzato, semplificando la scrittura del codice e la sua manutenzione. Come lo si utilizza KO? Quali vantaggi ci offre? Quali librerie ci vengono in aiuto? Quali sarebbe meglio evitare?
1. Giovedì, 21 giugno 2012
Speaker: Manuel Scapolan
2. Domain Driven
Design
E’ un insieme di principi che ci
aiutano a non fallire nel processo
di sviluppo di un software *
* considerando tutte le fasi del ciclo di vita!
3. Alcuni dei più grandi
fallimenti della storia:
Sources: Business Week, CEO Magazine,
Computerworld, InfoWeek, Fortune, The
New York Times, Time, and The Wall
Street Journal.
8. Ubiquitous Language
E’ importante conoscere e utilizzare lo
stesso vocabolario degli esperti di
dominio (domain experts) per poterlo
poi condividere a tutti i livelli,
fino al codice!
9. Parlare tutti lo stesso
linguaggio dall’esperto di
dominio, all’analista fino
allo sviluppatore, significa
portare nel codice i
termini comunemente
utilizzati dal business.
Vuol dire che devo scrivere
il codice in italiano???
In nome dell’Ubiquitous
Language può essere
necessario …
10. Domain Model
La conoscenza deve essere tradotta in
un modello concettuale il più possibile
fedele alla realtà da rappresentare
secondo lo scopo dell’applicazione che
ne deve fare uso
11. Domain Model Pattern
“An object model of the domain that
incorporates both behavior and data”
Martin Fowler
PoEAA
12. Mi stai forse dicendo che
fare Domain-Driven
Design significa realizzare
un modello ad oggetti che
rifletta la realtà che
l’applicazione dovrà
gestire?
Non lo facevamo già
questo con l’OOP?
Ci sono forse delle
indicazioni su come devo
disegnare le mie classi?
14. Entities
Elementi del dominio identificati in modo
univoco indipendentemente dai valori dei loro
attributi che possono variare nel tempo
public class Order : IEquatable<Order>
{
public bool Equals(Order other)
{
return this.Id.Equals(other.Id);
}
}
15. Value Objects
Elementi del dominio identificati attraverso
l’insieme dei loro attributi, generalmente
immutabili, l’unico cambiamento è dato dalla
completa sostituzione (no side-effect)
public class ShippingAddress : IEquatable< ShippingAddress >
{
public bool Equals(ShippingAddress other)
{
return this.Street.Equals(other. Street)
&& this.PostCode.Equals(other.PostCode)
&& this.City.Equals(other.City);
}
}
17. L’aggregato segue alla
perfezione la regola
dell’incapsulamento in
quanto le entità e i value
object che lo compongono
non possono essere
acceduti direttamente, ma
devono essere manipolati
attraverso l’entità definita
come aggregate root.
Ma allora come faccio
l’accesso ai dati?
24. Read Model
Per le informazioni in sola lettura
(come ad esempio quelle statistiche)
possiamo usare un modello costruito
appositamente per velocizzare
ricerche, query e filtri
Ad esempio tra le classi di questo modello potrei avere
BestSellerProductItem e BestSellerProductView
28. “Every method should either be a
command that performs an action, or a
query that returns data to the caller, but
not both.”
Command-query separation (CQS) principle,
Bertrand Meyer
29. Il Domain Model conserva
e gestisce la logica di
business con tutte le sue
regole. Se pensiamo alle
modifiche da applicare al
modello sono sempre il
frutto di una particolare
Domain Model richiesta o task.
Ogni richiesta può essere
benissimo tradotta
nell’esecuzione di un
comando ben preciso.
35. Nella parte dedicata al
Read Model una serie di
event handlers catturano
gli eventi del Domain
Model invocando dei
componenti chiamati
“Denormalizer” che
scompongono le
informazioni trasmesse
dall’evento e le utilizzano
per aggiornare il database Read Model
dedicato alla lettura.
36. … e come fa l’evento a raggiungere il
suo handler?
40. Event Sourcing
Se facciamo in modo che nell’evento ci sia
la logica di applicazione delle modifiche
possiamo pensare di salvare gli eventi e
avere così un sistema che mi permetta di
ricostruire lo stato di un aggregato a
partire da una serie di eventi
41.
42. Credits
Le immagini contenute in questa presentazione delle
quali non è stata esplicitata la provenienza hanno
licenza Creative Commons
Slide 1: http://www.flickr.com/photos/26429107@N03/2508680764/
Slide 12: http://www.flickr.com/photos/14456988@N00/5730592664
Slide 17: http://www.flickr.com/photos/39384443@N00/3278857246/
43. Thank You MANUEL SCAPOLAN
website: www.manuelscapolan.it
twitter: manuelscapolan
e-mail: info@manuelscapolan.it