Blog
Solving the Challenges of Embedded Software Development
Our expert in embedded software development and testing discusses the challenges faced by embedded software engineers, from finding experienced coders to ensuring sufficient quality control.
Embedded software and application development are cornerstones in modern engineering. For those of you who are not entirely familiar with what embedded software is, it is the software written to control a machine or device, rather than a computer. It is the clever stuff that sits in the background and is used to run on specific hardware (also known as embedded hardware).
Take the GoPro camera, for instance. The camera requires embedded software developers to make the camera work at a microprocessor level, and the application developers will create the software that lets you create and edit those fantastic YouTube videos we all watch of someone abseiling down the side of a mountain!
The challenges faced by businesses developing embedded software can be daunting. Let’s outline a few of these, and then explain just how businesses can resolve these with a little help from a friend…
Challenge #1 - A Question of Performance
Embedded software was once taught in engineering colleges across the land because the resources in devices, and even the computer, were very limited... To implement any functionality, you had to consider memory management and the order of computational processes. Ultimately, learning how to work with embedded software teaches you how solid design, quality in code, reliability through testing, and long-term maintainability are key when developing any type of software.
Nowadays it’s less common to be concerned about low-level compilation, with the focus shifting more towards the broader issues of user functionality and usefulness - and rightfully so, as there are now gigabytes of powerful electronics at our disposal!
However, the smart technology revolution and IoT will continue to require smaller devices and intelligent sensors, so sticking in powerful processing and lumps of memory are not cost-effective ways of dealing with the growing requirement and desire for these devices. To improve their performance, the pressure will be back on the developers’ side to optimise software.
Challenge #2 - Where Have All the Coders Gone?
Nowadays, application development seems to be a more popular career option than embedded software development. This is partly due to the sheer frequency of applications used in our everyday lives – whether you want to bank online or order a takeaway, there’s an app for that…
That does mean that the resource pool for good embedded software developers is relatively small, and we often see engineers regularly move between companies searching for new challenges. For any technology business, losing complex engineering expertise can be costly as, more often than not, the knowledge will leave with the engineer.
There is a growing demand for embedded devices, an increase in technology companies and a lack of good engineers to code and more importantly a lack of ability to retain skilled resources.
Challenge #3 - Quality Control
In the energy industry, there is growing concern about the quality and reliability of technology and the lack of scrutiny in a lot of embedded software development. This could have serious implications for the industry, especially when you consider the fact that some of these devices will soon ‘permeate our world.
As the world delves deeper into automation, the level of embedded software/embedded devices used is increasing at an incredible rate. Where driverless transport and home charging is concerned, the scrutiny and quality of development and testing must improve. Electronic systems need to be more reliable and even more secure. An example of software standards can be seen in the MISRA (Motor Industry Software Reliability Association) guidelines for embedded software development. These are a set of guidelines that ensure the implementation of best practices which can be used across different industry sectors, not just vehicles.
There are several problems we see repeatedly. Because of the challenge in retaining engineers, a lack of continuity in code quality is an issue. This isn’t saying the company developing embedded software is poor at doing it, it often means they have a lack of standards and best practices. This issue leads to very costly corrections and re-engineering to fix problems that should not have surfaced in the first place.
Test quality, traceability and testing strategies are vitally important in ensuring long-term cost-effective engineering processes. Having field devices fail is damaging for reputation and expensive to put right.
Challenge #4 – In Testing We Trust
One final problem is often a device manufacturer will use a third party to develop embedded software. The reason is often they either do not have the expertise or bandwidth for this kind of engineering themselves.
Therefore, trust is an important factor in terms of ensuring the embedded software is reliable and that the testing regime is bulletproof. Unfortunately, this isn’t always the case. There are some great companies out there, but transversely there are a lot of companies whose job it is to churn out code and meet basic requirements with minimal regard for the code quality.
Ultimately, embedded software development needs to incorporate sound testing to ensure the reliability and security of devices. However, this inevitably raises the perennial issue of cost, which in turn means specialist knowledge and a clear strategy is required to make sure money isn’t being wasted.
The Solution – Partner Up
As we’ve seen, embedded software development naturally involves a number of challenges – in terms of training, quality control to ensure the product is safe, and even the general lack of embedded software developers out there.
How best can businesses develop their competencies when it comes to embedded software development? That’s where having a good partner comes in. An effective partner organisation can offer their expertise on embedded software development, identifying areas where greater resourcing may be needed and supplying their own engineers when required, ultimately taking the pressure off at critical points in the development journey. Not only that, having a partner can also reduce development costs. All in all, it’s a win-win situation!
But with all of that in mind, what makes a good partner in embedded software development? They need expertise in developing and testing software, experience in working with and to customers’ requirements and timescales, and the resources to carry out projects successfully.
How Can We Help You?
At Critical Software, it’s important that both ourselves and our customers can maintain a broad skill set. We provide a holistic service and support, not just the scoping, development and testing of embedded software, but also help with analysing and improving existing embedded software.
We also teach embedded software development in our business and we encourage our engineers to make use of our FIKALAB, a research lab where a plethora of microdevices and sensors from all over the world are available for them to play with, learn from, and create meaningful products and solutions! This means they gain a practical understanding of devices and how to program them to provide long term stability and reliability in microdevices.
As embedded software continues to evolve, its potential to reshape whole industries is becoming more apparent. With an experienced partner in tow, the future has never looked so bright…
By Matt Dillane
Business Development Manager for Smart Technology Solutions