Chapter 1
It’s All about the Words

“When I use a word,” Humpty Dumpty said in rather a scornful tone, “it means just what I choose it to mean—neither more nor less.”

“The question is,” said Alice, “whether you can make words mean so many different things.”

“The question is,” said Humpty Dumpty, “which is to be master—that’s all.”

[Carroll 1871]

We are indeed the masters of our words, and we have the responsibility to define them. What I call “the Humpty-Dumpty problem” is the fact that we must define our words in sensible ways, while not contradicting earlier uses of the same words, nor making them mean so many different things.

It is my belief that many of the unsolved problems in the information technology (IT) field remain unsolved simply because our technical vocabulary is impairing our ability to speak and reason about these problems. Our contemporary technical vocabulary often redefines words from everyday use and from mathematics and logic in subtly different, often confusing, and sometimes mistaken ways.

This book sets out to solve these problems by re-examining the definitions of words that we consider to be fundamental to data modeling, semantics, and software development—words like type, class, entity, and relationship—and by tuning them up to make them more precise. We will not redefine these so much as we will refine them: we will make them mean less, so to speak. When we are done with them, the meanings of these words will overlap less, and this will empower us to think, design, and communicate more clearly than ever before. Certain data model patterns that have always been challenging will become tractable, and there will be less impedance when integrating data with software and semantics.

But since we can make words mean so many things, what is to guide this refinement? What safety measures can we appeal to so that we don’t just end up with a different version of the soupy mix of words that we already have? My approach is to start with the ordinary words of everyday English—the so called natural language that we all grew up with and knew how to use long before we knew what a computer was. It is this vocabulary, after all, from which the IT industry has borrowed to name its specialized terms. But when we need to specialize a term, we will first judge its specialized definition according to how well it meshes with natural language. Only then will we consider how a term meshes with related terms and with other well-established terminology in the IT field. We will also look for definitions that are more consistent with themselves, and more primitive, depending on fewer external terms—therefore more precise. Finally, we will favor definitions that are useful as building blocks, supporting higher-level definitions based on them.

Once we can get past the assumptions built into today’s terminology, we will be able to see clearly the solutions to today’s intellectual roadblocks. We will discover why we struggle with certain data modeling challenges, why it is so hard to integrate object-oriented software with databases, and why the expression of meaning is so elusive. Armed with our new terms and understanding, we will look again at design.

Like Humpty Dumpty, folks get very defensive about their ideas of what words mean, and don’t take kindly to others changing their meanings. But unless we can open our minds to altering some of our terms’ definitions, to make them more precise and more meaningful, we will be stuck without solutions to some of our most important problems. So, although it may at first be difficult to make the shift, please open your mind to accepting new, more precise definitions for old familiar terms. You will be amply rewarded as old problems melt away and analysis and design become easier and more powerful.

To help you remember the new definitions, each chapter that introduces new terms reviews their definitions at the end of the chapter. There is also a full glossary at the end of the book. Most of the natural-language definitions we will use are drawn from Merriam-Webster’s Online Dictionary (www.Merriam-Webster.com).

It may be easier to learn the refined definitions than you would anticipate. This book has been carefully edited to ensure that it uses these familiar terms only in ways consistent with their refined definitions. As a result, you should find as you read along that you’ll gradually forget about the older, broader, fuzzier definitions of these terms. Being more precise will become easier than returning to the less-precise notions you had before.

Key Points

  • Many of our modern technology terms have overlapping and imprecise meanings. This clouds our ability to reason and communicate about design problems.
  • We will return to everyday English (“natural language”) to judge and refine the meanings of our terms.
  • After completing this refinement process, design problems that have stubbornly refused to be solved will yield to our more precise terminology.

References

[Carroll 1871] Carroll, Lewis. Through the Looking Glass, 1871, chapter VI. Found at http://en.wikisource.org/wiki/Through_the_Looking-Glass,_and_What_Alice_Found_There/Chapter_VI