Mining business rules from legacy code raises big challenges. They’re often implemented in arcane, highly procedural languages. The person or team who wrote the code is often long gone (or perhaps in India). Bringing them back into a form that business people and business analysts can understand is hard.
To illustrate, here is an as-coded example from a major bank:
For Primary Borrower or any Guarantor, IF [Processing Date – Credit Bureau File Since Date] is < 12 months AND the total # of Type Code of ‘R’ and ‘O’ trade lines is 3 or less AND the total # of ‘I’ and ‘M’ trade lines is zero AND the Industry Code = OC, ON, OZ, DC, DV, DM, DZ, Then result is Refer.
Obviously most business workers are not going to understand that specification or be able to validate what it says. Actually, this example is well above average in readability – most coding languages are even farther removed from daily business parlance. If you want to have real conversations with business partners, core business knowledge needs to be expressed in structured natural language (e.g., in RuleSpeak®), making careful use of common business vocabulary.
The example above is interesting for another reason. Note the outcome of the specification, the portion after the then, is “Refer”, meaning that the matter in question cannot be resolved. This specification actually does nothing but kick work back out to a human!
A specification that simply escalates a case to a human is not a true business rule at all. Rather, it’s an acknowledgement the actual business rule(s) still haven’t been captured and encoded. That knowledge lingers in somebody’s head (hopefully!).
Our broad experience in reverse-engineering business rules has exposed us to harsh reality: No silver bullets. Once business rules have been encoded procedurally, semantics are lost that cannot be resurrected automatically. You’ve made a bargain with the devil.