Development trends in embedded software design
05 September 2016
With electronics design more dependent on software, embedded software designers increasingly adopt some of the techniques that stem from more mainstream software development environments.
(Click here to view article in digi-issue)
The driving forces are understandable: some of the methodologies and tools that are becoming common currency in enterprise software or games development can help the electronics industry overcome some of the huge hurdles it currently faces.
Take for example the need to deliver a growing volume and variety of components which in themselves are also becoming increasingly complex. In the semiconductor market, geometries are becoming smaller while design sizes are increasing. This creates the need to expand design teams beyond one location and draw in the best design resources for each particular design, regardless of where in the world they are located. The combination of larger teams and 24/7 global operations results in an exponential rise in data volume that must be carefully managed.
Regardless of which part of the electronics design market we are talking about, there is the overall need to work in faster timeframes, while at the same time dealing with the fact that production costs have to be driven down in an increasingly rough and tumble marketplace where competitive advantage can be lost overnight.
Fortunately, software development methodologies and tools have – to a large extent – evolved to keep up with industry demand. For instance, the latest generation of version management and design data management software systems can enable automatic and concurrent changes to chip design across dispersed design teams and contributors worldwide.
The bottom line is that software development tools and processes can proactively contribute towards a faster time-to-market, greater automation and less reinventing the wheel each time, drive down unnecessary costs or use of resources, all in a compliant, secure and robust environment. However, these ‘trends’ can be confusing, particularly at first glance and can appear to overlap. Plus, some of them are so surrounded by hype, protagonists and objectors that it can become hard to evaluate how they can really contribute towards an electronics design project.
Nor is this just an issue for the more engineering or technically-oriented employees: with software development so critical to product delivery business success, more general management need to have an understanding of its pivotal role. This article sets out to describe some of the key trends and while this roll-call is not exhaustive, it does attempt to encompass the main ones in use today.
The Agile movement has been in use for over a decade, but it has most definitely had accelerated adoption during the past few years. This is largely because the potential benefits of Agile chime well with today’s electronics market, where the pressure is on to roll out new products or upgrades in increasingly shorter timescales. Agile focuses on delivering a commercially viable product – ‘good enough is good enough’ – rather than aiming for 100 per cent perfection, with the acknowledgement that further improvements or iterations will be needed, ideally in response to user feedback.
Non-technical management tends to like Agile because as a concept, it is easy to understand (indeed, we’re seeing Agile being adopted in completely non-IT environments for project management). Likewise, once developers start using Agile methods, they generally become fans in our experience, because it gives them a framework in which to experiment as individuals (‘fail early’) while still working within a collaborative team with clear end goals.
Continuous Delivery (CD) is less known as a term, yet research carried out by Evans Data a couple of years ago found that around two-thirds of organisations were practising CD in one form or another, even if they weren’t using the CD label. Arguably, CD is a good stablemate for Agile, particularly since it extends the whole idea of rapid software delivery beyond the developer’s desktop and right through to production. Whole books have been written on CD, but the core tenets are a centralised pipeline, with a focus on early feedback, automated build and test: in other words, the software that is deployed is what was originally tested and to a rigorous level.
On a practical basis, CD also prevents considerable amounts of unnecessary work, by automating as much as possible. For instance, does this particular set of components really need compiling every time? Of course, automation shouldn’t happen without monitoring, which is why continuous feedback, testing and version management are essential.
In the world of enterprise software, DevOps has been a hot topic for the past couple of years and is definitely in the ascendant, with plenty of people talking about adoption and best practices. Like Agile and CD, it fits in well with the whole idea of acknowledging the role that software plays in a business’ success, bridging the gap between development and operations teams, to ensure a smooth, transparent end-to-end process.
The theory is sound, but the execution can be challenging and depends on everyone adopting the same collaborative culture, the right processes and tools. Enter CD, which is a good companion to DevOps, because it encourages a more collaborative and open way of working.
Particularly prevalent in the semiconductor market, design data management (DM) has emerged as a term to describe the need to control intellectual properties (IPs), particularly as the sheer volume continues to proliferate. The essence of design data management is the ability to enable and replicate a coherent set of changes across all IPs, regardless of where geographically dispersed teams are based or in which time zone.
Version control or management has long been a mainstay of all kinds of development environments, including embedded software. These days it is used for far more than just checking code in and out: today’s version control systems are being asked to host all kinds of digital assets and build artefacts. In the world of electronics, this typically includes prototypes, CAD drawings and supporting documentation.
Version management also supports the core concepts within Agile, CD and DevOps, because it enables the transparency, fast feedback, collaboration and traceability - whether looking at what happened in the past or providing a clear status of the current working model – plus the ability to roll back to a previous version if something goes wrong.
However, ‘buyer beware’ as many legacy (or even relatively new) version control systems are not intrinsically designed to support non-code assets. Furthermore, they may not support scalability and dispersed, remote team members, something which is particularly relevant to the electronics industry where there are often multiple contributors, whether in-house or external contractors.
Another development has been the emergence of hybrid version control systems (DVCS). These enable developers to carry on working with projects on an individual and local basis, while at the same time, giving organisations control, traceability and visibility of developers’ work. Again, not all DVCS solutions offer the same functionality: make sure that multiple file types and users are supported; that the right security and support is in place; and that if the system suddenly has to deal with lots of demand or volume, it will be able to scale.
Of course, tools such as version management are dependent on cultural adoption and the right internal processes. Fortunately, there is a strong symbiosis between these tools and current trends such as DevOps, Agile and Continuous Delivery. When they work together well, they have the potential to truly help electronics firms tackle the numerous challenges that today’s design environment presents.