« Yellow Pages.com Rewrite | Main | RailsConf 2008 Saturday Night Key Note: Kent Beck »

May 30, 2008

Summary: Dialogue Concerning the Two Chief Modeling Systems

Jim Weirich, Joe O'Brien, and Chris Nelson acted out a dialog where they built an application to reserve conference rooms.  Very entertaining and novel approach for a tech conference!  I loved it.  But, to the point now - the summary...


So, you want to build something?  

Their are at least two philosophies to fleshing out the model: Traditional object-based modeling and behavior-based modeling.  How are these different?

Object-based data modeling starts with nouns (table names, class names), their sub-properties, and relationships with other nouns.  Behavior-based, asks first what the user's goal is, defines a set of verb-based expressions (methods), and is then followed by the supporting nouns and their relationships derived.  Both have advantages and disadvantages.

Object-based modeling can be brittle when new behaviors are needed.  Behavior-based modeling can lead to object/relational impedance mismatches that are hard to resolve.  


Conclusion

The right answer is... hold on... 

"Think."  

Of course.  Just "think," he says.  In other words, there's no right answer.  

I hate hearing that, even though I know it's true.  So, I pressed Jim later and got this much from him (paraphrased):

Behavior-based modeling is a good fit for application-level data modeling.  Behaviors and their supporting nouns tend to be consistent within an application, regardless of varying ways the data may be persisted.  For system or cross-application data modeling, a more abstract, noun-first (object-based) approach may be better.  This way, the data structure doesn't have to change from application to application.

TrackBack

TrackBack URL for this entry:
http://www.typepad.com/services/trackback/6a00d83455a82969e200e55291a0308833

Listed below are links to weblogs that reference Summary: Dialogue Concerning the Two Chief Modeling Systems:

Comments

Verify your Comment

Previewing your Comment

This is only a preview. Your comment has not yet been posted.

Working...
Your comment could not be posted. Error type:
Your comment has been posted. Post another comment

The letters and numbers you entered did not match the image. Please try again.

As a final step before posting your comment, enter the letters and numbers you see in the image below. This prevents automated programs from posting comments.

Having trouble reading this image? View an alternate.

Working...

Post a comment