Reducing Software Complexity

Gordon Morrison
Gordon Morrison

Reducing Software Complexity

CMU-SEI: Good Idea Poorly Implemented. You can download the course materials that I will refer to in this post. The good idea is to decompose your logic into state tables. Another good idea is to place that logic in a spreadsheet like template. These slides are well done and based on decades of thought.


In a state chart a state is a binary observable variable. As such a state test result is either true or false. The bad idea is to think that states transition. Complex ideas transition. States do not. States are binary. The Exercise: State Diagram (pg 49) shows the CMU-SEI example of transitions. What they show is not a "State Diagram" but it is a "Transition Diagram". Then on page 51 they show a Corrected State Template where the first column shows the state name followed by an indented row with a next state. They have decomposed the state into states.

This (what we've got here) is a failure of communication.

My correction: In the CMU-SEI example what they call a state is a rule, what they call next state is a step in a rule, and each step consists of a state that is either true or false, no further transitions. In this simple event driven example there is way too much ambiguity.

Using our Temporal Engineering™ I programmed this stopwatch as an example using four pure binary states shown in our Vector Matrix™ below. Hardware is more reliable than software because hardware engineers understand states. Whereas software authors still think states transition and great institutions like CMU-SEI promote such nonsense. When you see someone writing about states transitioning think of how many software project failures there have been because the software architects, software designers, and software authors are still trying to transition a state. Better luck finding unicorns.

In Temporal Engineering rules contain steps that are made up seven control elements of which one is the state. Each step can do one of two things, link to another step within a rule or link to another rule first step. Rules are considered coherent with a single entry point. The Vector State Machine™ (VSM) uses a temporal pointer to traverse the Vector Matrix shown below. The temporal pointer is what hardware engineers use to keep track of where assembly language is working and the VSM temporal pointer accomplishes the same task.

Notice that CMU-SEI on page 51 has eleven (11) steps (their states) to accomplish what can be accomplished in four (4). They use a factor of 2.75X more logic. Why?

If you are tired of being a software author and would like to become a Temporal Engineer check us out.

#hardware #engineer #author #statemachine #CMU-SEI #Temporal Engineering #COSA #transition #failures #Vector Matrix #language

Func -      1-Rule               True         Next       False         Next  
Name      1-Step 2-State 3-Action   4-Step   5-Action   6-Step  7-Trace  


No alternative text description for this image