b r a y d e n . o r g / Software

/ WebHome / StateCharts / MyStateChartHistory

This Web


WebHome  
Topic List  
Web Statistics 

All Webs


Books
Main
Random
Software
TWiki  

brayden.org


Home
Monthly Digest
Today's Links
Resumé
Reading List
Books RSS
Random RSS
Software RSS

Other


Dale's Blog

currently-reading
TextDrive

My History with StateCharts

EL-1

One of our jobs (at SystematicDesigns) was to make an emulation-test environment so we could test our applications without having to actually install it in the factory. So we needed to make equipment emulators. The emulators could be pretty basic - they only needed to emulate the messaging behavior of the equipment, not any of the internal details. We (that is, other members of the company) wrote a few emulators in C and found that it was tedious and time-consuming. Our project leader suggested that we could use a tool provided by our communications software vendor for writing the emulators. For some reason I had a great antipathy to that tool - it felt awkward and limiting. So on Friday afternoon I undertook to write a language that we could use for making emulators. On Tuesday morning it was pretty much functional, and by the next week we were using it for writing emulators. The first time our project leader saw it he said that it needed a debugger. That turned out to be very simple - it only took a day or two to add basic debugging features like breakpoints and variable-value display.

The reason I mention this language (we called it EL-1 - Emulation Language, 1), is that it contained the seeds for the EventMechanism that I would later design for SPL.

SPL

About then I got hold of Harel's original article on state charts, "A Visual Formalism". Its significance didn't really become apparent to me until a couple years later, unfortunately. At first I saw state charts as simply another kind of design diagram - that is, another way to procrastinate before actually doing something useful. But in 1994 I left the company I was working for (SystematicDesigns) to go work for another company (ObjectEngineeringInc), run by a friend of mine. My mission was to do something that would make it easier for us to design and build station controllers - software for doing remote control and monitoring of semiconductor manufacturing equipment. After a few weeks of dithering and thought experiments I came up with a language based on state charts that we called SPL : StateProgrammingLanguage.

Better State

I left ObjectEngineeringInc to return to SystematicDesigns after 16 months. This was during on of the semiconductor downturns, and the original company was weathering the storm better. I started almost immediately designing a new Windows-based SecsGem package. SECS and GEM are the communication and scenario standards for semiconductor manufacturing equipment. The old package that we had been using was showing its age, and was no longer really marketable. It seemed clear enough that a Windows UI, a flexible object model, and some kind of state modeling would make a compelling package. Unfortunately at that time I believed that the NotInventedHere syndrome was a Bad Thing. So instead of building state modeling software I undertook to buy one. There was a nice looking product called BetterState. It featured a graphical front-end for drawing Harel state charts, and a decent code generator. We gave it a try, brought the developer out to our site to talk about a few issues, and decided to go ahead with it.

We soon found, though, that BetterState was not much to our liking. The graphical UI was clunky, the code generation led to some non-intuitive outcomes, and there was no usable EventMechanism. We soon dropped BetterState, and that was really the end of state modeling at our company for quite some time.

SCG

Eventually I became involved in a project that, once again, was based on distributed applications - communicating state machines. We did the first phase of the project - one cell controller, one station controller, and several other applications - without any state-construction tools. The station controller was particularly complex. The equipment did not report material location in a sensible way, recipe management was difficult, and detailed process tracking was impossible under certain conditions - and it was important for us to know when those conditions occurred.

When it came time to do the second phase - 3 additional station controllers, meaning additional complexity in the cell controller, as well as a more sophisticated interface to the MES system - I realized that we needed some kind of tool to make the development easier and more sensible. State charts sprang to mind but I decided that, since I would get no management backing for making a new tool, and would, therefore, have to do it on my own time in and quickly, I should make a simpler tool. So I made a tool for constructing finite state machines, and called it SCG (ScenarioCodeGenerator - another of my really snazzy names - should have been in marketing).

The Next Thing

Well, that's part of why I made this web. I need to figure out what, if anything, I want to do about state charts in the future.

-- DaleBrayden - 07 Jul 2002

 
 
Current Rev: r1.3 - 23 Jul 2002 - 18:02 GMT - DaleBrayden, Revision History:Diffs | r1.3 | > | r1.2 | > | r1.1
© 2003-2011 by the contributing authors.