Friday, September 27, 2013

The Macro Expansion Heuristic – A Real World Example

I enjoy learning new things, and I especially enjoy making connections
between things I've learned or read about, and applying them to real-world situations.
I had the opportunity to do that today while I was brainstorming with a colleague
for a presentation on model-based testing and its application in intelligent automation.
We were talking about the benefits that model-based testing provided when my
colleague said something that caught my attention: we are modeling requirements.

I tend to be overly careful in conversations about
model-based testing because my experience comes from modeling the states of use
of an application and not the approach we’re taking with model-based automation,
and I don’t want to use the incorrect context. So I stopped and thought about
it for a few seconds before telling my colleague that I wasn't comfortable with
that statement. Something about it didn't sit right with me, and I suspected it
was that the statement either did not correctly say what was meant or did not mean
what was said.

We talked it through and mapped it out in our mind map, but
were still unable to agree that the statement was correct, but by now I believe
that my colleague was also unsure as to whether or not he had said what he
meant or meant what he said. It then occurred to me that I had seen a similar
problem before, and that problem had been presented along with a heuristic that
we could apply to solve the problem – the concept of a macro expansion,
which I had first seen applied to communication by Michael Bolton in his blog
post “What Do You
Mean By ‘Arguing Over Semantics’?”

When we generalize on the concept of a macro expansion we
can utilize it to take a single word and expand it into a series of words that
more accurately express what we mean. I asked my colleague if we could do a small
exercise on the white board to sort this out, and he agreed. Taking one of the
markers present I wrote on the board:

“We’re modeling the
requirement.”

As I was writing I told my colleague that if we were to
expand that statement, we would get something that better said what was meant.
So, under that I wrote:

“We’re modeling that
the requirement was correctly implemented.”

After further discussion we agreed this could be shortened
without a loss of clarity, so I wrote:

“We’re modeling
correct implementation.”

We were both comfortable with that statement, and felt that
it truly expressed what we were attempting to say.

Having the feeling that we were on to something, we took this one step further. If we’re modeling correct implementation then any discrepancy between the actual implementation and what we have modeled means that there is a problem. That means that the models we are creating are mechanisms by which we recognize a problem. That sounds rather familiar....