Domain Modeling Made Functional

Tackle Software Complexity with Domain-Driven Design and F#

by: Scott Wlaschin

Published 2018-01-10
Internal code swdddf
Print status In Print
Pages 310
User level Intermediate
Keywords F#, ddd, functional, NoSQL, domain, model, modelling, programming
Related titles

Learn Functional Programming with Elixir
Functional Programming in Java
Functional Programming Patterns
The Cucumber Book
Cucumber Recipes

ISBN 9781680502541
Other ISBN Channel epub: 9781680505498
Channel PDF: 9781680505504
Kindle: 9781680505474
Safari: 9781680505481
Kindle: 9781680505474
BISACs COM051440 COMPUTERS / Software Development & Engineering / Tools
COM062000 COMPUTERS / Data Modeling & Design
COM062000 COMPUTERS / Data Modeling & Design

Highlight

You want increased customer satisfaction, faster development cycles, and less wasted work. Domain-driven design (DDD) combined with functional programming is the innovative combo that will get you there. In this pragmatic, down-to-earth guide, you’ll see how applying the core principles of functional programming can result in software designs that model real-world requirements both elegantly and concisely—often more so than an object-oriented approach. Practical examples in the open-source F# functional language, and examples from familiar business domains, show you how to apply these techniques to build software that is business-focused, flexible, and high quality.

Description

Domain-driven design is a well-established approach to designing software that ensures that domain experts and developers work together effectively to create high-quality software. This book is the first to combine DDD with techniques from statically typed functional programming. This book is perfect for newcomers to DDD or functional programming—all the techniques you need will be introduced and explained.

Model a complex domain accurately using the F# type system, creating compilable code that is also readable documentation—ensuring that the code and design never get out of sync. Encode business rules in the design so that you have “compile-time unit tests,” and eliminate many potential bugs by making illegal states unrepresentable. Assemble a series of small, testable functions into a complete use case, and compose these individual scenarios into a large-scale design. Discover why the combination of functional programming and DDD leads naturally to service-oriented and hexagonal architectures. Finally, create a functional domain model that works with traditional databases, NoSQL, and event stores, and safely expose your domain via a website or API.

Solve real problems by focusing on real-world requirements for your software.

Contents and Extracts

Preface