How highly skilled engineers manage complexity of embedded systems design
Complexities in applications of embedded systems are increasing significantly. Most electronic devices have embedded systems and even the smallest error can have devastating effects on the reputation of the company involved. Moreover, testing and debugging errors is extremely complex, time-consuming, and expensive.
In a recent report McKinsey highlighted the main drivers of increased complexity in embedded systems can be attributed to need for standards or regulation to comply with growing safety and security issues, increased automation, rising connectivity and achieving software/hardware compatibility. They maintain that tight integration often entails a large number of interdependencies, which can tremendously complicate embedded system development and maintenance. The complex nature of embedded systems and applications, which calls for a diversity of tools and techniques to be employed during the embedded system design life cycle.
This is often seen against a constant backdrop for a requirement to be first to market with new innovative applications, products and performance.
As a result there is plenty of evidence where companies and engineers have been unable to manage the challenge of complexity, which has led to launch delays of several months, costly recalls, enormous budget overruns, dissatisfied customers, and even safety issues.
A prime example of the rising complexity of embedded systems can be shown in the software and electronic architecture of modern cars. A typical car has about 100 control units, thousands of software components, and tens of thousands of signals exchanged between subsystems. All of these need to be designed, developed, integrated, tested, and validated to work individually as well as in conjunction with each other. The average complexity of individual software projects in the automotive industry has grown by 300 percent over the past decade.
The complexity in an embedded system extends from the number of features and functions provided by the electronic hardware, implementation of functions in the embedded software, and in the interactions between multiple processing units that are interconnected by communication networks to realize a set of functions.
However it is often believed that complexity is an over-specification based on the false belief that all current and potential requirements need to be met or that an embedded system needs to reflect all environmental complexity and security. Whilst that may be true, the complex nature of embedded systems and applications, calls for a diversity of tools and techniques to be employed during the embedded system design life cycle. Or at least a modern thinking engineering team willing to make changes to old and out-dated engineering practices.
Some companies are already well versed in managing complexities through advanced engineering work techniques such as:
- Introducing a model driven engineering approach which improves the verification and testing of embedded systems, thus reducing the time, cost, and effort involved in developing them. Developers and programmerscan focus on creative and intellectual issues as they do not have to perform repetitive tasks like scripting or manual test execution.
- Adopting an agile methodology helps in eliminating complexities in embedded system development by keeping the concerned teams updated of the required developments and modifications. This ensures parallel development across teams and improves the efficiency of the concerned developers, testers, and customers. Agile methodologies (such as Continuous Integration) adopted within embedded system development aid engineers in moving at lightning speed without sacrificing quality.
- Or using an integrated development environment which can significantly improve productivity and reduce errors in an embedded system. IDE is a program where you can write the code, debug it, and convert it into the final product such as the web application. By using DevOps principles and tooling, teams are able to scale their embedded development at the speed of their agile development cycles.
Combining DevOps with Embedded Systems is no longer a problem. It is widely used in cloud-based infrastructure, software-as-a-service, and enterprise domain products.
With today’s interdependencies, it’s not only the variants of the hardware that need to be tested but the compatibility of versions across the network of hardware or components within the embedded network. Using a co-design approach to managing the trade-off between decisions and execution ensure the desired capabilities meet the requirements needs an integrated approach for compliance. New Embedded DevOps solutions are now offering a closed-loop approach which spans continuous planning, development, integration, testing, monitoring, and feedback phases of a typical DevOps lifecycle.
Companies such as HCL are also developing frameworks within the DevOps environment to define practices and tools that complement and align with the development of embedded software and system engineering processes. Its Rapid Hadron Framework removes the complexity of hardware, networking, and tools configuration and accelerates development via automation, low code orchestration of continuous integration-continuous deployment (CI-CD), and Infrastructure pipelines.
However for DevOps to be successful specific expertise is required, which may not be available immediately among in house team members. Rapid development can lead to security outfalls, and security is important at every step. DevOps is an organizational change and requires a change of strategic thinking which can be time-consuming.
Other software development methodologies such as Lean or Feature-Driven development can eliminate reduce complexities through the elimination of waste to increase quality.
Above all the lack of sufficiently experienced talent and domain expertise within the team is frequently the cause of not managing complexities efficiently. It is therefore critical to have experts on the teams specifically for architecture and toolchain development because they can draw on their experience to determine how to resolve trade-off decisions. As there is a global lack of highly skilled engineers available, managing complexity in embedded systems will still be an issue. Making use of specialists to find these experts will be key.