The automotive industry is transitioning into a software-defined vehicle era. ATTI speaks to Sigma Software, a Swedish-Ukrainian company providing services to automotive giants including Volvo and Scania, about what’s holding developers back
It has been said that some automotive manufacturers lag behind when it comes to their software engineering practices. Would you agree?
I couldn’t agree more. When it comes to software engineering practices in the automotive industry, it is widely recognized that the sector has been much slower than other industries, such as consumer electronics or software development, in adopting modern software engineering practices. This is in part due to the long development cycles for automotive products and the highly regulated nature of the industry, which requires adherence to strict safety standards and testing requirements.
Many companies in the automotive industry continue to prioritize hardware development, leading to several unresolved issues and challenges. Moreover, there is a lack of technical practices that are exclusively tailored towards software development, coupled with inadequate experience in this area. This has resulted in a lag within the industry, which most companies are aware of and recognize the need to address.
I think Tesla revolutionized the automotive industry by elevating the importance of software in car design. Prior to Tesla’s emergence, traditional car manufacturers were not as focused on software as a crucial aspect of car development. However, in recent years, major players such as BMW and Mercedes have also started to recognize the significance of software in their products, leading to a shift in the industry’s perspective. Nevertheless, there is still a long way to go, as there are many areas in which software development can be improved, such as the absence of software factories.
How can companies ensure agile practices, continuous integration (CI) and automated testing?
Automotive companies can invest in training, implement DevOps practices, adopt modern software development tools, introduce automated testing, and establish a culture of continuous improvement.
The V-model is a requirement of the regulators when it comes to development processes. Many automotive companies find it challenging to combine the V-model with an agile model. This means that companies are not fully agile yet. For example, in testing, creating a digital twin is necessary when physical testing is not possible. However, full automation in testing is not yet prevalent in the industry.
For CI and auto-testing, OEMs and companies like Sigma Software are putting tremendous effort into implementing the same approaches as in other industries. Based on our experience we think automotive companies will soon be on the same level of tech as others.
How can Sigma Software help in this respect?
We can leverage our extensive experience in software development to help improve the automotive industry. By building software factories and working with software throughout the entire development cycle, we can assist with R&D efforts and help fill the gaps in the current development process. Specifically, we can help address the missing parts in agile methodology, ensure a complete development cycle in software factories and help integrate software into cars effectively.
However, it’s important to note that while agile is beneficial for software development, it may not be fully applicable to the automotive industry. In ensuring vehicle safety, complete adherence to agile principles while changing requirements frequently could pose a challenge.
How can companies rethink their entire approach to software development, including the underlying operational model?
Automotive companies should consider adopting a DevOps culture, embracing agile methodologies, and conducting small R&D projects to test hypotheses. By bringing in skilled professionals from the software and automotive industries, companies can expand their knowledge and move from the unknown to the known.
Additionally, establishing cross-functional teams, investing in software development tools and infrastructure, and prioritizing continuous learning and improvement are essential. However, this transformation requires a fundamental shift in organizational culture and mindset, with a focus on innovation, collaboration, and customer satisfaction.
How can companies cut software development complexity and increase efficiency?
With the continuous advancement of technology and the introduction of new features, software development projects are becoming more complex and challenging to manage. This complexity can easily get out of hand and cause significant setbacks for companies that are looking to stay ahead of the curve.
At Sigma Software, our Technical Excellence Practice (TEX) approach helps us reduce complexity and ensure high-quality code. This approach includes peer technical design and code review, automated code analysis, unit and integration testing, continuous integration builds, developer testing, and gated check-ins. By constantly measuring and improving KPIs, we can identify areas where we need to improve and increase efficiency. We also measure the complexity of our projects, which helps us better understand and manage our workload.
In your opinion, what architectures are best and why?
There is no one-size-fits-all answer to this question as the choice of software development architecture largely depends on the specific needs of the project, the technology stack, and the development team’s expertise. An architecture that works well for one component or product may not work for another.
What software development toolchain do you use?
At Sigma Software we typically use a whole combination of tools, including version control systems, project management tools, code review and analysis tools, CI and deployment tools, and testing tools.
We use different toolchains for different projects. There are many of them as we have 2,000 developers. For example, we commonly use Git for version control as it is widely adopted and supported. For automating build and deployment processes we use CI and deployment tools such as Jenkins.
If the project has been ongoing for several years, it may not be feasible to switch to a different toolchain immediately, and instead, adaptation to the existing toolchain may be necessary.
In our case, the toolchain we use is flexible and adaptable, allowing us to select the most appropriate tools for each project’s specific needs while ensuring high-quality software development.
What best practices do you follow? What testing do you do?
We have internal development guidelines based on strong standards that are too big to explain in one short answer! Our best practice is the Technical Excellence Practice (TEX) approach that I have already mentioned.
When it comes to testing, we conduct both functional and non-functional testing based on the specific needs of each project. We work with our clients to develop a test plan that outlines the necessary testing types and their requirements.
How easy is it to decouple hardware and software development?
It’s not an easy thing to do. Decoupling hardware and software development in automotive companies can be done by implementing a model-based design approach and utilizing software-in-the-loop and hardware-in-the-loop approaches. We use all these models.
However, it can be challenging as it requires a strategic approach and a willingness to invest in new processes and technologies. It also requires significant investment and changes in general organizational structure.
What is agile-at-scale?
It is a good framework to use in automotive. The agile framework is suitable for use in the automotive industry for big projects. Various models of agile-at-scale are available, including the scale-at-agile framework and agile-at-scale, which most automotive providers have adopted as their primary model for software development.
Agile-at-scale is a well-established and well-developed agile system designed for large teams (100+ people), as traditional agile projects were initially designed for small teams (7-8).
How does one proactively reveal looming software issues with time, cost and quality?
There are many methods to proactively identify looming software issues, such as continuous testing and monitoring during the software development process. Another approach is to use evaluation-based models (EVA) or other models within the agile framework to calculate the cost, quality and other metrics. Establishing clear metrics and KPIs can also help track progress and pinpoint areas for improvement.
Ultimately, the choice of which method to use will depend on the specific project requirements and goals.
For an in-depth investigation of the latest in software testing with voices from General Motors, American Honda Motor Company, Bamboo Apps and Harman, plus more from Sigma Software’s Evgeniy Yakovlev, see the June 2023 issue of ATTI.