This post originated from an RSS feed registered with Ruby Buzz
by .
Original Post: Data and Reality
Feed Title: cfis
Feed URL: http://cfis.savagexi.com/articles.rss
Feed Description: Charlie's Blog
Latest Ruby Buzz Posts
Latest Ruby Buzz Posts by
Latest Posts From cfis
Advertisement
Every artistic endeavor strives to capture some slice of the world around
us. You might be trying to create as realistic a portrayal as possible,
or maybe you're after a highly abstract portrayal that tries to evoke some
emotion.
In the world of software (an artistic endeavor if I've seen one), we
create highly-tailored portrayals that are suitable only for the purpose
they were constructed.1 Take
two or more programs that are in the same problem domain - human resource
software, databases, blogging software, etc. None of them will be compatible
because they represent a single designer's (or maybe a couple)
view of a problem domain. And every one has a different view of the problem
to be solved and how to solve it.
Take a simple term - say a street. What
it is it? Have you ever been on a street that ends, and then starts up
in a few blocks? Is that the same street? How about a street whose name
changes - is it still the same street? Does a street include boulevards,
highways, freeways? Does a street cross city, county, state boundaries?
Do you and I live on the same street, although I live in the United States
and you live in Canada?
Most of us just want to bury our heads in the sand when faced with such
questions - thinking about them is painful because there is no right answer
and you're immediately led to deep philosophical questions about how we
perceive the world around us. And most books and papers on the subject
are highly technical, and of very little use to people who need to create
software by yesterday.
Fortunately, there is a fantastic book on the subject, called Data
and Reality, that is deeply grounded in how these issues affect
software design. Written by William Kent, it addresses issues
that come up every day in design. What is the difference between an identifier
and a name? What is a type or category? What is the difference between
an attribute and a relationship? For that matter, what's the difference
between types, attributes and relationships? What are the strengths and
weaknesses of the hierarchical, network and relational models? Don't
expect any easy answers - because they aren't any.
Don't let the publication date, 1978, fool you. The questions the book
raises are as valid today as then. In fact, I'd bet they'll be just
as valid one thousand years from now. Luckily the book was reprinted in
2000, so go pick up your copy now before it goes out of print again.
Let me leave you with one of my favorite passages from the book (page
10, 2000 paperback edition):
We seem to have little difficulty with the concept of "one person"
despite changes in appearance, personality, capabilities, and,
above all, chemical composition...When we speak of the same person over
a period of time, we certainly are not referring to the same ensemble
of atoms and molecules. What the is the "same person"? We can only appeal
to some vague intuition about the "continuity" of - something -
through gradual change. The concept of the "same person" is so familiar
and obvious that it is absolutely irritating not to be able to define
it. Definitions in terms of "soul" and "spirit" may be the only true
and humanistic concepts, but significantly, we don't know how to deal
with them in a computer-based information system. It is only when the
notion of "person" is pushed to some limit do we realize how imprecise
the notion is.
1I can't help but think of software
products as Mount Everests on a fitness
landscape that are infinitely thin. Veer just slightly off their intended
purpose and everything comes crashing down.