Automotive software development often uses ASPICE, an international standard for best practices. But its defined stages and goals seem quite different from Agile. In this article, we’ll take a look at some of the main aspects of automotive software and dive into the implications of adopting Agile. Drawing on the insights and experience of leading automotive technology provider, Luxoft, we’ll ask whether the two methodologies can work together productively and if so, how?
Context: software-defined vehicles of today
We’ll begin by looking at some of the areas where companies like Luxoft are driving improvements in automotive software.
Driver assistance and autonomous driving reduce the need for driver input when controlling a vehicle. Technologies like robotic vision are used to detect road conditions, hazards, markings, and signs. These sensor systems require extensive validation and testing.
Performance Data and Digital Cockpits
As well as enabling autonomous driving, advanced software systems also offer enhanced driver feedback and data monitoring to improve performance, safety and comfort. Developments such as head-up displays (HUD) offer richer information for drivers with less distraction. For passengers, in-vehicle entertainment systems are also seeing innovations, leading to all-round improvements in user experience.
Mobility as a service
Mobility as a service (MaaS) describes a new paradigm in transportation. MaaS uses network technologies to leverage mobility solutions like ride-sharing and on-demand leasing, based on dynamic needs and usage patterns. Automated vehicles can also be integrated into MaaS solutions.
Key dev skills for the automotive industry
So what technologies are used to drive these developments? Let’s look at some of the key skills that companies like Luxoft look for in prospective employees.
- C and C++. These are still among the most widely-used programming languages used today. Combining low-level features with high-level structures, they offer robustness and efficiency for embedded systems.
- MATLAB/Simulink. MATLAB and its extension, Simulink, are widely used for mathematical and algorithmic systems like digital signal processing, AI and model-based automation.
- Python. Python is a versatile language with a wealth of libraries and integrations. It is a commonplace for scripting data engineering, AI and machine learning tasks.
- SQL (for cloud systems). An established standard for interacting with relational databases, SQL is now an invaluable tool for managing cloud-based resources too.
- Systems Engineering. An imperative part of any skill set for working with automotive software is systems engineering. It is invaluable for managing complex systems with many interactions.
- AUTOSAR. AUTomotive Open System ARchitecture is an open standard for software architecture and components used in automotive systems.
The Love-Hate relationship between Agile and Automotive
What is Agile software development?
Agile is often defined in contrast to Waterfall, which separates requirements gathering, design, coding and testing. Agile instead favours rapid iterations with integrated testing, plus early and incremental release cycles. The 2001 Manifesto sets out the priorities, such as self-organisation and dynamism rather than planning, collaboration rather than contract negotiation, and focusing on developing working software rather than documentation.
Agile is frequently adopted by start-ups and smaller companies, but some doubts remain about its suitability for larger companies and established projects. While there are clear efficiency multipliers at smaller scales with Agile, it may have the reverse effect for more complex setups, where context-switching has larger costs.
Undoubtedly there has been a buzz around Agile, but it is no silver bullet. In practice, many companies and development teams use some kind of hybrid framework, hoping to gain dynamism without jettisoning design principles.
Diving deep into ASPICE
Since 2005, automotive software developers have increasingly made use of ASPICE (Automotive Software Process Improvement Capability dEtermination), an international standard for best practices in the field.
ASPICE vs SPICE
ASPICE is a particular implementation of SPICE, a widely-used set of technical standards for software development with ISO recognition. ASPICE takes the principles set out in ISO 33061 and identifies their correct application for automotive software.
Compliance and best practices
ASPICE places automotive development on a level with highly regulated industries and sectors. Companies like Luxoft use ASPICE compliance to ensure that software meets defined standards of performance for customers and users. And the standard sets out best practice specifications to help ensure that OEMs carry out work in a defined and predictable manner.
The software side of ASPICE
In terms of software planning, ASPICE has tended to be associated with the Waterfall model of project development, since it defines outputs which can correspond to distinct project phases. However, the well-defined standards of ASPICE need not necessarily mandate the rigidity of Waterfall.
Benefits of combining ASPICE and Agile
ASPICE clearly has benefits in terms of compliance, but it can also make for more cumbersome and costly projects. These are two common reasons for switching to Agile. So is there a way to combine the two practices?
Luxoft has developed a unique methodology that combines the best of ASPICE and Agile. Using this kind of hybrid approach for automotive software development allows them to benefit from the formal rigour of ISO compliance without losing the dynamism and efficiency of modern project management techniques. To do this, it has been necessary to look at the strengths and weaknesses of each practice, find points of overlap and address the specific pitfalls that arise from their combination.
Time-line planning: long-term ASPICE vs short-term Agile
ASPICE is typically understood to require a sequential process. It uses a verification and validation model (V-model), which means that each development phase has a specific corresponding test phase. Also implicit is the need for clear requirements from the start. We would expect this to require long development cycles as any testing and feedback comes later in the process and then requires a reversion to an earlier phase to be addressed.
By contrast, Agile allows changes to be made at any stage and by using continuous testing methods, validation need not be delayed until later stages.
When planning out the long term milestones of an automotive project (which typically last more than a couple of years), one could borrow the ASPICE framework, however when we talk about planning for the short term (6 months), the product increment and the corresponding iterative development defined therein provide the fluidity to deliver competitive software. The result is a quicker turnaround and more dynamic processes. The contrast, however, need not be so strong.
Similarities between Agile and ASPICE
ASPICE does not determine a particular development lifecycle, only the correct goals. And if strict sequences are put aside, the V-model of corresponding developments and tests can actually integrate quite well with Agile processes. So Agile practices like sprints are possible, provided that best practices are adhered to in terms of results.
Additionally, ASPICE does not specify any particular tools that need to be used but rather lays out the intended outcomes. In Agile methodology, similarly, tools are a secondary concern, with the focus rather on effective working practices and relationships. What this means is that the overall goals set out in ASPICE can still be adhered to, but without prescribing rigidly how and when every development process should occur.
Potential pitfalls when combining the two frameworks
While a hybrid approach is possible, that doesn’t mean that Agile and ASPICE will never entirely overlap. The bottom line is that ASPICE sets out standards and requirements modeling in much more detail than is typically done for Agile projects, where uncertainty can be more readily tolerated. This means that Agile methods must be used at a smaller scale within defined project goals, while ASPICE remains the dominant standards framework to ensure overall quality and rigour.
Agile is highly tolerant of requirement changes throughout the project lifecycle, but for a highly-regulated domain like automotive software, clearly, some boundaries need to be retained to ensure coherence. Changes will be possible of course, but it is necessary to prioritise and maintain systematic integration to meet customer demands.
We have seen that Agile and ASPICE can be profitably combined for automotive software development. This is precisely the approach that Luxoft has pioneered, bringing competitive advantages without sacrificing regulatory adherence. To find out more, why not take a look at Luxoft’s technology insights.