I dagens snabbrörliga teknologiska landskap är automotive inte främmande för de pågående förändringarna som drivs av mjukvaruutveckling. En nyckelkomponent i denna utveckling är Continuous Integration (CI), som revolutionerar sättet bilföretag utvecklar, testar och integrerar mjukvarukomponenter.

Vi på Cygni är ju av naturen nyfikna och ville därför spana närmare på vad CI innebär för automotive och hur det formar dess framtid. Och vilka är inte bättre att fråga då än Karl Strålman, Rasmus Lindy och Hampus Hessel: de tre embedded-musketörerna på Cygni?

Karl Strålman

Rasmus Lindy

Hampus Hessel

Vad är egentligen Continuous Integration?

CI innebär att alltså att man integrerar nya ändringar i mjukvaran kontinuerligt genom automatiserade tester. Detta säkerställer att mjukvaran förblir stabil, pålitlig och säker. I praktiken innebär detta att varje gång en utvecklare gör en förändring, testas den automatiskt och integreras i den gemensamma mjukvaruarkitekturen.

Fördelarna med CI

Enligt Rasmus Lindy och Hampus Hessel ligger den primära fördelen med CI i automatiseringen, som möjliggör ett smidigt produktionsflöde där mjukvaran integreras, testas och levereras effektivt. Dessutom ger CI snabb feedback till utvecklarna, vilket är avgörande för att säkerställa att den samlade mjukvaran fungerar korrekt.

– Den främsta fördelen som jag ser är automatiseringen. Det är väldigt många beståndsdelar som kan automatiseras i en CI-infrastruktur och sköter man det riktigt snyggt så kommer det bidra till ett smidigt produktionsflöde där mjukvaran integreras, testas, byggs och levereras i ett svep, säger Rasmus Lindy

– CI är viktigt för att man fort ska kunna få feedback så att helheten man försöker bygga fungerar som den ska. I automotive är detta avgörande eftersom man bygger en stor och komplicerad produkt med väldigt många mjukvarudelar som ska fungera ihop. Skulle man försöka ta sina delar man har jobbat på separat i slutet av ett projekt och försöka få ihop till en fungerande bil hade det varit extremt svårt och tidskrävande, säger Hampus Hessel.

Utmaningar med CI och hur du kan tackla dem

Trots många fördelar med CI finns det förstås utmaningar, särskilt när det gäller att hålla mjukvaran stabil när många utvecklare arbetar med den samtidigt. En liten förändring från en person kan påverka hela systemet, vilket kräver noggranna tester.

– Det är därför viktigt att ens leveranser automatiskt testas så bra det går innan de går att leverera till den kompletta produkten, så att inte existerande funktionalitet går sönder när man introducerar något nytt. I automotive är detta kanske en extra utmaning, eftersom produkten är komplicerad och man behöver antingen bra simulatorer eller mycket hårdvara (testriggar och liknande) för att kunna testa sina leveranser, menar Hampus.

– En annan utmaning som jag ser är att få till en sådan smidig och effektiv leveranskedja som möjligt. Exempelvis vill man testa så mycket som möjligt, samtidigt som man vill att det ska ta så kort tid som möjligt att få in ändringar. Två faktorer som mynnar till varandras motsats och kräver en fin balansgång. I automotive finns det också en hel del underleverantörer som levererar subsystem och komponenter som även de behöver kopplas in på något sätt, säger Rasmus.

pexels-mikebirdy-190574.jpg

Framtiden och trender inom CI

– I och med AD/ADAS, Autonomous Driving/Advanced Driving Assistance System, är i full utveckling har det börjat komma mer och mer avancerade simulatorer som använder sig av grafiska motorer där man kör modeller baserade på riktiga scenarion för att kontrollera bilens beteende. Jag tror att kanske detta är något som kommer inkorporeras i CI-kedjan. Med sådana avancerade modeller kompletterar man den testning som man annars behöver göra manuellt genom att köra bilen. Jag tror inte att det kommer att ersätta den manuella testkörningen helt, men kanske kan eventuellt underlätta en hel del produktionsflöde och manuell testning, säger Rasmus Lindy.

Hur kan andra organisationer inom automotive göra om de vill börja implementera eller förbättra sina CI-processer?

Karl Strålman delar med sig av sina bästa tips:
– För företag som vill förbättra sina CI-processer så tror jag kommunikation och samarbetsvilja är nyckeln till framgång, både internt mellan team men också externt med integrations- och leveranskedjor från & till underleverantörer. Mycket handlar om att hitta ett gemensamt språk och försöka förstå varandras behov. Det är ingen hemlighet att produkter och andra typer av leverabler har olika behov under dess utvecklingsfaser, så det gäller att hitta ett eller flera gemensamma interface mot företag, team och produkt, som är anpassningsbara för dagens och morgondagens CI. Detta är såklart inte lätt men om man ska börja någonstans så skulle mitt råd sammanfattningsvis vara:

1. Vad har vi och var är vi?
Identifiera behov och jämför mot dagens CI-interface(s).
2. Varför har vi och vart är vi på väg?
Diskutera behov, är dessa rimliga eller kommer dessa från onödig komplexitet?
3. Anpassa eventuella behov
4. Reflektera och iterera