Archive for the 'domain driven design' Category

How to Write a Repository

Out of the supporting Patterns catalogued by Eric Evans, the Repository patterns is probably the most popular.
Persistence has been a hot topic in software development for a long time. The main problem is that the most popular approach for software development these days, Object-Orientation, doesn’t really map easily to efficient external storage systems like relational […]

Expressiveness Omnibus

Recently a friend discovered this blog. She asked me why do I write so much about Expressive Design. This is not the first time I’m asked this so I decided to write down my answer. I will try to give some overview of the topic and link to the many articles in this blog about […]

Some Thoughts on Database Integration and Domain-Driven Design

Letting two systems share a single database is one of the worst, most heavily coupled methods for systems integration. Unfortunately it’s also one of the most popular. It is very usual for a developer to have to talk to someone else’s database and quite commonly this accidental complexity cannot be removed as there’s often too […]

ThoughtWorks Australia TeamHug 2010: Why Enterprise Architectures Suck

We just had our ThoughtWorks Australia Team Hug. It’s some sort of internal conference where everyone from Sydney, Melbourne, Perth and Brisbane get together with some guests from overseas to get drunk (by the way, we are hiring). We also have presentations and many other work-related sessions.
This year I’ve held a session on a quite […]

Thoughts on Abstractions: Part 2 – Abstractions in Your Domain

As we saw in Part I, abstractions are everywhere. Unfortunately, even though everyone is more than happy to reuse abstractions provided by someone else I often see people failing to identify those in their own code.
Most people tend to create abstractions found using Russ Abbott’s method of using the textual description of a problem to […]

Thoughts on Abstractions: Part 1 – Abstractions Everywhere

Update: Part II is here.
Most complex tasks are solved using abstractions. To create an abstraction one groups lower-level concepts, what I will call primitives in this text, and make them interact in a pre-defined way.

Abstractions are present at all levels in a system. Computers work based on electric signals. To reduce the Essential Complexity we […]

Nevermind Domain-Driven Design

Over the past years I’ve held many workshops on Domain-Driven Design. We had more than one hundred people on those sessions, and feedback was often pretty good. After my last run I told my business partner that this was my last time running those workshops.
I think that Domain-Driven Design is one of the most […]

Everyday Tales: Anatomy of a Refactoring – Part 3

We finished last post with this funny situation: the abstraction that represents Facebook depends on our Domain Model.

It was a bit obvious that what we needed was not only system abstractions for Facebook, Twitter and the like but Bounded Contexts. We need to acknowledge the fact that these domains are not part of our model, […]

Everyday Tales: Anatomy of a Refactoring – Part 2

Read the first post here.
In the previous post we were facing the problem demonstrated by the diagram below.

Our FacebookMessageParser needs an instance of AllSocialNetworks so that it can create valid Users coming from Facebook. The only implementation we have for the AllSocialNetworks interface is UserRepository, and this implementation needs a FacebookMessageParser. That’s a circular dependency, […]

Everyday Tales: Anatomy of a Refactoring

I’ve been extremely busy with project after project in the past few months, leaving me no time to do any research and/or play around interesting things. Even though I prefer to write about what is really interesting me at a given moment, I think that writing about some smaller/simpler problems and solutions would be better […]




About

You are currently browsing the PhilCalcado.com weblog archives for the domain driven design category.

Longer entries are truncated. Click the headline of an entry to read it in its entirety.





Creative Commons License

This work is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.