Padrões de Desenvolvimento Modernos para Equipas de Software Automotivo que Utilizam Ferramentas de IAUma equipa de engenheiros de software automóvel que utilizam ferramentas de desenvolvimento alimentadas por IA para construir e testar sistemas de veículos conectados em ECUs e infraestrutura de cloud.
Industry Insights

/

May 30, 2025

/

#

Min Read

Padrões de Desenvolvimento Modernos para Equipas de Software Automotivo que Utilizam Ferramentas de IA

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

À medida que a complexidade do software automóvel continua a aumentar, as equipas de engenharia estão a recorrer a ferramentas assistidas por IA para melhorar a eficiência do programador, reduzir erros e manter a qualidade em sistemas críticos de segurança. Aqui na Sibros, adotamos ferramentas como Cursor IDE, Windsurf, Cline, Claude Code e outros modelos de linguagem grande (LLMs) para apoiar o desenvolvimento em toda a nossa plataforma de veículos conectados - desde atualizações OTA até registro de dados e diagnóstico.

Neste artigo, partilhamos padrões práticos, lições aprendidas e dicas para integrar assistentes de codificação de IA no seu fluxo de trabalho, particularmente para software automóvel incorporado e baseado na nuvem. Não são ideias teóricas mas métodos reais e aplicados que estamos a incorporar nos nossos fluxos de trabalho diários para construir sistemas de produção. Vocês também podem.

Começar com Estrutura: Planeamento e Arquitetura Assistidos por IA

Nos sistemas automóveis, os erros cometidos no início da fase de concepção são caros para corrigir mais tarde. Isto é especialmente verdadeiro em serviços fortemente acoplados, como orquestração de atualizações OTA ou transmissão de log. Com o Cursor IDE, começamos todas as novas funcionalidades com um planeamento extensivo usando IA para co-desenhar o nosso sistema.

Solicitamos ao LLM a definir responsabilidades de serviço, esboçar modelos de domínio e antecipar contratos de comunicação.

Estamos a construir um serviço de implementação para actualizações de software OTA. Por favor, descrevam-se:

  1. Responsabilidades de serviço
  2. Modelos e campos de Entidade
  3. Pontos de comunicação serviço-para-serviço
  4. Estrutura de pastas sugerida para monorepo baseado em GO

Exemplo de Prompt:

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

Este tipo de design inicial reduz a rotatividade posterior e mantém toda a equipa alinhada nas decisões de arquitectura.

Ensinar a IA sobre a sua base de código com .cursorrules

Fora da caixa, os LLMs não têm contexto sobre o seu repo específico. É aí que . regras do cursor os ficheiros entram. Pense neles como o documento de integração de IA do seu projeto.

Utilizamo-los para definir:

  • A nossa arquitectura em camadas
  • Convenções de nomenclatura
  • Ficheiros-chave e respetivas funções

Exemplo de trecho:

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

Isso permite que a IA complete o código que corresponde ao nosso estilo e evita inconsistências internas.

Mudar para a esquerda em Segurança: Fluxos de trabalho de IA de teste em primeiro lugar

O código automóvel toca frequentemente em funções críticas - pense em atualizações de firmware, controladores de travão ou diagnósticos de telemetria. Isso significa que o código gerado por IA deve ser testável, previsível e verificável.

Usamos uma abordagem de prompt “test-first”: defina como é o sucesso antes de pedir à IA que escreva a lógica.

Solicitar a geração de testes:

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

Isso garante que a IA funcione dentro de restrições e evita comportamentos indesejados a jusante.

Depuração em Escala: Injecção de Mensagem de Erro

Já não lemos os rastreamentos completos da pilha manualmente. Em vez disso, colamo-los diretamente no Cursor e pedimos a análise da causa raiz. Isto é especialmente útil em Go, onde os pânicos muitas vezes caem em cascata.

Exemplo rápido:

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.

Isso acontece ao tentar chamar `.Deploy () `dentro da lógica de rollout OTA. Ajude-me a depurar.

A IA devolve causas prováveis, sugere linhas de registo e até oferece correções. Isso substitui o que costumava ser 30 minutos de pavimentação de borracha e peneiramento de toras.

Evitando a deriva LLM com Git Hygiene

Uma armadilha comum ao trabalhar com LLMs é a tendência de empilhar correções em cima de código quebrado. Isso cria “cruft” - um termo que usamos para camadas de edições mal fundamentadas.

Para evitar isso:

  • Comprometemo-nos após cada mudança bem sucedida gerada pela IA
  • Reiniciamos liberalmente com git reset --hard
  • Tratamos o Cursor como um engenheiro júnior: alto potencial, mas precisa de supervisão

Este hábito mantém o código limpo e minimiza o risco de enviar algo sutilmente quebrado.

Refactoração com um programador de pares de IA

Muitos utilizadores de IA subutilizam o Cursor para a refactoração. Usamo-lo de forma proativa para reduzir a dívida tecnológica. O cursor é ótimo para identificar funções longas, blocos repetidos ou padrões inconsistentes.

Prompt:

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

Isso ajuda-nos a modernizar o código legado mais rapidamente, mantendo a confiança na cobertura do teste.

Opções de pilha e arquitectura que funcionam melhor com a IA

Aprendemos que alguns frameworks e padrões são mais amigáveis à IA do que outros. O cursor funciona melhor quando o sistema é modular, digitado e documentado.

Favorecemos:

  • Vá com uma arquitectura limpa em camadas
  • TypeScript com Ganchos React
  • Limites de serviço claramente definidos

Evitar DSL apenas internos e APIs não tipadas aumenta significativamente a eficácia da IA.

Documentação a Pedido

A IA não escreve apenas código, mas também escreve documentos. Utilizamos o Cursor para gerar documentação interna, especificações de API e até registos de decisão de arquitectura (ADRs).

Prompt:

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

Isto reduz a sobrecarga manual e mantém os nossos documentos internos atualizados à medida que as funcionalidades evoluem.

Pensamentos Finalistas

Estes padrões de desenvolvimento assistido por IA não vieram da teoria. Evoluíram de centenas de horas gastas a construir sistemas reais de nível automóvel. O nosso conselho: trate a IA como um colaborador, não um oráculo. Deixe-a lidar com repetições e sugestões, mas sempre em camadas de revisão humana, especialmente para a lógica crítica de segurança.

Para os programadores de veículos conectados que procuram mover-se mais rápido sem comprometer a fiabilidade, a adoção destes padrões oferece uma vantagem real.

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.