Which came first... the domain model or the human?
secretGeek .:dot Nuts about dot Net:.
home .: about .: sign up .: sitemap .: secretGeek RSS

Which came first... the domain model or the human?

I found this article on dzone (and other places) recently... and just wanted to state my counter counter argument argument. The summary at dzone said:

"Never Start With the Data Model

The best systems start with a domain model and work through the various layers of the system down to the database, not the other way around..."

I have a big distaste for thinking of models (Data or Domain models) as something special, or truthful.

Models are just models... shadows, reflections, abstract thought stuff... they aren't the real thing:

Model makers are liars, simplifiers, beautifiers.

Do you want clothes that only fit models?

Software also shouldn't be built just to suit models.

'Models' are a modern spin on that ridiculous old notion of plato's cave. The folly of which is that you end up bending the people to suit the model.

Build on top of models, sure. But expect the model to need many corrections... factor that into your process.

(Breaking news on this subject: Microsoft's SOA vision: 'The model is the application', found via LosTechies, via Interesting Finds)

My preference says -- start anywhere. In fact, you start outside the software. With, you know... real people. The actual software aspect can start anywhere. User interface is a great place to start. So is the business logic layer. So is the database. Everything is open to change.





'Michael' on Thu, 01 Nov 2007 12:57:31 GMT, sez:

I've been working on a Model Driven Architecture project as described in the article for the past 3 years and my conclusion is that MDA is a ruse.

There are a lot of problems with MDA, some of which Microsoft might be able to fix (namely the lack of good tools) but some of which are paradigm problems.

"The Model is the Code" throws out over 30 years of software engineering common sense. Requirements? Specs? Design? We don't need 'em: "The Model is the Code!" All you have to do is write code and you get the rest of it "for free!" In my experience, the system code/design thrashes horribly...for years.

Also, The Model must still interact with external interfaces which can't be modeled. Modeling business logic is one thing but modeling keyboard input or a graphical display will still be done the "old" way. This detail is often overlooked by MDA proponents.

A lot of folks are going to tout this as the next big thing but you should see it for what it really is: a Silver Bullet. Critically evaluate Model Driven Architecture before blindly accepting it as bigger and better for software development.

And I'm not dumping on you, lb, that article you linked to on Microsoft SOA just prompted a knee jerk reaction from me.



'lb' on Thu, 01 Nov 2007 13:01:42 GMT, sez:

>And I'm not dumping on you, lb

not at all -- i think we're in complete agreement.

As soon as someone decides that 'the model is the code' they have to start bending things to try and fit... it's a gruesome mistake.

like you say:
>the system code/design thrashes
>horribly...for years.

great tooling will only help a team to thrash faster, and more vigorously.



'Oran' on Thu, 01 Nov 2007 17:39:49 GMT, sez:

So to summarize,

Fact: Models aren't reality, therefore all models are inaccurate.
Fallacious conclusion #1: Since all models are inaccurate, any type of model will do.

Fact: Software needs to start with real people.
Fallacious conclusion #2: Since step 1 is real people, step 2 which involves software can start anywhere.

This sort of "it's all good" attitude is a cop-out for real thinking and forming a well-founded opinion. One of the motivations behind the argument you're criticizing is that the model includes behavior, not just data. Starting from the database tends to neglect the behavior aspect of the model. Starting from the UI tends to focus on behavior at the expense of data. You can start from these points and still be successful, but only if you're consciously compensating for the biases your starting point introduces.



'lb' on Thu, 01 Nov 2007 21:30:29 GMT, sez:

@Oran: niiice response.

100% agreement with these two points:

>Starting from the UI tends to focus on
>behavior at the expense of data

>Starting from the database tends to neglect >the behavior aspect of the model

But I'd add a third point:
>Starting from a model lets you neglect
>both behaviour and data equally.

i'd say you have to 'consciously compensate' no matter what technique you use.

my attitiude is definitely not "it's all good" -- but rather "it's all intensely difficult"

In the end you have to go right into each tier in depth, getting nothing for free, regardless of where you start.







name


website (optional)


enter the word:
 

comment (HTML not allowed)


All viewpoints welcome. But the right to delete any post for any reason is reserved. Don't make me do it. Comments may be republished, emailed to your loved ones or printed and used as toilet paper. Who reads this legal bit anyhow?

TimeSnapper is a life analysis system that stores and plays-back your computer use. It makes timesheet recording a breeze, helps you recover lost work and shows you how to sharpen your act.

TimeSnapper won last year's Developer Competition at Larkware.com, and is used by over 10,000 people.

Articles

21 tools used in our MicroISV 21 tools used in our MicroISV
Lost Treasures of the DOS World: tree! Lost Treasures of the DOS World: tree!
The Virtual Machine Machine and the Virtual Virtual Machine The Virtual Machine Machine and the Virtual Virtual Machine
Should Linq To Sql Go Should Linq To Sql Go "Open Source"?
Redux: New Synchronisation Idea Overlooked By Microsoft Redux: New Synchronisation Idea Overlooked By Microsoft
New Synchronisation Idea Overlooked By Microsoft Live team New Synchronisation Idea Overlooked By Microsoft Live team
Visual Studio UX Taskforce, Office UX Taskforce... etc. Visual Studio UX Taskforce, Office UX Taskforce... etc.
How to be Jeff Atwood How to be Jeff Atwood
Reuse good -- Abstractions better! Reuse good -- Abstractions better!
Word of the day: Upsert Word of the day: Upsert
awesome Atli tooltip awesome Atli tooltip
Leaky Abstractions? Try Asp.Net! Leaky Abstractions? Try Asp.Net!
A truly original thought A truly original thought
Throw New VirtualMachine(); Throw New VirtualMachine();
Undo, redo, predo, preundo Undo, redo, predo, preundo
A little A little "bit" of programming therapy
Coding Koan: the power of one Coding Koan: the power of one
Behavior Driven Development: As Human As Possible Behavior Driven Development: As Human As Possible
What To (Really) Do If You Find Out Your Parents Are Using Vista (redux) What To (Really) Do If You Find Out Your Parents Are Using Vista (redux)
What To Do If You Find Out Your Parents Are Using Vista What To Do If You Find Out Your Parents Are Using Vista
Sample Code From Text-Adventure Game Platforms Sample Code From Text-Adventure Game Platforms
TimeSnapper 3.0 -- an interactive, bubbling cauldron of possibilities TimeSnapper 3.0 -- an interactive, bubbling cauldron of possibilities
The laptop compubody sock The laptop compubody sock
Everything that's bad for you is suddenly good for you! Everything that's bad for you is suddenly good for you!
Everything I know about Code Reviews I learnt from Star Wars (and JCooney) Everything I know about Code Reviews I learnt from Star Wars (and JCooney)
Syntax highlighting of strings Syntax highlighting of strings
Google AppEngine: evil virus or viral evil? Google AppEngine: evil virus or viral evil?
Workflow software: I'm calling the bluff. Workflow software: I'm calling the bluff.

Archives .: secretGeek :: Complete Archives :.
25 steps for building a Micro-ISV 25 steps for building a Micro-ISV
3 minute guides -- babysteps in new technologies: powershell, JSON, watir, F# 3 Minute Guide Series
Top 10 SecretGeek articles Top 10 SecretGeek articles

Downloads

TimeSnapper -- Automated Screenshot Journal TimeSnapper.com    
Version 2.5: with password protection

ShinyPower (help with Powershell) ShinyPower
Now at CodePlex

Next Action NextAction
Managing the top of your mind



[powered by Google] 


Thai Erawan, Brisbane Restaurant, delicious thai food in paddington Thai Erawan, Brisbane Restaurant
World's Simplest Code Generator (html edition) World's Simplest Code Generator
Gradient Maker -- a tool for making background images that blend from one colour to another. Forget photoshop, this is the bomb. Gradient Maker
How to be depressed How to be depressed
You are not inadequate.



Recommended Reading

The Best Software Writing I
The Business Of Software (Eric Sink)

Recommended blogs

Jeff Atwood
Reginald Braithwaite
Joseph Cooney
Phil Haack
Scott Hanselman
Julia Lerman
Joel Pobar
Eric Sink
Joel Spolsky
Des Traynor

Aggregated Links

programming.reddit.com
dzone
dot net kicks

Human Link Machines

interesting finds
a continuous learner's weblog
arjan's world
n links today
new and notable
morning coffee
learning .net
weekly link post
(my del.icio.us account)

LinkedIn profile
 
home .: about .: sign up .: sitemap .: secretGeek RSS .: © Leon Bambrick 2006 .: privacy

home .: about .: sign up .: sitemap .: RSS .: © Leon Bambrick 2006 .: privacy