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 […]
Archive for the 'books' Category
How to Write a Repository
Published by December 23rd, 2010 in abstractions, books, domain driven design, java, object orientation and software design. 3 CommentsExpressiveness Omnibus
Published by December 19th, 2010 in abstractions, books, components, domain driven design, domain specific languages, enterprise architecture, layers, object orientation, soa, software architecture, software design, systems integration and trends. 2 CommentsRecently 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 […]
One Mock Per Test Considered Not Awesome
Published by December 14th, 2010 in abstractions, agile, books, c#, object orientation and software design. 3 CommentsFor some reason I came across a rule of thumb that says something like:
You should have only one mock per test; all other interactions must be stubbed.
That sounds like good advice but it’s not. This rule of thumb doesn’t really help writing good tests and it can easily lead to testing the wrong thing.
I’m not […]
Thoughts on Abstractions: Part 2 – Abstractions in Your Domain
Published by September 6th, 2010 in abstractions, books, components, domain driven design, layers, object orientation, soa, software architecture and software design. 2 CommentsAs 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
Published by August 17th, 2010 in abstractions, books, c#, components, domain driven design, domain specific languages, java, language adaptation, language oriented programming, layers, object orientation, ruby, software architecture and software design. 6 CommentsUpdate: 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 […]
Agile Architecture: 4 Common Strategies
Published by May 12th, 2010 in agile, books, management, software architecture, software design and thoughtworks. 5 CommentsAt ThoughtWorks, our preferred way to start a project is by doing a set of workshops and sessions with stakeholders for about two weeks. That’s what we call Inception. After the Inception we usually have a product backlog for the project and are ready to start writing production code.
During that period, we often come up […]
Nevermind Domain-Driven Design
Published by March 22nd, 2010 in agile, books, c#, domain driven design, domain specific languages, events, java, language oriented programming, layers, object orientation, software architecture, software design and trends. 8 CommentsOver 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
Published by March 10th, 2010 in agile, books, case study, domain driven design, everyday tales, layers, object orientation, software architecture, software design and trends. 4 CommentsWe 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
Published by March 10th, 2010 in agile, books, case study, domain driven design, everyday tales, layers, object orientation, software architecture, software design and trends. 1 CommentRead 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, […]
Coders at Work: My Review
Published by December 29th, 2009 in agile, books, software design and trends. 2 CommentsI just finished reading Peter Seibel’s new book, Coders at Work.
I was a bit skeptical at first. I only picked the book because of the big names on the cover and because Peter Siebel’s Practical Common Lisp is one of my favourite books on learn-a-new-programming-language. I thought that a book filled only with interviews with […]

