SlideShare une entreprise Scribd logo
1  sur  29
“It is not the strongest of
the species that survives, nor
the most intelligent that
survives. It is the one that is the
most adaptable to change.”
- Charles Darwin
What is a Problem Domain ?
In a Nutshell
Domain-DrivenDomain-Driven
Value.
Value.
How to get it ?
“A Big Ball of Mud is a haphazardly structured,
sprawling, sloppy, duct-tape-and baling-wire,
spaghetti-code jungle.” - Brian Foote and Joseph Yoder
“It doesn’t take a lot of skill to get a
program to work. The skill comes in
when you have to keep it working.”
- Robert C. Martin @unclebobmartin
How Domain-Driven Design
Can Help ?
Model What Is Core.
Core Domain
Domain Model
Ubiquitous Language.
The Problem Space
The Solution Space
• Domain-Driven Design is a development philosophy that values
teams understanding the domain they are writing software for
above anything else.
• It is a collaboration philosophy focused on delivery with
communication playing a central role.
• The creation of a shared language is vital for knowledge sharing
and domain understanding by the development team and
business experts.
• Domain-Driven Design is more problem solving through
collaboration than code patterns language.
• Learning and creating a language to communicate about the
problem domain is the process of Domain-Driven Design, code is
the artifact.
@toni_e
steves

Contenu connexe

Tendances

Strategic Domain-Driven Design by Nick Tune at #AgileIndia2019
Strategic Domain-Driven Design by Nick Tune at #AgileIndia2019Strategic Domain-Driven Design by Nick Tune at #AgileIndia2019
Strategic Domain-Driven Design by Nick Tune at #AgileIndia2019
Agile India
 

Tendances (20)

A Practical Guide to Domain Driven Design: Presentation Slides
A Practical Guide to Domain Driven Design: Presentation SlidesA Practical Guide to Domain Driven Design: Presentation Slides
A Practical Guide to Domain Driven Design: Presentation Slides
 
Introduction to Domain Driven Design
Introduction to Domain Driven DesignIntroduction to Domain Driven Design
Introduction to Domain Driven Design
 
Domain-Driven Design: The "What" and the "Why"
Domain-Driven Design: The "What" and the "Why"Domain-Driven Design: The "What" and the "Why"
Domain-Driven Design: The "What" and the "Why"
 
Domain Driven Design Introduction
Domain Driven Design IntroductionDomain Driven Design Introduction
Domain Driven Design Introduction
 
DDD - What, why, how?
DDD - What, why, how?DDD - What, why, how?
DDD - What, why, how?
 
Domain Driven Design: Zero to Hero
Domain Driven Design: Zero to HeroDomain Driven Design: Zero to Hero
Domain Driven Design: Zero to Hero
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
Domain-Driven Design (Artur Trosin Product Stream)
Domain-Driven Design (Artur Trosin Product Stream)Domain-Driven Design (Artur Trosin Product Stream)
Domain-Driven Design (Artur Trosin Product Stream)
 
How to Implement Domain Driven Design in Real Life SDLC
How to Implement Domain Driven Design  in Real Life SDLCHow to Implement Domain Driven Design  in Real Life SDLC
How to Implement Domain Driven Design in Real Life SDLC
 
Strategic Domain-Driven Design by Nick Tune at #AgileIndia2019
Strategic Domain-Driven Design by Nick Tune at #AgileIndia2019Strategic Domain-Driven Design by Nick Tune at #AgileIndia2019
Strategic Domain-Driven Design by Nick Tune at #AgileIndia2019
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
Domain-Driven Design
Domain-Driven DesignDomain-Driven Design
Domain-Driven Design
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
Domain Driven Design in an Agile World
Domain Driven Design in an Agile WorldDomain Driven Design in an Agile World
Domain Driven Design in an Agile World
 
Domain Driven Design & Hexagonal Architecture
Domain Driven Design & Hexagonal ArchitectureDomain Driven Design & Hexagonal Architecture
Domain Driven Design & Hexagonal Architecture
 
Interactive DSML Design
Interactive DSML DesignInteractive DSML Design
Interactive DSML Design
 
Using DITA without becoming a Geek
Using DITA without becoming a GeekUsing DITA without becoming a Geek
Using DITA without becoming a Geek
 
Domain Driven Design and Model Driven Software Development
Domain Driven Design and Model Driven Software DevelopmentDomain Driven Design and Model Driven Software Development
Domain Driven Design and Model Driven Software Development
 
Domain-Driven Design
Domain-Driven DesignDomain-Driven Design
Domain-Driven Design
 
BDD or DSL как способ построения коммуникации на проекте - опыт комплексного ...
BDD or DSL как способ построения коммуникации на проекте - опыт комплексного ...BDD or DSL как способ построения коммуникации на проекте - опыт комплексного ...
BDD or DSL как способ построения коммуникации на проекте - опыт комплексного ...
 

En vedette

Mapping Problem Domain Objects to Object-Persistence Formats(OOAD)
Mapping Problem Domain Objects to Object-Persistence Formats(OOAD)Mapping Problem Domain Objects to Object-Persistence Formats(OOAD)
Mapping Problem Domain Objects to Object-Persistence Formats(OOAD)
Meenakshi Devi
 
Simplifying your design with higher-order functions
Simplifying your design with higher-order functionsSimplifying your design with higher-order functions
Simplifying your design with higher-order functions
Samir Talwar
 
Parallel Complex Event Processing
Parallel Complex Event ProcessingParallel Complex Event Processing
Parallel Complex Event Processing
Karol Grzegorczyk
 
Why Domain-Driven Design Matters
Why Domain-Driven Design MattersWhy Domain-Driven Design Matters
Why Domain-Driven Design Matters
Mathias Verraes
 

En vedette (20)

Domain-driven design - eine Einführung
Domain-driven design - eine EinführungDomain-driven design - eine Einführung
Domain-driven design - eine Einführung
 
Introduction to-ddd
Introduction to-dddIntroduction to-ddd
Introduction to-ddd
 
Domain Driven Design 101
Domain Driven Design 101Domain Driven Design 101
Domain Driven Design 101
 
Domain Driven Design Quickly
Domain Driven Design QuicklyDomain Driven Design Quickly
Domain Driven Design Quickly
 
Domain Driven Design (DDD)
Domain Driven Design (DDD)Domain Driven Design (DDD)
Domain Driven Design (DDD)
 
Common ddd pitfalls
Common ddd pitfallsCommon ddd pitfalls
Common ddd pitfalls
 
jTransfo lightning talk
jTransfo lightning talkjTransfo lightning talk
jTransfo lightning talk
 
Mapping Problem Domain Objects to Object-Persistence Formats(OOAD)
Mapping Problem Domain Objects to Object-Persistence Formats(OOAD)Mapping Problem Domain Objects to Object-Persistence Formats(OOAD)
Mapping Problem Domain Objects to Object-Persistence Formats(OOAD)
 
Modularity and Domain Driven Design; a killer combination?
Modularity and Domain Driven Design; a killer combination?Modularity and Domain Driven Design; a killer combination?
Modularity and Domain Driven Design; a killer combination?
 
Applying Object Composition to Build Rich Domain Models
Applying Object Composition to Build Rich Domain ModelsApplying Object Composition to Build Rich Domain Models
Applying Object Composition to Build Rich Domain Models
 
From legacy to DDD
From legacy to DDDFrom legacy to DDD
From legacy to DDD
 
Success by Challenging Assumptions (Part I)
Success by Challenging Assumptions (Part I)Success by Challenging Assumptions (Part I)
Success by Challenging Assumptions (Part I)
 
Simplifying your design with higher-order functions
Simplifying your design with higher-order functionsSimplifying your design with higher-order functions
Simplifying your design with higher-order functions
 
I T.A.K.E. talk: "When DDD meets FP, good things happen"
I T.A.K.E. talk: "When DDD meets FP, good things happen"I T.A.K.E. talk: "When DDD meets FP, good things happen"
I T.A.K.E. talk: "When DDD meets FP, good things happen"
 
Domain State model OOAD
Domain State model  OOADDomain State model  OOAD
Domain State model OOAD
 
Parallel Complex Event Processing
Parallel Complex Event ProcessingParallel Complex Event Processing
Parallel Complex Event Processing
 
Domain Driven Design and Hexagonal Architecture with Rails
Domain Driven Design and Hexagonal Architecture with RailsDomain Driven Design and Hexagonal Architecture with Rails
Domain Driven Design and Hexagonal Architecture with Rails
 
Domain object model
Domain object modelDomain object model
Domain object model
 
Why Domain-Driven Design Matters
Why Domain-Driven Design MattersWhy Domain-Driven Design Matters
Why Domain-Driven Design Matters
 
Domain Driven Design Introduction
Domain Driven Design IntroductionDomain Driven Design Introduction
Domain Driven Design Introduction
 

Similaire à Domain driven design in a nutshell

Os Alrubaie Ruby
Os Alrubaie RubyOs Alrubaie Ruby
Os Alrubaie Ruby
oscon2007
 
MX: Princesses, Executives, and Unicorns
MX: Princesses, Executives, and UnicornsMX: Princesses, Executives, and Unicorns
MX: Princesses, Executives, and Unicorns
Daniel Romano
 
Davide Casali - Social Interaction Design
Davide Casali - Social Interaction Design Davide Casali - Social Interaction Design
Davide Casali - Social Interaction Design
Social Media Lab
 
Responsive Design Talk @ Toronto Dev Derby March
Responsive Design Talk @ Toronto Dev Derby MarchResponsive Design Talk @ Toronto Dev Derby March
Responsive Design Talk @ Toronto Dev Derby March
themystic_ca
 

Similaire à Domain driven design in a nutshell (20)

Collaborative Software Development With Distributed Teams
Collaborative Software Development With Distributed TeamsCollaborative Software Development With Distributed Teams
Collaborative Software Development With Distributed Teams
 
DDD In Agile
DDD In Agile   DDD In Agile
DDD In Agile
 
Up to speed in domain driven design
Up to speed in domain driven designUp to speed in domain driven design
Up to speed in domain driven design
 
IT CLA 2013
IT CLA 2013IT CLA 2013
IT CLA 2013
 
Os Alrubaie Ruby
Os Alrubaie RubyOs Alrubaie Ruby
Os Alrubaie Ruby
 
MX: Princesses, Executives, and Unicorns
MX: Princesses, Executives, and UnicornsMX: Princesses, Executives, and Unicorns
MX: Princesses, Executives, and Unicorns
 
Conversational Interfaces. Andrew Larking and Ronald Ashri at Museum Tech 2017.
Conversational Interfaces. Andrew Larking and Ronald Ashri at Museum Tech 2017.Conversational Interfaces. Andrew Larking and Ronald Ashri at Museum Tech 2017.
Conversational Interfaces. Andrew Larking and Ronald Ashri at Museum Tech 2017.
 
Domain Driven Design at UK Parliament
Domain Driven Design at UK ParliamentDomain Driven Design at UK Parliament
Domain Driven Design at UK Parliament
 
Os Long
Os LongOs Long
Os Long
 
Introduction to Domain-Driven Design
Introduction to Domain-Driven DesignIntroduction to Domain-Driven Design
Introduction to Domain-Driven Design
 
DDD knowledge sharing
DDD knowledge sharingDDD knowledge sharing
DDD knowledge sharing
 
Johnsen Elearning To Eleading
Johnsen Elearning To EleadingJohnsen Elearning To Eleading
Johnsen Elearning To Eleading
 
The 360 Developer
The 360 DeveloperThe 360 Developer
The 360 Developer
 
Software Craftsmanship and Agile Code Games
Software Craftsmanship and Agile Code GamesSoftware Craftsmanship and Agile Code Games
Software Craftsmanship and Agile Code Games
 
Davide Casali - Social Interaction Design
Davide Casali - Social Interaction Design Davide Casali - Social Interaction Design
Davide Casali - Social Interaction Design
 
Wanted: Best Practices for Collaborative Translation
Wanted: Best Practices for Collaborative TranslationWanted: Best Practices for Collaborative Translation
Wanted: Best Practices for Collaborative Translation
 
Creating the Adaptive Enterprise: Capability and Delivery from Change Convers...
Creating the Adaptive Enterprise: Capability and Delivery from Change Convers...Creating the Adaptive Enterprise: Capability and Delivery from Change Convers...
Creating the Adaptive Enterprise: Capability and Delivery from Change Convers...
 
Responsive Design Talk @ Toronto Dev Derby March
Responsive Design Talk @ Toronto Dev Derby MarchResponsive Design Talk @ Toronto Dev Derby March
Responsive Design Talk @ Toronto Dev Derby March
 
97 Things Every Programmer Should Know
97 Things Every Programmer Should Know97 Things Every Programmer Should Know
97 Things Every Programmer Should Know
 
Technology for language centers
Technology for language centersTechnology for language centers
Technology for language centers
 

Plus de Toni Esteves (6)

eSCM-CL
eSCM-CLeSCM-CL
eSCM-CL
 
A influência do Test-Driven Design no projeto de classes e no design em siste...
A influência do Test-Driven Design no projeto de classes e no design em siste...A influência do Test-Driven Design no projeto de classes e no design em siste...
A influência do Test-Driven Design no projeto de classes e no design em siste...
 
Logica fuzzy Conceitos e Aplicações
Logica fuzzy   Conceitos e AplicaçõesLogica fuzzy   Conceitos e Aplicações
Logica fuzzy Conceitos e Aplicações
 
Domain Specific Languages - A superficial approach
Domain Specific Languages - A superficial approachDomain Specific Languages - A superficial approach
Domain Specific Languages - A superficial approach
 
Inteligencia Artificial - Linguistica
Inteligencia Artificial - LinguisticaInteligencia Artificial - Linguistica
Inteligencia Artificial - Linguistica
 
Model driven development
Model driven developmentModel driven development
Model driven development
 

Dernier

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 

Dernier (20)

What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 

Domain driven design in a nutshell

  • 1. “It is not the strongest of the species that survives, nor the most intelligent that survives. It is the one that is the most adaptable to change.” - Charles Darwin
  • 2. What is a Problem Domain ?
  • 6. “A Big Ball of Mud is a haphazardly structured, sprawling, sloppy, duct-tape-and baling-wire, spaghetti-code jungle.” - Brian Foote and Joseph Yoder
  • 7.
  • 8. “It doesn’t take a lot of skill to get a program to work. The skill comes in when you have to keep it working.” - Robert C. Martin @unclebobmartin
  • 9.
  • 11. Model What Is Core.
  • 12.
  • 13.
  • 14.
  • 17.
  • 18.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 28. • Domain-Driven Design is a development philosophy that values teams understanding the domain they are writing software for above anything else. • It is a collaboration philosophy focused on delivery with communication playing a central role. • The creation of a shared language is vital for knowledge sharing and domain understanding by the development team and business experts. • Domain-Driven Design is more problem solving through collaboration than code patterns language. • Learning and creating a language to communicate about the problem domain is the process of Domain-Driven Design, code is the artifact.

Notes de l'éditeur

  1. ESCREVER O SOFTWARE É FÁCIL, DESCULPE POR ESCREVER GREENFIELD SOFTWARES É FÁCIL. DESENVOLVIMENTO DE SOFTWARE É UM CRIATIVO E PROCESSO ADAPTATIVO. QUANDO SE TRATA DE MODIFICAR CÓDIGO ESCRITO POR OUTROS DESENVOLVEDORES OU CÓDIGO QUE VOCÊ ESCREVEU HÁ SEIS MESES, PODE SER UM POUCO CHATO NO MELHOR DOS CASOS E NO PIOR UM PESADELO. O SOFTWARE FUNCIONA MAS VOCÊ NÃO CERTEZA EXATAMENTE COMO. ELE CONTÉM TODOS OS QUADROS DIREITA, PADRÕES E FOI CRIADO USANDO UMA ABORDAGEM ÁGIL, AINDA INTRODUZINDO NOVOS RECURSOS NA BASE DE CÓDIGO É MAIS DIFÍCIL DO QUE DEVERIA SER. MESMO OS ESPECIALISTAS DE NEGÓCIOS SÃO DE NENHUM USO QUE O CÓDIGO NÃO TEM QUALQUER SEMELHANÇA COM A LINGUAGEM QUE ELES USAM. TRABALHO EM TAIS SISTEMAS SE TORNA UMA TAREFA DEIXANDO COLABORADORES FRUSTRADOS E DESPROVIDOS DE QUAISQUER PRAZER CODIFICAÇÃO. ANTES QUE VOCÊ POSSA DESENVOLVER UMA SOLUÇÃO, VOCÊ DEVE ENTENDER O PROBLEMA. A NECESSIDADE DA EQUIPE DE DESENVOLVIMENTO PARA VALOR DOMÍNIO DE CONHECIMENTO, TANTO COMO CONHECIMENTOS TÉCNICOS ESPECIALIZADOS SÃO VITAL TER UMA VISÃO MAIS PROFUNDA DO DOMÍNIO DO PROBLEMA. PARTES CENTRAIS DO SEU PRODUTO QUE SÃO SUFICIENTEMENTE COMPLEXAS OU FREQÜENTEMENTE MUDANÇA DEVE SER BASEADA EM UM MODELO. UM MODELO QUE ESTÁ EM SINERGIA COM O DOMÍNIO DO PROBLEMA PERMITIRÁ QUE O SEU SOFTWARE A SER ADAPTÁVEL E COMPREENDIDO POR OUTROS DESENVOLVEDORES E ESPECIALISTAS EM NEGÓCIOS.
  2. Um domínio de problema se refere à área disciplinar para a qual você estiver construindo SOFTWARE. Peritos no dominio do PROBLEMA trabalham em conjunto com a equipe de desenvolvimento para se concentrar nas áreas do domínio que sejam úteis para ser capaz de produzir software valioso. Por exemplo, quando a escrita de software PARA A INDÚSTRIA DE SAÚDE PARA GRAVAR o tratamento do paciente, NÃO É importante aprender a se tornar um médico. O que é importante entender é a terminologia da indústria da saúde, como os departamentos de vista diferentes pacientes e
  3. O DESIGN É ALGO QUE DEVE SER PENSADO, REFLETIDO E REMOLDADO, PARA QUE FINALMENTE ELE TENHA UMA PERFEITA ADEQUAÇÃO E FORNEÇA UMA SOLUÇÃO VIÁVEL AO QUE VOCÊ DESEJA. Domain-Driven Design (DDD) é uma filosofia de desenvolvimento definida POR ERIC EVANS EM SEU Domain-Driven Design obra seminal: LUTAR CONTRA COMPLEXIDADE NO CORAÇÃO DE SOFTWARE (Addison-Wesley Professional, 2003). DDD é uma abordagem de desenvolvimento de software projetada para GERIR complexo e GRANDE ESCALA produtos de software. No seu coração Centra-se na criação de uma linguagem COMPARTILHADA conhecido como a linguagem ubíqua forma eficiente e eficaz descrever um domínio de problema
  4. É algo impacto que permite uma maior compreensão do domínio do problema (para o negócio e a equipe de desenvolvimento) e uma comunicação mais eficaz. Estes valores-chave têm um enorme sobre projetos que eles colocam muito maior importância na análise e compreensão sobre estruturas técnicas e metodologias, o que acaba por fazer produtos de software bem sucedida.
  5. A Focus On Collaboration A Focus On Language A Focus On Building A Model For Core Domains A Focus On Context A Focus On Organization Em sintese o DDD aborda a resolucao de problemas do mapeamento de projetos de software para um domínio não trivial você deve primeiro entender as dificuldades de criar e manter software. De longe, o padrão de design mais popular software de arquitetura para aplicações de negócios é o Big Ball of Mud (BBoM) padrão. BBoM, tal como definido por Brian Foote e Joseph Yoder.
  6. A falta de foco em uma linguagem comum e conhecimento dos resultados domínio do problema em uma base de código que funciona, mas não revela a intenção do negócio. Isso faz com que bases de código muito difícil ler e manter como traduções entre o modelo de análise e linguagem de negócios para o código implementação e conceitos técnicos podem ser caros. Código sem uma ligação a um modelo de análise que a empresa entende rapidamente em conformidade com a BBoM padrão o que significa que nenhum insight domínio pode, eventualmente, ser descoberto pela equipe de desenvolvimento como base código é focada conceitos negócio não entende
  7. Continuando a persistir com um padrão de espaguete-como arquitetura pode levar a um ritmo lento de aprimoramento do recurso. Quando novas versões do produto são lançados, muitas vezes eles podem ser buggy devido à confusão ininteligível da base de código que os desenvolvedores tem que lidar com eles. Com o tempo, a equipe de desenvolvimento cada vez mais queixas sobre a dificuldade de trabalhar em uma bagunça. embora recurso é adicionado ao projeto, a velocidade não pode ser aumentado para um nível que satisfaça os negócios. No final, agravada pela situação, o pedido de reescrever a aplicação temida é concedido. Sem o devido cuidado e consideração, no entanto, mesmo o projeto greenfield pode cair aves do mesmo questões que criaram o BBoM originais. Essa experiência toda pode ser frustrante para o negócio que viu um grande retorno sobre o investimento em termos de recursos e velocidade de entrega no início, mas ao longo do tempo, mesmo com i investimento adicional
  8. Temos normalmente encontrados que a versão iniciais de sistemas que se assemelha BBoM foram rápidas para produzir um sucesso e bem-arredondado, mas porque houve pouco foco na necessidade do negócio, melhorias posteriores são problemáticos. A base de código não tem a necessária sinergia com o comportamento do negócio para fazer a mudança administrável. Este sentimento é resumida
  9. O desafio de escrever E REFORÇAR O SOFTWARE para sistemas complexos e de larga escala vai muito além de quaisquer considerações técnicas. Na verdade, para domínios complexos , os desafios técnicos poderiam ser muito simples. É O apreço pela intenção do negócio que permitirá a equipe de desenvolvimento para identificar e investir seu tempo na parte mais importante do sistema . Como o negócio evoluira, que por sua vez ditará a evolucao do software; Ele precisa ser adaptavel, investir na qualidade do codigo e nas áreas-chave do sistema irá ajudar a mudar isso com o negócio. Se as areas fundamenstais do softawre nao estao em perfeita sinergia com o dominio do negocio entao seu software provavelmente aporederá se tornando uma bola de lama, e consequetemente resultando SOFTWARE DIFÍCIL manter. O Domain-Driven Aborda os desafios do gerenciamento e concepção de sistemas complexos grandes por primeiramente concentrar os esforços eno alinhamento do dominios computacionais com as capacidades de negócios e, segundo Revelando as peças principais de um sistema e assim entender onde os desenvolvedores devem colocar mais esforço. O alinhamento é feito por quebrar domínios de problemas grandes em MENORES subdomínios mais focado e dentro deles MENORES contextos de negócios . As partes centrais do sistema são encontrados por destilação do domínio do problema e entao revelar a razão fundamental por que o software está sendo produzido eo que será chave para seu sucesso
  10. Uma vez que as áreas-chave do software são descobertas as equipes de desenvolvimento podem alavancar padroes táticos do Domain-Driven Design para construir um modelo conceitual, conhecido como um modelo de domínio, Este modelo não é um modelo de vida real, mas abstração para satisfazer as exigências dos casos de uso, embora mantendo o REGRAS e a lógica do domínio do negócio.
  11. Pegue o modelo de domínio de uma aplicação de e-commerce. Há muitos componentes diferentes que formam o grande sistema global. Algumas peças podem ser encontrados em qualquer sistema de e-commerce, mas alguns vão ser exclusivo para sua empresa. Estas peças irão definir o software e serão as razões fundamentais que você está construindo em vez de comprar.
  12. A destilação de conhecimento após sessões com especialistas de domínio deve revelar o que é único e importante sobre o aplicativo que você está prestes a criar. Você pode separar os subdomínios no núcleo, genérico, e apoiar domínios.
  13. Pegue o modelo de domínio de uma aplicação de e-commerce. Há muitos componentes diferentes que formam o grande sistema global. Algumas peças podem ser encontrados em qualquer sistema de e-commerce, mas alguns vão ser exclusivo para sua empresa. Estas peças irão definir o software e serão as razões fundamentais que você está construindo em vez de comprar.
  14. Para entender o que é central para o produto que a sua empresa está a pedir-lhe para se desenvolver, você precisa perguntar a si mesmo algumas perguntas. Quais são as partes do produto que irá torná-lo um sucesso? Por que essas partes do sistema são importantes? E por que não podem ser comprados na prateleira? Em outras palavras, o que torna o sistema algo que vale a pena construir? As peças principais do sistema representam a vantagem competitiva fundamental que sua empresa pode ganhar com a entrega deste software. O núcleo nem sempre é óbvio.
  15. O DOMÍNIO representa a área problema que você está trabalhando dentro. É a realidade FIRME DA SITUAÇÃO. O modelo de domínio POR OUTRO LADO é uma abstração do domínio do problema, expressa como uma implementação de código que representa uma visao, não a realidade, do problema. A utilidade do modelo de domínio vem em sua capacidade de representar LÓGICA no domínio do problema para resolver problemas de negócios. O modelo é construído a partir da colaboração entre a equipe de desenvolvimento e especialistas em negócios. O modelo contém apenas o que é relevante para a resolução de problemas no contexto da aplicação que está sendo criado. Ela precisa evoluir constantemente com a empresa para manter-se útil e VÁLIDO. SÓ EXISTE PARA AJUDAR EUA resolver problemas, precisa ter CLAREZA E estar livre de complexidades técnicas.
  16. Um modelo de domínio não é um modelo de vida real é um sistema de abstrações sobre a realidade, uma interpretação que inclui apenas os aspectos do domínio do problema que são predominantes para a resolução de casos específicos de uso de negócios. Um modelo de domínio deve excluir quaisquer detalhes irrelevantes de um domínio que não serve para resolver problemas. Modelos de Domínio conter apenas o que é relevante. Um modelo de domínio necessita de ser constantemente refinados, a fim de ser continuamente útil. Um modelo de domínio é sempre apenas temporalmente útil para uma determinada iteração e um conjunto de casos de uso. Casos de uso futuro, ou muda para o negócio pode tornar o modelo inútil.
  17. COMMUNICATION! THE COLLABORATION BETWEEN THE BUSINESS EXPERT AND THE DEVELOPMENT TEAM IS AN ESSENTIAL ASPECT OF DDD AND ONE THAT IS CRUCIAL TO THE SUCCESS OF A PRODUCT UNDER DEVELOPMENT. HOWEVER, IT IS IMPORTANT TO SEEK OUT THOSE WHO ARE EXPERTS IN THE DOMAIN YOU ARE WORKING IN AND WHO CAN OFFER YOU DEEPER INSIGHT INTO THE PROBLEM AREA. DDD REFERS TO THESE SUBJECT MATTER EXPERTS AS DOMAIN EXPERTS. THE DOMAIN EXPERTS ARE THE PEOPLE WHO DEEPLY UNDERSTAND THE BUSINESS DOMAIN FROM ITS POLICIES AND WORK FLOWS, TO ITS NUISANCES AND IDIOSYNCRASIES. THEY ARE THE EXPERTS WITHIN THE BUSINESS OF THE DOMAIN; THEY WILL RARELY, IF EVER, HAVE THE TITLE DOMAIN EXPERT. INSTEAD, LOOK FOR THE PRODUCT OWNERS, USERS, AND ANYONE WHO HAS A GREAT GRASP AND UNDERSTANDING FOR THE DOMAIN YOU ARE WORKING IN REGARDLESS OF TITLE.
  18. SER CAPAZ DE COMUNICAR DE FORMA EFICAZ É A HABILIDADE MAIS IMPORTANTE, SER CAPAZ DE RESOLVER PROBLEMAS. O DESENVOLVEDOR NÃO QUER CÓDIGO, ELE DEVE RESOLVER PROBLEMAS E POR ISSO É VITAL PARA FALAR COM O NEGÓCIO QUE VOCÊ ESTÁ TRABALHANDO EM UMA LINGUAGEM SEM AMBIGUIDADE OU NECESSIDADE DE TRADUÇÃO. REMOVENDO BARREIRAS LINGUÍSTICAS PROFISSIONAIS DO SECTOR E DA EQUIPE DE DESENVOLVIMENTO É LIVRE PARA COLABORAR EXPLORAR E EXPERIMENTAR COM DESENHOS PARA UM MODELO ÚTIL. IMPLEMENTAÇÕES TÉCNICAS PODEM SER EXPRESSAS UTILIZANDO AS LINGUAGEM UBÍQUA MESMO E QUAISQUER INSIGHTS PROJETO PODE ENTÃO SER ALIMENTADO DE VOLTA PARA ESPECIALISTAS DE DOMÍNIO PARA VALIDAÇÃO SEM NECESSIDADE DE TRADUÇÃO E PERDA DE SENTIDO. O VERDADEIRO VALOR DE SEGUIR A FILOSOFIA DOMAIN-DRIVEN DESIGN ESTÁ NA COLABORAÇÃO DE DESENVOLVEDORES E ESPECIALISTAS DE DOMÍNIO PARA PRODUZIR UMA MELHOR COMPREENSÃO DO DOMÍNIO. O CÓDIGO QUE É ESCRITA É APENAS UM ARTEFATO DESSE PROCESSO, EMBORA IMPORTANTE. PARA ALCANÇAR UMA MELHOR EQUIPES COMPREENSÃO PRECISA SE COMUNICAR DE FORMA EFICAZ. É A CRIAÇÃO DA LINGUAGEM UBÍQUA QUE PERMITE A COMPREENSÃO MAIS PROFUNDA QUE VAI VIVER APÓS O CÓDIGO SER REESCRITO E SUBSTITUÍDO.
  19. Um especialista de domínio, irá trabalhar com você, a fim de produzir um modelo útil que pode satisfazer as necessidades de uma das partes interessadas.
  20. Historicamente escrever softawe sempre foi um processo custoso, iterações demoradas, requisistos que eram levantados erronemente.
  21. A partilha de informação permite que especialistas em negócios para contribuir para o design de software e fornece uma visão mais profunda e compreensão do domínio para a equipe de desenvolvimento . Depois de um período de tempo, desenvolvedores e especialistas em negócios vai descobrir a informação relevante para construir um modelo inicial do domínio do problema . Este modelo inicial é posta à prova , usando cenários de domínio : bens problemas do domínio de validar a sua utilidade . Modelagem em voz alta, usando os termos e linguagem do modelo , também pode ajudar a validar projetos iniciais.
  22. DDD sugere um método mais colaborativa de capturar os requisitos do sistema e entender o fluxo de trabalho existente. A ênfase é colocada em toda a equipe , com especialistas em negócios e arquitetos (contanto que eles código ), com discussões em torno do espaço do problema . As discussões podem incluir qualquer documentação ou código legado que está relacionado com o sistema em questão . A idéia por trás das sessões de trituração colaborativa de conhecimento é para os desenvolvedores, testadores , analistas de negócios , arquitetos e especialistas em negócios para trabalhar como uma equipe unificada . Isso permite que os desenvolvedores e testadores para aprender sobre o significado por trás de termos de domínio e entender a lógica complexa na área do problema . Ele também permite que especialistas em negócios para experimentar as técnicas de modelagem empregadas. Com o entendimento de modelagem, especialistas em negócios si será capaz de modelar e validar projetos com a equipe de desenvolvimento.
  23. Soluçao !!! A transição não é linear e sim distribuida, Os requisitos nao partem do UML para a codificação mas estes caminham lado a lado.