Business systems use too many terms, and each term has too many possible meanings, for anyone to remember. We need help organizing our terms.
How we perform this organization and how we use the resulting categories will determine the quality of our systems. Mechanisms for storing and using ontologies and taxonomies exist. That isn't the hard part. The hard part is building or recognizing good ontologies.
The fact that we all categorize things naturally and automatically doesn't mean that we all do it equally well, nor that we can communicate what we mean by any given category. Therein lies our challenge.
If we expect the categories in our computer systems to be as dynamic as those in our linguistic systems, we need the following:
The ability to refer to a category and thereby become one of that type (so a "Joe Jones" object could become "adult" and acquire new behavior)
The ability to refer to more than one category at a time (the equivalent of dynamic multiple inheritance)
The ability to disconnect from a type with which the object had been associated
The ability to retain properties acquired while in a prior state/type
The ability to have a type remove behavior as well as add to it
Once we have defined our types, taxonomies, and ontologies, we can begin to structure them for storage and sharing. This is the realm of data modeling and database design, which we take up next.