ON “AGILE MODELING”
with Fabian Pascal

 

 

 

From: Ben Stevens

Date: 11 Oct 2004

 

I had not known the term "agile modeling" until I read your article Agility Derives From, Is Not Substitute for Foundation Knowledge, but I have definitely encountered the practice before.  In fact, I once had to give up a database project because I was not "agile" enough. (The database was for tech support, but Marketing people kept wanting to add technically irrelevant data for demographic purposes.  They also kept insisting that I change attribute names that sounded "too negative", such as "complaint".  I couldn't keep changing the database and front-end application fast enough for their ever-changing tastes.)

 

I agree with the point of your article, and have nothing to say about it.  Instead, I would like to question the value of agile modeling itself.  Let me start by repeating a quote by Ambler:

 

The first version of the KSMS [agile model] supports the critical functions required to run the dojo: the management of basic student data and collection of money from them. When you look at the “Initial Data Model,” you see that we’re not tracking the student’s state/province. Because we’re building for a single dojo that isn’t near the border, we can safely assume that all students live in the same province. Lesson number one: Agile data models are just barely good enough. Agile developers solve today’s problem today and trust that they can solve tomorrow’s problem tomorrow; therefore, if we need to support people living in another province, we’ll add that functionality at a later date … Don’t build something until it’s needed.

 

I don't know anything about the dojo or where it is, but I do know that I live in an area where some people travel hundreds of miles on a daily basis, crossing into other states, so I'm already conceptually bothered by the example Ambler gives.  Even allowing for his reasoning, the moment that a state attribute does get added, someone has to go about updating all the students who were in the database from before.  This kind of massive update is an invitation to anomalies.

 

Furthermore, let's take the same approach with a different attribute.  Let's say that the dojo doesn't have an e-mail account, so they don't bother storing students' e-mail addresses.  Later, the dojo does get an account, and intends to use it often.  At that point, somebody has to go to the trouble of asking all the students for their e-mail addresses in addition to the trouble of adding the data. This is tedious and error-prone.

 

Another mind-boggling aspect of agile modeling is how "agile" application developers must also be to keep up with a changing database schema.

 

As someone who has numerous online accounts, I see the effects of such schema updates all the time, and I am annoyed when a service I have been using for a long time suddenly refuses to work for me until I add new data that they only now require.

 

So, it seems to me that agile modeling is dangerous to data integrity, tedious for data collectors (in cases where they are used), difficult for DBAs and programmers, and annoying for users.  I see nothing good in it.  Sure, sometimes attributes need to be added to a database. But why should anyone make a habit of purposely leaving out attributes until they absolutely need them, whenever that need might arise?  What happened to analyzing one's goals and thinking ahead a little bit?

 

Lastly, perhaps I'm too judgmental, but I think that anyone who jumps on board with willy-nilly "agile modeling" probably does not have the mentality to learn and properly use the relational model.  Put another way, although agility and foundation knowledge are not at odds themselves, the more a person favors agility (as I have seen it), the less likely it is that the person has foundation knowledge.

 

 

Ed. Comment: Ambler does not seem to know or understand data and relational fundamentals, which does not stop him from criticizing them to the point of absurdity, for example On Logical Persistence Models, or Weekly Quotes of 2002 (10/06, 12/01), and 2004 (6/11).

 

 

Revised 4/28/06

Posted 11/12/04

© Fabian Pascal 2000-2006 All Rights Reserved