# Wednesday, 28 August 2013

A “greenfield” application is one that is just getting started. It is named "greenfield" because it is reminiscent of a new building going up on a vacant lot that contains nothing but green grass prior to the start of construction.

By contrast, a “brownfield” application is one that has been going for some time (similar to an unfinished building surrounded by brown dirt where the grass used to be. Often, the code in a brownfield application is in a fragile state, contains excessive dependencies, unnecessary complexities and no automated tests. This describes most of the projects on which I find myself working.

Getting such code to a manageable state can be a challenge. One needs to understand the code, refactor methods and classes, break dependencies, and create automated tests.

Brownfield Application Development in .NET by Kyle Baley and Donald Belcham describes techniques for doing just that.

Baley and Belcham begin by introducing general concepts of the software development process (Unit Testing, Source Control), as well as some of the technical and non-technical challenges working with a brownfield project.

Each chapter begins with a set of pain points, then continues with ways to address that pain.

They focus on how to work with the code, describing algorithms for breaking dependencies and samples for using dependency injection and mock object frameworks.

Although not quite as comprehensive as Michael Feathers's excellent "Working Effectively with Legacy Code", this book focuses on the .NET languages, which makes it more relevant to my projects. In fact it addresses the current project on which I am working.

Brownfield Application Development in .NET is a good book for anyone who finds themselves working with code developed by someone else.

Wednesday, 28 August 2013 19:51:00 (GMT Daylight Time, UTC+01:00)
Friday, 06 September 2013 03:52:08 (GMT Daylight Time, UTC+01:00)
Your article I learned a lot of things, thank you.
Friday, 17 January 2014 07:39:09 (GMT Standard Time, UTC+00:00)
Good post. Thank you for your sharing.
Also I'm a car lover. I know many useful car diagnostic tools , like obd2 scanner, car code reader, ecu tuning tool, car key programmer, airbag reset tool, odometer tool, launch x431 and etc.
Comments are closed.