In my previous article, “Counterpoint: Why is Hardware so Easy and Software So Hard,” I responded to fellow Design News contributor Warren Miller’s original article by demonstrating how software development has been moving toward a hardware-like development approach through the use of software components and vendor tools designed to abstract out the low levels of firmware. Warren responded in “Why Hardware Is, Indeed, Easier than Software,”suggesting that if hardware and software development were judged by the level of symbolic logic manipulation, hardware would prove to be simpler.
Warren has an interesting point that the difficulty in designing software comes from the complexity of the symbols of software, which for the most part are letters and numerals. When considering the symbolic logic manipulation required to write software, sadly, hardware may be easier than software. The symbol logic of a programming language, especially one such as C, is not only large and complex, it is downright difficult to read and impossible to look at in different hierarchical levels, similar to what you might find on a schematic.
I believe that Warren’s premise to judge hardware and software difficulty by using symbolic logic is a good one, but I would argue that the comparison is apples to oranges. When designing software, one should not start at the low-level symbols of the programming language, but instead should start at the highest design levels. For many years software development has had the ability to use Unified Modeling Language (UML) to design the flow and logic of software.
UML is broken up into different diagram sets, each of which can start at a high level and be broken down into lower and lower diagrams. A diagram essentially allows a developer to create a model that can demonstrate or even execute software functions such as functional block or class models, system state diagrams, sequences, or even the familiar flow chart.
UML allows developers to design software at an abstracted level completely separate from the programming language or hardware on which it will eventually reside. UML sounds eerily similar to the block logic sets that Warren is looking for to make software as easy as hardware development. But I admit that there is a problem.
UML allows developers to design software at high abstracted levels, but the tools to convert those models and diagrams into functional hardware-level C code are not readily available to the average developer. Tools to convert the models are not free and are generally part of expensive tool suites.
MORE FROM DESIGN NEWS: A History of Firmware and Its Silent Revolution Today
Take, for example, MathWorks Simulink and Real-Time Workshop modules. Both of these tools have the capability to create high-level logic that can then generate the low-level machine code. The problem for the average developer is that a baseline version of Matlab costs around $2,100, Simulink around $3,500, and Real-time around $3,500. On top of the price, there is the question of library support and compatibility with the hardware that is going to be used.
Another solution that may fit the bill is the IBM Rational Rhapsody tools. Rhapsody allows for high-level modeling using UML, along with the generation of C code and modeling. The big barrier, again, could be the added cost of $1,500 for a floating license. I mention that price is a big barrier because companies generally do not like to buy software tools.
MORE FROM DESIGN NEWS: 5 Tips for Remotely Updating an Embedded System
Even if the tools were available, there is undoubtedly a learning curve on how to get the logic blocks to interact with each other. More important, can you trust the tool to properly generate the software once the logic is created? Generating code for a generic algorithm or state machine is one thing, but accessing specific microcontroller hardware is a completely different animal.
The use of these third-party tools while providing the hardware-like block interface that Warren is looking for feels like it only adds overall cost and complexity. Some tools can provide the easy interface, but the learning curve and cost might be a barrier to entry. Many developers are thus left with the low-level symbolic logic of C, which sadly may make hardware easier than software.
We're heading to Philly! Design & Manufacturing Philadelphia will take place Oct. 7-8. Get up close with the latest design and manufacturing technologies, meet qualified suppliers for your applications, and expand your network. Learn from experts at educational conferences and specialty events. Register today and join us at Philadelphia's premier industry showcase!
Jacob Beningo is a Certified Software Development Professional (CSDP) whose expertise is in embedded software. He works with companies to decrease costs and time to market while maintaining a quality and robust product. Feel free to contact him at [email protected], at his website www.beningo.com, and sign-up for his monthly Embedded Bytes Newsletter here.