Antecedentes :
Engenheiro eletrônico Júnior de P&D ( o único EE da empresa ) - o hardware e a codificação não são o problema. Meu maior problema é obter uma visão geral adequada do projeto e por onde começar.
Até agora, fiz apenas pequenos projetos de software (menos de 500 linhas de código), mas não consigo me imaginar fazendo projetos maiores sem perder a visão geral da funcionalidade ou a falta de funcionalidade.
Como você estrutura melhor / quais ferramentas você usa para estruturar grandes sistemas de software embarcados?
O que estou fazendo atualmente :
Normalmente começo esboçando a funcionalidade do projeto. Pode ser um a muitos fluxogramas em camadas ou diagramas relacionados (diagramas de blocos, etc.) e fazer algumas pesquisas sobre os componentes / chips. Depois, passo direto para a codificação (acho que falho rápido) enquanto faço referência às planilhas de dados / Internet, codificando uma funcionalidade de cada vez e testando-a com dados fictícios ou teste semelhante. Pode estar gravando dados em um chip MEM e, se isso funcionar, pode ser um driver SPI entre o chip principal e o chip MEM.
Qual resposta estou procurando :
Qualquer coisa, mesmo. Vou resolver o que acho sensato. Pode ser um livro, um artigo, experiência pessoal, recomendações, etc.
Estou muito interessado em saber como os idosos lidam com isso.
Editar
Primeiramente, obrigado por compartilhar seus anos de experiência! Todas as respostas são muito apreciadas. Minha opinião disso é;
- Crie um documento de especificação claro e preciso.
- Crie um documento de design de software. (Algo que adicionarei agora) Modelos de documentos de design
- Pense nos módulos o quão redundante isso pode parecer. (Algo que eu preciso focar mais)
- Siga um padrão de codificação para estruturar arquivos de cabeçalho / fonte. (Nunca fiz isso) Padrão Barr Grupo C
- Concentre-se em criar as implementações de baixo nível primeiro. (Comunicação etc.)
- Implemente padrões de design sempre que possível / sensato. Padrões de design
- Configure algo para o controle de revisão (Github etc. - nunca usei tanto)
- Pesquise integração contínua / implantação contínua (algo de novo que eu me deparei) CI básico e CD