Contexte :
Ingénieur junior R&D en électronique ( le seul EE de l'entreprise ) - le matériel et le codage ne sont pas le problème. Mon plus gros problème est d'avoir une bonne vue d'ensemble du projet et par où commencer.
Jusqu'à présent, je n'ai fait que des projets logiciels mineurs (moins de 500 lignes de code), mais je ne peux pas m'imaginer faire des projets plus importants sans perdre la vue d'ensemble de la fonctionnalité ou le manque de fonctionnalité.
Comment structurez-vous le mieux / quels outils utilisez-vous pour structurer les grands systèmes logiciels embarqués?
Ce que je fais actuellement :
Je commence généralement par esquisser la fonctionnalité du projet. Il peut s'agir d'un à plusieurs organigrammes en couches ou de diagrammes associés (schémas fonctionnels, etc.) et faire des recherches sur les composants / puces. Ensuite, je passe directement au codage (échec rapide, je suppose) tout en référençant les fiches techniques / Internet, en codant une fonctionnalité à la fois et en la testant avec des données factices, ou un test similaire. Il pourrait s'agir d'écrire des données sur une puce MEM, puis si cela fonctionne, il pourrait s'agir d'un pilote SPI entre la puce principale et la puce MEM.
Quelle réponse je cherche :
Rien? Vraiment. Je vais trier ce que je trouve sensé. Il peut s'agir d'un livre, d'un article, d'une expérience personnelle, de recommandations, etc.
Je suis très intéressé de savoir comment les personnes âgées abordent ce problème.
modifier
Tout d'abord, merci de partager vos années d'expérience! Toutes les réponses sont très appréciées. Ma prise de ceci est;
- Créez un document de spécification clair et précis.
- Créez un document de conception de logiciel. (Quelque chose que j'ajouterai maintenant) Modèles de doc de conception
- Pensez aux modules à quel point cela peut sembler redondant. (Quelque chose sur lequel je dois me concentrer davantage)
- Suivez une norme de codage pour structurer les fichiers d'en-tête / source. (Jamais fait cela) Norme Barr Group C
- Concentrez-vous d'abord sur la création des implémentations de bas niveau. (Communication etc.)
- Mettez en œuvre des modèles de conception dans la mesure du possible / sensé. Modèles de conception
- Configurer quelque chose pour le contrôle des révisions (Github etc. - jamais utilisé autant)
- Recherche intégration continue / déploiement continu (quelque chose de nouveau sur lequel je suis tombé) bases de CI et CD