Re: The wisdom of the object mentors (Was: Searching OO Associations with RDBMS Persistence Models)

From: Robert Martin <unclebob_at_objectmentor.com>
Date: Wed, 31 May 2006 08:55:24 -0500
Message-ID: <200605310855247987-unclebob_at_objectmentorcom>


On 2006-05-30 07:51:15 -0500, "CMCC" <c_jackal_at_hotmail.com> said:

> Robert Martin wrote:

>> No, a DBMS is a bucket of bits with some low level rules to manage
>> those bits.  An OO application provides the beavior that the customer
>> wants to see.  We can completely eliminate the DBMS and replace it with
>> another of an entirely different form (non Relational for example) and
>> still have all the business behavior we need.
>> The people who sell databases have sold you, and the industry, a
>> misconception: that the database is the heart of the system.  This is
>> flawed.  The heart of the system is the application code.  The database
>> is a detail to be decided at the last possible moment and kept in a
>> position so flexible that it can be swapped out for another at a whim.

>
> No, a OO application is a bucket of bits with some low level rules to
> manage
> those bits. An DBMS provides the beavior that the customer
> wants to see. We can completely eliminate the OO application and
> replace it with
> another of an entirely different form (non OO for example) and
> still have all the business behavior we need.
>
> The people who sell OO applications have sold you, and the industry, a
> misconception: that the OO application is the heart of the system.
> This is
> flawed. The heart of the system is the DBMS. The OO application
> is a detail to be decided at the last possible moment and kept in a
> position so flexible that it can be swapped out for another at a whim.

Let this be a lesson to all you cowards who resort to ad-hominem attacks and name calling. THIS post is a very good rebut to mine. He actually used his BRAIN to invert my argument and throw it back in my face. And he did it without calling me a fool, or an idiot, or a trickster.

Carlos, I have to agree with everything you said. From the data=modeler's point of view, the application is just a pile of behaiors. Applications will come and application will go, but the data structure will remain. It may change. It may grow. But it will always be there!

And this brings us to the real issue at hand. Each side views the other as a bucket of bits! Is this an error? Is this a flaw? No! This is good software design! It is the role of software design to abstract away the details. From the point of view of the application, the database is a detail. From the point of view of the data model the applications are details. And that's the way it SHOULD be.

Application developers get into trouble when they DONT treat the database as a detail.

Data modelers get into trouble when the DONT treat the applications as details.

Clearly there must be collaboration accross the divide. Just as clearly each side has it's own discipline, it's own value, and in order to create well decoupled design, each side must abstract the other away.

-- 
Robert C. Martin (Uncle Bob)  | email: unclebob_at_objectmentor.com
Object Mentor Inc.            | blog:  www.butunclebob.com
The Agile Transition Experts  | web:   www.objectmentor.com
800-338-6716                  |
Received on Wed May 31 2006 - 15:55:24 CEST

Original text of this message