Ensuring reliable, secure software in the IoT must start with the development process and then continue across the entire lifecycle of every digital asset – with rigorous control over reliability, at every stage from ideation through to future upgrades and maintenance.
This is no mean feat, says Robert Cowham of Perforce Software, considering the volume and complexity involved: cars, trucks and other forms of transportation increasingly have tens of millions of lines of software codes. The size of these development projects can scale quickly. Typically, assets span more than just code and of course, there is also the need to ensure compliance with a variety of regulations.
Challenges don’t stop once a product has been developed. While over-the-air updates are arguably convenient and flexible, they exacerbate the need for control and managing complex dependency issues, particularly at scale and over longer time periods.
There must also be full visibility of and the ability to collaborate by contributors to a project, who may be dispersed across multiple locations, timezones or organisations, working with different tools, platforms and with different job descriptions and priorities.
All of these pressures have led to a growing number of organisations connected with the automotive industry to re-think the way they approach software design and lifecycle management. We’re seeing automotive firms beginning to tackle these huge challenges with a variety of tools and methodologies, including adoption of large-scale component-based design, Agile and DevOps.
DevOps and Agile
DevOps is a methodology already well established in enterprise software and increasingly in other markets. Car and commercial vehicle manufacturers are adopting DevOps to break down the traditional barriers between development and operation teams, to help products be developed and delivered to market more rapidly and efficiently.
Agile often sits alongside DevOps and is a methodology that has been around for over a decade, but is experiencing a surge of interest. Agile focuses on delivering a viable product, then incorporating feedback and improvements in an iterative process, making it ideal where fast time-to-market and incorporating customer feedback into future improvements are important.
The way that Agile works is that developers can ‘fail early’ and take timely, appropriate action, while still working in a collaborative team environment. Another benefit of Agile is that it is understandable by general managers.
The theory behind both Agile and DevOps however is only as good as the execution. For every success story, there have been reports of failed or stalled projects relating to both methodologies.
The reality is that they depend on some best practice steps. For instance, DevOps is evolving from team to enterprise-wide level adoption. Often coined ‘DevOps at Scale’, this depends on adoption of the right tools to avoid unnecessary complexity and roadblocks being introduced, plus more automation to increase speed and avoid manual error. Component-based design, where software components are re-used wherever possible, is also logical in this context.
Likewise, as Agile adoption evolves, there is a growing realisation for more focus on better Agile project planning, particularly achieving a scaled Agile framework, which is necessary in markets like automotive, where thousands of people may be involved in a development project.This involves less traditional top-down management and more team-level efficiencies and ownership.
Establishing a ‘single source of truth’ in both Agile and DevOps environments is increasingly commonplace, because it provides visibility across the entire software lifecycle process, with immutable traceability across all actions, across all assets, how they inter-relate, in real-time and historic views.
Without this foundation, it is hard to have the confidence that software development projects are not only on track, but have the necessary levels of robustness, security or compliance. Usually with a version control system as the foundation, this central repository also provides a safety net to roll back to, or test, or check compliance of a previous version of the software if needed.
As the IoT evolves, it is reasonable to expect the development and lifecycle-management of code and a wide variety of assets to become increasingly complex and large-scale. Investing time and effort in making the most of modern design methodologies and tools today creates a foundation that should have benefits for automotive organisations long into the future.
The author of this blog is Robert Cowham, Professional Services Consultant for Perforce Software