How Can I Create Good Definitions?
There is a necessity for a common understanding when it comes to software development. It is vital that everyone—including stakeholders, business analysts, developers, and quality assurance—communicates properly if we are to efficiently build the software applications required to meet the needs of our organizations.
Nowhere is this truer than in the area of requirements. We know good requirements have certain characteristics; two of these are that they be clear and unambiguous.
However, creating clear and unambiguous requirements necessitates good definitions, whether these requirements are part of a formal document, user story, or agile conversation. For example, no matter how clear a requirement may appear, if the word "client" is used and you and I have different understandings of what a client is, we are opening our project up to some major challenges. That said, creating good definitions can sometimes seem quite difficult.
One technique I use to assist in developing a good definition is the "genus-differentia" approach, where I try to build definitions in two parts. The genus is the family (i.e., broad class or category) to which the object being defined belongs. The differentia provides details or characteristics of the object that distinguish it from all other members of the same family.
For example, we could define a client as a person [genus] who purchases products or services from our company [differentia]. Another example: A life policy is a contract [genus] that is formed between a client and an insurance company to provide a cash benefit to beneficiaries on the death of the life insured [differentia].
Now, these definitions are simply examples; their adequacy is dependent on organizational context. But notice that these two definitions suggest the possible need to define new terms such as contract, benefit, beneficiaries, and life insured.
Once defined, a term can be used as the genus of another definition. If we accept the above definition of a life policy, we can then define a whole life policy as a life policy [genus] that remains in force for the entire life of the life insured [differentia]. Following that, we can define a participating whole life policy as a whole life policy [genus] that pays dividends to the policy holder [differentia].
If you decide to try this technique and find it difficult to choose a genus, you can opt to start with a less specific genus such as a person, place, object, concept, event, etc. Another helpful practice is to consider several examples of the term to be defined. An examination of the common attributes can assist in identifying both genus and differentia.
There is more that can be said about the genus-differentia approach, but the above suggestions should provide sufficient detail to get you started. So the next time you need to create a definition, try this technique. The more you practice, the better you'll get.