in

Ative at Work

Agile software development

Ative at Work

Bug-by-Bug Compatibility

When you are porting an old system you will often be confronted with the pragmatic decision to be bug-by-bug compatible with the old system at the integration points, since it is sometimes not feasible to fix the bugs in the clients to the system.

On the other hand, we have the principle of "Don't propagate a bad decision."

So the proper way to do it is two-fold:

We separate the two concerns:

First, we write the correct version of the new system. Then, we add a layer that is capable of introducing the bugs at the proper places. This way it is easy to locate the errors later as we upgrade

So you might have the correct IWidgetService implemented as WidgetService. Then, we also construct a BugCompatibleWidgetService that wraps WidgetService and implements IWidgetService. This, then, is the component we register in our application.

Thus we don't propagate the bad decision and keep a separation of concerns: one module that works and one responsible for breaking the result in a predictable manner.

Comments

 

ploeh blog said:

The Ative guys has a blog with a lot of insightful development project gotchas. This one, in particular,...

september 29, 2006 2:35

Leave a Comment

(required)  
(optional)
(required)  
Add

About Martin Jul

Building better software faster is Martin's mission. He is a partner in Ative, and helps development teams implement lean/agile software development and improve their craftmanship teaching hands-on development practises such as iterative design and test-first. He is known to be a hardliner on quality and likes to get things done-done.
© Ative Consulting ApS