When I was young, I had to navigate five-foot snow drifts in blinding snowstorms, walking uphill in both ways on Saturdays — just to be able to type in my program on a keypunch. Back then, we all knew that assembly code (Autocoder in my case. Google it.) was the only way to program. Those new-fangled FORTRAN compilers generated terrible code, and when they weren’t buggy they made incredibly inefficient use of the 16k (yes, 16k not 16gb) of core memory.
Ok, so I exaggerated a bit. I actually grew up in California so there was no snow. But, the technical challenges were real and we wouldn’t be here today if it wasn’t for the evolution of higher-level programming languages and their associated compilers that created incredible leverage of human resources.
What does this have to do with GreenHouse by ICS, our rapid-development solution?
GreenHouse generates an application in half the time with a quarter of the development risk. That’s great news, and hugely beneficial for a wide variety of projects. Still, whenever we explain how GreenHouse works — hey, it generates code — we often find ourselves sidetracked into requests to validate the quality, efficiency and maintainability of this generated code.
Makes sense. Anyone who once used pre-processors for a “new” language that was later “translated” into the base language (i.e. C++ -> C) understands how this process can lead to a debugging nightmare.
But, it doesn’t have to be that way. Back in the ‘90s, ICS created one of the best GUI builders (think Qt Designer) for engineering workstations. One of the lessons we quickly learned was that the code we generated mattered.
That’s why, right from the start, our GreenHouse solution has incorporated those lessons.
GreenHouse Includes a Finite State Machine
One of the first things to understand about GreenHouse is that it is an application builder that incorporates a finite state machine at the heart of its generated code. The user interface is generated by the design tool of your choice, including Figma or Qt Design Studio. (In some sense, your UX designer tool is a “virtual GUI builder.”) Once the UI is generated, your application developers “plug in” the code that actually interacts with your device.
The important point here is that the state machine has a strong architecture that can be extended through GreenHouse or you can use it as a model to extend it by hand.
When GreenHouse generates your application you can benefit from extensions we make to GreenHouse at practically no cost to you. For example, we have an option to generate a simulator that allows your development to proceed independent of the availability of the actual hardware. There’s no need to kick off a separate team to build a simulator. If you use GreenHouse, you get it for free.
The generated code also makes it possible for you to capture tests, and later replay them as part of your regression testing. Not just unit tests. With GreenHouse you can test critical subsystems that may not even be possible with the actual device because you have to force a hardware failure!
Additionally, GreenHouse includes an expanding library of components, called modules, that can be plugged into your application, saving you the effort. No more re-inventing modules like WiFi, Bluetooth and Waveform Plots with every new application.
Future Capabilities Expand Your Applications
We’re listening to our customers to identify the most valued options as we expand GreenHouse’s capabilities. Want to put usability testing and reporting into your application to help validate that it meets regulatory requirements? Or generate detailed and always-current documentation of your system as built to help you maintain your application and meet regulatory requirements?
These and other capabilities (got to keep a few secrets here!) could be available at essentially no cost for applications written in GreenHouse.
Poorly generated code can be a nightmare for the developers tasked with maintaining an application through the tail end of its lifecycle. GreenHouse was from the beginning architected to avoid that hassle by quickly and affordably generating a maintainable and evolving application.
No, GreenHouse is not a fit for every application. But, if you’re writing software for a new application and you want to stay ahead of your competition, GreenHouse just might be the solution to get you there.