Jan. 13th, 2024

vit_r: default (Default)
Hilarius 2024

The State Transition Table of the Agile Age


The final version of the following text is going to be shown to some people who do not know about my blog. It is written in English, and it is a bit boring.

Many years ago, I was an experienced expert in software development. I was mature, effective, and knowledgeable. However, unlike the book-smart experts who did not make anything with their own hands, I was unsatisfied with the state of the software development industry.

The methods from wise books did not work in real-life projects. I had set myself the goal of writing a practically applicable book. During some years, I collected, analyzed, refined and extended methods that could ensure the efficient production of reliable software.

Unfortunately, I was too naive. Fortunately, it did not take me too much time and effort to understand that increasing the efficiency of software development turns it into a boring job, and producing reliable software is an economically inefficient business.

This was the best time to start a profitable consulting business by selling castrated methods that could not disturb the overall inefficiency but only introduce pretty insignificant improvements. This approach promised a brilliant career path, but I was unhappy that I would have to sell shit, even if it could be sold for the price of gold.

Today I know what prevents the industry from making potential dramatic improvements, but now I am a wise man, and I also know that sharing this knowledge is a silly idea.

Sometimes my old attempts to improve the world emerge from the darkness of the past. During a recent discussion under my old post (Про зазнайство, жестокосердие и утерянные технологии / 10 kB / 2012-10-26), I had realized that my understanding of the Shlaer-Mellor state transition tables has improved with only one sentence. This is a missed key that did not allow me to open many treasure chests, which I thought was important to investigate.

This rather useless knowledge would be of interest to some software engineers. It would be a fun task for me to write down a short explanation that I could probably read and consider naive after another ten years.

You do not need any specific knowledge to understand the main ideas, but you do need a monitor of a developer-friendly size to comfortably observe all the details. You could read the posts I mention here to get a deeper understanding, but it is also optional.

Here is a slightly modified state transition table (STT) from my old post.

private static final int[][] STATE_TRANSITION_TABLE  = {
    //================================================================================================|
    //                   || INIT          | CHECK_PRECOND | REGISTRATION  | WAIT_ACCEPTED | LEVEL_OK  |
    //================================================================================================|
    /*  START        */   { CHECK_PRECOND , _ignore       , INT_ERROR     , INT_ERROR     , INT_ERROR }
    //-------------------++---------------+---------------+---------------+---------------+-----------|
    /*  PRECOND_OK   */  ,{ INIT          , REGISTRATION  , INT_ERROR     , WAIT_ACCEPTED , INT_ERROR }
    //-------------------++---------------+---------------+---------------+---------------+-----------|
    /*  PRECOND_FAIL */  ,{ INIT          , INIT          , INT_ERROR     , INT_ERROR     , INT_ERROR }
    //-------------------++---------------+---------------+---------------+---------------+-----------|
    /*  REG_DONE     */  ,{ _ignore       , CHECK_PRECOND , WAIT_ACCEPTED , INT_ERROR     , INT_ERROR }
    //-------------------++---------------+---------------+---------------+---------------+-----------|
    /*  REG_FAIL     */  ,{ _ignore       , INT_ERROR     , INIT          , INT_ERROR     , INT_ERROR }
    //-------------------++---------------+---------------+---------------+---------------+-----------|
    /*  ACCEPTED     */  ,{ INT_ERROR     , INT_ERROR     , INT_ERROR     , LEVEL_OK      , _ignore   }
    //-------------------++---------------+---------------+---------------+---------------+-----------|
    };


You do not need to decode it because I start with a step-by-step explanation.
Read more... )

Profile

vit_r: default (Default)
vit_r

January 2026

S M T W T F S
    12 3
45678910
11121314151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 6th, 2026 01:10 am
Powered by Dreamwidth Studios