The software development cycle for embedded systems is several times slower than similar sized projects on a PC.
Besides the actual coding there are several time consuming activities as you need to test things on real hardware. This usually require that the compiled code is converted to a downloadable binary file and that this binary file is transmitted to the target system over a slow serial connection and written into a flashmemory. Then you need to debug the thing and call all the new functionality from a very limited user interface. You mosy likely lack good debug funcationality and suffer from small memories to write debug data into.
Using our technology developed for SpecRunner and StateMaster it is now possible to skip the tedious task of linking, compiling, stripping, downloading and execution of your complete embedded software project until you are satisfied with the new functionality. With DevRunner you only need to transfer the part of code you are actually developing at this moment which is a much faster process if your code base is large.
DevRunner lets you compress build and test times reaching several hours down to minutes during development of new functionality.
Software as an Aztec pyramid
Nicely written software, that is - without GOTO's, is much like an Aztec pyramid with steps. You can always stand on a flat horizontal surface and build on it. This is how DevRunner works. Even if your target system is compiled and up and running, DevRunner can find these steps and let you build new functionality upon those.
Your new code can call and interact with the huge monolith below and you can even run unit-tests on your new code without changing the monolith your standing on. You do not have to recompile the monolith for every change to the new and unstable functionality you are developing, just pass the file with the new functionality along with some unit-tests to DevRunner and you will see how it executes on the running target system. Most of the time, you don't even need to restart the target system to try a new software version under development!
Once you feel comfortable with the new code you incorporate it with the sourcecode of the monolith and it becomes yet another step upon which you can stand to build higher level functionlity.