There are two basic methods of software development: the traditional waterfall style and a newer approach called agile that is critical to the automotive industry’s transition to the software-defined vehicle.
In the waterfall approach, software development goes through discrete phases, with one phase being completed before the next begins. Phases include requirements definition, implementation, and integration and testing.
The flaws in the waterfall method are many: It is not flexible enough to keep up with pace of change in today’s automotive industry, it does not allow for the necessary feedback and collaboration with business teams inside a company and with external partners, and it does not provide for testing early enough in the process.
The ability to test complex software systems is particularly important in the automotive industry, where engineers conduct sophisticated simulations of real-world driving conditions — software-in-the-loop, hardware-in-the-loop and vehicle-in-the-loop testing — before taking a vehicle out on the open road.
How does agile work?
The agile methodology represents a cultural and procedural shift away from the waterfall approach, which is linear and sequential. Agile is iterative and collaborative and incorporates feedback loops.
Agile organizations create small teams called “scrums” in response to specific, high-priority requirements of the business. The teams then engage in a “sprint,” an iterative process of writing code, testing it, gathering feedback from stakeholders, rewriting the code and so forth. Sprints can deliver production-ready code in a matter of weeks.
Both the waterfall and agile approaches can utilize the V-model style of software development to move through design, implementation, and integration and qualification testing. The difference is that the waterfall approach can use the V-model as one overarching process, while the agile approach can use the V-model within each sprint.
The agile methodology enables companies to transition from the periodic updates associated with the waterfall method to a newer style of software deployment known as CI/CD, or continuous integration and continuous deployment. Agile and CI/CD are related but different. Agile refers to the method of software development; CI/CD is a process (commonly described as a pipeline) that includes testing, deployment and monitoring.
The agile methodology provides a variety of benefits, including enabling engineers to respond quickly to the changing business landscape. Using agile methods, engineers can provide a continuous stream of software enhancements that have been thoroughly tested and that address the needs of the business, because collaboration has been occurring throughout the process.
Agile software development in the automotive industry
As vehicles become more software-driven, there is increasing pressure on OEMs and suppliers to write, deploy and integrate code more quickly and efficiently. Not only is software playing a larger role in core vehicle functions, but it is also enabling new features such as infotainment, advanced driver-assistance systems and autonomous driving systems.
OEMs need to incorporate new features closer to the start of production, and they also need the ability to quickly and safely push out software upgrades after vehicles have been produced.
Traditionally, developers have written software for each hardware component and then integrated it with code for other parts of the vehicle. Testing of the integrated software has come late in the process, limiting the time available for making additional changes. The development of each component and vehicle platform has been a one-off process that starts over again for the next platform.
OEMs are shifting from this vertically integrated approach to iterative methods that incorporate the agile-driven benefits of collaboration, integration and code reuse. For example, horizontal layers of middleware can take the place of code specific to each component or vehicle platform. Applications and functions can be integrated via application programming interfaces and shared among the development teams.
The agile software method also helps OEMs implement new architectures in which processing moves to large, centralized domain controllers from smaller electronic control units, reducing cost and complexity.