I missed the opportunity to blog details of my last 2 days of the Agile2007 conference. One big reason is the volume of activity over the last 2 days plus the time I tool to go see Washington D.C. I had never been there before and I had to do the tourist rounds.
The following sessions are ones that stand out vividly?in my?memory as being thought provoking or valuable.
Smells in Agile Software Development Workshop
Jutta Eckstein is a founding organizer of the Agile conferences and she conducted this?advanced level?workshop?focusing on common anti-patterns people are experiencing in their Agile implementations. Topics ranged between the process and technical sides of the discussion but one theme stood out to me as we worked our way through the workshop; People are having challenges scaling Agile when the concepts are introduced to the company from the bottom up. This is doesn’t seem to be the case in top down implementations.
This image to the right links to a mind map I made during the workshop illustrating the 5 most common anti-patterns (smells) identified by the group. These all ring true in my experience and techniques for working with each situation is worthy of discussion individually.
xUnit Test Patterns
I spoke several times around the conference with Gerard Meszaros and he was an energetic voice of reason in all discussions in which I heard him engage. I didn’t realize that he was leading a session at the conference until I happened into his session, xUnit Test Patterns. Gerard’s session was shamelessly named after his book, xUnit Test Patterns: Refactoring Test Code, and provided an amazing amount of information for just a 3.5 hour talk.
xUnit in this conversation refers to any unit test framework and is meant as?a stand in term for nUnit, jUnit, mbUnit, csUnit, etc. You get the idea. His techniques for simplifying unit tests kept me up all night Thursday refactoring tests within a little pet project of mine and loving every minute of it. He had some great technique suggestions and although I have not yet ordered his book, I recommend it to you.
Domain Driven Design : Strategy
Eric Evans?(who looks bizarrely like Russell Crow)??is a patient man. Despite the random fire alarms in the hotel he managed to walk?an enthusiastic audience of 25 or so through an introductory lesson in Domain Modeling for driving software systems. This dude has serious gray matter and introduced me to a subject I am definitely interested in. Eric walked us through a model of a system within a fictional organization that claimed money savings was its market differential. As you may guess, a model of the system of departmental interactions within the company showed that the system was actually optimized for a very different purpose.
In other words,are you really in the business you want to be in? Do all of your development activities support that position? Eric introduced a great framework for modeling these systems and companies and I ordered his book this morning.
My Random Thoughts on Domain Modeling
There is an inherent lack of technology that will reverse engineer a model from code and build a conceptual?representation in the process. For instance, to drop class files onto a Class Diagram Model in Visual Studio is a very helpful thing for class visualization, but the model generated does not know that the classes it has received work together to form a particular design pattern.?Nowhere in the model do we see an entity represented as “The Strategy Pattern”. Nor does the model represent a group of classes as a domain specific thought.
This makes models inherently unstable due to their lack of value after an initial implementation generation event. Simply put, models get out of sync with code after only a little drift and reverse engineering the code doesn’t build the model well enough to make it useful beyond “seeing” classes. We have some technical evolution to experience here.
Technorati tags: Agile2007, Agile, Unit Testing, DDD
You may be interested in the current work of Charles Simony at Intentional Software:
http://www.intentsoft.com/technology/overview.html
I saw a demostration of the software he was working on at OOPSLA last year and in my opinion it was pretty amazing stuff. The sofware addresses just the problem you are talking about with the code and model getting out of sync. Traditional methods have attempted to solve this problem with models and code generation, I’ll leave it up to you to decide if that has been a success or failure. Intentional Software is all about putting the code back in the drivers seat, which makes perfect sense because its the only artifact that doesn’t ever lie. The models in this scenerio are just projections of the code so it’s always up to date.