From: frebe73 on
> > You claim that it is possible to only have a few number of
> > getEmployeeBySomeCriteria methods with optimized SQL statements for
> > every different way you might need to fetch employee data? That should
> > only be possible for rather small applications.
>
> Can you give an example of an application that would have an excessive
> number of getemployeBySomeCriteria() methods that doesn't encroach on
> becoming a report writer?

A HR application need data about employees in many different ways. RCM
already gave you one example of a very specific criteria for finding
employees. When a company needs to reduce the staff, it would be nice
if the HR application had a feature to find employees eligible for
early retirement, wouldn't it? It is easy to imagine other examples of
very specific ways of finding employees. Lets say we want to send every
manager an email containing the employees having 30-, 40-, 50-year
birthday next month. Lets say we have a function sending information to
insurance company about changes in salaries, we need a way to find
employees with changed salary. How could you possible solve this only a
few functions for finding employees?

> All our reports have been implemented as
> stored procedures and have been meticulously crafted to perform well and
> balance to other reports. There are many similarly-named reports but
> the user doesn't really see that because they navigate through the data
> starting at the top-level and drilling-down.

Are there any significant difference between producing data on a paper,
displaying it on a computer screen or using it in a thread sending
e-mails? I have seen systems like you describe above. The only way to
access a lot of the information was to print it, or get it as a large
PDF-file. It so 60's.

> If there really was a requirement for ad-hoc getEmployee() methods

What's ad-hoc about set theory and predicate logic?

Fredrik Bertilsson
http://mybase.sf.net

From: topmind on


On Jan 26, 12:59 pm, Robert Martin <uncle...(a)objectmentor.com> wrote:
> On 2007-01-25 22:23:23 -0600, JXStern <JXSternChange...(a)gte.net> said:
>
> > On Tue, 23 Jan 2007 15:43:12 -0600, Robert Martin
> > <uncle...(a)objectmentor.com> wrote:
>
> >>> I deny any such claim even makes sense, other than making Agile a
> >>> wrapper you can throw anything at all into.
>
> >> My point was that "Agile" makes no judgements on whether a parcticular
> >> tool is "good" or "bad" (i.e. pro/con). Rather it makes judgements
> >> about how and when tools should be used.
>
> > I deny that it makes even a little bit of sense to say that Agile
> > offers any judgement on when and whether to use RDBMS. You're
> > overloading the term "Agile" to link unrelated advice in random
> > directions.
>
> Not at all. One of the fundamental rules of Agile is YAGNI, "You
> Aren't Going to Need It." In short, this rule says that you should not
> include support for something just because you think you are going to
> need it. Only provide support for what you need right now.

Then why do you wrap all your SQL behind classes, methods etc? Was that
an up-front need? Yagni adherence would dictate waiting until you
actually need wrapping. (By the way, I somewhat disagree with Yagni. It
is a good rule of thumb, but should not be sought dogmatically.
Software development is about weighing gajillion tradeoffs. It's a
tradeoff weighting symphony, You don't bang on just one piano key.)

>
> We used this advice in the development of FitNesse (www.fitnesse.org).
> Early on we were pretty sure we'd need some kind of database; but since
> the early features of the system didn't require persitence, we didn't
> select or implement a database.
>
> Later in the development we started needing the ability for simple
> queries, but we still didn't need persistence. Since the queries were
> simple (just name lookups) we created a data lookup interface and
> implemented it with a hashmap.
>
> Still later we started needing longer term persistence, but nothing
> very elaborate, so we reimplemented the data lookup interface with a
> flat file system.
>
> We've never needed anything more than that. We didn't know this when
> we started. We thought we'd need an RDBMS back end; but that just
> never turned out to be the case.

It sounds like FitNesse could have still used a database, or at least
it is close to the borderline. Making logs, reports, and querying is
almost always helpful even if not absolutely necessary. When you scale,
you will almost certainly start needing DB-like freatures, such as
multi-user concurrency and the above.

>
> I have also written other applications in which the decision to go to
> an RDBMS was made very early, because the features clearly required it.
> Not features for the future, but features for right now.
>
> So, Agile DOES provide guidance about when and where to use tools like RDMBSs.
>
> --
> Robert C. Martin (Uncle Bob) | email: uncle...(a)objectmentor.com

-T-

From: Robert Martin on
On 2007-01-26 12:44:12 -0600, Thomas Gagne <tgagne(a)wide-open-west.com> said:

> The biggest difference between Martin's and my approaches in this area
> is my belief the system starts with the data model and his starts with
> an behavioral model. Mind you, that's not a trivial difference...

Indeed not. We should debate that one day. ;-)
--
Robert C. Martin (Uncle Bob)��| email: unclebob(a)objectmentor.com
Object Mentor Inc.� � � � � ��| blog:��www.butunclebob.com
The Agile Transition Experts��| web:���www.objectmentor.com
800-338-6716� � � � � � � � ��|



From: Robert Martin on
On 2007-01-25 23:06:28 -0600, "topmind" <topmind(a)technologist.com> said:

> I have looked at Fowler's works, and found a lot of suspicous designs.
> He hates RDBMS almost as much as you. If you found a sure-shot example,
> please bring it up.

Neither Martin nor I hate RDBMSs. Martin's book on Patterns of
Enterprise Architecture is largely about techniques for using RDBMSs in
web based systems written in Java and .NET.

As for "suspicious designs", I think you should point them out rather
than broad brush the man's work with your incorrect assumption of his
hatreds.
--
Robert C. Martin (Uncle Bob)��| email: unclebob(a)objectmentor.com
Object Mentor Inc.� � � � � ��| blog:��www.butunclebob.com
The Agile Transition Experts��| web:���www.objectmentor.com
800-338-6716� � � � � � � � ��|



From: Robert Martin on
On 2007-01-25 23:06:28 -0600, "topmind" <topmind(a)technologist.com> said:

> Being popular is not the same as being good.

Neither is being unpopular. But this conversation has left the arena
of substance.
--
Robert C. Martin (Uncle Bob)��| email: unclebob(a)objectmentor.com
Object Mentor Inc.� � � � � ��| blog:��www.butunclebob.com
The Agile Transition Experts��| web:���www.objectmentor.com
800-338-6716� � � � � � � � ��|