Software Architecture Today
picture by me Gordon Morrison

Software Architecture Today

The current structure of software architecture is dominated by the if-then-else (ITE) structure even in the object-oriented world. Decisions are made in every domain of software. Applying “If<state> then <data manipulation> else <data manipulation>” software experience to a couple of everyday experiences will make this a little clearer.

Imagine that a book has the table of contents, footnotes, other references, and the index embedded in the text. Literally every sentence and paragraph would have some information indicated or referenced by the contents of the sentence and paragraph. This insertion would make the reading experience almost impossible.

Imagine a movie where that long running list of people at the end of a movie is embedded throughout the movie. Every scene would provide the actors name as they appear, would list the legal team whenever a legal issue was discussed, the catering people when they fed the actors and staff, the location information would appear when the location changed. The list of references would appear when the gaffers or best boys created part of the scene structure. Now you’re watching an exciting stunt scene and the stunt double comes in and the screen annotates the stunt double, the makeup artist, and the editing team to make the scene seamless. All of the injections would be so distracting as to make the movie experience unpalatable.

Software does exactly what I’m describing. The decision-making aspect of software is embedded with data manipulation. If<state> then <data manipulation> else <data manipulation> “where am I” repeat as needed. This is what has been called spaghetti code (yes the picture is calamari but you get the idea) for decades because the “where am I” aspect needs a “go to”, “come from”, or other sort of direction for where execution should be. The existing software structure of if-then-else (ITE) mixes process-flow and data-flow. The “go to” aspect of object-oriented software still exists. There is no explicit temporal control, all temporal control is by the <state> as in “should I execute here?”.

Books and movies are orthogonal, they separate the references from the content. In 2002 my patent issued on the orthogonal software architecture: COSA. The patent is “Free” of any license. I have published a number of papers, presentations, been a speaker at conferences, and wrote a book published in 2009 all about COSA. In 2005 CMU-SEI published a presentation “Personal Software Process for Engineers: Part II. Designing and Verifying State Machines”. Search for “L7 State Machines.ppt”. On slide 49 a matrix is displayed to show how to decompose a problem. The beauty of this matrix is that the columns are orthogonal. Unfortunately, they don’t carry the matrix into the solution, their work results in ITE.

COSA eliminates spaghetti code and the free COSA approach has several additional benefits they are: temporal, preemption control, dial-in inherent trace, DSPL, orthogonal, and modularity. COSA lends its structure to code generation, something that is nearly impossible with ITE. Costly updates can be eliminated with DSPL, and documentation can be automated because the process-flow and data-flow structures lend to that kind of automated analysis.

To view or add a comment, sign in

More articles by Gordon Morrison

  • Improving Decision Making Software

    The X-Axis is thousand lines of code. VS Merlot produces a uniquely structured application (Dtangle(tm)) that improves…

    8 Comments
  • Software Oscillations

    When I was building the simple robot arm simulator, I describe in my book I ran into an interesting problem. I was able…

    1 Comment
  • It's about time

    I wear a hat that says “I invented Multi-Core and Hyper-Threading Technology US Patent 4,847,755”. I added the…

    1 Comment
  • The Calf Path - Sam Walter Foss (1858-1911)

    This is a poem from over one-hundred years ago; plus. It does a good job of explaining why it's so difficult to get any…

    2 Comments
  • A Fundamental View of Software Architecture

    Traditional software is on the left. More than likely it's the software you work on.

    2 Comments
  • Real-Time Performance from Multi-Core and Hyper-Threading

    Operating systems and compilers do a very good job of optimizing performance in a general way. When maximum performance…

  • Agile: lipstick on a pig.

    The title is not referring to agile as being bad. Agile is the lipstick.

  • Temporal Engineering - ETL

    The last post showed an example of 30 to 107 ratio of code reduction for the same problem. You are probably wondering…

  • Do you Really want to Improve the Quality of Software?

    Think of software as a bucket of nuts, bolts, and washers. There's no order, the bucket's contents appear to be random.

  • Understanding Hyper-Threading and Virtual Processors

    There is a lot of confusion about what Hyper-Threading is and what it can do. I’ve developed an example that might help…

Explore content categories