I was reading the other day about a curious incident on a plane flight that involved a problem with the airline’s business rules. A passenger had booked a seat for herself and her child, who would sit on her lap, as permitted by the airline’s rules. However, the airline refused to fly them as the child was a conjoined twin – it had two sets of lungs and therefore needed two air-supplies in case of emergencies and the aircraft did not have that spare capacity. Hence the business rule that had always been implied – one passenger would only ever require one emergency air-supply – was false.
When trying to model a business, it’s probable that you will miss some of the more obscure (and correspondingly less likely) business rules. This is not the “asteroid hit” tiny-probability/huge-impact scenario; there are a multitude of low-probability/low-impact scenarios that, while not necessarily life-threatening, could certainly spoil your customers’ day.
I was thinking about how to model this in a manner that did not give an unmanageable multitude of exception conditions. In engineering terms, the common best-practice is to allow for a “catch-all” exception:
In human-computer interaction modelling via scenarios or use-cases, make use of a default exception flow; when implemented in a system, this may be a work-queue for a supervisor to deal with manually.
In systems engineering and in real-time systems, there is a succession of fail-to-safe or “limp-home” modes; these can be imagined as concentric circles of smaller and smaller useable subsets of functionality, the smallest of which gives a “minimum stakeholder guarantee”, a small portion of functionality that is delivered if all else fails – perhaps an entry in a diagnostic log, or a handover to manual human control.
To return to the airline, the problem was having no available workaround to solve the business-rule impasse, to ensure that all parties were satisfied. In terms of day-to-day business planning, the best idea is to empower your workforce – by providing adequate resources and sufficient personal development – to have the flexibility and confidence to deal with these exceptions when they occur.