Why Scrum needs desperately ADDD

(ADDD = Abstract Domain Driven Development)

OO- paradigm was actually developed to manage better complexity than previously had been achieved. The whole agile approach has the same idea.

Actually it reveals that the whole OO –development encourages doing things in agile way. Take for instance Grady Booch Object Solution it describes and recommends very pure agile approach even if the term agile was not yet used at that time in OO community.

The fundamental aim is to manage the complexity of the reality. The finding is that when the intrinsic complexity exceeds some threshold there is no way to do an overall design first and then implement it.

Here is a short quote from book by Schwaber & Beedle: Agile Software Development wit Scrum (page 24)

… They inspected the systems development processes that I brought them. I have rarely provided a group with so much laughter. They were amazed and appalled that my industry, systems development, was trying to do its work using a completely inappropriate process control model. They said systems development had so much complexity and unpredictability that it had to be managed by a process control model they referred to as “empirical.” They said this was nothing new, and all complex processes that weren’t completely understood required the empirical model. They helped me go through a book that is the Bible of industrial process control theory, Process Dynamics, Modeling and Control [Tunde] to understand why I was off track.

The agile solution is very simple: to manage complexity at the edge of implementation and narrow the degrees of freedom with implementing on the way. This is why it can be used in variety of disciplines. OO gives a description how this is done in the case of application development.

The nature of complexity in general is that it grows non-linearly. This means that when the number of components grows beyond a limit the complexity will explode.

The trouble with Scrum is that is very powerful tool to manage productivity of group of people. Because of it generality is doesn’t not offer anything software development specific.

The big question here is who to quickly find out the development direction with some accuracy. Starting from plain user stories lacks required direction and the experience is that heavy restructuring is needed in the 3. or 4. sprint, when the structure of the domain starts to emerge. Most of this is can actually be avoided when the effort is started with abstract modeling before the start of implementation (Scrum) project.

So the big question is, when we have to reduce the number of element how should this be done so that it still to retain the most significant aspects. My (modified) OO answer is the following:

  1. Abstract domain OO-model gives the simples model of required functional subset of reality
  2. To more simplify the task loosely connected aspects have to be kept very clean. This mean logical 3-tier architecture and middle tier business logic layer with no outside references what so ever.

These elements are tied together with iterative and incremental approach.

My modification separates the abstract domain (business logic) modeling right in the beginning and postpone the application analyzes much later in implementation phase.

So my recommendation to day is that an abstract OO domain model is always created prior Scrum development or as the first sprint. I prefer outside Scum, because the nature the work in this phase is not Scrum-like at all.  This is how I and my colleges have been working for years.

During the development phase the abstract model can (even should) be the basis for business tier implementation and the model should grow with number of attributes and methods. My experience is that increase in the number of classes needed for implementation is very minimal.

15.4.2010

See also interesting discussion in LinkedIn :

http://www.linkedin.com/groupAnswers?viewQuestionAndAnswers=&gid=842347&discussionID=17313325&goback=.hom.anh_842347

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: