Sunday, September 17, 2006

FAGBOK: "Domain-Driven Design - Tackling Complexity in the Heart of Software" av Eric Evans

Jeg hørte Eric Evans sitt foredrag om domain-driven design på Javazone i fjor.
To ting var åpenbare:
  • Eric Evans er en tørr og ganske kjedelig foredragsholder
  • Hans tema er fantastisk! Endelig en som forstår viktigheten av modellering i en verden av alle mulige smidige(agile) metoder. For en mann som er vokst opp med datamodellering så var dette nok til nesten å få tårer i øynene!
Jeg kjøpte boken samme dag og oppdaget raskt at Eric Evans er en mye mere engasjerende forfatter enn foredragsholder.
Boken er lang og detaljert og beskriver en rekke strategier for modellering i prosjekter. Alt for mye til å beskrive i en kort omtale som dette.

Skal jeg trekke frem et kjernepunkt så må det være "The Ubiquitous Language". Altså at man i modelleringen finner et sett av kjernebegreper fra forretningsområdet som skal brukes i alle deler av prosjektet. Dette gjør at modellene blir gode verktøy i kommunikasjonen med brukere som kjenner forretningsområdet. I boken beskriver han flere diskusjoner med brukere hvor de forfiner the ubiquitous language og avslører misforståelser mellom analyse og det virkelige forretningsområdet.

Kan kjøpes på amazon.

Amazon sier:
The software development community widely acknowledges that domain modeling is central to software design. Through domain models, software developers are able to express rich functionality and translate it into a software implementation that truly serves the needs of its users. But despite its obvious importance, there are few practical resources that explain how to incorporate effective domain modeling into the software development process.

Domain-Driven Design fills that need. This is not a book about specific technologies. It offers readers a systematic approach to domain-driven design, presenting an extensive set of design best practices, experience-based techniques, and fundamental principles that facilitate the development of software projects facing complex domains. Intertwining design and development practice, this book incorporates numerous examples based on actual projects to illustrate the application of domain-driven design to real-world software development.

Readers learn how to use a domain model to make a complex development effort more focused and dynamic. A core of best practices and standard patterns provides a common language for the development team. A shift in emphasis--refactoring not just the code but the model underlying the code--in combination with the frequent iterations of Agile development leads to deeper insight into domains and enhanced communication between domain expert and programmer. Domain-Driven Design then builds on this foundation, and addresses modeling and design for complex systems and larger organizations.Specific topics covered include:

  • Getting all team members to speak the same language
  • Connecting model and implementation more deeply
  • Sharpening key distinctions in a model
  • Managing the lifecycle of a domain object
  • Writing domain code that is safe to combine in elaborate ways
  • Making complex code obvious and predictable
  • Formulating a domain vision statement
  • Distilling the core of a complex domain
  • Digging out implicit concepts needed in the model
  • Applying analysis patterns
  • Relating design patterns to the model
  • Maintaining model integrity in a large system
  • Dealing with coexisting models on the same project
  • Organizing systems with large-scale structures
  • Recognizing and responding to modeling breakthroughs

With this book in hand, object-oriented developers, system analysts, and designers will have the guidance they need to organize and focus their work, create rich and useful domain models, and leverage those models into quality, long-lasting software implementations.


Terningkast 6

No comments: