EDUCE Overview | Copyright 2009 Nikolas S. Boyd. All rights reserved. |
Replace a comparative clause with an appropriate summary name (a descriptive noun phrase).
Some predicates describe conditions, constraints, or situations (esp. results). These predicates compare objects or their attributes and values. Conditions often appear as dependent clauses in business rules, or as business policy statements, or quality requirements. In code, conditions will often become class constraints or guarantees, method pre-conditions or post-conditions, tests, or guards.
Use condition description when
You can give a comparative clause a descriptive name (as a descriptive noun phrase), thereby creating a definition for the descriptive name. The general process of creating names in this manner is called nominalization. More specifically, you can summarize a value relation using a noun phrase with a descriptive adjective. The adjective describes the condition or situation contained in the clause. Consider the following simple example:
a full storage building = a storage building whose drum count equals its drum storage limit
Once you've derived an appropriate term, you can then substitute it into another sentence in place of the original clause it replaces. Such nominalization and substitution allow you to tie the separated statements together and retain the meaning of the original complex sentence.
This kind of transformation can be especially powerful when used to simplify joined clauses. For example, consider the following pair of coordinated clauses and the simplification that results from a condition description and substitution:
a building's drum storage count equals its drum storage limit and
a neighboring building's drum storage count equals its drum storage limit
a full storage building neighbors another full storage building
depot vulnerability = the depot has two (or more) full neighboring storage buildings
Note that the last statement in the example above also uses clause summary. You will often find these two forms of nominalization very powerful when used together to dissect and decompose complex statements into their simpler counterparts.
Note that condition descriptions are reversible. The reversibility of nominalizations can play an important part in translating requirements into working code, especially when translating problem descriptions and usage requirements that contain descriptive phrases into comparative relations between objects and their attributes.