“Functional and Reactive Domain Modeling” by D. Ghosh combines classic object-oriented DDD with functional programming in Scala. Although powerful, the book’s methodology leaves key questions unanswered, such as “How to choose a particular model among alternatives? How to split a model into parts? How to decide upon the modelling granularity?”
This talk attempts to solve these questions by combining the DDD methodology with Behaviour-Driven Development. First, the example domain — the design of pharmaceutical experiments — is introduced. Next, key concepts of BDD are adapted to functional programming, and a visual BDD-style model is developed for the domain. This model is then used to drive functional domain-driven design. Finally, we discuss the costs and benefits of the combined BDD/DDD approach for software development in complex domains.
YOU MAY ALSO LIKE:
- Jenny Martin's BDD From Start to Finish - Successful Delivery through Continuous Collaboration (in London on 24th - 26th June 2019)
- Fast Track to F# with Tomas Petricek & Phil Trelford (in London on 9th - 10th September 2019)
- Haskell eXchange 2019 (in London on 10th - 11th October 2019)
- P3X - People, Product & Process eXchange 2019 (in London on 31st October - 1st November 2019)
- Hands-on: Fractal art with Fable and WebGL (in London on 20th June 2019)
- Keynote by Dick Wall on Why API Design Matters, and Why Yours Sucks! (and mine sucks too!) (in London on 24th June 2019)
- Solving 5 typical Issues in API development with Domain Driven Design (SkillsCast recorded in June 2019)
- Strategic Domain-Driven Design Patterns (SkillsCast recorded in May 2019)
Combining BDD and DDD with functional Scala: How BADD can it get?
Oleg Volkov gained a PhD in mathematics from QMUL. He founded a startup, XITIFIC, aiming to improve pharmaceutical R&D. He developed mathematical software for over a decade, and for the last two years has been working in Scala. His particular interest is in applying domain-driven design and functional reactive programming to develop interactive scientific applications.