Modèles de développement modernes pour les équipes de logiciels automobiles utilisant des outils d'IAUne équipe d'ingénieurs en logiciels automobiles utilisant des outils de développement alimentés par l'IA pour créer et tester des systèmes de véhicules connectés via des calculateurs et une infrastructure cloud.
Industry Insights

/

May 30, 2025

/

#

Min Read

Modèles de développement modernes pour les équipes de logiciels automobiles utilisant des outils d'IA

This is an external post, click the button below to view.
View Post

Alors que la complexité des logiciels automobiles ne cesse de croître, les équipes d'ingénierie se tournent vers des outils assistés par l'IA pour améliorer l'efficacité des développeurs, réduire les erreurs et maintenir la qualité des systèmes critiques pour la sécurité. Chez Sibros, nous avons adopté des outils tels que Cursor IDE, Windsurf, Cline, Claude Code et d'autres grands modèles de langage (LLM) pour soutenir le développement de notre plateforme de véhicules connectés, des mises à jour OTA à l'enregistrement des données et aux diagnostics.

Dans cet article, nous partageons des modèles pratiques, des leçons apprises et des conseils pour intégrer des assistants de codage IA à votre flux de travail, en particulier pour les logiciels automobiles intégrés et basés sur le cloud. Il ne s'agit pas d'idées théoriques, mais de méthodes réelles et appliquées que nous intégrons à nos flux de travail quotidiens pour créer des systèmes de production. Vous pouvez le faire aussi.

Commencez par la structure : planification et architecture assistées par l'IA

Dans les systèmes automobiles, les erreurs commises au début de la phase de conception sont coûteuses à corriger ultérieurement. Cela est particulièrement vrai pour les services étroitement couplés tels que l'orchestration des mises à jour OTA ou le streaming des journaux. Avec Cursor IDE, nous commençons toutes les nouvelles fonctionnalités par une planification approfondie utilisant l'IA pour co-concevoir notre système.

Nous invitons le LLM à définir les responsabilités de service, à esquisser des modèles de domaine et à anticiper les contrats de communication.

Nous sommes en train de créer un service de déploiement pour les mises à jour logicielles OTA. Veuillez décrire :

  1. Responsabilités liées au service
  2. Modèles d'entités et champs
  3. Points de communication service à service
  4. Structure de dossiers suggérée pour le monorepo basé sur Go

Exemple d'invite :

We are building a deployment service for OTA software updates. Please outline: 1. Service responsibilities 2. Entity models and fields 3. Service-to-service communication points 4. Suggested folder structure for Go-based monorepo

Ce type de conception initiale réduit le taux de désabonnement par la suite et permet à toute l'équipe de rester alignée sur les décisions relatives à l'architecture.

Enseigner à l'IA votre base de code avec .cursorrules

Prête à l'emploi, les LLM n'ont aucun contexte concernant votre dépôt spécifique. C'est là règles du curseur les fichiers arrivent. Considérez-les comme le document d'intégration de l'IA de votre projet.

Nous les utilisons pour définir :

  • Notre architecture en couches
  • Conventions de dénomination
  • Les fichiers clés et leurs rôles

Exemple d'extrait de code :

## Code Organization - Entity layer: Domain models - Service layer: Business logic - Storage layer: Postgres repositories - Endpoint layer: API definitions

Cela permet à l'IA de compléter le code qui correspond à notre style et d'éviter les incohérences internes.

Passez à la gauche en matière de sécurité : testez d'abord les flux de travail d'IA

Le code automobile touche souvent à des fonctions critiques, telles que les mises à jour du microprogramme, les contrôleurs de freins ou les diagnostics télémétriques. Cela signifie que le code généré par l'IA doit être testable, prévisible et vérifiable.

Nous utilisons une approche rapide consistant à « tester d'abord » : définissez à quoi ressemble le succès avant de demander à l'IA d'écrire la logique.

Demande de génération de tests :

Write integration tests for the software rollout endpoint. Test cases: - Valid rollout with multiple staged deployments - Failure when package ID is missing - Rollout respects feature flag settings

Cela garantit que l'IA fonctionne dans les limites des contraintes et évite les comportements indésirables en aval.

Débogage à grande échelle : injection de message d'erreur

Nous ne lisons plus les traces de la pile complète manuellement. Au lieu de cela, nous les collons directement dans Cursor et demandons une analyse des causes profondes. Ceci est particulièrement utile dans Go, où les paniques se succèdent souvent.

Exemple rapide :

Error: `panic: runtime error: invalid memory address or nil pointer dereference` This happens when trying to call `.Deploy()` inside the OTA rollout logic. Help me debug.

Cela se produit lorsque vous essayez d'appeler `.Deploy () `dans la logique de déploiement OTA. Aidez-moi à déboguer.

L'IA renvoie les causes probables, suggère des lignes de journalisation et propose même des solutions. Cela remplace ce qui était auparavant une période de 30 minutes à passer au crible et à tamiser les bûches.

Éviter la dérive du LLM grâce à Git Hygiene

L'un des pièges courants lorsque vous travaillez avec des LLM est la tendance à empiler les correctifs sur le code défectueux. Cela crée de la « saleté », terme que nous utilisons pour désigner des couches de modifications mal ancrées.

Pour éviter cela :

  • Nous nous engageons après chaque changement réussi généré par l'IA
  • Nous avons réinitialisé généreusement avec git reset --hard
  • Nous traitons Cursor comme un ingénieur débutant : un potentiel élevé, mais nécessitant une supervision

Cette habitude permet de garder le code propre et de minimiser le risque d'expédition de quelque chose de légèrement cassé.

Refactorisation avec un programmeur AI Pair

De nombreux utilisateurs d'IA sous-utilisent Cursor pour le refactoring. Nous l'utilisons de manière proactive pour réduire la dette technologique. Le curseur est idéal pour repérer les fonctions longues, les blocs répétés ou les motifs incohérents.

Rapide :

Refactor `updateRolloutStatus` to: 1. Reduce nesting 2. Improve naming 3. Move DB logic to storage layer 4. Keep behavior identical (covered by existing tests)

Cela nous permet de moderniser plus rapidement le code existant tout en préservant la confiance dans la couverture des tests.

Des choix de stack et d'architecture qui fonctionnent mieux avec l'IA

Nous avons appris que certains cadres et modèles sont plus adaptés à l'IA que d'autres. Le curseur fonctionne mieux lorsque le système est modulaire, saisi et documenté.

Nous privilégions :

  • Optez pour une architecture épurée en couches
  • TypeScript avec React Hooks
  • Limites de service clairement définies

Le fait d'éviter les DSL internes et les API non typées augmente considérablement l'efficacité de l'IA.

Documentation à la demande

L'IA ne se contente pas d'écrire du code, elle écrit également des documents. Nous utilisons Cursor pour générer de la documentation interne, des spécifications d'API et même des enregistrements de décisions architecturales (ADR).

Rapide :

Generate API documentation for `POST /v1/rollouts`. Include: - Purpose - Request/response schema - Error codes - Authorization behavior

Cela réduit les frais manuels et permet de maintenir nos documents internes à jour au fur et à mesure de l'évolution des fonctionnalités.

Réflexions finales

Ces modèles de développement assistés par l'IA ne sont pas issus de la théorie. Ils ont évolué à partir de centaines d'heures passées à construire de véritables systèmes de qualité automobile. Notre conseil : traitez l'IA comme un collaborateur, pas comme un oracle. Laissez-le gérer les répétitions et les suggestions, mais superposez toujours la révision humaine, en particulier pour la logique critique pour la sécurité.

Pour les développeurs de véhicules connectés qui souhaitent se déplacer plus rapidement sans compromettre la fiabilité, l'adoption de ces modèles constitue un véritable avantage.

Xiaojian Huang
Xiaojian Huang
Xioajian leads Sibros software development and cloud infrastructure teams. Prior to Sibros he was head of product at Nuro.ai and before that was a key engineer at Uber and Facebook. At Uber he led the teams that built the cloud infrastructure running Uber’s critical workloads for the app worldwide.